@app-studio/web 0.9.79 → 0.9.81

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 (38) hide show
  1. package/dist/components/Accordion/Accordion/Accordion.type.d.ts +1 -1
  2. package/dist/components/Accordion/Accordion/Accordion.view.d.ts +1 -1
  3. package/dist/components/Badge/Badge/Badge.type.d.ts +1 -1
  4. package/dist/components/Card/Card/Card.style.d.ts +0 -4
  5. package/dist/components/Card/Card/Card.type.d.ts +1 -1
  6. package/dist/components/ChatInput/ChatInput/ChatInput.type.d.ts +1 -1
  7. package/dist/components/ColorPicker/ColorPicker/ColorPicker.type.d.ts +1 -1
  8. package/dist/components/EmojiPicker/EmojiPicker/EmojiPicker.type.d.ts +1 -1
  9. package/dist/components/Form/ColorInput/ColorInput/ColorInput.type.d.ts +1 -1
  10. package/dist/components/Form/Switch/Switch/Switch.style.d.ts +3 -6
  11. package/dist/components/Form/TagInput/TagInput/TagInput.type.d.ts +1 -1
  12. package/dist/components/Form/TextArea/TextArea/TextArea.type.d.ts +1 -1
  13. package/dist/components/Input/Input.type.d.ts +1 -1
  14. package/dist/components/Message/Message/Message.type.d.ts +1 -1
  15. package/dist/components/Modal/Modal/Modal.props.d.ts +2 -2
  16. package/dist/components/Slider/Slider/Slider.type.d.ts +1 -1
  17. package/dist/components/Title/Title/Title.props.d.ts +0 -5
  18. package/dist/components/Toggle/Toggle/Toggle.type.d.ts +1 -1
  19. package/dist/components/ToggleGroup/ToggleGroup/ToggleGroup.type.d.ts +1 -1
  20. package/dist/pages/tabs.page.d.ts +1 -1
  21. package/dist/providers/index.d.ts +5 -0
  22. package/dist/web.cjs.development.js +170 -155
  23. package/dist/web.cjs.development.js.map +1 -1
  24. package/dist/web.cjs.production.min.js +1 -1
  25. package/dist/web.cjs.production.min.js.map +1 -1
  26. package/dist/web.esm.js +170 -155
  27. package/dist/web.esm.js.map +1 -1
  28. package/dist/web.umd.development.js +170 -155
  29. package/dist/web.umd.development.js.map +1 -1
  30. package/dist/web.umd.production.min.js +1 -1
  31. package/dist/web.umd.production.min.js.map +1 -1
  32. package/docs/components/Background.mdx +133 -134
  33. package/docs/components/Button.mdx +154 -131
  34. package/docs/components/Chart.mdx +93 -368
  35. package/docs/components/ProgressBar.mdx +77 -394
  36. package/docs/components/Title.mdx +102 -290
  37. package/package.json +1 -1
  38. package/docs/components/ChatInput.mdx +0 -1039
@@ -184,7 +184,7 @@ var useAccordionState = _ref => {
184
184
  };
185
185
 
186
186
  var AccordionShapes = {
187
- sharp: {
187
+ square: {
188
188
  borderRadius: 0
189
189
  },
190
190
  rounded: {
@@ -1299,17 +1299,14 @@ var MessageView = _ref => {
1299
1299
  width: "100%"
1300
1300
  }, /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
1301
1301
  size: "md",
1302
- weight: "semiBold",
1303
- backgroundColor: Theme[variant].container.backgroundColor
1302
+ weight: "semiBold"
1304
1303
  }, views == null ? void 0 : views.title), title), subtitle && (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
1305
- size: "sm",
1306
- backgroundColor: Theme[variant].container.backgroundColor
1304
+ size: "sm"
1307
1305
  }, views == null ? void 0 : views.subtitle), subtitle))), showAction && (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
1308
1306
  marginRight: 10,
1309
1307
  onClick: action,
1310
1308
  padding: "6px 10px",
1311
- whiteSpace: "nowrap",
1312
- backgroundColor: Theme[variant].container.backgroundColor
1309
+ whiteSpace: "nowrap"
1313
1310
  }, containerStyle, views == null ? void 0 : views.actionText), actionText)), isClosable && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
1314
1311
  position: "absolute",
1315
1312
  zIndex: 10000,
@@ -2297,9 +2294,9 @@ var BadgeSizes = {
2297
2294
  * Badge shapes with consistent border radius
2298
2295
  */
2299
2296
  var BadgeShapes = {
2300
- sharp: 0,
2297
+ square: 0,
2301
2298
  rounded: '8px',
2302
- pillShaped: '9999px'
2299
+ pill: '9999px'
2303
2300
  };
2304
2301
  /**
2305
2302
  * Badge positions for absolute positioning
@@ -2377,7 +2374,7 @@ var BadgeView = _ref => {
2377
2374
  var {
2378
2375
  content,
2379
2376
  position,
2380
- shape = 'pillShaped',
2377
+ shape = 'pill',
2381
2378
  variant = 'filled',
2382
2379
  size = 'md',
2383
2380
  views,
@@ -2751,9 +2748,9 @@ var ButtonSizes = {
2751
2748
  * Button shapes with consistent border radius
2752
2749
  */
2753
2750
  var ButtonShapes = {
2754
- sharp: 0,
2751
+ square: 0,
2755
2752
  rounded: 8,
2756
- pillShaped: 999
2753
+ pill: 999
2757
2754
  };
2758
2755
  /**
2759
2756
  * Icon sizes for different button sizes
@@ -3319,11 +3316,23 @@ var ButtonView = _ref5 => {
3319
3316
  getColorHex
3320
3317
  } = appStudio.useTheme();
3321
3318
  /* MAIN COLOR – determines the entire palette */
3322
- var mainColorKey = (_ref6 = backgroundColor != null ? backgroundColor : color) != null ? _ref6 : 'theme.primary';
3323
- var mainTone = getColorHex(isDisabled ? 'theme.disabled' : mainColorKey);
3319
+ // Priority: explicit backgroundColor/color prop -> theme.button.background -> theme.primary
3320
+ var mainColorKey = (_ref6 = backgroundColor != null ? backgroundColor : color) != null ? _ref6 : 'theme.button.background';
3321
+ // Decide which theme token to resolve based on state
3322
+ var stateColorKey = isDisabled ? 'theme.disabled' : isLoading ? 'theme.loading' : mainColorKey;
3323
+ // Resolve to actual hex color.
3324
+ // If 'theme.button.background' isn't defined, it falls back to 'theme.primary'
3325
+ var mainTone = getColorHex(stateColorKey);
3326
+ if (mainTone === 'theme.button.background' || mainTone === 'theme.loading') {
3327
+ mainTone = getColorHex(isLoading ? 'color.dark.500' : 'theme.primary');
3328
+ }
3324
3329
  /* text color - explicitly provided or default to white */
3325
- var resolvedTextColorKey = textColor != null ? textColor : 'color.white';
3330
+ // Priority: explicit textColor prop -> theme.button.text -> color.white
3331
+ var resolvedTextColorKey = textColor != null ? textColor : 'theme.button.text';
3326
3332
  var resolvedTextColor = getColorHex(resolvedTextColorKey);
3333
+ if (resolvedTextColor === 'theme.button.text') {
3334
+ resolvedTextColor = getColorHex('color.white');
3335
+ }
3327
3336
  /* variant palette */
3328
3337
  var palette = React.useMemo(() => getButtonVariants(mainTone, resolvedTextColor, reversed), [mainTone, resolvedTextColor, reversed]);
3329
3338
  var base = palette[variant];
@@ -3396,50 +3405,57 @@ var Button = ButtonComponent;
3396
3405
  * - Rounded corners: Consistent border radius
3397
3406
  * - Transitions: Subtle animations
3398
3407
  */
3408
+ /**
3409
+ * Card sizes following the 4px grid system
3410
+ */
3411
+ var CardSizes = {
3412
+ sm: {
3413
+ padding: '12px'
3414
+ },
3415
+ md: {
3416
+ padding: '16px'
3417
+ },
3418
+ lg: {
3419
+ padding: '24px'
3420
+ }
3421
+ };
3399
3422
  /**
3400
3423
  * Card shapes with consistent border radius
3401
3424
  */
3402
3425
  var CardShapes = {
3403
- sharp: 0,
3426
+ square: 0,
3404
3427
  rounded: '8px',
3405
- pillShaped: '16px'
3428
+ pill: '24px'
3406
3429
  };
3407
3430
  /**
3408
3431
  * Get card variants with consistent styling based on theme mode
3409
3432
  */
3410
3433
  var getCardVariants = themeMode => {
3434
+ var isDark = themeMode === 'dark';
3411
3435
  return {
3412
3436
  default: {
3413
- backgroundColor: 'color.white',
3437
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3414
3438
  border: 'none',
3415
3439
  transition: 'background-color 0.2s ease, box-shadow 0.2s ease'
3416
3440
  },
3417
3441
  outlined: {
3418
- backgroundColor: 'color.white',
3442
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3419
3443
  borderWidth: '1px',
3420
3444
  borderStyle: 'solid',
3421
- borderColor: 'color.gray.200',
3445
+ borderColor: isDark ? 'color.gray.700' : 'color.gray.200',
3422
3446
  transition: 'border-color 0.2s ease, box-shadow 0.2s ease',
3423
3447
  _hover: {
3424
- borderColor: 'color.gray.300',
3448
+ borderColor: isDark ? 'color.gray.600' : 'color.gray.300',
3425
3449
  boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.05)'
3426
- },
3427
- _focusVisible: {
3428
- outline: 'none',
3429
- boxShadow: '0 0 0 2px rgba(255, 255, 255, 1), 0 0 0 4px rgba(0, 0, 0, 0.1)'
3430
3450
  }
3431
3451
  },
3432
3452
  elevated: {
3433
- backgroundColor: 'color.white',
3434
- boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.08), 0px 1px 2px rgba(0, 0, 0, 0.06)',
3453
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3454
+ boxShadow: isDark ? '0px 4px 12px rgba(0, 0, 0, 0.3)' : '0px 1px 3px rgba(0, 0, 0, 0.08), 0px 1px 2px rgba(0, 0, 0, 0.06)',
3435
3455
  border: 'none',
3436
3456
  transition: 'box-shadow 0.2s ease',
3437
3457
  _hover: {
3438
- boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.08), 0px 2px 4px rgba(0, 0, 0, 0.06)'
3439
- },
3440
- _focusVisible: {
3441
- outline: 'none',
3442
- boxShadow: '0 0 0 2px rgba(255, 255, 255, 1), 0 0 0 4px rgba(0, 0, 0, 0.1), 0px 4px 6px rgba(0, 0, 0, 0.08)'
3458
+ boxShadow: isDark ? '0px 8px 16px rgba(0, 0, 0, 0.4)' : '0px 4px 6px rgba(0, 0, 0, 0.08), 0px 2px 4px rgba(0, 0, 0, 0.06)'
3443
3459
  }
3444
3460
  }
3445
3461
  };
@@ -3449,50 +3465,31 @@ var getCardVariants = themeMode => {
3449
3465
  * @param theme - Theme object from useTheme hook
3450
3466
  */
3451
3467
  var getDefaultCardStyles = theme => {
3468
+ var isDark = theme.themeMode === 'dark';
3452
3469
  return {
3453
3470
  container: {
3454
- backgroundColor: 'color.white',
3455
- color: 'color.black',
3471
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3472
+ color: isDark ? 'color.white' : 'color.black',
3456
3473
  borderRadius: '8px',
3457
3474
  overflow: 'hidden',
3458
- transition: 'all 0.2s ease',
3459
- media: {
3460
- mobile: {
3461
- borderRadius: '4px'
3462
- }
3463
- }
3475
+ transition: 'all 0.2s ease'
3464
3476
  },
3465
3477
  header: {
3466
3478
  padding: '16px',
3467
3479
  borderBottomWidth: '1px',
3468
3480
  borderBottomStyle: 'solid',
3469
- borderBottomColor: 'color.gray.200',
3470
- color: 'color.black',
3471
- media: {
3472
- mobile: {
3473
- padding: '12px'
3474
- }
3475
- }
3481
+ borderBottomColor: isDark ? 'color.gray.800' : 'color.gray.100',
3482
+ color: 'theme.primary'
3476
3483
  },
3477
3484
  content: {
3478
3485
  padding: '16px',
3479
- color: 'color.black',
3480
- media: {
3481
- mobile: {
3482
- padding: '12px'
3483
- }
3484
- }
3486
+ color: isDark ? 'color.gray.300' : 'color.gray.600'
3485
3487
  },
3486
3488
  footer: {
3487
3489
  padding: '16px',
3488
3490
  borderTopWidth: '1px',
3489
3491
  borderTopStyle: 'solid',
3490
- borderTopColor: 'color.gray.200',
3491
- media: {
3492
- mobile: {
3493
- padding: '12px'
3494
- }
3495
- }
3492
+ borderTopColor: isDark ? 'color.gray.800' : 'color.gray.100'
3496
3493
  }
3497
3494
  };
3498
3495
  };
@@ -3517,12 +3514,14 @@ var CardHeader = _ref => {
3517
3514
  var {
3518
3515
  styles: contextStyles
3519
3516
  } = useCardContext();
3520
- var defaultStyles = getDefaultCardStyles().header;
3517
+ var defaultStyles = getDefaultCardStyles(theme).header;
3521
3518
  // Merge styles: Default < Context Override < Direct Props/Style
3522
3519
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.header, props, {
3523
3520
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$header = contextStyles.header) == null ? void 0 : _contextStyles$header.style, style)
3524
3521
  });
3525
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedProps), children);
3522
+ return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
3523
+ gap: 8
3524
+ }, mergedProps), children);
3526
3525
  };
3527
3526
  var CardContent = _ref2 => {
3528
3527
  var _contextStyles$conten;
@@ -3535,12 +3534,14 @@ var CardContent = _ref2 => {
3535
3534
  var {
3536
3535
  styles: contextStyles
3537
3536
  } = useCardContext();
3538
- var defaultStyles = getDefaultCardStyles().content;
3537
+ var defaultStyles = getDefaultCardStyles(theme).content;
3539
3538
  // Merge styles: Default < Context Override < Direct Props/Style
3540
3539
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.content, props, {
3541
3540
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$conten = contextStyles.content) == null ? void 0 : _contextStyles$conten.style, style)
3542
3541
  });
3543
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedProps), children);
3542
+ return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
3543
+ gap: 12
3544
+ }, mergedProps), children);
3544
3545
  };
3545
3546
  var CardFooter = _ref3 => {
3546
3547
  var _contextStyles$footer;
@@ -3553,15 +3554,17 @@ var CardFooter = _ref3 => {
3553
3554
  var {
3554
3555
  styles: contextStyles
3555
3556
  } = useCardContext();
3556
- var defaultStyles = getDefaultCardStyles().footer;
3557
+ var defaultStyles = getDefaultCardStyles(theme).footer;
3557
3558
  // Merge styles: Default < Context Override < Direct Props/Style
3558
3559
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.footer, props, {
3559
3560
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$footer = contextStyles.footer) == null ? void 0 : _contextStyles$footer.style, style)
3560
3561
  });
3561
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedProps), children);
3562
+ return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
3563
+ gap: 8
3564
+ }, mergedProps), children);
3562
3565
  };
3563
3566
  var CardView = _ref4 => {
3564
- var _contextValue$styles$;
3567
+ var _CardSizes$size, _contextValue$styles$;
3565
3568
  var {
3566
3569
  variant = 'default',
3567
3570
  size = 'md',
@@ -3576,31 +3579,46 @@ var CardView = _ref4 => {
3576
3579
  } = _ref4,
3577
3580
  props = _objectWithoutPropertiesLoose(_ref4, _excluded4$3);
3578
3581
  var theme = appStudio.useTheme();
3579
- var defaultStyles = getDefaultCardStyles();
3582
+ var defaultStyles = getDefaultCardStyles(theme);
3583
+ // Get size padding
3584
+ var sizePadding = ((_CardSizes$size = CardSizes[size]) == null ? void 0 : _CardSizes$size.padding) || '16px';
3580
3585
  // Prepare context value, merging default styles with user's `views` overrides
3581
3586
  var contextValue = React.useMemo(() => ({
3582
3587
  styles: {
3583
- container: Object.assign({}, defaultStyles.container, views == null ? void 0 : views.container),
3584
- header: Object.assign({}, defaultStyles.header, views == null ? void 0 : views.header),
3585
- content: Object.assign({}, defaultStyles.content, views == null ? void 0 : views.content),
3586
- footer: Object.assign({}, defaultStyles.footer, views == null ? void 0 : views.footer)
3587
- }
3588
- }), [defaultStyles, views]);
3588
+ container: Object.assign({}, defaultStyles.container, {
3589
+ borderRadius: CardShapes[shape]
3590
+ }, views == null ? void 0 : views.container),
3591
+ header: Object.assign({}, defaultStyles.header, {
3592
+ padding: sizePadding
3593
+ }, views == null ? void 0 : views.header),
3594
+ content: Object.assign({}, defaultStyles.content, {
3595
+ padding: sizePadding
3596
+ }, views == null ? void 0 : views.content),
3597
+ footer: Object.assign({}, defaultStyles.footer, {
3598
+ padding: sizePadding
3599
+ }, views == null ? void 0 : views.footer)
3600
+ }
3601
+ }), [defaultStyles, views, sizePadding, shape]);
3589
3602
  // Determine if we have explicit Card.Header, Card.Content, Card.Footer components
3590
- // or if we need to wrap children in a default layout
3591
3603
  var hasExplicitStructure = React__default.Children.toArray(children).some(child => /*#__PURE__*/React__default.isValidElement(child) && (child.type === CardHeader || child.type === CardContent || child.type === CardFooter));
3592
- var variantStyles = getCardVariants()[variant];
3604
+ // Get the appropriate variant styles based on theme mode
3605
+ var {
3606
+ themeMode
3607
+ } = theme;
3608
+ var currentThemeMode = elementMode || themeMode;
3609
+ var variantStyles = getCardVariants(currentThemeMode)[variant];
3593
3610
  // Merge styles for the root element
3594
3611
  var mergedRootProps = Object.assign({
3595
3612
  width: isFullWidth ? '100%' : 'auto',
3596
- borderRadius: CardShapes[shape],
3597
3613
  overflow: 'hidden'
3598
3614
  }, variantStyles, contextValue.styles.container, props, {
3599
3615
  style: Object.assign({}, (_contextValue$styles$ = contextValue.styles.container) == null ? void 0 : _contextValue$styles$.style, style)
3600
3616
  });
3601
3617
  return /*#__PURE__*/React__default.createElement(CardContext.Provider, {
3602
3618
  value: contextValue
3603
- }, /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedRootProps), hasExplicitStructure ? children : (/*#__PURE__*/React__default.createElement(appStudio.Vertical, null, header && /*#__PURE__*/React__default.createElement(CardHeader, null, header), /*#__PURE__*/React__default.createElement(CardContent, null, children), footer && /*#__PURE__*/React__default.createElement(CardFooter, null, footer)))));
3619
+ }, /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedRootProps), hasExplicitStructure ? children : (/*#__PURE__*/React__default.createElement(appStudio.Vertical, {
3620
+ width: "100%"
3621
+ }, header && /*#__PURE__*/React__default.createElement(CardHeader, null, header), /*#__PURE__*/React__default.createElement(CardContent, null, children), footer && /*#__PURE__*/React__default.createElement(CardFooter, null, footer)))));
3604
3622
  };
3605
3623
 
3606
3624
  /**
@@ -6388,7 +6406,7 @@ var Shapes = {
6388
6406
  }
6389
6407
  }
6390
6408
  },
6391
- sharp: {
6409
+ square: {
6392
6410
  borderRadius: 0
6393
6411
  },
6394
6412
  rounded: {
@@ -6399,7 +6417,7 @@ var Shapes = {
6399
6417
  }
6400
6418
  }
6401
6419
  },
6402
- pillShaped: {
6420
+ pill: {
6403
6421
  borderRadius: '9999px'
6404
6422
  }
6405
6423
  };
@@ -7336,12 +7354,9 @@ var ColorSchemes = {
7336
7354
  // State-specific colors
7337
7355
  states: {
7338
7356
  hover: {
7339
- active: {
7340
- opacity: 0.9
7341
- },
7342
- inactive: {
7343
- backgroundColor: 'color.gray.400'
7344
- }
7357
+ active: 'theme.primary',
7358
+ inactive: 'color.gray.400',
7359
+ activeOpacity: 0.9
7345
7360
  },
7346
7361
  focus: {
7347
7362
  active: {
@@ -7355,6 +7370,17 @@ var ColorSchemes = {
7355
7370
  }
7356
7371
  }
7357
7372
  };
7373
+ /**
7374
+ * Transition styles for the Switch component
7375
+ */
7376
+ var TransitionStyles = {
7377
+ slider: {
7378
+ transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)'
7379
+ },
7380
+ knob: {
7381
+ transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)'
7382
+ }
7383
+ };
7358
7384
 
7359
7385
  var _excluded$t = ["id", "name", "label", "inActiveChild", "isChecked", "activeChild", "labelPosition", "shadow", "size", "value", "isHovered", "isDisabled", "isReadOnly", "on", "setOn", "onChange", "setValue", "setIsHovered", "helperText", "views"];
7360
7386
  var SwitchContent = props => /*#__PURE__*/React__default.createElement(appStudio.Input, Object.assign({
@@ -7393,7 +7419,8 @@ var SwitchView = _ref => {
7393
7419
  if (onChange) onChange(newValue);
7394
7420
  }
7395
7421
  };
7396
- var handleHover = () => setIsHovered(!isHovered);
7422
+ var handleMouseEnter = () => setIsHovered(true);
7423
+ var handleMouseLeave = () => setIsHovered(false);
7397
7424
  /**
7398
7425
  * Styles for the switch component
7399
7426
  */
@@ -7415,8 +7442,8 @@ var SwitchView = _ref => {
7415
7442
  };
7416
7443
  return /*#__PURE__*/React__default.createElement(Label, Object.assign({
7417
7444
  htmlFor: id,
7418
- onMouseEnter: handleHover,
7419
- onMouseLeave: handleHover
7445
+ onMouseEnter: handleMouseEnter,
7446
+ onMouseLeave: handleMouseLeave
7420
7447
  }, switchStyle.container, props), /*#__PURE__*/React__default.createElement(SwitchContent, Object.assign({
7421
7448
  id: id,
7422
7449
  name: name,
@@ -7444,12 +7471,10 @@ var SwitchView = _ref => {
7444
7471
  borderRadius: "9999px" // Full rounded for pill shape
7445
7472
  ,
7446
7473
  backgroundColor: isDisabled ? ColorSchemes.default.disabled : value ? isHovered ? ColorSchemes.states.hover.active : ColorSchemes.default.active : isHovered ? ColorSchemes.states.hover.inactive : ColorSchemes.default.inactive,
7447
- overflow: "hidden",
7474
+ opacity: !isDisabled && value && isHovered ? ColorSchemes.states.hover.activeOpacity : 1,
7448
7475
  // State properties
7449
- cursor: "pointer",
7450
- // Animation
7451
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)"
7452
- }, shadow, SliderPadding[size], SliderSizes[size], views['slider']), activeChild && value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7476
+ cursor: "pointer"
7477
+ }, TransitionStyles.slider, shadow, SliderPadding[size], SliderSizes[size], views['slider']), activeChild && value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7453
7478
  marginLeft: 8,
7454
7479
  marginRight: 4,
7455
7480
  transition: "all 0.3s ease",
@@ -7460,8 +7485,9 @@ var SwitchView = _ref => {
7460
7485
  }, activeChild)), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
7461
7486
  borderRadius: "50%",
7462
7487
  backgroundColor: ColorSchemes.default.knob,
7463
- boxShadow: "0 1px 2px rgba(0, 0, 0, 0.1)",
7464
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
7488
+ boxShadow: isHovered ? '0 2px 4px rgba(0, 0, 0, 0.2)' : '0 1px 2px rgba(0, 0, 0, 0.1)',
7489
+ transform: isHovered ? 'scale(1.05)' : 'scale(1)'
7490
+ }, TransitionStyles.knob, {
7465
7491
  zIndex: 1
7466
7492
  }, KnobSizes[size], views['circle'])), inActiveChild && !value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7467
7493
  marginRight: 8,
@@ -8541,13 +8567,13 @@ var Shapes$1 = {
8541
8567
  default: {
8542
8568
  borderRadius: '6px'
8543
8569
  },
8544
- sharp: {
8570
+ square: {
8545
8571
  borderRadius: '0px'
8546
8572
  },
8547
8573
  rounded: {
8548
8574
  borderRadius: '8px'
8549
8575
  },
8550
- pillShaped: {
8576
+ pill: {
8551
8577
  borderRadius: '9999px'
8552
8578
  }
8553
8579
  };
@@ -11235,9 +11261,6 @@ var TagChip = _ref => {
11235
11261
  isReadOnly
11236
11262
  } = _ref;
11237
11263
  var [isRemoveHovered, setIsRemoveHovered] = React__default.useState(false);
11238
- var {
11239
- getColor
11240
- } = appStudio.useTheme();
11241
11264
  var chipSize = {
11242
11265
  xs: {
11243
11266
  padding: '2px 8px',
@@ -11273,29 +11296,31 @@ var TagChip = _ref => {
11273
11296
  alignItems: "center",
11274
11297
  gap: 6,
11275
11298
  padding: chipSize.padding,
11276
- backgroundColor: "white",
11299
+ backgroundColor: "color.gray.100.100",
11277
11300
  borderRadius: "16px",
11278
- border: "1px solid",
11279
- borderColor: "color.black.100",
11301
+ borderWidth: "1px",
11302
+ borderStyle: "solid",
11303
+ borderColor: "color.gray.100",
11280
11304
  boxShadow: "0 1px 2px rgba(0,0,0,0.05)",
11281
11305
  transition: "all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",
11282
11306
  opacity: isDisabled ? 0.6 : 1,
11283
11307
  _hover: !isDisabled && !isReadOnly ? {
11284
- borderColor: 'color.gray.300',
11308
+ backgroundColor: 'color.gray.100.200',
11309
+ borderColor: 'color.gray.200',
11285
11310
  boxShadow: '0 4px 6px rgba(0,0,0,0.05)',
11286
11311
  transform: 'translateY(-1px)'
11287
11312
  } : {}
11288
11313
  }, views == null ? void 0 : views.tag), /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
11289
11314
  fontSize: chipSize.fontSize,
11290
- color: isDisabled ? 'color.gray.400' : 'color.gray.700',
11291
- fontWeight: "500",
11315
+ color: isDisabled ? 'color.gray.100' : 'theme.primary',
11292
11316
  whiteSpace: "nowrap"
11293
11317
  }, views == null ? void 0 : views.tagText), tag), isRemovable && !isDisabled && !isReadOnly && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
11294
11318
  cursor: "pointer",
11295
11319
  padding: "2px",
11296
11320
  borderRadius: "50%",
11297
11321
  transition: "all 0.2s ease",
11298
- backgroundColor: isRemoveHovered ? 'color.red.50' : 'transparent',
11322
+ backgroundColor: isRemoveHovered ? 'color.red.100' : 'transparent',
11323
+ opacity: isRemoveHovered ? 1 : 0.7,
11299
11324
  onMouseEnter: () => setIsRemoveHovered(true),
11300
11325
  onMouseLeave: () => setIsRemoveHovered(false),
11301
11326
  onClick: e => {
@@ -11362,7 +11387,7 @@ var TagInputView = _ref2 => {
11362
11387
  outline: 'none',
11363
11388
  backgroundColor: 'transparent',
11364
11389
  fontSize: appStudio.Typography.fontSizes[size],
11365
- color: isDisabled ? 'color.gray.400' : 'color.gray.900',
11390
+ color: isDisabled ? 'color.gray.400' : 'color.gray.800',
11366
11391
  flex: 1,
11367
11392
  minWidth: '120px'
11368
11393
  }, views == null ? void 0 : views.input);
@@ -12782,7 +12807,7 @@ var Shapes$2 = {
12782
12807
  default: {
12783
12808
  borderRadius: '8px'
12784
12809
  },
12785
- sharp: {
12810
+ square: {
12786
12811
  borderRadius: '0px'
12787
12812
  },
12788
12813
  rounded: {
@@ -14449,9 +14474,9 @@ var ThumbSizes = {
14449
14474
  }
14450
14475
  };
14451
14476
  var SliderShapes = {
14452
- sharp: 0,
14477
+ square: 0,
14453
14478
  rounded: 4,
14454
- pillShaped: 24
14479
+ pill: 24
14455
14480
  };
14456
14481
  var getSlider = themeMode => {
14457
14482
  return {
@@ -15265,7 +15290,7 @@ var hideModal = name => {
15265
15290
  * Following the 4px grid system
15266
15291
  */
15267
15292
  var ContainerShapes = {
15268
- sharp: {
15293
+ square: {
15269
15294
  borderRadius: 0
15270
15295
  },
15271
15296
  rounded: {
@@ -16714,30 +16739,25 @@ var TabHeader = _ref => {
16714
16739
  textStyles
16715
16740
  } = _ref;
16716
16741
  // Base styles for the tab header
16742
+ // Base styles for the tab header
16717
16743
  var baseStyles = {
16718
16744
  display: 'flex',
16719
16745
  alignItems: 'center',
16720
16746
  justifyContent: 'center',
16721
- padding: '10px 16px',
16747
+ padding: '12px 16px',
16722
16748
  cursor: 'pointer',
16723
- borderTopLeftRadius: '4px',
16724
- borderTopRightRadius: '4px',
16725
- borderBottomLeftRadius: 0,
16726
- borderBottomRightRadius: 0,
16727
- borderWidth: '1px',
16728
- borderStyle: 'solid',
16729
- borderColor: isActive ? 'theme.primary' : 'transparent',
16730
- borderBottomColor: isActive ? 'transparent' : 'color.gray.200',
16731
- backgroundColor: isActive ? 'color.white' : 'transparent',
16749
+ borderBottom: '2px solid',
16750
+ borderBottomColor: isActive ? 'theme.primary' : 'transparent',
16751
+ backgroundColor: 'transparent',
16732
16752
  color: isActive ? 'theme.primary' : 'color.gray.600',
16733
- fontWeight: 'normal',
16734
- position: 'relative',
16735
- // If active, show a bottom border that matches the background color
16736
- // to create the illusion that the tab is connected to the content
16753
+ fontWeight: isActive ? '600' : '500',
16754
+ marginBottom: '-1px',
16755
+ transition: 'all 0.2s ease',
16737
16756
  // Hover state
16738
16757
  on: {
16739
16758
  hover: {
16740
- color: 'theme.primary'
16759
+ color: 'theme.primary',
16760
+ borderBottomColor: isActive ? 'theme.primary' : 'color.gray.300'
16741
16761
  }
16742
16762
  }
16743
16763
  };
@@ -16799,7 +16819,11 @@ var TabsView = _ref => {
16799
16819
  React__default.createElement(appStudio.Vertical, Object.assign({
16800
16820
  width: "100%",
16801
16821
  height: '100%'
16802
- }, views.container), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({}, views.headerTabs), tabs.map(tab => {
16822
+ }, views.container), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
16823
+ width: "100%",
16824
+ borderBottom: "1px solid",
16825
+ borderBottomColor: "color.gray.200"
16826
+ }, views.headerTabs), tabs.map(tab => {
16803
16827
  // Determine if the current tab in the loop is the active one
16804
16828
  var isActive = tab.title === activeTab.title;
16805
16829
  // Prepare the onClick handler for this specific tab
@@ -17373,7 +17397,7 @@ var SlideEffect = _ref => {
17373
17397
  }))))));
17374
17398
  };
17375
17399
 
17376
- var _excluded$$ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration", "highlightSlide", "highlightSlideDuration", "highlightSlideStagger", "highlightSlideSequential", "themeMode", "textComponent"];
17400
+ var _excluded$$ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration", "highlightSlide", "highlightSlideDuration", "highlightSlideStagger", "highlightSlideSequential", "themeMode"];
17377
17401
  function escapeRegExp(string) {
17378
17402
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
17379
17403
  }
@@ -17404,8 +17428,7 @@ var TitleView = _ref => {
17404
17428
  highlightSlideDuration = 500,
17405
17429
  highlightSlideStagger = 50,
17406
17430
  highlightSlideSequential = true,
17407
- themeMode: elementMode,
17408
- textComponent
17431
+ themeMode: elementMode
17409
17432
  } = _ref,
17410
17433
  props = _objectWithoutPropertiesLoose(_ref, _excluded$$);
17411
17434
  var {
@@ -17459,7 +17482,6 @@ var TitleView = _ref => {
17459
17482
  highlightSlideStagger,
17460
17483
  highlightSlideSequential
17461
17484
  }, props));
17462
- var TextComponent = textComponent || appStudio.Text;
17463
17485
  var fontSize = TitleSizes[size];
17464
17486
  // Highlight style props
17465
17487
  var highlightProps = HighlightStyles[highlightStyle](resolvedHighlightColor, resolvedHighlightSecondaryColor);
@@ -17480,13 +17502,12 @@ var TitleView = _ref => {
17480
17502
  // Get the text to display
17481
17503
  var text = typeof finalDisplayedText === 'string' ? finalDisplayedText : typeof children === 'string' ? children : '';
17482
17504
  // Common container props
17483
- var containerProps = Object.assign({
17505
+ var containerProps = {
17484
17506
  ref,
17485
- animate: inView ? controlledAnimate : undefined
17486
- }, !textComponent && {
17507
+ animate: inView ? controlledAnimate : undefined,
17487
17508
  as: 'h1',
17488
17509
  fontSize
17489
- });
17510
+ };
17490
17511
  // Render highlighted text content (typewriter, slide, or plain)
17491
17512
  var renderHighlightedContent = content => {
17492
17513
  // If animations are enabled but not in view, render invisible placeholder
@@ -17502,8 +17523,7 @@ var TitleView = _ref => {
17502
17523
  return /*#__PURE__*/React__default.createElement(TypewriterEffect, Object.assign({
17503
17524
  text: content,
17504
17525
  typingSpeed: Math.max(30, highlightTypewriterDuration / (content.length * 10)),
17505
- cursorColor: "currentColor",
17506
- textComponent: TextComponent
17526
+ cursorColor: "currentColor"
17507
17527
  }, highlightProps));
17508
17528
  }
17509
17529
  if (highlightSlide) {
@@ -17514,8 +17534,7 @@ var TitleView = _ref => {
17514
17534
  sequential: stateHighlightSlideSequential,
17515
17535
  direction: "up",
17516
17536
  fontSize: fontSize,
17517
- wordProps: highlightProps,
17518
- textComponent: TextComponent
17537
+ wordProps: highlightProps
17519
17538
  });
17520
17539
  }
17521
17540
  return renderWithLineBreaks(content);
@@ -17535,13 +17554,11 @@ var TitleView = _ref => {
17535
17554
  lastIndex = match.index + match[0].length;
17536
17555
  }
17537
17556
  if (lastIndex < text.length) parts.push(text.substring(lastIndex));
17538
- return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({
17539
- fontSize: fontSize
17540
- }, containerProps, views == null ? void 0 : views.container, props), parts.map((part, idx) => typeof part === 'string' ? (/*#__PURE__*/React__default.createElement(TextComponent, {
17557
+ return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({}, containerProps, views == null ? void 0 : views.container, props), parts.map((part, idx) => typeof part === 'string' ? (/*#__PURE__*/React__default.createElement(appStudio.Text, {
17541
17558
  key: "text-" + idx,
17542
17559
  as: "span",
17543
17560
  display: "inline"
17544
- }, renderWithLineBreaks(part))) : (/*#__PURE__*/React__default.createElement(TextComponent, Object.assign({
17561
+ }, renderWithLineBreaks(part))) : (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
17545
17562
  key: "highlight-" + idx,
17546
17563
  as: "span",
17547
17564
  display: "inline",
@@ -17550,16 +17567,14 @@ var TitleView = _ref => {
17550
17567
  }
17551
17568
  // Case 2: Has highlight style but no highlight target - apply style to entire title
17552
17569
  if (highlightStyle && !activeHighlightTarget) {
17553
- return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({
17554
- fontSize: fontSize
17555
- }, containerProps, props, views == null ? void 0 : views.container), /*#__PURE__*/React__default.createElement(TextComponent, Object.assign({
17570
+ return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({}, containerProps, props, views == null ? void 0 : views.container), /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
17556
17571
  as: "span",
17557
17572
  display: "inline",
17558
17573
  animate: inView ? controlledHighlightAnimate : undefined
17559
17574
  }, !highlightSlide ? highlightProps : {}, views == null ? void 0 : views.highlight), renderHighlightedContent(text)));
17560
17575
  }
17561
17576
  // Case 3: Default - no highlighting
17562
- return /*#__PURE__*/React__default.createElement(TextComponent, Object.assign({}, containerProps, props, views == null ? void 0 : views.container), renderWithLineBreaks(text));
17577
+ return /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({}, containerProps, props, views == null ? void 0 : views.container), renderWithLineBreaks(text));
17563
17578
  };
17564
17579
 
17565
17580
  /**
@@ -17625,9 +17640,9 @@ var useToggleState = defaultToggled => {
17625
17640
  };
17626
17641
 
17627
17642
  var ToggleShapes = {
17628
- sharp: 0,
17643
+ square: 0,
17629
17644
  rounded: 4,
17630
- pillShaped: 24
17645
+ pill: 24
17631
17646
  };
17632
17647
  /**
17633
17648
  * Generate toggle variants with proper color combinations based on main color and contrast
@@ -17744,7 +17759,7 @@ var ToggleView = _ref => {
17744
17759
  };
17745
17760
  return /*#__PURE__*/React__default.createElement(appStudio.Center, Object.assign({
17746
17761
  role: "Toggle",
17747
- padding: shape === 'pillShaped' ? '10px 12px' : '8px',
17762
+ padding: shape === 'pill' ? '10px 12px' : '8px',
17748
17763
  width: "fit-content",
17749
17764
  cursor: isDisabled ? 'not-allowed' : 'pointer',
17750
17765
  borderRadius: ToggleShapes[shape],
@@ -18653,13 +18668,13 @@ var Shapes$3 = {
18653
18668
  default: {
18654
18669
  borderRadius: '8px'
18655
18670
  },
18656
- sharp: {
18671
+ square: {
18657
18672
  borderRadius: 0
18658
18673
  },
18659
18674
  rounded: {
18660
18675
  borderRadius: '8px'
18661
18676
  },
18662
- pillShaped: {
18677
+ pill: {
18663
18678
  borderRadius: '9999px'
18664
18679
  }
18665
18680
  };
@@ -19121,13 +19136,13 @@ var Shapes$4 = {
19121
19136
  default: {
19122
19137
  borderRadius: '8px'
19123
19138
  },
19124
- sharp: {
19139
+ square: {
19125
19140
  borderRadius: 0
19126
19141
  },
19127
19142
  rounded: {
19128
19143
  borderRadius: '8px'
19129
19144
  },
19130
- pillShaped: {
19145
+ pill: {
19131
19146
  borderRadius: '9999px'
19132
19147
  }
19133
19148
  };