@vaneui/ui 0.0.17 → 0.0.19
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/complex.css +34 -706
- package/dist/components/theme/components/theme/themeContext.d.ts +8 -4
- package/dist/components/theme/components/ui/theme/common/ComponentTheme.d.ts +2 -2
- package/dist/components/theme/components/utils/componentUtils.d.ts +1 -1
- package/dist/components/theme/index.js +207 -193
- package/dist/components/theme/index.js.map +1 -1
- package/dist/components/theme/themeContext.d.ts +8 -4
- package/dist/components/ui/theme/common/ComponentTheme.d.ts +2 -2
- package/dist/components/utils/componentUtils.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.esm.js +210 -194
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +211 -193
- package/dist/index.js.map +1 -1
- package/dist/ui.css +34 -706
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -2990,25 +2990,25 @@ const positionClasses = {
|
|
|
2990
2990
|
static: "static"
|
|
2991
2991
|
};
|
|
2992
2992
|
const shadowClasses = {
|
|
2993
|
-
xs: "shadow-
|
|
2994
|
-
sm: "shadow-
|
|
2995
|
-
md: "shadow-
|
|
2996
|
-
lg: "shadow-
|
|
2997
|
-
xl: "shadow-
|
|
2993
|
+
xs: "shadow-2xs",
|
|
2994
|
+
sm: "shadow-xs",
|
|
2995
|
+
md: "shadow-sm",
|
|
2996
|
+
lg: "shadow-md",
|
|
2997
|
+
xl: "shadow-lg"
|
|
2998
2998
|
};
|
|
2999
2999
|
const hoverShadowClasses = {
|
|
3000
|
-
xs: "hover:shadow-
|
|
3001
|
-
sm: "hover:shadow-
|
|
3002
|
-
md: "hover:shadow-
|
|
3003
|
-
lg: "hover:shadow-
|
|
3004
|
-
xl: "hover:shadow-
|
|
3000
|
+
xs: "hover:shadow-xs",
|
|
3001
|
+
sm: "hover:shadow-sm",
|
|
3002
|
+
md: "hover:shadow-md",
|
|
3003
|
+
lg: "hover:shadow-lg",
|
|
3004
|
+
xl: "hover:shadow-xl"
|
|
3005
3005
|
};
|
|
3006
3006
|
const activeShadowClasses = {
|
|
3007
|
-
xs: "active:shadow-
|
|
3008
|
-
sm: "active:shadow-
|
|
3009
|
-
md: "active:shadow-
|
|
3010
|
-
lg: "active:shadow-
|
|
3011
|
-
xl: "active:shadow-
|
|
3007
|
+
xs: "active:shadow-xs",
|
|
3008
|
+
sm: "active:shadow-sm",
|
|
3009
|
+
md: "active:shadow-md",
|
|
3010
|
+
lg: "active:shadow-lg",
|
|
3011
|
+
xl: "active:shadow-xl"
|
|
3012
3012
|
};
|
|
3013
3013
|
const noRingModeClasses = {
|
|
3014
3014
|
base: "ring-0",
|
|
@@ -3026,27 +3026,26 @@ const noShadowModeClasses = {
|
|
|
3026
3026
|
active: "active:shadow-none",
|
|
3027
3027
|
};
|
|
3028
3028
|
|
|
3029
|
-
function
|
|
3029
|
+
function pickFirstTruthyKeyOptional(collection, keys) {
|
|
3030
3030
|
for (const k of keys) {
|
|
3031
|
-
if (
|
|
3031
|
+
if (collection[k] === true)
|
|
3032
3032
|
return k;
|
|
3033
3033
|
}
|
|
3034
|
-
return
|
|
3034
|
+
return undefined;
|
|
3035
3035
|
}
|
|
3036
3036
|
/**
|
|
3037
3037
|
* Pick the first truthy key from props, then from defaults, then fallback.
|
|
3038
3038
|
*/
|
|
3039
|
-
function
|
|
3040
|
-
//
|
|
3041
|
-
const explicit =
|
|
3039
|
+
function pickFirstTruthyKey(props, defaults, keys) {
|
|
3040
|
+
// first check explicit usage in props
|
|
3041
|
+
const explicit = pickFirstTruthyKeyOptional(props, keys);
|
|
3042
3042
|
if (explicit)
|
|
3043
3043
|
return explicit;
|
|
3044
|
-
//
|
|
3045
|
-
const def =
|
|
3044
|
+
// then check component‐level defaults
|
|
3045
|
+
const def = pickFirstTruthyKeyOptional(defaults, keys);
|
|
3046
3046
|
if (def)
|
|
3047
3047
|
return def;
|
|
3048
|
-
|
|
3049
|
-
return fallback;
|
|
3048
|
+
return undefined;
|
|
3050
3049
|
}
|
|
3051
3050
|
|
|
3052
3051
|
class HideTheme extends BaseTheme {
|
|
@@ -3058,81 +3057,12 @@ class HideTheme extends BaseTheme {
|
|
|
3058
3057
|
});
|
|
3059
3058
|
}
|
|
3060
3059
|
getClasses(props, defaults) {
|
|
3061
|
-
const key =
|
|
3060
|
+
const key = pickFirstTruthyKey(props, defaults, HIDE_KEYS);
|
|
3062
3061
|
return [key ? this[key] : ''];
|
|
3063
3062
|
}
|
|
3064
3063
|
}
|
|
3065
3064
|
HideTheme.defaultClasses = hideClasses;
|
|
3066
3065
|
|
|
3067
|
-
const isObject = (item) => {
|
|
3068
|
-
return item !== null && typeof item === 'object' && !Array.isArray(item);
|
|
3069
|
-
};
|
|
3070
|
-
const deepMerge = (target, source) => {
|
|
3071
|
-
const output = Object.assign(Object.create(Object.getPrototypeOf(target)), target);
|
|
3072
|
-
for (const key in source) {
|
|
3073
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
3074
|
-
const sourceValue = source[key];
|
|
3075
|
-
const targetValue = output[key];
|
|
3076
|
-
if (sourceValue === undefined) {
|
|
3077
|
-
continue;
|
|
3078
|
-
}
|
|
3079
|
-
// Special case: If the key is 'defaults', use the contextual mergeDefaults function.
|
|
3080
|
-
if (key === 'defaults' &&
|
|
3081
|
-
isObject(targetValue) &&
|
|
3082
|
-
isObject(sourceValue)) {
|
|
3083
|
-
output[key] = mergeDefaults(targetValue, sourceValue);
|
|
3084
|
-
}
|
|
3085
|
-
// For all other objects, use the standard recursive deep merge.
|
|
3086
|
-
else if (isObject(targetValue) && isObject(sourceValue)) {
|
|
3087
|
-
output[key] = deepMerge(targetValue, sourceValue);
|
|
3088
|
-
}
|
|
3089
|
-
// For non-object values, just assign the value from the source.
|
|
3090
|
-
else {
|
|
3091
|
-
output[key] = sourceValue;
|
|
3092
|
-
}
|
|
3093
|
-
}
|
|
3094
|
-
}
|
|
3095
|
-
return output;
|
|
3096
|
-
};
|
|
3097
|
-
const deepClone = (source) => {
|
|
3098
|
-
if (!isObject(source)) {
|
|
3099
|
-
return source;
|
|
3100
|
-
}
|
|
3101
|
-
const output = Object.assign(Object.create(Object.getPrototypeOf(source)), source);
|
|
3102
|
-
for (const key in output) {
|
|
3103
|
-
if (Object.prototype.hasOwnProperty.call(output, key)) {
|
|
3104
|
-
output[key] = deepClone(output[key]);
|
|
3105
|
-
}
|
|
3106
|
-
}
|
|
3107
|
-
return output;
|
|
3108
|
-
};
|
|
3109
|
-
const findGroup = (key) => EXCLUSIVE_KEY_GROUPS.find(group => group.includes(key));
|
|
3110
|
-
const mergeDefaults = (baseDefaults, overrideDefaults) => {
|
|
3111
|
-
const finalDefaults = { ...baseDefaults };
|
|
3112
|
-
// Iterate over the override keys to apply them.
|
|
3113
|
-
for (const key in overrideDefaults) {
|
|
3114
|
-
if (Object.prototype.hasOwnProperty.call(overrideDefaults, key)) {
|
|
3115
|
-
const overrideValue = overrideDefaults[key];
|
|
3116
|
-
// If the override is setting a key to true...
|
|
3117
|
-
if (overrideValue) {
|
|
3118
|
-
// Find the exclusive group this key belongs to (e.g., SIZE_KEYS).
|
|
3119
|
-
const group = findGroup(key);
|
|
3120
|
-
// If the key is part of an exclusive group...
|
|
3121
|
-
if (group) {
|
|
3122
|
-
// ...set all other keys in that group to false.
|
|
3123
|
-
group.forEach(groupKey => {
|
|
3124
|
-
if (groupKey !== key) {
|
|
3125
|
-
finalDefaults[groupKey] = false;
|
|
3126
|
-
}
|
|
3127
|
-
});
|
|
3128
|
-
}
|
|
3129
|
-
}
|
|
3130
|
-
finalDefaults[key] = overrideValue;
|
|
3131
|
-
}
|
|
3132
|
-
}
|
|
3133
|
-
return finalDefaults;
|
|
3134
|
-
};
|
|
3135
|
-
|
|
3136
3066
|
class ItemsTheme extends BaseTheme {
|
|
3137
3067
|
constructor(initialConfig) {
|
|
3138
3068
|
super();
|
|
@@ -3142,7 +3072,7 @@ class ItemsTheme extends BaseTheme {
|
|
|
3142
3072
|
});
|
|
3143
3073
|
}
|
|
3144
3074
|
getClasses(props, defaults) {
|
|
3145
|
-
const pickedKey =
|
|
3075
|
+
const pickedKey = pickFirstTruthyKey(props, defaults, ITEMS_KEYS);
|
|
3146
3076
|
return [pickedKey && this[pickedKey] ? this[pickedKey] : ''];
|
|
3147
3077
|
}
|
|
3148
3078
|
}
|
|
@@ -3163,7 +3093,7 @@ class JustifyTheme extends BaseTheme {
|
|
|
3163
3093
|
});
|
|
3164
3094
|
}
|
|
3165
3095
|
getClasses(props, defaults) {
|
|
3166
|
-
const key =
|
|
3096
|
+
const key = pickFirstTruthyKey(props, defaults, JUSTIFY_KEYS);
|
|
3167
3097
|
return [key ? this[key] : ''];
|
|
3168
3098
|
}
|
|
3169
3099
|
}
|
|
@@ -3178,7 +3108,7 @@ class PositionTheme extends BaseTheme {
|
|
|
3178
3108
|
});
|
|
3179
3109
|
}
|
|
3180
3110
|
getClasses(props, defaults) {
|
|
3181
|
-
const key =
|
|
3111
|
+
const key = pickFirstTruthyKey(props, defaults, POSITION_KEYS);
|
|
3182
3112
|
return [key ? this[key] : ''];
|
|
3183
3113
|
}
|
|
3184
3114
|
}
|
|
@@ -3261,6 +3191,21 @@ const textSizeClasses = {
|
|
|
3261
3191
|
xl: "text-xl",
|
|
3262
3192
|
};
|
|
3263
3193
|
|
|
3194
|
+
class FontStyleTheme extends BaseTheme {
|
|
3195
|
+
constructor(initial) {
|
|
3196
|
+
super();
|
|
3197
|
+
FONT_STYLE_KEYS.forEach((key) => {
|
|
3198
|
+
var _a;
|
|
3199
|
+
this[key] = (_a = initial === null || initial === void 0 ? void 0 : initial[key]) !== null && _a !== void 0 ? _a : FontStyleTheme.defaultClasses[key];
|
|
3200
|
+
});
|
|
3201
|
+
}
|
|
3202
|
+
getClasses(props, defaults) {
|
|
3203
|
+
const key = pickFirstTruthyKey(props, defaults, FONT_STYLE_KEYS);
|
|
3204
|
+
return [key ? this[key] : '']; // No default for font style
|
|
3205
|
+
}
|
|
3206
|
+
}
|
|
3207
|
+
FontStyleTheme.defaultClasses = fontStyleClasses;
|
|
3208
|
+
|
|
3264
3209
|
class FontFamilyTheme extends BaseTheme {
|
|
3265
3210
|
constructor(initial) {
|
|
3266
3211
|
super();
|
|
@@ -3270,7 +3215,7 @@ class FontFamilyTheme extends BaseTheme {
|
|
|
3270
3215
|
});
|
|
3271
3216
|
}
|
|
3272
3217
|
getClasses(props, defaults) {
|
|
3273
|
-
const key =
|
|
3218
|
+
const key = pickFirstTruthyKey(props, defaults, FONT_FAMILY_KEYS);
|
|
3274
3219
|
return [this[key !== null && key !== void 0 ? key : 'sans'] || ''];
|
|
3275
3220
|
}
|
|
3276
3221
|
}
|
|
@@ -3285,27 +3230,12 @@ class FontWeightTheme extends BaseTheme {
|
|
|
3285
3230
|
});
|
|
3286
3231
|
}
|
|
3287
3232
|
getClasses(props, defaults) {
|
|
3288
|
-
const key =
|
|
3233
|
+
const key = pickFirstTruthyKey(props, defaults, FONT_WEIGHT_KEYS);
|
|
3289
3234
|
return [this[key !== null && key !== void 0 ? key : 'normal'] || '']; // Default to 'normal' if no key is provided
|
|
3290
3235
|
}
|
|
3291
3236
|
}
|
|
3292
3237
|
FontWeightTheme.defaultClasses = fontWeightClasses;
|
|
3293
3238
|
|
|
3294
|
-
class FontStyleTheme extends BaseTheme {
|
|
3295
|
-
constructor(initial) {
|
|
3296
|
-
super();
|
|
3297
|
-
FONT_STYLE_KEYS.forEach((key) => {
|
|
3298
|
-
var _a;
|
|
3299
|
-
this[key] = (_a = initial === null || initial === void 0 ? void 0 : initial[key]) !== null && _a !== void 0 ? _a : FontStyleTheme.defaultClasses[key];
|
|
3300
|
-
});
|
|
3301
|
-
}
|
|
3302
|
-
getClasses(props, defaults) {
|
|
3303
|
-
const key = pickKey(props, defaults, FONT_STYLE_KEYS);
|
|
3304
|
-
return [key ? this[key] : '']; // No default for font style
|
|
3305
|
-
}
|
|
3306
|
-
}
|
|
3307
|
-
FontStyleTheme.defaultClasses = fontStyleClasses;
|
|
3308
|
-
|
|
3309
3239
|
class TextDecorationTheme extends BaseTheme {
|
|
3310
3240
|
constructor(initial) {
|
|
3311
3241
|
super();
|
|
@@ -3315,7 +3245,7 @@ class TextDecorationTheme extends BaseTheme {
|
|
|
3315
3245
|
});
|
|
3316
3246
|
}
|
|
3317
3247
|
getClasses(props, defaults) {
|
|
3318
|
-
const key =
|
|
3248
|
+
const key = pickFirstTruthyKey(props, defaults, TEXT_DECORATION_KEYS);
|
|
3319
3249
|
return [key ? this[key] : '']; // No default for text decoration
|
|
3320
3250
|
}
|
|
3321
3251
|
}
|
|
@@ -3330,7 +3260,7 @@ class TextTransformTheme extends BaseTheme {
|
|
|
3330
3260
|
});
|
|
3331
3261
|
}
|
|
3332
3262
|
getClasses(props, defaults) {
|
|
3333
|
-
const key =
|
|
3263
|
+
const key = pickFirstTruthyKey(props, defaults, TEXT_TRANSFORM_KEYS);
|
|
3334
3264
|
return [key ? this[key] : '']; // No default for text transform
|
|
3335
3265
|
}
|
|
3336
3266
|
}
|
|
@@ -3345,12 +3275,81 @@ class TextAlignTheme extends BaseTheme {
|
|
|
3345
3275
|
});
|
|
3346
3276
|
}
|
|
3347
3277
|
getClasses(props, defaults) {
|
|
3348
|
-
const key =
|
|
3278
|
+
const key = pickFirstTruthyKey(props, defaults, TEXT_ALIGN_KEYS);
|
|
3349
3279
|
return [key ? this[key] : '']; // No default for text align
|
|
3350
3280
|
}
|
|
3351
3281
|
}
|
|
3352
3282
|
TextAlignTheme.defaultClasses = textAlignClasses;
|
|
3353
3283
|
|
|
3284
|
+
const isObject = (item) => {
|
|
3285
|
+
return item !== null && typeof item === 'object' && !Array.isArray(item);
|
|
3286
|
+
};
|
|
3287
|
+
const deepMerge = (target, source) => {
|
|
3288
|
+
const output = Object.assign(Object.create(Object.getPrototypeOf(target)), target);
|
|
3289
|
+
for (const key in source) {
|
|
3290
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
3291
|
+
const sourceValue = source[key];
|
|
3292
|
+
const targetValue = output[key];
|
|
3293
|
+
if (sourceValue === undefined) {
|
|
3294
|
+
continue;
|
|
3295
|
+
}
|
|
3296
|
+
// Special case: If the key is 'defaults', use the contextual mergeDefaults function.
|
|
3297
|
+
if (key === 'defaults' &&
|
|
3298
|
+
isObject(targetValue) &&
|
|
3299
|
+
isObject(sourceValue)) {
|
|
3300
|
+
output[key] = mergeDefaults(targetValue, sourceValue);
|
|
3301
|
+
}
|
|
3302
|
+
// For all other objects, use the standard recursive deep merge.
|
|
3303
|
+
else if (isObject(targetValue) && isObject(sourceValue)) {
|
|
3304
|
+
output[key] = deepMerge(targetValue, sourceValue);
|
|
3305
|
+
}
|
|
3306
|
+
// For non-object values, just assign the value from the source.
|
|
3307
|
+
else {
|
|
3308
|
+
output[key] = sourceValue;
|
|
3309
|
+
}
|
|
3310
|
+
}
|
|
3311
|
+
}
|
|
3312
|
+
return output;
|
|
3313
|
+
};
|
|
3314
|
+
const deepClone = (source) => {
|
|
3315
|
+
if (!isObject(source)) {
|
|
3316
|
+
return source;
|
|
3317
|
+
}
|
|
3318
|
+
const output = Object.assign(Object.create(Object.getPrototypeOf(source)), source);
|
|
3319
|
+
for (const key in output) {
|
|
3320
|
+
if (Object.prototype.hasOwnProperty.call(output, key)) {
|
|
3321
|
+
output[key] = deepClone(output[key]);
|
|
3322
|
+
}
|
|
3323
|
+
}
|
|
3324
|
+
return output;
|
|
3325
|
+
};
|
|
3326
|
+
const findGroup = (key) => EXCLUSIVE_KEY_GROUPS.find(group => group.includes(key));
|
|
3327
|
+
const mergeDefaults = (baseDefaults, overrideDefaults) => {
|
|
3328
|
+
const finalDefaults = { ...baseDefaults };
|
|
3329
|
+
// Iterate over the override keys to apply them.
|
|
3330
|
+
for (const key in overrideDefaults) {
|
|
3331
|
+
if (Object.prototype.hasOwnProperty.call(overrideDefaults, key)) {
|
|
3332
|
+
const overrideValue = overrideDefaults[key];
|
|
3333
|
+
// If the override is setting a key to true...
|
|
3334
|
+
if (overrideValue) {
|
|
3335
|
+
// Find the exclusive group this key belongs to (e.g., SIZE_KEYS).
|
|
3336
|
+
const group = findGroup(key);
|
|
3337
|
+
// If the key is part of an exclusive group...
|
|
3338
|
+
if (group) {
|
|
3339
|
+
// ...set all other keys in that group to false.
|
|
3340
|
+
group.forEach(groupKey => {
|
|
3341
|
+
if (groupKey !== key) {
|
|
3342
|
+
finalDefaults[groupKey] = false;
|
|
3343
|
+
}
|
|
3344
|
+
});
|
|
3345
|
+
}
|
|
3346
|
+
}
|
|
3347
|
+
finalDefaults[key] = overrideValue;
|
|
3348
|
+
}
|
|
3349
|
+
}
|
|
3350
|
+
return finalDefaults;
|
|
3351
|
+
};
|
|
3352
|
+
|
|
3354
3353
|
class ComponentTheme {
|
|
3355
3354
|
constructor(tag, base, subThemes, defaults = {}) {
|
|
3356
3355
|
this.tag = tag;
|
|
@@ -3406,7 +3405,7 @@ class SizeTheme extends BaseTheme {
|
|
|
3406
3405
|
});
|
|
3407
3406
|
}
|
|
3408
3407
|
getClasses(props, defaults) {
|
|
3409
|
-
const size =
|
|
3408
|
+
const size = pickFirstTruthyKey(props, defaults, SIZE_KEYS);
|
|
3410
3409
|
return [this[size !== null && size !== void 0 ? size : 'md'] || ''];
|
|
3411
3410
|
}
|
|
3412
3411
|
}
|
|
@@ -3427,8 +3426,8 @@ class GapTheme extends BaseTheme {
|
|
|
3427
3426
|
});
|
|
3428
3427
|
}
|
|
3429
3428
|
getClasses(props, defaults) {
|
|
3430
|
-
const size =
|
|
3431
|
-
const key =
|
|
3429
|
+
const size = pickFirstTruthyKey(props, defaults, SIZE_KEYS) || 'md';
|
|
3430
|
+
const key = pickFirstTruthyKey(props, defaults, GAP_KEYS) || 'noGap';
|
|
3432
3431
|
return [typeof this[key] === 'string' ? this[key] : this[key][size]];
|
|
3433
3432
|
}
|
|
3434
3433
|
}
|
|
@@ -3452,8 +3451,8 @@ class RadiusTheme extends BaseTheme {
|
|
|
3452
3451
|
});
|
|
3453
3452
|
}
|
|
3454
3453
|
getClasses(props, defaults) {
|
|
3455
|
-
const size =
|
|
3456
|
-
const shape =
|
|
3454
|
+
const size = pickFirstTruthyKey(props, defaults, SIZE_KEYS) || 'md';
|
|
3455
|
+
const shape = pickFirstTruthyKey(props, defaults, SHAPE_KEYS) || 'rounded';
|
|
3457
3456
|
return [typeof this[shape] === 'string' ? this[shape] : this[shape][size]];
|
|
3458
3457
|
}
|
|
3459
3458
|
}
|
|
@@ -3472,8 +3471,8 @@ class ShadowTheme extends BaseTheme {
|
|
|
3472
3471
|
});
|
|
3473
3472
|
}
|
|
3474
3473
|
getClasses(props, defaults) {
|
|
3475
|
-
const size =
|
|
3476
|
-
const key =
|
|
3474
|
+
const size = pickFirstTruthyKey(props, defaults, SIZE_KEYS) || 'md';
|
|
3475
|
+
const key = pickFirstTruthyKey(props, defaults, SHADOW_KEYS);
|
|
3477
3476
|
if (key === undefined) {
|
|
3478
3477
|
return [];
|
|
3479
3478
|
}
|
|
@@ -3503,7 +3502,7 @@ class BorderTheme extends BaseTheme {
|
|
|
3503
3502
|
});
|
|
3504
3503
|
}
|
|
3505
3504
|
getClasses(props, defaults) {
|
|
3506
|
-
const key =
|
|
3505
|
+
const key = pickFirstTruthyKey(props, defaults, BORDER_KEYS);
|
|
3507
3506
|
if (!key || !this[key]) {
|
|
3508
3507
|
return MODE_KEYS.map(() => '');
|
|
3509
3508
|
}
|
|
@@ -3517,10 +3516,15 @@ BorderTheme.defaultClasses = {
|
|
|
3517
3516
|
active: "active:border",
|
|
3518
3517
|
},
|
|
3519
3518
|
noBorder: {
|
|
3520
|
-
base: "
|
|
3521
|
-
hover: "
|
|
3522
|
-
active: "
|
|
3519
|
+
base: "",
|
|
3520
|
+
hover: "",
|
|
3521
|
+
active: "",
|
|
3523
3522
|
},
|
|
3523
|
+
//noBorder: {
|
|
3524
|
+
// base: "border-none",
|
|
3525
|
+
// hover: "hover:border-none",
|
|
3526
|
+
// active: "active:border-none",
|
|
3527
|
+
//},
|
|
3524
3528
|
};
|
|
3525
3529
|
|
|
3526
3530
|
class RingTheme extends BaseTheme {
|
|
@@ -3534,7 +3538,7 @@ class RingTheme extends BaseTheme {
|
|
|
3534
3538
|
});
|
|
3535
3539
|
}
|
|
3536
3540
|
getClasses(props, defaults) {
|
|
3537
|
-
const key =
|
|
3541
|
+
const key = pickFirstTruthyKey(props, defaults, RING_KEYS);
|
|
3538
3542
|
if (!key || !this[key]) {
|
|
3539
3543
|
return MODE_KEYS.map(() => '');
|
|
3540
3544
|
}
|
|
@@ -3555,8 +3559,8 @@ class PxTheme extends BaseTheme {
|
|
|
3555
3559
|
});
|
|
3556
3560
|
}
|
|
3557
3561
|
getClasses(props, defaults) {
|
|
3558
|
-
const size =
|
|
3559
|
-
const key =
|
|
3562
|
+
const size = pickFirstTruthyKey(props, defaults, SIZE_KEYS) || 'md';
|
|
3563
|
+
const key = pickFirstTruthyKey(props, defaults, PADDING_KEYS) || 'noPadding';
|
|
3560
3564
|
return [typeof this[key] === 'string' ? this[key] : this[key][size]];
|
|
3561
3565
|
}
|
|
3562
3566
|
}
|
|
@@ -3580,8 +3584,8 @@ class PyTheme extends BaseTheme {
|
|
|
3580
3584
|
});
|
|
3581
3585
|
}
|
|
3582
3586
|
getClasses(props, defaults) {
|
|
3583
|
-
const size =
|
|
3584
|
-
const key =
|
|
3587
|
+
const size = pickFirstTruthyKey(props, defaults, SIZE_KEYS) || 'md';
|
|
3588
|
+
const key = pickFirstTruthyKey(props, defaults, PADDING_KEYS) || 'noPadding';
|
|
3585
3589
|
return [typeof this[key] === 'string' ? this[key] : this[key][size]];
|
|
3586
3590
|
}
|
|
3587
3591
|
}
|
|
@@ -3609,7 +3613,7 @@ class TextAppearanceTheme extends BaseTheme {
|
|
|
3609
3613
|
});
|
|
3610
3614
|
}
|
|
3611
3615
|
getClasses(props, defaults) {
|
|
3612
|
-
const pickedAppearanceKey =
|
|
3616
|
+
const pickedAppearanceKey = pickFirstTruthyKey(props, defaults, TEXT_APPEARANCE_KEYS) || 'default';
|
|
3613
3617
|
const modesForAppearance = this[pickedAppearanceKey];
|
|
3614
3618
|
if (!modesForAppearance) {
|
|
3615
3619
|
return MODE_KEYS.map(() => '');
|
|
@@ -3831,7 +3835,7 @@ class VariantTheme extends BaseTheme {
|
|
|
3831
3835
|
});
|
|
3832
3836
|
}
|
|
3833
3837
|
getClasses(props, defaults) {
|
|
3834
|
-
const activeVariantKey =
|
|
3838
|
+
const activeVariantKey = pickFirstTruthyKey(props, defaults, VARIANT_KEYS) || 'outline';
|
|
3835
3839
|
const activeTextAppearanceTheme = this[activeVariantKey];
|
|
3836
3840
|
if (!activeTextAppearanceTheme) {
|
|
3837
3841
|
return [];
|
|
@@ -3888,8 +3892,8 @@ const defaultButtonTheme = new ComponentTheme("button", "w-fit h-fit cursor-poin
|
|
|
3888
3892
|
px: new PxTheme({
|
|
3889
3893
|
padding: {
|
|
3890
3894
|
xs: 'px-2',
|
|
3891
|
-
sm: 'px-
|
|
3892
|
-
md: 'px-
|
|
3895
|
+
sm: 'px-3',
|
|
3896
|
+
md: 'px-4',
|
|
3893
3897
|
lg: 'px-5',
|
|
3894
3898
|
xl: 'px-6',
|
|
3895
3899
|
}
|
|
@@ -3899,25 +3903,25 @@ const defaultButtonTheme = new ComponentTheme("button", "w-fit h-fit cursor-poin
|
|
|
3899
3903
|
xs: 'py-1',
|
|
3900
3904
|
sm: 'py-1.5',
|
|
3901
3905
|
md: 'py-2',
|
|
3902
|
-
lg: 'py-
|
|
3903
|
-
xl: 'py-
|
|
3906
|
+
lg: 'py-2.5',
|
|
3907
|
+
xl: 'py-3',
|
|
3904
3908
|
}
|
|
3905
3909
|
}),
|
|
3906
3910
|
gap: new GapTheme({
|
|
3907
3911
|
gap: {
|
|
3908
|
-
xs: 'gap-1
|
|
3909
|
-
sm: 'gap-
|
|
3910
|
-
md: 'gap-
|
|
3911
|
-
lg: 'gap-
|
|
3912
|
-
xl: 'gap-
|
|
3912
|
+
xs: 'gap-1',
|
|
3913
|
+
sm: 'gap-1.5',
|
|
3914
|
+
md: 'gap-2',
|
|
3915
|
+
lg: 'gap-2.5',
|
|
3916
|
+
xl: 'gap-3',
|
|
3913
3917
|
}
|
|
3914
3918
|
}),
|
|
3915
3919
|
text: new SizeTheme({
|
|
3916
|
-
xs: 'text-xs
|
|
3917
|
-
sm: 'text-sm
|
|
3920
|
+
xs: 'text-xs',
|
|
3921
|
+
sm: 'text-sm',
|
|
3918
3922
|
md: 'text-base',
|
|
3919
|
-
lg: 'text-lg
|
|
3920
|
-
xl: 'text-xl
|
|
3923
|
+
lg: 'text-lg',
|
|
3924
|
+
xl: 'text-xl',
|
|
3921
3925
|
}),
|
|
3922
3926
|
shadow: new ShadowTheme(),
|
|
3923
3927
|
},
|
|
@@ -3960,36 +3964,36 @@ const defaultBadgeTheme = new ComponentTheme("span", "w-fit h-fit inline-flex tr
|
|
|
3960
3964
|
px: new PxTheme({
|
|
3961
3965
|
padding: {
|
|
3962
3966
|
xs: "px-2",
|
|
3963
|
-
sm: "px-
|
|
3964
|
-
md: "px-
|
|
3967
|
+
sm: "px-3",
|
|
3968
|
+
md: "px-4",
|
|
3965
3969
|
lg: "px-5",
|
|
3966
3970
|
xl: "px-6"
|
|
3967
3971
|
}
|
|
3968
3972
|
}),
|
|
3969
3973
|
py: new PyTheme({
|
|
3970
3974
|
padding: {
|
|
3971
|
-
xs:
|
|
3972
|
-
sm:
|
|
3973
|
-
md:
|
|
3974
|
-
lg:
|
|
3975
|
-
xl:
|
|
3975
|
+
xs: 'py-1',
|
|
3976
|
+
sm: 'py-1.5',
|
|
3977
|
+
md: 'py-2',
|
|
3978
|
+
lg: 'py-2.5',
|
|
3979
|
+
xl: 'py-3',
|
|
3976
3980
|
}
|
|
3977
3981
|
}),
|
|
3978
3982
|
gap: new GapTheme({
|
|
3979
3983
|
gap: {
|
|
3980
|
-
xs:
|
|
3981
|
-
sm:
|
|
3982
|
-
md:
|
|
3983
|
-
lg:
|
|
3984
|
-
xl:
|
|
3984
|
+
xs: 'gap-1',
|
|
3985
|
+
sm: 'gap-1.5',
|
|
3986
|
+
md: 'gap-2',
|
|
3987
|
+
lg: 'gap-2.5',
|
|
3988
|
+
xl: 'gap-3',
|
|
3985
3989
|
}
|
|
3986
3990
|
}),
|
|
3987
3991
|
text: new SizeTheme({
|
|
3988
|
-
xs: 'text-xs
|
|
3989
|
-
sm: 'text-sm
|
|
3992
|
+
xs: 'text-xs',
|
|
3993
|
+
sm: 'text-sm',
|
|
3990
3994
|
md: 'text-base',
|
|
3991
|
-
lg: 'text-lg
|
|
3992
|
-
xl: 'text-xl
|
|
3995
|
+
lg: 'text-lg',
|
|
3996
|
+
xl: 'text-xl',
|
|
3993
3997
|
}),
|
|
3994
3998
|
shadow: new ShadowTheme(),
|
|
3995
3999
|
},
|
|
@@ -4039,26 +4043,26 @@ const defaultChipTheme = new ComponentTheme("span", "w-fit h-fit inline-flex gap
|
|
|
4039
4043
|
padding: {
|
|
4040
4044
|
xs: 'px-2',
|
|
4041
4045
|
sm: 'px-2.5',
|
|
4042
|
-
md: 'px-3
|
|
4043
|
-
lg: 'px-5',
|
|
4044
|
-
xl: 'px-
|
|
4046
|
+
md: 'px-3',
|
|
4047
|
+
lg: 'px-3.5',
|
|
4048
|
+
xl: 'px-4',
|
|
4045
4049
|
}
|
|
4046
4050
|
}),
|
|
4047
4051
|
py: new PyTheme({
|
|
4048
4052
|
padding: {
|
|
4049
|
-
xs: 'py-
|
|
4050
|
-
sm: 'py-1
|
|
4051
|
-
md: 'py-
|
|
4052
|
-
lg: 'py-
|
|
4053
|
-
xl: 'py-
|
|
4053
|
+
xs: 'py-0.5',
|
|
4054
|
+
sm: 'py-1',
|
|
4055
|
+
md: 'py-1.5',
|
|
4056
|
+
lg: 'py-2',
|
|
4057
|
+
xl: 'py-2.5',
|
|
4054
4058
|
}
|
|
4055
4059
|
}),
|
|
4056
4060
|
text: new SizeTheme({
|
|
4057
4061
|
xs: 'text-xs',
|
|
4058
4062
|
sm: 'text-sm',
|
|
4059
|
-
md: 'text-
|
|
4060
|
-
lg: 'text-
|
|
4061
|
-
xl: 'text-
|
|
4063
|
+
md: 'text-base',
|
|
4064
|
+
lg: 'text-lg',
|
|
4065
|
+
xl: 'text-xl',
|
|
4062
4066
|
}),
|
|
4063
4067
|
gap: new GapTheme({
|
|
4064
4068
|
gap: {
|
|
@@ -4167,9 +4171,8 @@ class DirectionTheme extends BaseTheme {
|
|
|
4167
4171
|
});
|
|
4168
4172
|
}
|
|
4169
4173
|
getClasses(props, defaults) {
|
|
4170
|
-
|
|
4171
|
-
|
|
4172
|
-
const reverse = pickKey(props, defaults, DIRECTION_REVERSE_KEYS);
|
|
4174
|
+
let direction = pickFirstTruthyKey(props, defaults, FLEX_DIRECTION_KEYS) || 'column';
|
|
4175
|
+
const reverse = pickFirstTruthyKey(props, defaults, DIRECTION_REVERSE_KEYS);
|
|
4173
4176
|
if (reverse) {
|
|
4174
4177
|
switch (direction) {
|
|
4175
4178
|
case "column":
|
|
@@ -4199,7 +4202,7 @@ class WrapTheme extends BaseTheme {
|
|
|
4199
4202
|
});
|
|
4200
4203
|
}
|
|
4201
4204
|
getClasses(props, defaults) {
|
|
4202
|
-
const key =
|
|
4205
|
+
const key = pickFirstTruthyKey(props, defaults, WRAP_KEYS);
|
|
4203
4206
|
return key ? [this[key]] : [];
|
|
4204
4207
|
}
|
|
4205
4208
|
}
|
|
@@ -4226,7 +4229,7 @@ class LayoutAppearanceTheme extends BaseTheme {
|
|
|
4226
4229
|
});
|
|
4227
4230
|
}
|
|
4228
4231
|
getClasses(props, defaults) {
|
|
4229
|
-
const pickedAppearanceKey =
|
|
4232
|
+
const pickedAppearanceKey = pickFirstTruthyKey(props, defaults, APPEARANCE_KEYS) || 'default';
|
|
4230
4233
|
const modesForAppearance = this[pickedAppearanceKey];
|
|
4231
4234
|
if (!modesForAppearance) {
|
|
4232
4235
|
return MODE_KEYS.map(() => '');
|
|
@@ -4274,7 +4277,7 @@ class BreakpointTheme extends BaseTheme {
|
|
|
4274
4277
|
});
|
|
4275
4278
|
}
|
|
4276
4279
|
getClasses(props, defaults) {
|
|
4277
|
-
const key =
|
|
4280
|
+
const key = pickFirstTruthyKey(props, defaults, BREAKPOINT_KEYS);
|
|
4278
4281
|
if (!key)
|
|
4279
4282
|
return [];
|
|
4280
4283
|
return [this[key] || ''];
|
|
@@ -4470,18 +4473,18 @@ const defaultSectionTheme = new ComponentTheme("div", "w-full flex flex-col", {
|
|
|
4470
4473
|
}),
|
|
4471
4474
|
py: new PyTheme({
|
|
4472
4475
|
padding: {
|
|
4473
|
-
xs: 'py-3',
|
|
4474
|
-
sm: 'py-
|
|
4475
|
-
md: 'py-
|
|
4476
|
+
xs: 'py-4 max-md:py-3',
|
|
4477
|
+
sm: 'py-8 max-md:py-6',
|
|
4478
|
+
md: 'py-12 max-md:py-6',
|
|
4476
4479
|
lg: 'py-16 max-lg:py-14 max-md:py-12',
|
|
4477
4480
|
xl: 'py-20 max-lg:py-16 max-md:py-12',
|
|
4478
4481
|
}
|
|
4479
4482
|
}),
|
|
4480
4483
|
gap: new GapTheme({
|
|
4481
4484
|
gap: {
|
|
4482
|
-
xs: 'gap-
|
|
4483
|
-
sm: 'gap-
|
|
4484
|
-
md: 'gap-
|
|
4485
|
+
xs: 'gap-4',
|
|
4486
|
+
sm: 'gap-6',
|
|
4487
|
+
md: 'gap-8',
|
|
4485
4488
|
lg: 'gap-12',
|
|
4486
4489
|
xl: 'gap-16',
|
|
4487
4490
|
}
|
|
@@ -4543,6 +4546,8 @@ const gridSubThemes = {
|
|
|
4543
4546
|
const defaultGrid3Theme = new ComponentTheme("div", "grid grid-cols-1 md:grid-cols-3", gridSubThemes, gridDefaults);
|
|
4544
4547
|
const defaultGrid4Theme = new ComponentTheme("div", "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4", gridSubThemes, gridDefaults);
|
|
4545
4548
|
|
|
4549
|
+
const COMPONENT_KEYS = ['button', 'badge', 'chip', 'card', 'divider', 'row', 'col', 'stack', 'section',
|
|
4550
|
+
'grid3', 'grid4', 'pageTitle', 'sectionTitle', 'title', 'text', 'link', 'list', 'listItem'];
|
|
4546
4551
|
const defaultTheme = {
|
|
4547
4552
|
button: defaultButtonTheme,
|
|
4548
4553
|
badge: defaultBadgeTheme,
|
|
@@ -4565,16 +4570,27 @@ const defaultTheme = {
|
|
|
4565
4570
|
list: listTheme,
|
|
4566
4571
|
};
|
|
4567
4572
|
const ThemeContext = react.createContext(defaultTheme);
|
|
4568
|
-
function ThemeProvider({ children, theme: themeObject = {}, themeOverride }) {
|
|
4573
|
+
function ThemeProvider({ children, theme: themeObject = {}, themeDefaults, themeOverride }) {
|
|
4569
4574
|
const mergedTheme = react.useMemo(() => {
|
|
4570
|
-
let
|
|
4575
|
+
let finalTheme = themeObject
|
|
4571
4576
|
? deepMerge(defaultTheme, themeObject)
|
|
4572
4577
|
: defaultTheme;
|
|
4573
4578
|
if (typeof themeOverride === 'function') {
|
|
4574
|
-
const themeToModify = deepClone(
|
|
4575
|
-
|
|
4579
|
+
const themeToModify = deepClone(finalTheme);
|
|
4580
|
+
finalTheme = themeOverride(themeToModify);
|
|
4581
|
+
}
|
|
4582
|
+
if (themeDefaults !== undefined) {
|
|
4583
|
+
for (const key in themeDefaults) {
|
|
4584
|
+
const componentKey = key;
|
|
4585
|
+
const componentTheme = finalTheme[componentKey];
|
|
4586
|
+
const themeDefault = themeDefaults[componentKey];
|
|
4587
|
+
if (themeDefault !== undefined) {
|
|
4588
|
+
finalTheme[componentKey].defaults =
|
|
4589
|
+
mergeDefaults(componentTheme.defaults, themeDefaults[componentKey]);
|
|
4590
|
+
}
|
|
4591
|
+
}
|
|
4576
4592
|
}
|
|
4577
|
-
return
|
|
4593
|
+
return finalTheme;
|
|
4578
4594
|
}, [themeObject, themeOverride]);
|
|
4579
4595
|
return (jsxRuntime.jsx(ThemeContext.Provider, { value: mergedTheme, children: children }));
|
|
4580
4596
|
}
|
|
@@ -4691,6 +4707,7 @@ const List = (props) => {
|
|
|
4691
4707
|
|
|
4692
4708
|
exports.Badge = Badge;
|
|
4693
4709
|
exports.Button = Button;
|
|
4710
|
+
exports.COMPONENT_KEYS = COMPONENT_KEYS;
|
|
4694
4711
|
exports.Card = Card;
|
|
4695
4712
|
exports.Chip = Chip;
|
|
4696
4713
|
exports.Col = Col;
|
|
@@ -4709,5 +4726,6 @@ exports.Stack = Stack;
|
|
|
4709
4726
|
exports.Text = Text;
|
|
4710
4727
|
exports.ThemeProvider = ThemeProvider;
|
|
4711
4728
|
exports.Title = Title;
|
|
4729
|
+
exports.defaultTheme = defaultTheme;
|
|
4712
4730
|
exports.useTheme = useTheme;
|
|
4713
4731
|
//# sourceMappingURL=index.js.map
|