@idealyst/components 1.1.6 → 1.1.7
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/package.json +8 -3
- package/src/Accordion/Accordion.native.tsx +15 -9
- package/src/Accordion/Accordion.styles.tsx +193 -168
- package/src/Accordion/Accordion.web.tsx +12 -7
- package/src/ActivityIndicator/ActivityIndicator.native.tsx +3 -2
- package/src/ActivityIndicator/ActivityIndicator.styles.tsx +22 -11
- package/src/ActivityIndicator/ActivityIndicator.web.tsx +2 -2
- package/src/Alert/Alert.native.tsx +11 -10
- package/src/Alert/Alert.styles.tsx +162 -253
- package/src/Alert/Alert.web.tsx +6 -10
- package/src/Avatar/Avatar.native.tsx +5 -2
- package/src/Avatar/Avatar.styles.tsx +48 -18
- package/src/Avatar/Avatar.web.tsx +2 -2
- package/src/Badge/Badge.native.tsx +2 -2
- package/src/Badge/Badge.styles.tsx +37 -16
- package/src/Badge/Badge.web.tsx +6 -6
- package/src/Breadcrumb/Breadcrumb.native.tsx +12 -5
- package/src/Breadcrumb/Breadcrumb.styles.tsx +59 -58
- package/src/Breadcrumb/Breadcrumb.web.tsx +13 -6
- package/src/Button/Button.native.tsx +39 -14
- package/src/Button/Button.styles.tsx +106 -208
- package/src/Button/Button.web.tsx +10 -8
- package/src/Card/Card.native.tsx +14 -6
- package/src/Card/Card.styles.tsx +64 -62
- package/src/Card/Card.web.tsx +5 -4
- package/src/Checkbox/Checkbox.native.tsx +7 -3
- package/src/Checkbox/Checkbox.styles.tsx +49 -25
- package/src/Checkbox/Checkbox.web.tsx +3 -3
- package/src/Chip/Chip.native.tsx +5 -5
- package/src/Chip/Chip.styles.tsx +71 -21
- package/src/Chip/Chip.web.tsx +5 -5
- package/src/Dialog/Dialog.native.tsx +10 -4
- package/src/Dialog/Dialog.styles.tsx +130 -90
- package/src/Dialog/Dialog.web.tsx +4 -4
- package/src/Divider/Divider.native.tsx +29 -42
- package/src/Divider/Divider.styles.tsx +138 -242
- package/src/Divider/Divider.web.tsx +17 -14
- package/src/Icon/Icon.native.tsx +11 -3
- package/src/Icon/Icon.styles.tsx +10 -4
- package/src/Image/Image.styles.tsx +53 -37
- package/src/Input/Input.native.tsx +6 -7
- package/src/Input/Input.styles.tsx +194 -174
- package/src/Input/Input.web.tsx +5 -8
- package/src/Link/Link.native.tsx +4 -1
- package/src/List/List.styles.tsx +79 -105
- package/src/List/ListItem.native.tsx +5 -3
- package/src/List/ListItem.web.tsx +4 -3
- package/src/Menu/Menu.native.tsx +1 -1
- package/src/Menu/Menu.styles.tsx +53 -37
- package/src/Menu/Menu.web.tsx +2 -2
- package/src/Menu/MenuItem.native.tsx +5 -3
- package/src/Menu/MenuItem.styles.tsx +68 -69
- package/src/Menu/MenuItem.web.tsx +16 -3
- package/src/Popover/Popover.native.tsx +1 -1
- package/src/Popover/Popover.styles.tsx +40 -29
- package/src/Popover/Popover.web.tsx +1 -1
- package/src/Pressable/Pressable.native.tsx +3 -1
- package/src/Pressable/Pressable.styles.tsx +20 -13
- package/src/Pressable/Pressable.web.tsx +1 -1
- package/src/Progress/Progress.native.tsx +15 -6
- package/src/Progress/Progress.styles.tsx +125 -85
- package/src/Progress/Progress.web.tsx +10 -9
- package/src/RadioButton/RadioButton.native.tsx +8 -3
- package/src/RadioButton/RadioButton.styles.tsx +44 -37
- package/src/RadioButton/RadioButton.web.tsx +3 -3
- package/src/SVGImage/SVGImage.styles.tsx +28 -16
- package/src/Screen/Screen.native.tsx +23 -13
- package/src/Screen/Screen.styles.tsx +57 -46
- package/src/Screen/Screen.web.tsx +1 -1
- package/src/Select/Select.native.tsx +11 -5
- package/src/Select/Select.styles.tsx +72 -52
- package/src/Select/Select.web.tsx +5 -5
- package/src/Skeleton/Skeleton.styles.tsx +26 -14
- package/src/Slider/Slider.native.tsx +9 -5
- package/src/Slider/Slider.styles.tsx +59 -48
- package/src/Slider/Slider.web.tsx +5 -5
- package/src/Switch/Switch.native.tsx +6 -2
- package/src/Switch/Switch.styles.tsx +46 -19
- package/src/Switch/Switch.web.tsx +4 -4
- package/src/TabBar/TabBar.native.tsx +23 -31
- package/src/TabBar/TabBar.styles.tsx +215 -371
- package/src/TabBar/TabBar.web.tsx +21 -33
- package/src/Table/Table.native.tsx +1 -1
- package/src/Table/Table.styles.tsx +11 -4
- package/src/Table/Table.web.tsx +1 -1
- package/src/Text/Text.native.tsx +3 -4
- package/src/Text/Text.styles.tsx +7 -1
- package/src/Text/Text.web.tsx +1 -1
- package/src/TextArea/TextArea.styles.tsx +90 -58
- package/src/Tooltip/Tooltip.native.tsx +2 -2
- package/src/Tooltip/Tooltip.styles.tsx +21 -12
- package/src/Tooltip/Tooltip.web.tsx +2 -2
- package/src/Video/Video.styles.tsx +39 -23
- package/src/View/View.native.tsx +4 -2
- package/src/View/View.styles.tsx +33 -22
- package/src/View/View.web.tsx +13 -2
- package/src/extensions/applyExtension.ts +210 -0
- package/src/extensions/extendComponent.ts +377 -0
- package/src/extensions/index.ts +102 -0
- package/src/extensions/types.ts +497 -0
- package/src/globals.ts +16 -0
- package/src/index.native.ts +4 -0
- package/src/index.ts +28 -0
- package/src/utils/deepMerge.ts +54 -2
package/src/utils/deepMerge.ts
CHANGED
|
@@ -14,9 +14,31 @@ function isPlainObject(value: unknown): value is Record<string, any> {
|
|
|
14
14
|
* Deep merge two objects together, with the second object taking priority.
|
|
15
15
|
* Arrays and non-plain objects are replaced rather than merged.
|
|
16
16
|
*
|
|
17
|
+
* Special handling:
|
|
18
|
+
* - Setting a value to `undefined` removes that key from the result
|
|
19
|
+
* - Nested objects (like `_web`, `variants`) are recursively merged
|
|
20
|
+
*
|
|
17
21
|
* @param target - The base object
|
|
18
22
|
* @param source - The object to merge in (takes priority)
|
|
19
23
|
* @returns A new merged object
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Basic merge
|
|
28
|
+
* deepMerge({ a: 1, b: 2 }, { b: 3, c: 4 })
|
|
29
|
+
* // => { a: 1, b: 3, c: 4 }
|
|
30
|
+
*
|
|
31
|
+
* // Nested _web merge
|
|
32
|
+
* deepMerge(
|
|
33
|
+
* { padding: 10, _web: { cursor: 'pointer', display: 'flex' } },
|
|
34
|
+
* { _web: { cursor: 'default' } }
|
|
35
|
+
* )
|
|
36
|
+
* // => { padding: 10, _web: { cursor: 'default', display: 'flex' } }
|
|
37
|
+
*
|
|
38
|
+
* // Remove property with undefined
|
|
39
|
+
* deepMerge({ a: 1, b: 2 }, { b: undefined })
|
|
40
|
+
* // => { a: 1 }
|
|
41
|
+
* ```
|
|
20
42
|
*/
|
|
21
43
|
export function deepMerge<T extends Record<string, any>, S extends Record<string, any>>(
|
|
22
44
|
target: T,
|
|
@@ -29,11 +51,15 @@ export function deepMerge<T extends Record<string, any>, S extends Record<string
|
|
|
29
51
|
const sourceValue = source[key]
|
|
30
52
|
const targetValue = result[key]
|
|
31
53
|
|
|
54
|
+
// If source value is undefined, remove the key entirely
|
|
55
|
+
if (sourceValue === undefined) {
|
|
56
|
+
delete result[key]
|
|
57
|
+
}
|
|
32
58
|
// If both values are plain objects, merge them recursively
|
|
33
|
-
if (isPlainObject(targetValue) && isPlainObject(sourceValue)) {
|
|
59
|
+
else if (isPlainObject(targetValue) && isPlainObject(sourceValue)) {
|
|
34
60
|
result[key] = deepMerge(targetValue, sourceValue)
|
|
35
61
|
} else {
|
|
36
|
-
// Otherwise, source value takes priority (including arrays, primitives, null
|
|
62
|
+
// Otherwise, source value takes priority (including arrays, primitives, null)
|
|
37
63
|
result[key] = sourceValue
|
|
38
64
|
}
|
|
39
65
|
}
|
|
@@ -41,3 +67,29 @@ export function deepMerge<T extends Record<string, any>, S extends Record<string
|
|
|
41
67
|
|
|
42
68
|
return result as T & S
|
|
43
69
|
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Deep merge multiple objects together, with later objects taking priority.
|
|
73
|
+
* This is useful for merging multiple extensions in order.
|
|
74
|
+
*
|
|
75
|
+
* @param objects - Objects to merge (later ones have higher precedence)
|
|
76
|
+
* @returns A new merged object
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* deepMergeAll(
|
|
81
|
+
* { a: 1, b: 2 }, // base
|
|
82
|
+
* { b: 3, c: 4 }, // first extension
|
|
83
|
+
* { c: 5, d: 6 } // second extension (highest precedence)
|
|
84
|
+
* )
|
|
85
|
+
* // => { a: 1, b: 3, c: 5, d: 6 }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
export function deepMergeAll<T extends Record<string, any>>(
|
|
89
|
+
...objects: (T | undefined | null)[]
|
|
90
|
+
): T {
|
|
91
|
+
return objects.reduce<T>((acc, obj) => {
|
|
92
|
+
if (obj == null) return acc
|
|
93
|
+
return deepMerge(acc, obj) as T
|
|
94
|
+
}, {} as T)
|
|
95
|
+
}
|