@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
@@ -144,7 +144,7 @@
144
144
  };
145
145
 
146
146
  var AccordionShapes = {
147
- sharp: {
147
+ square: {
148
148
  borderRadius: 0
149
149
  },
150
150
  rounded: {
@@ -1259,17 +1259,14 @@
1259
1259
  width: "100%"
1260
1260
  }, /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
1261
1261
  size: "md",
1262
- weight: "semiBold",
1263
- backgroundColor: Theme[variant].container.backgroundColor
1262
+ weight: "semiBold"
1264
1263
  }, views == null ? void 0 : views.title), title), subtitle && (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
1265
- size: "sm",
1266
- backgroundColor: Theme[variant].container.backgroundColor
1264
+ size: "sm"
1267
1265
  }, views == null ? void 0 : views.subtitle), subtitle))), showAction && (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
1268
1266
  marginRight: 10,
1269
1267
  onClick: action,
1270
1268
  padding: "6px 10px",
1271
- whiteSpace: "nowrap",
1272
- backgroundColor: Theme[variant].container.backgroundColor
1269
+ whiteSpace: "nowrap"
1273
1270
  }, containerStyle, views == null ? void 0 : views.actionText), actionText)), isClosable && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
1274
1271
  position: "absolute",
1275
1272
  zIndex: 10000,
@@ -2257,9 +2254,9 @@
2257
2254
  * Badge shapes with consistent border radius
2258
2255
  */
2259
2256
  var BadgeShapes = {
2260
- sharp: 0,
2257
+ square: 0,
2261
2258
  rounded: '8px',
2262
- pillShaped: '9999px'
2259
+ pill: '9999px'
2263
2260
  };
2264
2261
  /**
2265
2262
  * Badge positions for absolute positioning
@@ -2337,7 +2334,7 @@
2337
2334
  var {
2338
2335
  content,
2339
2336
  position,
2340
- shape = 'pillShaped',
2337
+ shape = 'pill',
2341
2338
  variant = 'filled',
2342
2339
  size = 'md',
2343
2340
  views,
@@ -2711,9 +2708,9 @@
2711
2708
  * Button shapes with consistent border radius
2712
2709
  */
2713
2710
  var ButtonShapes = {
2714
- sharp: 0,
2711
+ square: 0,
2715
2712
  rounded: 8,
2716
- pillShaped: 999
2713
+ pill: 999
2717
2714
  };
2718
2715
  /**
2719
2716
  * Icon sizes for different button sizes
@@ -3279,11 +3276,23 @@
3279
3276
  getColorHex
3280
3277
  } = appStudio.useTheme();
3281
3278
  /* MAIN COLOR – determines the entire palette */
3282
- var mainColorKey = (_ref6 = backgroundColor != null ? backgroundColor : color) != null ? _ref6 : 'theme.primary';
3283
- var mainTone = getColorHex(isDisabled ? 'theme.disabled' : mainColorKey);
3279
+ // Priority: explicit backgroundColor/color prop -> theme.button.background -> theme.primary
3280
+ var mainColorKey = (_ref6 = backgroundColor != null ? backgroundColor : color) != null ? _ref6 : 'theme.button.background';
3281
+ // Decide which theme token to resolve based on state
3282
+ var stateColorKey = isDisabled ? 'theme.disabled' : isLoading ? 'theme.loading' : mainColorKey;
3283
+ // Resolve to actual hex color.
3284
+ // If 'theme.button.background' isn't defined, it falls back to 'theme.primary'
3285
+ var mainTone = getColorHex(stateColorKey);
3286
+ if (mainTone === 'theme.button.background' || mainTone === 'theme.loading') {
3287
+ mainTone = getColorHex(isLoading ? 'color.dark.500' : 'theme.primary');
3288
+ }
3284
3289
  /* text color - explicitly provided or default to white */
3285
- var resolvedTextColorKey = textColor != null ? textColor : 'color.white';
3290
+ // Priority: explicit textColor prop -> theme.button.text -> color.white
3291
+ var resolvedTextColorKey = textColor != null ? textColor : 'theme.button.text';
3286
3292
  var resolvedTextColor = getColorHex(resolvedTextColorKey);
3293
+ if (resolvedTextColor === 'theme.button.text') {
3294
+ resolvedTextColor = getColorHex('color.white');
3295
+ }
3287
3296
  /* variant palette */
3288
3297
  var palette = React.useMemo(() => getButtonVariants(mainTone, resolvedTextColor, reversed), [mainTone, resolvedTextColor, reversed]);
3289
3298
  var base = palette[variant];
@@ -3356,50 +3365,57 @@
3356
3365
  * - Rounded corners: Consistent border radius
3357
3366
  * - Transitions: Subtle animations
3358
3367
  */
3368
+ /**
3369
+ * Card sizes following the 4px grid system
3370
+ */
3371
+ var CardSizes = {
3372
+ sm: {
3373
+ padding: '12px'
3374
+ },
3375
+ md: {
3376
+ padding: '16px'
3377
+ },
3378
+ lg: {
3379
+ padding: '24px'
3380
+ }
3381
+ };
3359
3382
  /**
3360
3383
  * Card shapes with consistent border radius
3361
3384
  */
3362
3385
  var CardShapes = {
3363
- sharp: 0,
3386
+ square: 0,
3364
3387
  rounded: '8px',
3365
- pillShaped: '16px'
3388
+ pill: '24px'
3366
3389
  };
3367
3390
  /**
3368
3391
  * Get card variants with consistent styling based on theme mode
3369
3392
  */
3370
3393
  var getCardVariants = themeMode => {
3394
+ var isDark = themeMode === 'dark';
3371
3395
  return {
3372
3396
  default: {
3373
- backgroundColor: 'color.white',
3397
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3374
3398
  border: 'none',
3375
3399
  transition: 'background-color 0.2s ease, box-shadow 0.2s ease'
3376
3400
  },
3377
3401
  outlined: {
3378
- backgroundColor: 'color.white',
3402
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3379
3403
  borderWidth: '1px',
3380
3404
  borderStyle: 'solid',
3381
- borderColor: 'color.gray.200',
3405
+ borderColor: isDark ? 'color.gray.700' : 'color.gray.200',
3382
3406
  transition: 'border-color 0.2s ease, box-shadow 0.2s ease',
3383
3407
  _hover: {
3384
- borderColor: 'color.gray.300',
3408
+ borderColor: isDark ? 'color.gray.600' : 'color.gray.300',
3385
3409
  boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.05)'
3386
- },
3387
- _focusVisible: {
3388
- outline: 'none',
3389
- boxShadow: '0 0 0 2px rgba(255, 255, 255, 1), 0 0 0 4px rgba(0, 0, 0, 0.1)'
3390
3410
  }
3391
3411
  },
3392
3412
  elevated: {
3393
- backgroundColor: 'color.white',
3394
- boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.08), 0px 1px 2px rgba(0, 0, 0, 0.06)',
3413
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3414
+ 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)',
3395
3415
  border: 'none',
3396
3416
  transition: 'box-shadow 0.2s ease',
3397
3417
  _hover: {
3398
- boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.08), 0px 2px 4px rgba(0, 0, 0, 0.06)'
3399
- },
3400
- _focusVisible: {
3401
- outline: 'none',
3402
- 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)'
3418
+ 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)'
3403
3419
  }
3404
3420
  }
3405
3421
  };
@@ -3409,50 +3425,31 @@
3409
3425
  * @param theme - Theme object from useTheme hook
3410
3426
  */
3411
3427
  var getDefaultCardStyles = theme => {
3428
+ var isDark = theme.themeMode === 'dark';
3412
3429
  return {
3413
3430
  container: {
3414
- backgroundColor: 'color.white',
3415
- color: 'color.black',
3431
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3432
+ color: isDark ? 'color.white' : 'color.black',
3416
3433
  borderRadius: '8px',
3417
3434
  overflow: 'hidden',
3418
- transition: 'all 0.2s ease',
3419
- media: {
3420
- mobile: {
3421
- borderRadius: '4px'
3422
- }
3423
- }
3435
+ transition: 'all 0.2s ease'
3424
3436
  },
3425
3437
  header: {
3426
3438
  padding: '16px',
3427
3439
  borderBottomWidth: '1px',
3428
3440
  borderBottomStyle: 'solid',
3429
- borderBottomColor: 'color.gray.200',
3430
- color: 'color.black',
3431
- media: {
3432
- mobile: {
3433
- padding: '12px'
3434
- }
3435
- }
3441
+ borderBottomColor: isDark ? 'color.gray.800' : 'color.gray.100',
3442
+ color: 'theme.primary'
3436
3443
  },
3437
3444
  content: {
3438
3445
  padding: '16px',
3439
- color: 'color.black',
3440
- media: {
3441
- mobile: {
3442
- padding: '12px'
3443
- }
3444
- }
3446
+ color: isDark ? 'color.gray.300' : 'color.gray.600'
3445
3447
  },
3446
3448
  footer: {
3447
3449
  padding: '16px',
3448
3450
  borderTopWidth: '1px',
3449
3451
  borderTopStyle: 'solid',
3450
- borderTopColor: 'color.gray.200',
3451
- media: {
3452
- mobile: {
3453
- padding: '12px'
3454
- }
3455
- }
3452
+ borderTopColor: isDark ? 'color.gray.800' : 'color.gray.100'
3456
3453
  }
3457
3454
  };
3458
3455
  };
@@ -3477,12 +3474,14 @@
3477
3474
  var {
3478
3475
  styles: contextStyles
3479
3476
  } = useCardContext();
3480
- var defaultStyles = getDefaultCardStyles().header;
3477
+ var defaultStyles = getDefaultCardStyles(theme).header;
3481
3478
  // Merge styles: Default < Context Override < Direct Props/Style
3482
3479
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.header, props, {
3483
3480
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$header = contextStyles.header) == null ? void 0 : _contextStyles$header.style, style)
3484
3481
  });
3485
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedProps), children);
3482
+ return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
3483
+ gap: 8
3484
+ }, mergedProps), children);
3486
3485
  };
3487
3486
  var CardContent = _ref2 => {
3488
3487
  var _contextStyles$conten;
@@ -3495,12 +3494,14 @@
3495
3494
  var {
3496
3495
  styles: contextStyles
3497
3496
  } = useCardContext();
3498
- var defaultStyles = getDefaultCardStyles().content;
3497
+ var defaultStyles = getDefaultCardStyles(theme).content;
3499
3498
  // Merge styles: Default < Context Override < Direct Props/Style
3500
3499
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.content, props, {
3501
3500
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$conten = contextStyles.content) == null ? void 0 : _contextStyles$conten.style, style)
3502
3501
  });
3503
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedProps), children);
3502
+ return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
3503
+ gap: 12
3504
+ }, mergedProps), children);
3504
3505
  };
3505
3506
  var CardFooter = _ref3 => {
3506
3507
  var _contextStyles$footer;
@@ -3513,15 +3514,17 @@
3513
3514
  var {
3514
3515
  styles: contextStyles
3515
3516
  } = useCardContext();
3516
- var defaultStyles = getDefaultCardStyles().footer;
3517
+ var defaultStyles = getDefaultCardStyles(theme).footer;
3517
3518
  // Merge styles: Default < Context Override < Direct Props/Style
3518
3519
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.footer, props, {
3519
3520
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$footer = contextStyles.footer) == null ? void 0 : _contextStyles$footer.style, style)
3520
3521
  });
3521
- 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);
3522
3525
  };
3523
3526
  var CardView = _ref4 => {
3524
- var _contextValue$styles$;
3527
+ var _CardSizes$size, _contextValue$styles$;
3525
3528
  var {
3526
3529
  variant = 'default',
3527
3530
  size = 'md',
@@ -3536,31 +3539,46 @@
3536
3539
  } = _ref4,
3537
3540
  props = _objectWithoutPropertiesLoose(_ref4, _excluded4$3);
3538
3541
  var theme = appStudio.useTheme();
3539
- var defaultStyles = getDefaultCardStyles();
3542
+ var defaultStyles = getDefaultCardStyles(theme);
3543
+ // Get size padding
3544
+ var sizePadding = ((_CardSizes$size = CardSizes[size]) == null ? void 0 : _CardSizes$size.padding) || '16px';
3540
3545
  // Prepare context value, merging default styles with user's `views` overrides
3541
3546
  var contextValue = React.useMemo(() => ({
3542
3547
  styles: {
3543
- container: Object.assign({}, defaultStyles.container, views == null ? void 0 : views.container),
3544
- header: Object.assign({}, defaultStyles.header, views == null ? void 0 : views.header),
3545
- content: Object.assign({}, defaultStyles.content, views == null ? void 0 : views.content),
3546
- footer: Object.assign({}, defaultStyles.footer, views == null ? void 0 : views.footer)
3547
- }
3548
- }), [defaultStyles, views]);
3548
+ container: Object.assign({}, defaultStyles.container, {
3549
+ borderRadius: CardShapes[shape]
3550
+ }, views == null ? void 0 : views.container),
3551
+ header: Object.assign({}, defaultStyles.header, {
3552
+ padding: sizePadding
3553
+ }, views == null ? void 0 : views.header),
3554
+ content: Object.assign({}, defaultStyles.content, {
3555
+ padding: sizePadding
3556
+ }, views == null ? void 0 : views.content),
3557
+ footer: Object.assign({}, defaultStyles.footer, {
3558
+ padding: sizePadding
3559
+ }, views == null ? void 0 : views.footer)
3560
+ }
3561
+ }), [defaultStyles, views, sizePadding, shape]);
3549
3562
  // Determine if we have explicit Card.Header, Card.Content, Card.Footer components
3550
- // or if we need to wrap children in a default layout
3551
3563
  var hasExplicitStructure = React__default.Children.toArray(children).some(child => /*#__PURE__*/React__default.isValidElement(child) && (child.type === CardHeader || child.type === CardContent || child.type === CardFooter));
3552
- var variantStyles = getCardVariants()[variant];
3564
+ // Get the appropriate variant styles based on theme mode
3565
+ var {
3566
+ themeMode
3567
+ } = theme;
3568
+ var currentThemeMode = elementMode || themeMode;
3569
+ var variantStyles = getCardVariants(currentThemeMode)[variant];
3553
3570
  // Merge styles for the root element
3554
3571
  var mergedRootProps = Object.assign({
3555
3572
  width: isFullWidth ? '100%' : 'auto',
3556
- borderRadius: CardShapes[shape],
3557
3573
  overflow: 'hidden'
3558
3574
  }, variantStyles, contextValue.styles.container, props, {
3559
3575
  style: Object.assign({}, (_contextValue$styles$ = contextValue.styles.container) == null ? void 0 : _contextValue$styles$.style, style)
3560
3576
  });
3561
3577
  return /*#__PURE__*/React__default.createElement(CardContext.Provider, {
3562
3578
  value: contextValue
3563
- }, /*#__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)))));
3579
+ }, /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedRootProps), hasExplicitStructure ? children : (/*#__PURE__*/React__default.createElement(appStudio.Vertical, {
3580
+ width: "100%"
3581
+ }, header && /*#__PURE__*/React__default.createElement(CardHeader, null, header), /*#__PURE__*/React__default.createElement(CardContent, null, children), footer && /*#__PURE__*/React__default.createElement(CardFooter, null, footer)))));
3564
3582
  };
3565
3583
 
3566
3584
  /**
@@ -6348,7 +6366,7 @@
6348
6366
  }
6349
6367
  }
6350
6368
  },
6351
- sharp: {
6369
+ square: {
6352
6370
  borderRadius: 0
6353
6371
  },
6354
6372
  rounded: {
@@ -6359,7 +6377,7 @@
6359
6377
  }
6360
6378
  }
6361
6379
  },
6362
- pillShaped: {
6380
+ pill: {
6363
6381
  borderRadius: '9999px'
6364
6382
  }
6365
6383
  };
@@ -7296,12 +7314,9 @@
7296
7314
  // State-specific colors
7297
7315
  states: {
7298
7316
  hover: {
7299
- active: {
7300
- opacity: 0.9
7301
- },
7302
- inactive: {
7303
- backgroundColor: 'color.gray.400'
7304
- }
7317
+ active: 'theme.primary',
7318
+ inactive: 'color.gray.400',
7319
+ activeOpacity: 0.9
7305
7320
  },
7306
7321
  focus: {
7307
7322
  active: {
@@ -7315,6 +7330,17 @@
7315
7330
  }
7316
7331
  }
7317
7332
  };
7333
+ /**
7334
+ * Transition styles for the Switch component
7335
+ */
7336
+ var TransitionStyles = {
7337
+ slider: {
7338
+ transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)'
7339
+ },
7340
+ knob: {
7341
+ transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)'
7342
+ }
7343
+ };
7318
7344
 
7319
7345
  var _excluded$t = ["id", "name", "label", "inActiveChild", "isChecked", "activeChild", "labelPosition", "shadow", "size", "value", "isHovered", "isDisabled", "isReadOnly", "on", "setOn", "onChange", "setValue", "setIsHovered", "helperText", "views"];
7320
7346
  var SwitchContent = props => /*#__PURE__*/React__default.createElement(appStudio.Input, Object.assign({
@@ -7353,7 +7379,8 @@
7353
7379
  if (onChange) onChange(newValue);
7354
7380
  }
7355
7381
  };
7356
- var handleHover = () => setIsHovered(!isHovered);
7382
+ var handleMouseEnter = () => setIsHovered(true);
7383
+ var handleMouseLeave = () => setIsHovered(false);
7357
7384
  /**
7358
7385
  * Styles for the switch component
7359
7386
  */
@@ -7375,8 +7402,8 @@
7375
7402
  };
7376
7403
  return /*#__PURE__*/React__default.createElement(Label, Object.assign({
7377
7404
  htmlFor: id,
7378
- onMouseEnter: handleHover,
7379
- onMouseLeave: handleHover
7405
+ onMouseEnter: handleMouseEnter,
7406
+ onMouseLeave: handleMouseLeave
7380
7407
  }, switchStyle.container, props), /*#__PURE__*/React__default.createElement(SwitchContent, Object.assign({
7381
7408
  id: id,
7382
7409
  name: name,
@@ -7404,12 +7431,10 @@
7404
7431
  borderRadius: "9999px" // Full rounded for pill shape
7405
7432
  ,
7406
7433
  backgroundColor: isDisabled ? ColorSchemes.default.disabled : value ? isHovered ? ColorSchemes.states.hover.active : ColorSchemes.default.active : isHovered ? ColorSchemes.states.hover.inactive : ColorSchemes.default.inactive,
7407
- overflow: "hidden",
7434
+ opacity: !isDisabled && value && isHovered ? ColorSchemes.states.hover.activeOpacity : 1,
7408
7435
  // State properties
7409
- cursor: "pointer",
7410
- // Animation
7411
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)"
7412
- }, shadow, SliderPadding[size], SliderSizes[size], views['slider']), activeChild && value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7436
+ cursor: "pointer"
7437
+ }, TransitionStyles.slider, shadow, SliderPadding[size], SliderSizes[size], views['slider']), activeChild && value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7413
7438
  marginLeft: 8,
7414
7439
  marginRight: 4,
7415
7440
  transition: "all 0.3s ease",
@@ -7420,8 +7445,9 @@
7420
7445
  }, activeChild)), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
7421
7446
  borderRadius: "50%",
7422
7447
  backgroundColor: ColorSchemes.default.knob,
7423
- boxShadow: "0 1px 2px rgba(0, 0, 0, 0.1)",
7424
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
7448
+ boxShadow: isHovered ? '0 2px 4px rgba(0, 0, 0, 0.2)' : '0 1px 2px rgba(0, 0, 0, 0.1)',
7449
+ transform: isHovered ? 'scale(1.05)' : 'scale(1)'
7450
+ }, TransitionStyles.knob, {
7425
7451
  zIndex: 1
7426
7452
  }, KnobSizes[size], views['circle'])), inActiveChild && !value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7427
7453
  marginRight: 8,
@@ -8501,13 +8527,13 @@
8501
8527
  default: {
8502
8528
  borderRadius: '6px'
8503
8529
  },
8504
- sharp: {
8530
+ square: {
8505
8531
  borderRadius: '0px'
8506
8532
  },
8507
8533
  rounded: {
8508
8534
  borderRadius: '8px'
8509
8535
  },
8510
- pillShaped: {
8536
+ pill: {
8511
8537
  borderRadius: '9999px'
8512
8538
  }
8513
8539
  };
@@ -11195,9 +11221,6 @@
11195
11221
  isReadOnly
11196
11222
  } = _ref;
11197
11223
  var [isRemoveHovered, setIsRemoveHovered] = React__default.useState(false);
11198
- var {
11199
- getColor
11200
- } = appStudio.useTheme();
11201
11224
  var chipSize = {
11202
11225
  xs: {
11203
11226
  padding: '2px 8px',
@@ -11233,29 +11256,31 @@
11233
11256
  alignItems: "center",
11234
11257
  gap: 6,
11235
11258
  padding: chipSize.padding,
11236
- backgroundColor: "white",
11259
+ backgroundColor: "color.gray.100.100",
11237
11260
  borderRadius: "16px",
11238
- border: "1px solid",
11239
- borderColor: "color.black.100",
11261
+ borderWidth: "1px",
11262
+ borderStyle: "solid",
11263
+ borderColor: "color.gray.100",
11240
11264
  boxShadow: "0 1px 2px rgba(0,0,0,0.05)",
11241
11265
  transition: "all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",
11242
11266
  opacity: isDisabled ? 0.6 : 1,
11243
11267
  _hover: !isDisabled && !isReadOnly ? {
11244
- borderColor: 'color.gray.300',
11268
+ backgroundColor: 'color.gray.100.200',
11269
+ borderColor: 'color.gray.200',
11245
11270
  boxShadow: '0 4px 6px rgba(0,0,0,0.05)',
11246
11271
  transform: 'translateY(-1px)'
11247
11272
  } : {}
11248
11273
  }, views == null ? void 0 : views.tag), /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
11249
11274
  fontSize: chipSize.fontSize,
11250
- color: isDisabled ? 'color.gray.400' : 'color.gray.700',
11251
- fontWeight: "500",
11275
+ color: isDisabled ? 'color.gray.100' : 'theme.primary',
11252
11276
  whiteSpace: "nowrap"
11253
11277
  }, views == null ? void 0 : views.tagText), tag), isRemovable && !isDisabled && !isReadOnly && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
11254
11278
  cursor: "pointer",
11255
11279
  padding: "2px",
11256
11280
  borderRadius: "50%",
11257
11281
  transition: "all 0.2s ease",
11258
- backgroundColor: isRemoveHovered ? 'color.red.50' : 'transparent',
11282
+ backgroundColor: isRemoveHovered ? 'color.red.100' : 'transparent',
11283
+ opacity: isRemoveHovered ? 1 : 0.7,
11259
11284
  onMouseEnter: () => setIsRemoveHovered(true),
11260
11285
  onMouseLeave: () => setIsRemoveHovered(false),
11261
11286
  onClick: e => {
@@ -11322,7 +11347,7 @@
11322
11347
  outline: 'none',
11323
11348
  backgroundColor: 'transparent',
11324
11349
  fontSize: appStudio.Typography.fontSizes[size],
11325
- color: isDisabled ? 'color.gray.400' : 'color.gray.900',
11350
+ color: isDisabled ? 'color.gray.400' : 'color.gray.800',
11326
11351
  flex: 1,
11327
11352
  minWidth: '120px'
11328
11353
  }, views == null ? void 0 : views.input);
@@ -12742,7 +12767,7 @@
12742
12767
  default: {
12743
12768
  borderRadius: '8px'
12744
12769
  },
12745
- sharp: {
12770
+ square: {
12746
12771
  borderRadius: '0px'
12747
12772
  },
12748
12773
  rounded: {
@@ -14409,9 +14434,9 @@
14409
14434
  }
14410
14435
  };
14411
14436
  var SliderShapes = {
14412
- sharp: 0,
14437
+ square: 0,
14413
14438
  rounded: 4,
14414
- pillShaped: 24
14439
+ pill: 24
14415
14440
  };
14416
14441
  var getSlider = themeMode => {
14417
14442
  return {
@@ -15225,7 +15250,7 @@
15225
15250
  * Following the 4px grid system
15226
15251
  */
15227
15252
  var ContainerShapes = {
15228
- sharp: {
15253
+ square: {
15229
15254
  borderRadius: 0
15230
15255
  },
15231
15256
  rounded: {
@@ -16674,30 +16699,25 @@
16674
16699
  textStyles
16675
16700
  } = _ref;
16676
16701
  // Base styles for the tab header
16702
+ // Base styles for the tab header
16677
16703
  var baseStyles = {
16678
16704
  display: 'flex',
16679
16705
  alignItems: 'center',
16680
16706
  justifyContent: 'center',
16681
- padding: '10px 16px',
16707
+ padding: '12px 16px',
16682
16708
  cursor: 'pointer',
16683
- borderTopLeftRadius: '4px',
16684
- borderTopRightRadius: '4px',
16685
- borderBottomLeftRadius: 0,
16686
- borderBottomRightRadius: 0,
16687
- borderWidth: '1px',
16688
- borderStyle: 'solid',
16689
- borderColor: isActive ? 'theme.primary' : 'transparent',
16690
- borderBottomColor: isActive ? 'transparent' : 'color.gray.200',
16691
- backgroundColor: isActive ? 'color.white' : 'transparent',
16709
+ borderBottom: '2px solid',
16710
+ borderBottomColor: isActive ? 'theme.primary' : 'transparent',
16711
+ backgroundColor: 'transparent',
16692
16712
  color: isActive ? 'theme.primary' : 'color.gray.600',
16693
- fontWeight: 'normal',
16694
- position: 'relative',
16695
- // If active, show a bottom border that matches the background color
16696
- // to create the illusion that the tab is connected to the content
16713
+ fontWeight: isActive ? '600' : '500',
16714
+ marginBottom: '-1px',
16715
+ transition: 'all 0.2s ease',
16697
16716
  // Hover state
16698
16717
  on: {
16699
16718
  hover: {
16700
- color: 'theme.primary'
16719
+ color: 'theme.primary',
16720
+ borderBottomColor: isActive ? 'theme.primary' : 'color.gray.300'
16701
16721
  }
16702
16722
  }
16703
16723
  };
@@ -16759,7 +16779,11 @@
16759
16779
  React__default.createElement(appStudio.Vertical, Object.assign({
16760
16780
  width: "100%",
16761
16781
  height: '100%'
16762
- }, views.container), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({}, views.headerTabs), tabs.map(tab => {
16782
+ }, views.container), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
16783
+ width: "100%",
16784
+ borderBottom: "1px solid",
16785
+ borderBottomColor: "color.gray.200"
16786
+ }, views.headerTabs), tabs.map(tab => {
16763
16787
  // Determine if the current tab in the loop is the active one
16764
16788
  var isActive = tab.title === activeTab.title;
16765
16789
  // Prepare the onClick handler for this specific tab
@@ -17333,7 +17357,7 @@
17333
17357
  }))))));
17334
17358
  };
17335
17359
 
17336
- var _excluded$$ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration", "highlightSlide", "highlightSlideDuration", "highlightSlideStagger", "highlightSlideSequential", "themeMode", "textComponent"];
17360
+ var _excluded$$ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration", "highlightSlide", "highlightSlideDuration", "highlightSlideStagger", "highlightSlideSequential", "themeMode"];
17337
17361
  function escapeRegExp(string) {
17338
17362
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
17339
17363
  }
@@ -17364,8 +17388,7 @@
17364
17388
  highlightSlideDuration = 500,
17365
17389
  highlightSlideStagger = 50,
17366
17390
  highlightSlideSequential = true,
17367
- themeMode: elementMode,
17368
- textComponent
17391
+ themeMode: elementMode
17369
17392
  } = _ref,
17370
17393
  props = _objectWithoutPropertiesLoose(_ref, _excluded$$);
17371
17394
  var {
@@ -17419,7 +17442,6 @@
17419
17442
  highlightSlideStagger,
17420
17443
  highlightSlideSequential
17421
17444
  }, props));
17422
- var TextComponent = textComponent || appStudio.Text;
17423
17445
  var fontSize = TitleSizes[size];
17424
17446
  // Highlight style props
17425
17447
  var highlightProps = HighlightStyles[highlightStyle](resolvedHighlightColor, resolvedHighlightSecondaryColor);
@@ -17440,13 +17462,12 @@
17440
17462
  // Get the text to display
17441
17463
  var text = typeof finalDisplayedText === 'string' ? finalDisplayedText : typeof children === 'string' ? children : '';
17442
17464
  // Common container props
17443
- var containerProps = Object.assign({
17465
+ var containerProps = {
17444
17466
  ref,
17445
- animate: inView ? controlledAnimate : undefined
17446
- }, !textComponent && {
17467
+ animate: inView ? controlledAnimate : undefined,
17447
17468
  as: 'h1',
17448
17469
  fontSize
17449
- });
17470
+ };
17450
17471
  // Render highlighted text content (typewriter, slide, or plain)
17451
17472
  var renderHighlightedContent = content => {
17452
17473
  // If animations are enabled but not in view, render invisible placeholder
@@ -17462,8 +17483,7 @@
17462
17483
  return /*#__PURE__*/React__default.createElement(TypewriterEffect, Object.assign({
17463
17484
  text: content,
17464
17485
  typingSpeed: Math.max(30, highlightTypewriterDuration / (content.length * 10)),
17465
- cursorColor: "currentColor",
17466
- textComponent: TextComponent
17486
+ cursorColor: "currentColor"
17467
17487
  }, highlightProps));
17468
17488
  }
17469
17489
  if (highlightSlide) {
@@ -17474,8 +17494,7 @@
17474
17494
  sequential: stateHighlightSlideSequential,
17475
17495
  direction: "up",
17476
17496
  fontSize: fontSize,
17477
- wordProps: highlightProps,
17478
- textComponent: TextComponent
17497
+ wordProps: highlightProps
17479
17498
  });
17480
17499
  }
17481
17500
  return renderWithLineBreaks(content);
@@ -17495,13 +17514,11 @@
17495
17514
  lastIndex = match.index + match[0].length;
17496
17515
  }
17497
17516
  if (lastIndex < text.length) parts.push(text.substring(lastIndex));
17498
- return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({
17499
- fontSize: fontSize
17500
- }, containerProps, views == null ? void 0 : views.container, props), parts.map((part, idx) => typeof part === 'string' ? (/*#__PURE__*/React__default.createElement(TextComponent, {
17517
+ 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, {
17501
17518
  key: "text-" + idx,
17502
17519
  as: "span",
17503
17520
  display: "inline"
17504
- }, renderWithLineBreaks(part))) : (/*#__PURE__*/React__default.createElement(TextComponent, Object.assign({
17521
+ }, renderWithLineBreaks(part))) : (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
17505
17522
  key: "highlight-" + idx,
17506
17523
  as: "span",
17507
17524
  display: "inline",
@@ -17510,16 +17527,14 @@
17510
17527
  }
17511
17528
  // Case 2: Has highlight style but no highlight target - apply style to entire title
17512
17529
  if (highlightStyle && !activeHighlightTarget) {
17513
- return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({
17514
- fontSize: fontSize
17515
- }, containerProps, props, views == null ? void 0 : views.container), /*#__PURE__*/React__default.createElement(TextComponent, Object.assign({
17530
+ 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({
17516
17531
  as: "span",
17517
17532
  display: "inline",
17518
17533
  animate: inView ? controlledHighlightAnimate : undefined
17519
17534
  }, !highlightSlide ? highlightProps : {}, views == null ? void 0 : views.highlight), renderHighlightedContent(text)));
17520
17535
  }
17521
17536
  // Case 3: Default - no highlighting
17522
- return /*#__PURE__*/React__default.createElement(TextComponent, Object.assign({}, containerProps, props, views == null ? void 0 : views.container), renderWithLineBreaks(text));
17537
+ return /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({}, containerProps, props, views == null ? void 0 : views.container), renderWithLineBreaks(text));
17523
17538
  };
17524
17539
 
17525
17540
  /**
@@ -17585,9 +17600,9 @@
17585
17600
  };
17586
17601
 
17587
17602
  var ToggleShapes = {
17588
- sharp: 0,
17603
+ square: 0,
17589
17604
  rounded: 4,
17590
- pillShaped: 24
17605
+ pill: 24
17591
17606
  };
17592
17607
  /**
17593
17608
  * Generate toggle variants with proper color combinations based on main color and contrast
@@ -17704,7 +17719,7 @@
17704
17719
  };
17705
17720
  return /*#__PURE__*/React__default.createElement(appStudio.Center, Object.assign({
17706
17721
  role: "Toggle",
17707
- padding: shape === 'pillShaped' ? '10px 12px' : '8px',
17722
+ padding: shape === 'pill' ? '10px 12px' : '8px',
17708
17723
  width: "fit-content",
17709
17724
  cursor: isDisabled ? 'not-allowed' : 'pointer',
17710
17725
  borderRadius: ToggleShapes[shape],
@@ -18613,13 +18628,13 @@
18613
18628
  default: {
18614
18629
  borderRadius: '8px'
18615
18630
  },
18616
- sharp: {
18631
+ square: {
18617
18632
  borderRadius: 0
18618
18633
  },
18619
18634
  rounded: {
18620
18635
  borderRadius: '8px'
18621
18636
  },
18622
- pillShaped: {
18637
+ pill: {
18623
18638
  borderRadius: '9999px'
18624
18639
  }
18625
18640
  };
@@ -19081,13 +19096,13 @@
19081
19096
  default: {
19082
19097
  borderRadius: '8px'
19083
19098
  },
19084
- sharp: {
19099
+ square: {
19085
19100
  borderRadius: 0
19086
19101
  },
19087
19102
  rounded: {
19088
19103
  borderRadius: '8px'
19089
19104
  },
19090
- pillShaped: {
19105
+ pill: {
19091
19106
  borderRadius: '9999px'
19092
19107
  }
19093
19108
  };