@app-studio/web 0.9.78 → 0.9.80

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.
@@ -1,12 +1,12 @@
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('lucide-react/dynamic'), 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.string.split.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', 'lucide-react/dynamic', '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.string.split.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, global.dynamic, 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, dynamic, 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';
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('lucide-react/dynamic'), 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('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.string.split.js'), require('contrast'), 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', 'lucide-react/dynamic', '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', '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.string.split.js', 'contrast', '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, global.dynamic, null, null, null, null, null, null, null, null, null, null, null, global.zustand, null, global.reactRouterDom, null, null, null, null, null, global.format, null, null, null, global.formik, null, null, global.contrast));
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, dynamic, 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, 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, es_string_split_js, contrast) { 'use strict';
6
6
 
7
7
  var React__default = 'default' in React ? React['default'] : React;
8
- contrast = contrast && Object.prototype.hasOwnProperty.call(contrast, 'default') ? contrast['default'] : contrast;
9
8
  format = format && Object.prototype.hasOwnProperty.call(format, 'default') ? format['default'] : format;
9
+ contrast = contrast && Object.prototype.hasOwnProperty.call(contrast, 'default') ? contrast['default'] : contrast;
10
10
 
11
11
  function asyncGeneratorStep(n, t, e, r, o, a, c) {
12
12
  try {
@@ -2745,11 +2745,10 @@
2745
2745
  padding: 14
2746
2746
  }
2747
2747
  };
2748
- var getButtonVariants = function getButtonVariants(color, isLight, reversed) {
2748
+ var getButtonVariants = function getButtonVariants(color, textColor, reversed) {
2749
2749
  if (reversed === void 0) {
2750
2750
  reversed = false;
2751
2751
  }
2752
- var textColor = isLight ? '#000000' : '#FFFFFF';
2753
2752
  // Determine effective colors based on reversed state
2754
2753
  var effectiveBg = reversed ? textColor : color;
2755
2754
  var effectiveContent = reversed ? color : textColor;
@@ -2876,8 +2875,8 @@
2876
2875
 
2877
2876
  var _excluded$d = ["asComponent", "isDisabled", "isLoading", "isWrapped", "borderRadius", "width", "height", "baseStyles", "sizeStyles", "iconPad", "mainTone", "resolvedTextColor", "children", "borderWidth"],
2878
2877
  _excluded2$3 = ["shape", "isDisabled", "onClick", "shadow", "borderWidth", "isAuto", "isFilled", "views", "children"],
2879
- _excluded3$2 = ["variant", "animation", "to", "isDisabled", "isLoading", "isAuto", "isFilled", "isExternal", "shape", "shadow", "onClick", "views", "baseStyles", "sizeStyles", "iconPad", "resolvedTextColor", "content", "size", "mainTone", "tone", "borderMovingDuration", "borderMovingGradientColors", "animatedStrokeAccentColor", "animatedStrokeTextColor", "getColor"],
2880
- _excluded4$2 = ["variant", "size", "shape", "iconPosition", "loaderPosition", "backgroundColor", "color", "scheme", "reversed", "isAuto", "isFilled", "isDisabled", "isLoading", "isIconRounded", "icon", "children", "to", "isExternal", "shadow", "onClick", "views", "borderMovingDuration", "borderMovingGradientColors", "animatedStrokeAccentColor", "animatedStrokeTextColor"];
2878
+ _excluded3$2 = ["variant", "animation", "to", "isDisabled", "isLoading", "isAuto", "isFilled", "isExternal", "shape", "shadow", "onClick", "views", "baseStyles", "sizeStyles", "iconPad", "resolvedTextColor", "content", "size", "mainTone", "borderMovingDuration", "borderMovingGradientColors", "animatedStrokeAccentColor", "animatedStrokeTextColor", "getColor"],
2879
+ _excluded4$2 = ["variant", "size", "shape", "iconPosition", "loaderPosition", "backgroundColor", "color", "textColor", "reversed", "isAuto", "isFilled", "isDisabled", "isLoading", "isIconRounded", "icon", "children", "to", "isExternal", "shadow", "onClick", "views", "borderMovingDuration", "borderMovingGradientColors", "animatedStrokeAccentColor", "animatedStrokeTextColor"];
2881
2880
  // --- Helper: Button Content ---
2882
2881
  // Renders the inner content: Loader, Icon, and Children.
2883
2882
  var ButtonContent = _ref => {
@@ -3237,7 +3236,7 @@
3237
3236
  // --- Main Component ---
3238
3237
  // --- Main Component ---
3239
3238
  var ButtonView = _ref5 => {
3240
- var _ref6, _ref7, _base$color;
3239
+ var _ref6, _base$color;
3241
3240
  var {
3242
3241
  /* behaviour */
3243
3242
  variant = 'filled',
@@ -3246,13 +3245,13 @@
3246
3245
  iconPosition = 'left',
3247
3246
  loaderPosition = 'left',
3248
3247
  backgroundColor,
3249
- // primary candidate for main color
3248
+ // Primary override for main color
3250
3249
  color,
3251
- // 2nd candidate for main color (NOT text‑color)
3252
- scheme,
3253
- // New scheme prop
3250
+ // Main button color (theme tokens or color palette)
3251
+ textColor,
3252
+ // Explicit text color
3254
3253
  reversed = false,
3255
- // New reversed prop
3254
+ // Reverse colors for dark backgrounds
3256
3255
  isAuto = true,
3257
3256
  isFilled,
3258
3257
  isDisabled,
@@ -3277,24 +3276,30 @@
3277
3276
  props = _objectWithoutPropertiesLoose(_ref5, _excluded4$2);
3278
3277
  /* theme helpers */
3279
3278
  var {
3280
- getColorHex,
3281
- themeMode
3279
+ getColorHex
3282
3280
  } = appStudio.useTheme();
3283
3281
  /* MAIN COLOR – determines the entire palette */
3284
- var mainColorKey = (_ref6 = (_ref7 = backgroundColor != null ? backgroundColor : color) != null ? _ref7 : scheme) != null ? _ref6 : 'theme.primary';
3285
- var mainTone = getColorHex(isDisabled ? 'theme.disabled' : mainColorKey);
3286
- var tone = contrast(mainTone);
3287
- /* text color with mixBlendMode for maximum visibility */
3288
- var textColor;
3289
- if (tone === 'light') {
3290
- textColor = '#000000';
3291
- } else {
3292
- textColor = '#FFFFFF';
3282
+ // Priority: explicit backgroundColor/color prop -> theme.button.background -> theme.primary
3283
+ var mainColorKey = (_ref6 = backgroundColor != null ? backgroundColor : color) != null ? _ref6 : 'theme.button.background';
3284
+ // Decide which theme token to resolve based on state
3285
+ var stateColorKey = isDisabled ? 'theme.disabled' : isLoading ? 'theme.loading' : mainColorKey;
3286
+ // Resolve to actual hex color.
3287
+ // If 'theme.button.background' isn't defined, it falls back to 'theme.primary'
3288
+ var mainTone = getColorHex(stateColorKey);
3289
+ if (mainTone === 'theme.button.background' || mainTone === 'theme.loading') {
3290
+ mainTone = getColorHex(isLoading ? 'color.dark.500' : 'theme.primary');
3291
+ }
3292
+ /* text color - explicitly provided or default to white */
3293
+ // Priority: explicit textColor prop -> theme.button.text -> color.white
3294
+ var resolvedTextColorKey = textColor != null ? textColor : 'theme.button.text';
3295
+ var resolvedTextColor = getColorHex(resolvedTextColorKey);
3296
+ if (resolvedTextColor === 'theme.button.text') {
3297
+ resolvedTextColor = getColorHex('color.white');
3293
3298
  }
3294
3299
  /* variant palette */
3295
- var palette = React.useMemo(() => getButtonVariants(mainTone, tone === 'light', reversed), [mainTone, tone, reversed]);
3300
+ var palette = React.useMemo(() => getButtonVariants(mainTone, resolvedTextColor, reversed), [mainTone, resolvedTextColor, reversed]);
3296
3301
  var base = palette[variant];
3297
- var resolvedTextColor = (_base$color = base == null ? void 0 : base.color) != null ? _base$color : textColor;
3302
+ var finalContentColor = (_base$color = base == null ? void 0 : base.color) != null ? _base$color : resolvedTextColor;
3298
3303
  // Render content logic safely
3299
3304
  var content = /*#__PURE__*/React__default.createElement(ButtonContent, {
3300
3305
  icon: icon,
@@ -3302,7 +3307,7 @@
3302
3307
  iconPosition: iconPosition,
3303
3308
  loaderPosition: loaderPosition,
3304
3309
  size: size,
3305
- resolvedTextColor: resolvedTextColor,
3310
+ resolvedTextColor: finalContentColor,
3306
3311
  isIconRounded: isIconRounded,
3307
3312
  views: views
3308
3313
  }, children);
@@ -3325,11 +3330,10 @@
3325
3330
  baseStyles: base,
3326
3331
  sizeStyles: sizeStyles,
3327
3332
  iconPad: iconPad,
3328
- resolvedTextColor: resolvedTextColor,
3333
+ resolvedTextColor: finalContentColor,
3329
3334
  content: content,
3330
3335
  size: size,
3331
3336
  mainTone: mainTone,
3332
- tone: tone,
3333
3337
  borderMovingDuration: borderMovingDuration,
3334
3338
  borderMovingGradientColors: borderMovingGradientColors,
3335
3339
  animatedStrokeAccentColor: animatedStrokeAccentColor,
@@ -3364,50 +3368,57 @@
3364
3368
  * - Rounded corners: Consistent border radius
3365
3369
  * - Transitions: Subtle animations
3366
3370
  */
3371
+ /**
3372
+ * Card sizes following the 4px grid system
3373
+ */
3374
+ var CardSizes = {
3375
+ sm: {
3376
+ padding: '12px'
3377
+ },
3378
+ md: {
3379
+ padding: '16px'
3380
+ },
3381
+ lg: {
3382
+ padding: '24px'
3383
+ }
3384
+ };
3367
3385
  /**
3368
3386
  * Card shapes with consistent border radius
3369
3387
  */
3370
3388
  var CardShapes = {
3371
3389
  sharp: 0,
3372
3390
  rounded: '8px',
3373
- pillShaped: '16px'
3391
+ pillShaped: '24px'
3374
3392
  };
3375
3393
  /**
3376
3394
  * Get card variants with consistent styling based on theme mode
3377
3395
  */
3378
3396
  var getCardVariants = themeMode => {
3397
+ var isDark = themeMode === 'dark';
3379
3398
  return {
3380
3399
  default: {
3381
- backgroundColor: 'color.white',
3400
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3382
3401
  border: 'none',
3383
3402
  transition: 'background-color 0.2s ease, box-shadow 0.2s ease'
3384
3403
  },
3385
3404
  outlined: {
3386
- backgroundColor: 'color.white',
3405
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3387
3406
  borderWidth: '1px',
3388
3407
  borderStyle: 'solid',
3389
- borderColor: 'color.gray.200',
3408
+ borderColor: isDark ? 'color.gray.700' : 'color.gray.200',
3390
3409
  transition: 'border-color 0.2s ease, box-shadow 0.2s ease',
3391
3410
  _hover: {
3392
- borderColor: 'color.gray.300',
3411
+ borderColor: isDark ? 'color.gray.600' : 'color.gray.300',
3393
3412
  boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.05)'
3394
- },
3395
- _focusVisible: {
3396
- outline: 'none',
3397
- boxShadow: '0 0 0 2px rgba(255, 255, 255, 1), 0 0 0 4px rgba(0, 0, 0, 0.1)'
3398
3413
  }
3399
3414
  },
3400
3415
  elevated: {
3401
- backgroundColor: 'color.white',
3402
- boxShadow: '0px 1px 3px rgba(0, 0, 0, 0.08), 0px 1px 2px rgba(0, 0, 0, 0.06)',
3416
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3417
+ 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)',
3403
3418
  border: 'none',
3404
3419
  transition: 'box-shadow 0.2s ease',
3405
3420
  _hover: {
3406
- boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.08), 0px 2px 4px rgba(0, 0, 0, 0.06)'
3407
- },
3408
- _focusVisible: {
3409
- outline: 'none',
3410
- 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)'
3421
+ 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)'
3411
3422
  }
3412
3423
  }
3413
3424
  };
@@ -3417,50 +3428,31 @@
3417
3428
  * @param theme - Theme object from useTheme hook
3418
3429
  */
3419
3430
  var getDefaultCardStyles = theme => {
3431
+ var isDark = theme.themeMode === 'dark';
3420
3432
  return {
3421
3433
  container: {
3422
- backgroundColor: 'color.white',
3423
- color: 'color.black',
3434
+ backgroundColor: isDark ? 'color.gray.900' : 'color.white',
3435
+ color: isDark ? 'color.white' : 'color.black',
3424
3436
  borderRadius: '8px',
3425
3437
  overflow: 'hidden',
3426
- transition: 'all 0.2s ease',
3427
- media: {
3428
- mobile: {
3429
- borderRadius: '4px'
3430
- }
3431
- }
3438
+ transition: 'all 0.2s ease'
3432
3439
  },
3433
3440
  header: {
3434
3441
  padding: '16px',
3435
3442
  borderBottomWidth: '1px',
3436
3443
  borderBottomStyle: 'solid',
3437
- borderBottomColor: 'color.gray.200',
3438
- color: 'color.black',
3439
- media: {
3440
- mobile: {
3441
- padding: '12px'
3442
- }
3443
- }
3444
+ borderBottomColor: isDark ? 'color.gray.800' : 'color.gray.100',
3445
+ color: 'theme.primary'
3444
3446
  },
3445
3447
  content: {
3446
3448
  padding: '16px',
3447
- color: 'color.black',
3448
- media: {
3449
- mobile: {
3450
- padding: '12px'
3451
- }
3452
- }
3449
+ color: isDark ? 'color.gray.300' : 'color.gray.600'
3453
3450
  },
3454
3451
  footer: {
3455
3452
  padding: '16px',
3456
3453
  borderTopWidth: '1px',
3457
3454
  borderTopStyle: 'solid',
3458
- borderTopColor: 'color.gray.200',
3459
- media: {
3460
- mobile: {
3461
- padding: '12px'
3462
- }
3463
- }
3455
+ borderTopColor: isDark ? 'color.gray.800' : 'color.gray.100'
3464
3456
  }
3465
3457
  };
3466
3458
  };
@@ -3485,12 +3477,14 @@
3485
3477
  var {
3486
3478
  styles: contextStyles
3487
3479
  } = useCardContext();
3488
- var defaultStyles = getDefaultCardStyles().header;
3480
+ var defaultStyles = getDefaultCardStyles(theme).header;
3489
3481
  // Merge styles: Default < Context Override < Direct Props/Style
3490
3482
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.header, props, {
3491
3483
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$header = contextStyles.header) == null ? void 0 : _contextStyles$header.style, style)
3492
3484
  });
3493
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedProps), children);
3485
+ return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
3486
+ gap: 8
3487
+ }, mergedProps), children);
3494
3488
  };
3495
3489
  var CardContent = _ref2 => {
3496
3490
  var _contextStyles$conten;
@@ -3503,12 +3497,14 @@
3503
3497
  var {
3504
3498
  styles: contextStyles
3505
3499
  } = useCardContext();
3506
- var defaultStyles = getDefaultCardStyles().content;
3500
+ var defaultStyles = getDefaultCardStyles(theme).content;
3507
3501
  // Merge styles: Default < Context Override < Direct Props/Style
3508
3502
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.content, props, {
3509
3503
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$conten = contextStyles.content) == null ? void 0 : _contextStyles$conten.style, style)
3510
3504
  });
3511
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedProps), children);
3505
+ return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
3506
+ gap: 12
3507
+ }, mergedProps), children);
3512
3508
  };
3513
3509
  var CardFooter = _ref3 => {
3514
3510
  var _contextStyles$footer;
@@ -3521,15 +3517,17 @@
3521
3517
  var {
3522
3518
  styles: contextStyles
3523
3519
  } = useCardContext();
3524
- var defaultStyles = getDefaultCardStyles().footer;
3520
+ var defaultStyles = getDefaultCardStyles(theme).footer;
3525
3521
  // Merge styles: Default < Context Override < Direct Props/Style
3526
3522
  var mergedProps = Object.assign({}, defaultStyles, contextStyles == null ? void 0 : contextStyles.footer, props, {
3527
3523
  style: Object.assign({}, defaultStyles == null ? void 0 : defaultStyles.style, contextStyles == null || (_contextStyles$footer = contextStyles.footer) == null ? void 0 : _contextStyles$footer.style, style)
3528
3524
  });
3529
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedProps), children);
3525
+ return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
3526
+ gap: 8
3527
+ }, mergedProps), children);
3530
3528
  };
3531
3529
  var CardView = _ref4 => {
3532
- var _contextValue$styles$;
3530
+ var _CardSizes$size, _contextValue$styles$;
3533
3531
  var {
3534
3532
  variant = 'default',
3535
3533
  size = 'md',
@@ -3544,20 +3542,32 @@
3544
3542
  } = _ref4,
3545
3543
  props = _objectWithoutPropertiesLoose(_ref4, _excluded4$3);
3546
3544
  var theme = appStudio.useTheme();
3547
- var defaultStyles = getDefaultCardStyles();
3545
+ var defaultStyles = getDefaultCardStyles(theme);
3546
+ // Get size padding
3547
+ var sizePadding = ((_CardSizes$size = CardSizes[size]) == null ? void 0 : _CardSizes$size.padding) || '16px';
3548
3548
  // Prepare context value, merging default styles with user's `views` overrides
3549
3549
  var contextValue = React.useMemo(() => ({
3550
3550
  styles: {
3551
3551
  container: Object.assign({}, defaultStyles.container, views == null ? void 0 : views.container),
3552
- header: Object.assign({}, defaultStyles.header, views == null ? void 0 : views.header),
3553
- content: Object.assign({}, defaultStyles.content, views == null ? void 0 : views.content),
3554
- footer: Object.assign({}, defaultStyles.footer, views == null ? void 0 : views.footer)
3555
- }
3556
- }), [defaultStyles, views]);
3552
+ header: Object.assign({}, defaultStyles.header, {
3553
+ padding: sizePadding
3554
+ }, views == null ? void 0 : views.header),
3555
+ content: Object.assign({}, defaultStyles.content, {
3556
+ padding: sizePadding
3557
+ }, views == null ? void 0 : views.content),
3558
+ footer: Object.assign({}, defaultStyles.footer, {
3559
+ padding: sizePadding
3560
+ }, views == null ? void 0 : views.footer)
3561
+ }
3562
+ }), [defaultStyles, views, sizePadding]);
3557
3563
  // Determine if we have explicit Card.Header, Card.Content, Card.Footer components
3558
- // or if we need to wrap children in a default layout
3559
3564
  var hasExplicitStructure = React__default.Children.toArray(children).some(child => /*#__PURE__*/React__default.isValidElement(child) && (child.type === CardHeader || child.type === CardContent || child.type === CardFooter));
3560
- var variantStyles = getCardVariants()[variant];
3565
+ // Get the appropriate variant styles based on theme mode
3566
+ var {
3567
+ themeMode
3568
+ } = theme;
3569
+ var currentThemeMode = elementMode || themeMode;
3570
+ var variantStyles = getCardVariants(currentThemeMode)[variant];
3561
3571
  // Merge styles for the root element
3562
3572
  var mergedRootProps = Object.assign({
3563
3573
  width: isFullWidth ? '100%' : 'auto',
@@ -3568,7 +3578,9 @@
3568
3578
  });
3569
3579
  return /*#__PURE__*/React__default.createElement(CardContext.Provider, {
3570
3580
  value: contextValue
3571
- }, /*#__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)))));
3581
+ }, /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, mergedRootProps), hasExplicitStructure ? children : (/*#__PURE__*/React__default.createElement(appStudio.Vertical, {
3582
+ width: "100%"
3583
+ }, header && /*#__PURE__*/React__default.createElement(CardHeader, null, header), /*#__PURE__*/React__default.createElement(CardContent, null, children), footer && /*#__PURE__*/React__default.createElement(CardFooter, null, footer)))));
3572
3584
  };
3573
3585
 
3574
3586
  /**
@@ -7304,12 +7316,9 @@
7304
7316
  // State-specific colors
7305
7317
  states: {
7306
7318
  hover: {
7307
- active: {
7308
- opacity: 0.9
7309
- },
7310
- inactive: {
7311
- backgroundColor: 'color.gray.400'
7312
- }
7319
+ active: 'theme.primary',
7320
+ inactive: 'color.gray.400',
7321
+ activeOpacity: 0.9
7313
7322
  },
7314
7323
  focus: {
7315
7324
  active: {
@@ -7323,6 +7332,17 @@
7323
7332
  }
7324
7333
  }
7325
7334
  };
7335
+ /**
7336
+ * Transition styles for the Switch component
7337
+ */
7338
+ var TransitionStyles = {
7339
+ slider: {
7340
+ transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)'
7341
+ },
7342
+ knob: {
7343
+ transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)'
7344
+ }
7345
+ };
7326
7346
 
7327
7347
  var _excluded$t = ["id", "name", "label", "inActiveChild", "isChecked", "activeChild", "labelPosition", "shadow", "size", "value", "isHovered", "isDisabled", "isReadOnly", "on", "setOn", "onChange", "setValue", "setIsHovered", "helperText", "views"];
7328
7348
  var SwitchContent = props => /*#__PURE__*/React__default.createElement(appStudio.Input, Object.assign({
@@ -7361,7 +7381,8 @@
7361
7381
  if (onChange) onChange(newValue);
7362
7382
  }
7363
7383
  };
7364
- var handleHover = () => setIsHovered(!isHovered);
7384
+ var handleMouseEnter = () => setIsHovered(true);
7385
+ var handleMouseLeave = () => setIsHovered(false);
7365
7386
  /**
7366
7387
  * Styles for the switch component
7367
7388
  */
@@ -7383,8 +7404,8 @@
7383
7404
  };
7384
7405
  return /*#__PURE__*/React__default.createElement(Label, Object.assign({
7385
7406
  htmlFor: id,
7386
- onMouseEnter: handleHover,
7387
- onMouseLeave: handleHover
7407
+ onMouseEnter: handleMouseEnter,
7408
+ onMouseLeave: handleMouseLeave
7388
7409
  }, switchStyle.container, props), /*#__PURE__*/React__default.createElement(SwitchContent, Object.assign({
7389
7410
  id: id,
7390
7411
  name: name,
@@ -7412,12 +7433,10 @@
7412
7433
  borderRadius: "9999px" // Full rounded for pill shape
7413
7434
  ,
7414
7435
  backgroundColor: isDisabled ? ColorSchemes.default.disabled : value ? isHovered ? ColorSchemes.states.hover.active : ColorSchemes.default.active : isHovered ? ColorSchemes.states.hover.inactive : ColorSchemes.default.inactive,
7415
- overflow: "hidden",
7436
+ opacity: !isDisabled && value && isHovered ? ColorSchemes.states.hover.activeOpacity : 1,
7416
7437
  // State properties
7417
- cursor: "pointer",
7418
- // Animation
7419
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)"
7420
- }, shadow, SliderPadding[size], SliderSizes[size], views['slider']), activeChild && value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7438
+ cursor: "pointer"
7439
+ }, TransitionStyles.slider, shadow, SliderPadding[size], SliderSizes[size], views['slider']), activeChild && value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7421
7440
  marginLeft: 8,
7422
7441
  marginRight: 4,
7423
7442
  transition: "all 0.3s ease",
@@ -7428,8 +7447,9 @@
7428
7447
  }, activeChild)), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
7429
7448
  borderRadius: "50%",
7430
7449
  backgroundColor: ColorSchemes.default.knob,
7431
- boxShadow: "0 1px 2px rgba(0, 0, 0, 0.1)",
7432
- transition: "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
7450
+ boxShadow: isHovered ? '0 2px 4px rgba(0, 0, 0, 0.2)' : '0 1px 2px rgba(0, 0, 0, 0.1)',
7451
+ transform: isHovered ? 'scale(1.05)' : 'scale(1)'
7452
+ }, TransitionStyles.knob, {
7433
7453
  zIndex: 1
7434
7454
  }, KnobSizes[size], views['circle'])), inActiveChild && !value && (/*#__PURE__*/React__default.createElement(appStudio.View, {
7435
7455
  marginRight: 8,
@@ -11241,29 +11261,32 @@
11241
11261
  alignItems: "center",
11242
11262
  gap: 6,
11243
11263
  padding: chipSize.padding,
11244
- backgroundColor: "white",
11264
+ backgroundColor: "color.gray.100",
11245
11265
  borderRadius: "16px",
11246
- border: "1px solid",
11247
- borderColor: "color.black.100",
11266
+ borderWidth: "1px",
11267
+ borderStyle: "solid",
11268
+ borderColor: "color.gray.300",
11248
11269
  boxShadow: "0 1px 2px rgba(0,0,0,0.05)",
11249
11270
  transition: "all 0.2s cubic-bezier(0.4, 0, 0.2, 1)",
11250
11271
  opacity: isDisabled ? 0.6 : 1,
11251
11272
  _hover: !isDisabled && !isReadOnly ? {
11252
- borderColor: 'color.gray.300',
11273
+ backgroundColor: 'color.gray.200',
11274
+ borderColor: 'color.gray.400',
11253
11275
  boxShadow: '0 4px 6px rgba(0,0,0,0.05)',
11254
11276
  transform: 'translateY(-1px)'
11255
11277
  } : {}
11256
11278
  }, views == null ? void 0 : views.tag), /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
11257
11279
  fontSize: chipSize.fontSize,
11258
- color: isDisabled ? 'color.gray.400' : 'color.gray.700',
11259
- fontWeight: "500",
11280
+ color: isDisabled ? 'color.gray.400' : 'theme.primary',
11281
+ fontWeight: "bold",
11260
11282
  whiteSpace: "nowrap"
11261
11283
  }, views == null ? void 0 : views.tagText), tag), isRemovable && !isDisabled && !isReadOnly && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
11262
11284
  cursor: "pointer",
11263
11285
  padding: "2px",
11264
11286
  borderRadius: "50%",
11265
11287
  transition: "all 0.2s ease",
11266
- backgroundColor: isRemoveHovered ? 'color.red.50' : 'transparent',
11288
+ backgroundColor: isRemoveHovered ? 'color.red.100' : 'transparent',
11289
+ opacity: isRemoveHovered ? 1 : 0.7,
11267
11290
  onMouseEnter: () => setIsRemoveHovered(true),
11268
11291
  onMouseLeave: () => setIsRemoveHovered(false),
11269
11292
  onClick: e => {
@@ -11330,7 +11353,7 @@
11330
11353
  outline: 'none',
11331
11354
  backgroundColor: 'transparent',
11332
11355
  fontSize: appStudio.Typography.fontSizes[size],
11333
- color: isDisabled ? 'color.gray.400' : 'color.gray.900',
11356
+ color: isDisabled ? 'color.gray.400' : 'color.gray.800',
11334
11357
  flex: 1,
11335
11358
  minWidth: '120px'
11336
11359
  }, views == null ? void 0 : views.input);