@app-studio/web 0.9.13 → 0.9.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/web.esm.js CHANGED
@@ -17029,8 +17029,78 @@ var useToggleState = defaultToggled => {
17029
17029
  };
17030
17030
  };
17031
17031
 
17032
- var _excluded$T = ["children", "shape", "variant", "isHovered", "setIsHovered", "isDisabled", "isToggle", "setIsToggled", "onToggle", "views"];
17032
+ var ToggleShapes = {
17033
+ sharp: 0,
17034
+ rounded: 4,
17035
+ pillShaped: 24
17036
+ };
17037
+ /**
17038
+ * Generate toggle variants with proper color combinations based on main color and contrast
17039
+ * Similar to Button's getButtonVariants function
17040
+ */
17041
+ var getToggleVariants = (color, isLight) => ({
17042
+ outline: {
17043
+ backgroundColor: 'transparent',
17044
+ color: color,
17045
+ borderWidth: 1,
17046
+ borderStyle: 'solid',
17047
+ borderColor: color,
17048
+ _hover: {
17049
+ backgroundColor: color,
17050
+ color: isLight ? 'color.black' : 'color.white',
17051
+ transform: 'translateY(-1px)'
17052
+ },
17053
+ _active: {
17054
+ backgroundColor: color,
17055
+ color: isLight ? 'color.black' : 'color.white',
17056
+ transform: 'translateY(0)'
17057
+ },
17058
+ transition: 'all 0.2s ease'
17059
+ },
17060
+ ghost: {
17061
+ backgroundColor: 'transparent',
17062
+ color: color,
17063
+ borderWidth: 0,
17064
+ borderStyle: 'none',
17065
+ borderColor: 'transparent',
17066
+ _hover: {
17067
+ backgroundColor: color,
17068
+ color: isLight ? 'color.black' : 'color.white',
17069
+ transform: 'translateY(-1px)'
17070
+ },
17071
+ _active: {
17072
+ backgroundColor: color,
17073
+ color: isLight ? 'color.black' : 'color.white',
17074
+ transform: 'translateY(0)'
17075
+ },
17076
+ transition: 'all 0.2s ease'
17077
+ },
17078
+ link: {
17079
+ backgroundColor: 'transparent',
17080
+ color: color,
17081
+ borderWidth: 1,
17082
+ borderStyle: 'solid',
17083
+ borderColor: 'transparent',
17084
+ textDecoration: 'underline',
17085
+ textUnderlineOffset: '1px',
17086
+ textDecorationThickness: '1px',
17087
+ _hover: {
17088
+ borderColor: color,
17089
+ textDecorationThickness: '2px',
17090
+ transform: 'translateY(-1px)'
17091
+ },
17092
+ _active: {
17093
+ borderColor: color,
17094
+ textDecorationThickness: '2px',
17095
+ transform: 'translateY(0)'
17096
+ },
17097
+ transition: 'all 0.2s ease'
17098
+ }
17099
+ });
17100
+
17101
+ var _excluded$T = ["children", "shape", "variant", "isHovered", "setIsHovered", "isDisabled", "isToggle", "setIsToggled", "onToggle", "views", "backgroundColor", "color", "themeMode"];
17033
17102
  var ToggleView = _ref => {
17103
+ var _ref2;
17034
17104
  var {
17035
17105
  children,
17036
17106
  shape = 'rounded',
@@ -17041,25 +17111,30 @@ var ToggleView = _ref => {
17041
17111
  isToggle,
17042
17112
  setIsToggled,
17043
17113
  onToggle,
17044
- views
17114
+ views,
17115
+ backgroundColor,
17116
+ // primary candidate for main color
17117
+ color,
17118
+ // 2nd candidate for main color
17119
+ themeMode: elementMode
17045
17120
  } = _ref,
17046
17121
  props = _objectWithoutPropertiesLoose(_ref, _excluded$T);
17047
- var toggleColor = !isDisabled ? 'color.trueGray.400' : 'theme.disabled';
17122
+ /* theme helpers */
17123
+ var {
17124
+ getColor,
17125
+ themeMode
17126
+ } = useTheme();
17127
+ var mode = elementMode != null ? elementMode : themeMode;
17128
+ /* MAIN COLOR – determines the entire palette */
17129
+ var mainColorKey = (_ref2 = backgroundColor != null ? backgroundColor : color) != null ? _ref2 : 'theme.primary';
17130
+ var mainTone = getColor(isDisabled ? 'theme.disabled' : mainColorKey, {
17131
+ themeMode: mode
17132
+ });
17133
+ var tone = contrast(mainTone);
17134
+ /* variant palette */
17135
+ var palette = useMemo(() => getToggleVariants(mainTone, tone === 'light'), [mainTone, tone]);
17136
+ var base = palette[variant];
17048
17137
  var isActive = !!(isToggle || isHovered);
17049
- var toggleVariants = {
17050
- outline: {
17051
- borderWidth: 1,
17052
- borderStyle: 'solid',
17053
- borderColor: 'color.trueGray.400'
17054
- },
17055
- link: {
17056
- borderWidth: 1,
17057
- borderStyle: 'solid',
17058
- borderColor: isActive ? toggleColor : 'transparent',
17059
- textDecoration: 'underline'
17060
- },
17061
- ghost: {}
17062
- };
17063
17138
  var handleHover = () => setIsHovered(!isHovered);
17064
17139
  var handleToggle = () => {
17065
17140
  if (!isDisabled) {
@@ -17076,14 +17151,15 @@ var ToggleView = _ref => {
17076
17151
  role: "Toggle",
17077
17152
  padding: shape === 'pillShaped' ? '10px 12px' : '8px',
17078
17153
  width: "fit-content",
17079
- color: isActive ? 'color.white' : toggleColor,
17080
- backgroundColor: isActive ? toggleColor : 'transparent',
17081
- onMouseEnter: handleHover,
17082
- onMouseLeave: () => setIsHovered(false),
17083
17154
  cursor: isDisabled ? 'not-allowed' : 'pointer',
17084
- borderRadius: shape === 'pillShaped' ? '50px' : '8px',
17085
- onClick: handleToggle
17086
- }, toggleVariants[variant], props, views == null ? void 0 : views.container), children);
17155
+ borderRadius: ToggleShapes[shape],
17156
+ onClick: handleToggle,
17157
+ onMouseEnter: handleHover,
17158
+ onMouseLeave: () => setIsHovered(false)
17159
+ }, base, isActive && {
17160
+ backgroundColor: mainTone,
17161
+ color: tone === 'light' ? 'color.black' : 'color.white'
17162
+ }, props, views == null ? void 0 : views.container), children);
17087
17163
  };
17088
17164
 
17089
17165
  var _excluded$U = ["children", "shape", "variant", "isDisabled", "isToggled", "onToggle"];