@ankhorage/surface 0.0.1
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/LICENSE +21 -0
- package/README.md +76 -0
- package/dist/context/FontContext.d.ts +20 -0
- package/dist/context/FontContext.d.ts.map +1 -0
- package/dist/context/FontContext.js +25 -0
- package/dist/context/FontContext.js.map +1 -0
- package/dist/context/TranslationContext.d.ts +22 -0
- package/dist/context/TranslationContext.d.ts.map +1 -0
- package/dist/context/TranslationContext.js +26 -0
- package/dist/context/TranslationContext.js.map +1 -0
- package/dist/core/responsive/ResponsiveProvider.d.ts +7 -0
- package/dist/core/responsive/ResponsiveProvider.d.ts.map +1 -0
- package/dist/core/responsive/ResponsiveProvider.js +20 -0
- package/dist/core/responsive/ResponsiveProvider.js.map +1 -0
- package/dist/core/responsive/breakpoints.d.ts +9 -0
- package/dist/core/responsive/breakpoints.d.ts.map +1 -0
- package/dist/core/responsive/breakpoints.js +9 -0
- package/dist/core/responsive/breakpoints.js.map +1 -0
- package/dist/core/responsive/getBreakpointFromWidth.d.ts +3 -0
- package/dist/core/responsive/getBreakpointFromWidth.d.ts.map +1 -0
- package/dist/core/responsive/getBreakpointFromWidth.js +10 -0
- package/dist/core/responsive/getBreakpointFromWidth.js.map +1 -0
- package/dist/core/responsive/index.d.ts +7 -0
- package/dist/core/responsive/index.d.ts.map +1 -0
- package/dist/core/responsive/index.js +6 -0
- package/dist/core/responsive/index.js.map +1 -0
- package/dist/core/responsive/resolve.d.ts +3 -0
- package/dist/core/responsive/resolve.d.ts.map +1 -0
- package/dist/core/responsive/resolve.js +21 -0
- package/dist/core/responsive/resolve.js.map +1 -0
- package/dist/core/responsive/types.d.ts +8 -0
- package/dist/core/responsive/types.d.ts.map +1 -0
- package/dist/core/responsive/types.js +2 -0
- package/dist/core/responsive/types.js.map +1 -0
- package/dist/core/responsive/useBreakpoint.d.ts +3 -0
- package/dist/core/responsive/useBreakpoint.d.ts.map +1 -0
- package/dist/core/responsive/useBreakpoint.js +7 -0
- package/dist/core/responsive/useBreakpoint.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/Box.d.ts +10 -0
- package/dist/layout/Box.d.ts.map +1 -0
- package/dist/layout/Box.js +34 -0
- package/dist/layout/Box.js.map +1 -0
- package/dist/layout/Container.d.ts +11 -0
- package/dist/layout/Container.d.ts.map +1 -0
- package/dist/layout/Container.js +24 -0
- package/dist/layout/Container.js.map +1 -0
- package/dist/layout/Grid.d.ts +14 -0
- package/dist/layout/Grid.d.ts.map +1 -0
- package/dist/layout/Grid.js +51 -0
- package/dist/layout/Grid.js.map +1 -0
- package/dist/layout/Show.d.ts +9 -0
- package/dist/layout/Show.d.ts.map +1 -0
- package/dist/layout/Show.js +8 -0
- package/dist/layout/Show.js.map +1 -0
- package/dist/layout/Stack.d.ts +14 -0
- package/dist/layout/Stack.d.ts.map +1 -0
- package/dist/layout/Stack.js +37 -0
- package/dist/layout/Stack.js.map +1 -0
- package/dist/layout/Template.d.ts +18 -0
- package/dist/layout/Template.d.ts.map +1 -0
- package/dist/layout/Template.js +36 -0
- package/dist/layout/Template.js.map +1 -0
- package/dist/layout/helpers.d.ts +56 -0
- package/dist/layout/helpers.d.ts.map +1 -0
- package/dist/layout/helpers.js +91 -0
- package/dist/layout/helpers.js.map +1 -0
- package/dist/layout/index.d.ts +13 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +7 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/primitives/heading/Heading.d.ts +4 -0
- package/dist/primitives/heading/Heading.d.ts.map +1 -0
- package/dist/primitives/heading/Heading.js +30 -0
- package/dist/primitives/heading/Heading.js.map +1 -0
- package/dist/primitives/heading/index.d.ts +3 -0
- package/dist/primitives/heading/index.d.ts.map +1 -0
- package/dist/primitives/heading/index.js +2 -0
- package/dist/primitives/heading/index.js.map +1 -0
- package/dist/primitives/heading/resolveHeadingStyle.d.ts +5 -0
- package/dist/primitives/heading/resolveHeadingStyle.d.ts.map +1 -0
- package/dist/primitives/heading/resolveHeadingStyle.js +20 -0
- package/dist/primitives/heading/resolveHeadingStyle.js.map +1 -0
- package/dist/primitives/heading/types.d.ts +12 -0
- package/dist/primitives/heading/types.d.ts.map +1 -0
- package/dist/primitives/heading/types.js +2 -0
- package/dist/primitives/heading/types.js.map +1 -0
- package/dist/primitives/icon/Icon.d.ts +20 -0
- package/dist/primitives/icon/Icon.d.ts.map +1 -0
- package/dist/primitives/icon/Icon.js +19 -0
- package/dist/primitives/icon/Icon.js.map +1 -0
- package/dist/primitives/icon/index.d.ts +3 -0
- package/dist/primitives/icon/index.d.ts.map +1 -0
- package/dist/primitives/icon/index.js +2 -0
- package/dist/primitives/icon/index.js.map +1 -0
- package/dist/primitives/icon/resolveExpoIconComponent.d.ts +11 -0
- package/dist/primitives/icon/resolveExpoIconComponent.d.ts.map +1 -0
- package/dist/primitives/icon/resolveExpoIconComponent.js +24 -0
- package/dist/primitives/icon/resolveExpoIconComponent.js.map +1 -0
- package/dist/theme/ThemeContext.d.ts +27 -0
- package/dist/theme/ThemeContext.d.ts.map +1 -0
- package/dist/theme/ThemeContext.js +53 -0
- package/dist/theme/ThemeContext.js.map +1 -0
- package/dist/theme/colorEngine.d.ts +22 -0
- package/dist/theme/colorEngine.d.ts.map +1 -0
- package/dist/theme/colorEngine.js +348 -0
- package/dist/theme/colorEngine.js.map +1 -0
- package/dist/theme/createTheme.d.ts +5 -0
- package/dist/theme/createTheme.d.ts.map +1 -0
- package/dist/theme/createTheme.js +109 -0
- package/dist/theme/createTheme.js.map +1 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +6 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/resolveToken.d.ts +12 -0
- package/dist/theme/resolveToken.d.ts.map +1 -0
- package/dist/theme/resolveToken.js +19 -0
- package/dist/theme/resolveToken.js.map +1 -0
- package/dist/theme/types.d.ts +133 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +2 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/utils/deepEqual.d.ts +6 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +36 -0
- package/dist/utils/deepEqual.js.map +1 -0
- package/dist/utils/deepMerge.d.ts +6 -0
- package/dist/utils/deepMerge.d.ts.map +1 -0
- package/dist/utils/deepMerge.js +26 -0
- package/dist/utils/deepMerge.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 2. The Generic Function
|
|
3
|
+
*/
|
|
4
|
+
export function resolveToken(map, value) {
|
|
5
|
+
// Undefined check
|
|
6
|
+
if (value === undefined) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
// Runtime check: Is 'value' a key in 'map'?
|
|
10
|
+
if ((typeof value === 'string' || typeof value === 'number') &&
|
|
11
|
+
Object.prototype.hasOwnProperty.call(map, value)) {
|
|
12
|
+
// Return the mapped token
|
|
13
|
+
// We cast to the specific conditional type, strictly safer than 'any'
|
|
14
|
+
return map[value];
|
|
15
|
+
}
|
|
16
|
+
// Fallback: Return raw value
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=resolveToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveToken.js","sourceRoot":"","sources":["../../src/theme/resolveToken.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,UAAU,YAAY,CAG1B,GAAS,EAAE,KAAa;IACxB,kBAAkB;IAClB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAwC,CAAC;IAClD,CAAC;IAED,4CAA4C;IAC5C,IACE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAChD,CAAC;QACD,0BAA0B;QAC1B,sEAAsE;QACtE,OAAO,GAAG,CAAC,KAAmB,CAAgC,CAAC;IACjE,CAAC;IAED,6BAA6B;IAC7B,OAAO,KAAoC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import type { ThemeConfig as ContractsThemeConfig } from '@ankhorage/contracts';
|
|
2
|
+
export type { ColorHarmony, SystemTone, ThemeConfig, ThemeModeConfig } from '@ankhorage/contracts';
|
|
3
|
+
export type ColorTone = 'jewel' | 'earth' | 'fluorescent' | 'grayscale' | 'pastel';
|
|
4
|
+
export interface ColorScale {
|
|
5
|
+
[key: number]: string;
|
|
6
|
+
50: string;
|
|
7
|
+
100: string;
|
|
8
|
+
200: string;
|
|
9
|
+
300: string;
|
|
10
|
+
400: string;
|
|
11
|
+
500: string;
|
|
12
|
+
600: string;
|
|
13
|
+
700: string;
|
|
14
|
+
800: string;
|
|
15
|
+
900: string;
|
|
16
|
+
950: string;
|
|
17
|
+
}
|
|
18
|
+
export interface NeutralSemantics {
|
|
19
|
+
bg: string;
|
|
20
|
+
bgSubtle: string;
|
|
21
|
+
surface: string;
|
|
22
|
+
surfaceHover: string;
|
|
23
|
+
surfaceActive: string;
|
|
24
|
+
border: string;
|
|
25
|
+
borderStrong: string;
|
|
26
|
+
divider: string;
|
|
27
|
+
text: string;
|
|
28
|
+
textMuted: string;
|
|
29
|
+
textSubtle: string;
|
|
30
|
+
}
|
|
31
|
+
export interface RoleSemantics {
|
|
32
|
+
base: string;
|
|
33
|
+
hover: string;
|
|
34
|
+
strong: string;
|
|
35
|
+
softBg: string;
|
|
36
|
+
softHover: string;
|
|
37
|
+
softActive: string;
|
|
38
|
+
outline: string;
|
|
39
|
+
onSolidText: string;
|
|
40
|
+
}
|
|
41
|
+
export type FontWeight = '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | 'bold' | 'normal';
|
|
42
|
+
export interface ThemeTokens {
|
|
43
|
+
colors: {
|
|
44
|
+
primary: string;
|
|
45
|
+
secondary: string;
|
|
46
|
+
accent: string;
|
|
47
|
+
highlight: string;
|
|
48
|
+
background: string;
|
|
49
|
+
surface: string;
|
|
50
|
+
text: string;
|
|
51
|
+
textSecondary: string;
|
|
52
|
+
border: string;
|
|
53
|
+
error: string;
|
|
54
|
+
success: string;
|
|
55
|
+
warning: string;
|
|
56
|
+
[key: string]: string;
|
|
57
|
+
};
|
|
58
|
+
scales: Record<string, ColorScale>;
|
|
59
|
+
semantics: {
|
|
60
|
+
neutral: NeutralSemantics;
|
|
61
|
+
brand: RoleSemantics;
|
|
62
|
+
secondary: RoleSemantics;
|
|
63
|
+
accent: RoleSemantics;
|
|
64
|
+
highlight: RoleSemantics;
|
|
65
|
+
};
|
|
66
|
+
spacing: {
|
|
67
|
+
none: 0;
|
|
68
|
+
xs: number;
|
|
69
|
+
s: number;
|
|
70
|
+
m: number;
|
|
71
|
+
l: number;
|
|
72
|
+
xl: number;
|
|
73
|
+
xxl: number;
|
|
74
|
+
[key: string]: number;
|
|
75
|
+
};
|
|
76
|
+
radii: {
|
|
77
|
+
none: 0;
|
|
78
|
+
s: number;
|
|
79
|
+
m: number;
|
|
80
|
+
l: number;
|
|
81
|
+
full: number;
|
|
82
|
+
};
|
|
83
|
+
typography: {
|
|
84
|
+
headings: Record<1 | 2 | 3 | 4 | 5 | 6, {
|
|
85
|
+
size: number;
|
|
86
|
+
lineHeight: number;
|
|
87
|
+
weight: 'regular' | 'medium' | 'semiBold' | 'bold';
|
|
88
|
+
}>;
|
|
89
|
+
sizes: {
|
|
90
|
+
xs: number;
|
|
91
|
+
s: number;
|
|
92
|
+
m: number;
|
|
93
|
+
l: number;
|
|
94
|
+
xl: number;
|
|
95
|
+
xxl: number;
|
|
96
|
+
'3xl': number;
|
|
97
|
+
h1: number;
|
|
98
|
+
h2: number;
|
|
99
|
+
h3: number;
|
|
100
|
+
h4: number;
|
|
101
|
+
h5: number;
|
|
102
|
+
h6: number;
|
|
103
|
+
[key: string]: number;
|
|
104
|
+
};
|
|
105
|
+
weights: {
|
|
106
|
+
thin: FontWeight;
|
|
107
|
+
extraLight: FontWeight;
|
|
108
|
+
light: FontWeight;
|
|
109
|
+
regular: FontWeight;
|
|
110
|
+
medium: FontWeight;
|
|
111
|
+
semiBold: FontWeight;
|
|
112
|
+
bold: FontWeight;
|
|
113
|
+
extraBold: FontWeight;
|
|
114
|
+
black: FontWeight;
|
|
115
|
+
};
|
|
116
|
+
fonts: {
|
|
117
|
+
/** Map of weight -> fontFamily name for normal style */
|
|
118
|
+
normal: Record<FontWeight, string | undefined>;
|
|
119
|
+
/** Map of weight -> fontFamily name for italic style */
|
|
120
|
+
italic: Record<FontWeight, string | undefined>;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
shadows: {
|
|
124
|
+
soft: number;
|
|
125
|
+
medium: number;
|
|
126
|
+
hard: number;
|
|
127
|
+
[key: string]: number;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export interface AnkhTheme extends ThemeTokens {
|
|
131
|
+
config: ContractsThemeConfig;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepEqual.d.ts","sourceRoot":"","sources":["../../src/utils/deepEqual.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,EAAE,GAAG,OAAO,KAAG,OA6BpD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple deep equality check for JSON-serializable objects.
|
|
3
|
+
* Efficient enough for UI manifests.
|
|
4
|
+
*/
|
|
5
|
+
export const isDeepEqual = (a, b) => {
|
|
6
|
+
if (a === b)
|
|
7
|
+
return true;
|
|
8
|
+
if (a && b && typeof a === 'object' && typeof b === 'object') {
|
|
9
|
+
if (Array.isArray(a)) {
|
|
10
|
+
if (!Array.isArray(b) || a.length !== b.length)
|
|
11
|
+
return false;
|
|
12
|
+
for (let i = 0; i < a.length; i++) {
|
|
13
|
+
if (!isDeepEqual(a[i], b[i]))
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
if (Array.isArray(b))
|
|
19
|
+
return false;
|
|
20
|
+
const keysA = Object.keys(a);
|
|
21
|
+
const keysB = Object.keys(b);
|
|
22
|
+
if (keysA.length !== keysB.length)
|
|
23
|
+
return false;
|
|
24
|
+
const objA = a;
|
|
25
|
+
const objB = b;
|
|
26
|
+
for (const key of keysA) {
|
|
27
|
+
if (!Object.prototype.hasOwnProperty.call(objB, key))
|
|
28
|
+
return false;
|
|
29
|
+
if (!isDeepEqual(objA[key], objB[key]))
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return Number.isNaN(a) && Number.isNaN(b);
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=deepEqual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepEqual.js","sourceRoot":"","sources":["../../src/utils/deepEqual.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAU,EAAE,CAAU,EAAW,EAAE;IAC7D,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzB,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC7C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAEhD,MAAM,IAAI,GAAG,CAA4B,CAAC;QAC1C,MAAM,IAAI,GAAG,CAA4B,CAAC;QAE1C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACnE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performs a deep merge of `source` into `target`.
|
|
3
|
+
* Specifically handles the nested structure of ThemeConfig (light/dark objects).
|
|
4
|
+
*/
|
|
5
|
+
export declare function deepMerge<T extends object>(target: T, source: Partial<T>): T;
|
|
6
|
+
//# sourceMappingURL=deepMerge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepMerge.d.ts","sourceRoot":"","sources":["../../src/utils/deepMerge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAwB5E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performs a deep merge of `source` into `target`.
|
|
3
|
+
* Specifically handles the nested structure of ThemeConfig (light/dark objects).
|
|
4
|
+
*/
|
|
5
|
+
export function deepMerge(target, source) {
|
|
6
|
+
const result = { ...target };
|
|
7
|
+
Object.keys(source).forEach((key) => {
|
|
8
|
+
const sourceValue = source[key];
|
|
9
|
+
const targetValue = target[key];
|
|
10
|
+
if (sourceValue &&
|
|
11
|
+
typeof sourceValue === 'object' &&
|
|
12
|
+
!Array.isArray(sourceValue) &&
|
|
13
|
+
targetValue &&
|
|
14
|
+
typeof targetValue === 'object' &&
|
|
15
|
+
!Array.isArray(targetValue)) {
|
|
16
|
+
// Recursively merge nested objects
|
|
17
|
+
result[key] = deepMerge(targetValue, sourceValue);
|
|
18
|
+
}
|
|
19
|
+
else if (sourceValue !== undefined) {
|
|
20
|
+
// Direct assignment for non-object values or if target doesn't have an object to merge with
|
|
21
|
+
result[key] = sourceValue;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=deepMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepMerge.js","sourceRoot":"","sources":["../../src/utils/deepMerge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAmB,MAAS,EAAE,MAAkB;IACvE,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAE5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhC,IACE,WAAW;YACX,OAAO,WAAW,KAAK,QAAQ;YAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3B,WAAW;YACX,OAAO,WAAW,KAAK,QAAQ;YAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,CAAC;YACD,mCAAmC;YACnC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,WAAqB,EAAE,WAAqB,CAAe,CAAC;QACtF,CAAC;aAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,4FAA4F;YAC5F,MAAM,CAAC,GAAG,CAAC,GAAG,WAAyB,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ankhorage/surface",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"description": "Render foundation for Ankhorage and standalone React Native or Expo apps.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"peerDependencies": {
|
|
11
|
+
"@expo/vector-icons": ">=14.0.0",
|
|
12
|
+
"expo-font": ">=14.0.4",
|
|
13
|
+
"react": ">=18.2.0",
|
|
14
|
+
"react-native": ">=0.72.0"
|
|
15
|
+
},
|
|
16
|
+
"peerDependenciesMeta": {
|
|
17
|
+
"@expo/vector-icons": {
|
|
18
|
+
"optional": true
|
|
19
|
+
},
|
|
20
|
+
"expo-font": {
|
|
21
|
+
"optional": true
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@ankhorage/contracts": "^0.0.1",
|
|
26
|
+
"culori": "^4.0.2"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist"
|
|
30
|
+
],
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"default": "./dist/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "rm -rf dist tsconfig.tsbuildinfo && bun x tsc -p tsconfig.json",
|
|
42
|
+
"lint": "eslint src --max-warnings=0",
|
|
43
|
+
"lint:fix": "eslint src --fix --max-warnings=0",
|
|
44
|
+
"test": "bun test src"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@expo/vector-icons": "^15.0.3",
|
|
48
|
+
"@types/bun": "^1.3.8",
|
|
49
|
+
"@types/culori": "^4.0.1",
|
|
50
|
+
"@types/node": "^25.2.3",
|
|
51
|
+
"@types/react": "^19.2.14",
|
|
52
|
+
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
53
|
+
"@typescript-eslint/parser": "^8.0.0",
|
|
54
|
+
"eslint": "^9.0.0",
|
|
55
|
+
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
56
|
+
"eslint-plugin-unused-imports": "^4.4.1",
|
|
57
|
+
"react": "19.1.0",
|
|
58
|
+
"react-native": "0.81.5",
|
|
59
|
+
"typescript": "^5.9.3"
|
|
60
|
+
},
|
|
61
|
+
"packageManager": "bun@1.3.11"
|
|
62
|
+
}
|