@tamagui/core 2.7.6 → 3.0.0-beta.637.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.
Files changed (110) hide show
  1. package/dist/cjs/createOptimizedView.cjs +15 -18
  2. package/dist/cjs/createOptimizedView.native.cjs +179 -0
  3. package/dist/cjs/createOptimizedView.native.js +159 -258
  4. package/dist/cjs/createOptimizedView.native.js.map +1 -1
  5. package/dist/cjs/dom.cjs +19 -0
  6. package/dist/cjs/dom.native.cjs +21 -0
  7. package/dist/cjs/dom.native.js +23 -0
  8. package/dist/cjs/dom.native.js.map +1 -0
  9. package/dist/cjs/getBaseViews.cjs +16 -19
  10. package/dist/cjs/getBaseViews.native.cjs +44 -0
  11. package/dist/cjs/getBaseViews.native.js +31 -26
  12. package/dist/cjs/getBaseViews.native.js.map +1 -1
  13. package/dist/cjs/index.cjs +32 -98
  14. package/dist/cjs/index.native.cjs +51 -0
  15. package/dist/cjs/index.native.js +32 -70
  16. package/dist/cjs/index.native.js.map +1 -1
  17. package/dist/cjs/inject-styles.cjs +25 -31
  18. package/dist/cjs/inject-styles.native.cjs +39 -0
  19. package/dist/cjs/inject-styles.native.js +26 -31
  20. package/dist/cjs/inject-styles.native.js.map +1 -1
  21. package/dist/cjs/internal-runtime.cjs +34 -0
  22. package/dist/cjs/internal-runtime.native.cjs +36 -0
  23. package/dist/cjs/internal-runtime.native.js +38 -0
  24. package/dist/cjs/internal-runtime.native.js.map +1 -0
  25. package/dist/cjs/reactNativeTypes.cjs +10 -11
  26. package/dist/cjs/reactNativeTypes.native.cjs +19 -0
  27. package/dist/cjs/reactNativeTypes.native.js +10 -10
  28. package/dist/cjs/reactNativeTypes.native.js.map +1 -1
  29. package/dist/cjs/runtime.cjs +72 -0
  30. package/dist/cjs/runtime.native.cjs +77 -0
  31. package/dist/cjs/runtime.native.js +79 -0
  32. package/dist/cjs/runtime.native.js.map +1 -0
  33. package/dist/cjs/setupMedia.cjs +27 -0
  34. package/dist/cjs/setupMedia.native.cjs +32 -0
  35. package/dist/cjs/setupMedia.native.js +34 -0
  36. package/dist/cjs/setupMedia.native.js.map +1 -0
  37. package/dist/esm/createOptimizedView.mjs +2 -1
  38. package/dist/esm/createOptimizedView.mjs.map +1 -1
  39. package/dist/esm/createOptimizedView.native.js +142 -234
  40. package/dist/esm/createOptimizedView.native.js.map +1 -1
  41. package/dist/esm/dom.mjs +1 -0
  42. package/dist/esm/dom.native.js +1 -0
  43. package/dist/esm/getBaseViews.mjs +2 -1
  44. package/dist/esm/getBaseViews.mjs.map +1 -1
  45. package/dist/esm/getBaseViews.native.js +12 -9
  46. package/dist/esm/getBaseViews.native.js.map +1 -1
  47. package/dist/esm/index.js +12 -78
  48. package/dist/esm/index.js.map +1 -1
  49. package/dist/esm/index.mjs +12 -78
  50. package/dist/esm/index.mjs.map +1 -1
  51. package/dist/esm/index.native.js +12 -52
  52. package/dist/esm/index.native.js.map +1 -1
  53. package/dist/esm/inject-styles.mjs +11 -13
  54. package/dist/esm/inject-styles.mjs.map +1 -1
  55. package/dist/esm/inject-styles.native.js +12 -14
  56. package/dist/esm/inject-styles.native.js.map +1 -1
  57. package/dist/esm/internal-runtime.mjs +4 -0
  58. package/dist/esm/internal-runtime.native.js +4 -0
  59. package/dist/esm/reactNativeTypes.mjs +0 -2
  60. package/dist/esm/reactNativeTypes.native.js +0 -2
  61. package/dist/esm/runtime.mjs +47 -0
  62. package/dist/esm/runtime.mjs.map +1 -0
  63. package/dist/esm/runtime.native.js +52 -0
  64. package/dist/esm/runtime.native.js.map +1 -0
  65. package/dist/esm/setupMedia.mjs +6 -0
  66. package/dist/esm/setupMedia.mjs.map +1 -0
  67. package/dist/esm/setupMedia.native.js +10 -0
  68. package/dist/esm/setupMedia.native.js.map +1 -0
  69. package/dist/native.cjs +18641 -15870
  70. package/dist/test.native.cjs +9286 -4476
  71. package/internal-runtime/index.cjs +2 -0
  72. package/internal-runtime/index.js +4 -0
  73. package/internal-runtime/index.native.js +2 -0
  74. package/package.json +55 -13
  75. package/reset.css +1 -9
  76. package/src/createOptimizedView.native.tsx +8 -6
  77. package/src/createOptimizedView.tsx +2 -1
  78. package/src/dom.native.ts +2 -0
  79. package/src/dom.ts +9 -0
  80. package/src/getBaseViews.native.ts +13 -6
  81. package/src/index.tsx +16 -260
  82. package/src/internal-runtime.tsx +32 -0
  83. package/src/runtime.tsx +197 -0
  84. package/src/setupMedia.native.ts +7 -0
  85. package/src/setupMedia.ts +3 -0
  86. package/types/createOptimizedView.d.ts +1 -1
  87. package/types/createOptimizedView.d.ts.map +1 -1
  88. package/types/createOptimizedView.native.d.ts +2 -2
  89. package/types/createOptimizedView.native.d.ts.map +1 -1
  90. package/types/dom.d.ts +9 -0
  91. package/types/dom.d.ts.map +1 -0
  92. package/types/dom.native.d.ts +3 -0
  93. package/types/dom.native.d.ts.map +1 -0
  94. package/types/getBaseViews.native.d.ts.map +1 -1
  95. package/types/index.d.ts +5 -4
  96. package/types/index.d.ts.map +1 -1
  97. package/types/inject-styles.d.ts.map +1 -1
  98. package/types/internal-runtime.d.ts +4 -0
  99. package/types/internal-runtime.d.ts.map +1 -0
  100. package/types/runtime.d.ts +4 -0
  101. package/types/runtime.d.ts.map +1 -0
  102. package/types/setupMedia.d.ts +2 -0
  103. package/types/setupMedia.d.ts.map +1 -0
  104. package/types/setupMedia.native.d.ts +2 -0
  105. package/types/setupMedia.native.d.ts.map +1 -0
  106. package/.turbo/turbo-build.log +0 -4
  107. package/bundle-native.mjs +0 -22
  108. package/dist/esm/reactNativeTypes.mjs.map +0 -1
  109. package/dist/esm/reactNativeTypes.native.js.map +0 -1
  110. package/tsconfig.json +0 -30
@@ -0,0 +1,2 @@
1
+ // compat with tamagui static compiler
2
+ Object.assign(module.exports, require('../dist/cjs/internal-runtime.cjs'))
@@ -0,0 +1,4 @@
1
+ // compat with bundlers that resolve this directory instead of the package `exports`
2
+ // map (metro without package exports). ESM so the resolved graph matches what the
3
+ // exports map hands a modern bundler, instead of downgrading it to the CJS build.
4
+ export * from '../dist/esm/internal-runtime.mjs'
@@ -0,0 +1,2 @@
1
+ // metro without package exports, native: the react-native artifact
2
+ export * from '../dist/esm/internal-runtime.native.js'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/core",
3
- "version": "2.7.6",
3
+ "version": "3.0.0-beta.637.1",
4
4
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -14,7 +14,25 @@
14
14
  "source": "src/index.tsx",
15
15
  "type": "module",
16
16
  "sideEffects": [
17
- "*.css"
17
+ "*.css",
18
+ "**/runtime.*"
19
+ ],
20
+ "files": [
21
+ "src",
22
+ "types",
23
+ "dist",
24
+ "inject-styles",
25
+ "inject-styles.cjs",
26
+ "internal-runtime",
27
+ "native",
28
+ "native.cjs",
29
+ "native.d.ts",
30
+ "native-test",
31
+ "native-test.cjs",
32
+ "native-test.d.ts",
33
+ "reactNativeTypes",
34
+ "reactNativeTypes.cjs",
35
+ "reset.css"
18
36
  ],
19
37
  "main": "dist/cjs",
20
38
  "module": "dist/esm",
@@ -49,6 +67,27 @@
49
67
  "require": "./dist/test.native.cjs",
50
68
  "default": "./dist/test.native.cjs"
51
69
  },
70
+ "./dom": {
71
+ "react-native": {
72
+ "types": "./types/dom.native.d.ts",
73
+ "default": "./dist/esm/dom.native.js"
74
+ },
75
+ "types": "./types/dom.d.ts",
76
+ "browser": "./dist/esm/dom.mjs",
77
+ "module": "./dist/esm/dom.mjs",
78
+ "import": "./dist/esm/dom.mjs",
79
+ "require": "./dist/cjs/dom.cjs",
80
+ "default": "./dist/esm/dom.mjs"
81
+ },
82
+ "./internal-runtime": {
83
+ "types": "./types/internal-runtime.d.ts",
84
+ "react-native": "./dist/esm/internal-runtime.native.js",
85
+ "browser": "./dist/esm/internal-runtime.mjs",
86
+ "module": "./dist/esm/internal-runtime.mjs",
87
+ "import": "./dist/esm/internal-runtime.mjs",
88
+ "require": "./dist/cjs/internal-runtime.cjs",
89
+ "default": "./dist/esm/internal-runtime.mjs"
90
+ },
52
91
  "./inject-styles": {
53
92
  "types": "./types/inject-styles.d.ts",
54
93
  "react-native": "./dist/esm/inject-styles.mjs",
@@ -79,22 +118,25 @@
79
118
  "clean:build": "tamagui-build clean:build"
80
119
  },
81
120
  "dependencies": {
82
- "@tamagui/helpers": "2.7.6",
83
- "@tamagui/react-native-media-driver": "2.7.6",
84
- "@tamagui/react-native-use-pressable": "2.7.6",
85
- "@tamagui/use-element-layout": "2.7.6",
86
- "@tamagui/use-event": "2.7.6",
87
- "@tamagui/web": "2.7.6"
121
+ "@tamagui/compose-refs": "3.0.0-beta.637.1",
122
+ "@tamagui/constants": "3.0.0-beta.637.1",
123
+ "@tamagui/helpers": "3.0.0-beta.637.1",
124
+ "@tamagui/react-native-media-driver": "3.0.0-beta.637.1",
125
+ "@tamagui/react-native-use-pressable": "3.0.0-beta.637.1",
126
+ "@tamagui/size": "3.0.0-beta.637.1",
127
+ "@tamagui/use-element-layout": "3.0.0-beta.637.1",
128
+ "@tamagui/use-event": "3.0.0-beta.637.1",
129
+ "@tamagui/web": "3.0.0-beta.637.1"
88
130
  },
89
131
  "devDependencies": {
90
- "@tamagui/build": "2.7.6",
91
- "@tamagui/native-bundle": "2.7.6",
92
- "@tamagui/react-native-web-lite": "2.7.6",
132
+ "@tamagui/build": "3.0.0-beta.637.1",
133
+ "@tamagui/native-bundle": "3.0.0-beta.637.1",
134
+ "@tamagui/react-native-web-lite": "3.0.0-beta.637.1",
93
135
  "@testing-library/react": "^16.1.0",
94
136
  "csstype": "^3.0.10",
95
137
  "react": ">=19",
96
- "react-native": "0.83.2",
97
- "typescript": "~5.9.2",
138
+ "react-native": "0.86.2",
139
+ "typescript": "~6.0.3",
98
140
  "vitest": "4.0.4"
99
141
  },
100
142
  "peerDependencies": {
package/reset.css CHANGED
@@ -40,15 +40,7 @@ button,
40
40
  all: unset;
41
41
  }
42
42
 
43
- p,
44
- input,
45
- textarea,
46
- button,
47
- ul,
48
- ol,
49
- li,
50
- pre,
51
- dialog {
43
+ :where(p, input, textarea, button, ul, ol, li, pre, dialog) {
52
44
  all: unset;
53
45
  box-sizing: border-box;
54
46
  }
@@ -13,7 +13,10 @@ import React, { Context } from 'react' // native only, taken from react-native
13
13
  export function createOptimizedView(
14
14
  children: any,
15
15
  viewProps: Record<string, any>,
16
- baseViews: { TextAncestor: Context<any> }
16
+ baseViews: { TextAncestor: Context<any> },
17
+ // context value read by the caller (useChildren) — reading it here would put
18
+ // a hook behind per-render branches and break hook-order stability
19
+ isInText: boolean
17
20
  ) {
18
21
  const TextAncestor = baseViews.TextAncestor
19
22
 
@@ -37,7 +40,6 @@ export function createOptimizedView(
37
40
  'aria-valuemin': ariaValueMin,
38
41
  'aria-valuenow': ariaValueNow,
39
42
  'aria-valuetext': ariaValueText,
40
- focusable,
41
43
  id,
42
44
  role,
43
45
  tabIndex,
@@ -114,9 +116,10 @@ export function createOptimizedView(
114
116
  viewProps.accessibilityLabel = al
115
117
  }
116
118
 
117
- const f = tabIndex !== undefined ? !tabIndex : focusable
118
- if (f != null) {
119
- viewProps.focusable = f
119
+ delete viewProps.focusable
120
+
121
+ if (tabIndex !== undefined) {
122
+ viewProps.focusable = Number(tabIndex) >= 0
120
123
  }
121
124
 
122
125
  if (_accessibilityState != null) {
@@ -133,7 +136,6 @@ export function createOptimizedView(
133
136
  }
134
137
 
135
138
  // isInText is significantly faster than just providing it each time
136
- const isInText = React.useContext(TextAncestor)
137
139
  const finalElement = React.createElement('RCTView', viewProps, children)
138
140
 
139
141
  if (!isInText) {
@@ -1,5 +1,6 @@
1
1
  export function createOptimizedView(
2
2
  children: any,
3
3
  viewProps: Record<string, any>,
4
- baseViews: any
4
+ baseViews: any,
5
+ isInText: boolean
5
6
  ) {}
@@ -0,0 +1,2 @@
1
+ /** Native type/runtime forwarding for the standalone Tamagui DOM entry. */
2
+ export * from '@tamagui/web/dom'
package/src/dom.ts ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `@tamagui/core/dom` — standalone Tamagui DOM.
3
+ *
4
+ * `html.*`, `style()`, and on native the DOM primitives the compiler injects.
5
+ * The entry is compile-only on both platforms; see `standalone.ts` in
6
+ * `@tamagui/web` for what that means and why.
7
+ */
8
+
9
+ export * from '@tamagui/web/dom'
@@ -1,11 +1,18 @@
1
+ // a namespace import rather than `require('react-native')`: the ESM native artifact
2
+ // (`dist/esm/*.native.js`) is real ESM, where a bare `require` is not defined, and
3
+ // `runtime.tsx` calls this at module scope. The `.default?.` reads keep the same
4
+ // interop the require form relied on, and the CJS builds compile it back to a
5
+ // require, so nothing changes for metro.
6
+ import * as native from 'react-native'
7
+
1
8
  export function getBaseViews() {
2
- const native = require('react-native')
9
+ const rn = native as any
3
10
 
4
11
  return {
5
- View: native.View || native.default?.View,
6
- Text: native.Text || native.default?.Text,
7
- TextAncestor: native.unstable_TextAncestorContext,
8
- StyleSheet: native.StyleSheet || native.default?.StyleSheet,
9
- Pressable: native.Pressable || native.default?.Pressable,
12
+ View: rn.View || rn.default?.View,
13
+ Text: rn.Text || rn.default?.Text,
14
+ TextAncestor: rn.unstable_TextAncestorContext,
15
+ StyleSheet: rn.StyleSheet || rn.default?.StyleSheet,
16
+ Pressable: rn.Pressable || rn.default?.Pressable,
10
17
  }
11
18
  }
package/src/index.tsx CHANGED
@@ -1,69 +1,30 @@
1
1
  // re-exports all of @tamagui/web just adds hooks
2
2
  export * from '@tamagui/web'
3
+ export {
4
+ SizeContext,
5
+ createSizeContext,
6
+ createSizeTable,
7
+ defaultTokenSizePolicy,
8
+ resolveSizeToken,
9
+ resolveTokenSize,
10
+ } from '@tamagui/size'
11
+ export type * from '@tamagui/size'
12
+ export { createRefComponent, type RefProp } from '@tamagui/compose-refs'
3
13
 
4
- import { createMedia } from '@tamagui/react-native-media-driver'
5
- import { isWeb } from '@tamagui/constants'
6
- import {
7
- createMeasure,
8
- createMeasureInWindow,
9
- createMeasureLayout,
10
- enable,
11
- useElementLayout,
12
- } from '@tamagui/use-element-layout'
13
14
  import type {
14
15
  StackNonStyleProps,
15
16
  StackStyleBase,
16
17
  TamaDefer,
17
18
  TamaguiComponent,
18
19
  TamaguiElement,
19
- TamaguiProviderProps,
20
20
  TamaguiTextElement,
21
21
  TextNonStyleProps,
22
22
  TextProps,
23
23
  TextStylePropsBase,
24
24
  } from '@tamagui/web'
25
- import {
26
- TamaguiProvider as WebTamaguiProvider,
27
- Text as WebText,
28
- View as WebView,
29
- createTamagui as createTamaguiWeb,
30
- setupHooks,
31
- useIsomorphicLayoutEffect,
32
- } from '@tamagui/web'
33
- import { createOptimizedView } from './createOptimizedView'
34
- import { getBaseViews } from './getBaseViews'
25
+ import { Text as WebText, View as WebView } from '@tamagui/web'
35
26
  import type { RNTextProps, RNViewProps } from './reactNativeTypes'
36
27
 
37
- type GestureEnabledFreezeState = {
38
- frozen: boolean
39
- enabled: boolean
40
- warned: boolean
41
- }
42
-
43
- const GESTURE_STATE_KEY = '__tamagui_gesture__'
44
- const GESTURE_ENABLED_FREEZE_KEY = '__tamagui_gesture_enabled_freeze__'
45
-
46
- function freezeGestureHandlerEnabledMode() {
47
- const g = globalThis as typeof globalThis & {
48
- [GESTURE_STATE_KEY]?: { enabled?: boolean }
49
- [GESTURE_ENABLED_FREEZE_KEY]?: GestureEnabledFreezeState
50
- }
51
-
52
- const freezeState = (g[GESTURE_ENABLED_FREEZE_KEY] ??= {
53
- frozen: false,
54
- enabled: false,
55
- warned: false,
56
- })
57
-
58
- if (freezeState.frozen) {
59
- return
60
- }
61
-
62
- freezeState.frozen = true
63
- freezeState.enabled = Boolean(g[GESTURE_STATE_KEY]?.enabled)
64
- freezeState.warned = false
65
- }
66
-
67
28
  // helpful for usage outside of tamagui
68
29
  export {
69
30
  LayoutMeasurementController,
@@ -102,125 +63,8 @@ type RNTamaguiText = TamaguiComponent<
102
63
  // see https://discord.com/channels/909986013848412191/1146150253490348112/1146150253490348112
103
64
  export * from './reactNativeTypes'
104
65
 
105
- // adds useElementLayout enable
106
- export const TamaguiProvider = (props: TamaguiProviderProps) => {
107
- if (process.env.TAMAGUI_TARGET === 'native') {
108
- freezeGestureHandlerEnabledMode()
109
- }
110
-
111
- useIsomorphicLayoutEffect(() => {
112
- enable()
113
- }, [])
114
-
115
- return <WebTamaguiProvider {...props} />
116
- }
117
-
118
- // automate using the react native media driver
119
- export const createTamagui: typeof createTamaguiWeb = (conf) => {
120
- if (!isWeb) {
121
- if (conf.media) {
122
- conf.media = createMedia(conf.media)
123
- }
124
- }
125
- return createTamaguiWeb(conf)
126
- }
127
-
128
- const baseViews = getBaseViews()
129
-
130
- // setup internal hooks:
131
-
132
- setupHooks({
133
- getBaseViews,
134
-
135
- setElementProps: (node) => {
136
- if (process.env.TAMAGUI_TARGET === 'web') {
137
- // web only
138
- if (node && !node['measure']) {
139
- node.measure ||= createMeasure(node)
140
- node.measureInWindow ||= createMeasureInWindow(node)
141
- node.measureLayout ||= createMeasureLayout(node)
142
- }
143
- }
144
- },
145
-
146
- usePropsTransform(elementType, propsIn, stateRef, willHydrate) {
147
- if (process.env.TAMAGUI_TARGET === 'web') {
148
- const isDOM = typeof elementType === 'string'
149
-
150
- // replicate react-native-web functionality
151
- const {
152
- // remove event props handles by useResponderEvents
153
- onMoveShouldSetResponder,
154
- onMoveShouldSetResponderCapture,
155
- onResponderEnd,
156
- onResponderGrant,
157
- onResponderMove,
158
- onResponderReject,
159
- onResponderRelease,
160
- onResponderStart,
161
- onResponderTerminate,
162
- onResponderTerminationRequest,
163
- onScrollShouldSetResponder,
164
- onScrollShouldSetResponderCapture,
165
- onSelectionChangeShouldSetResponder,
166
- onSelectionChangeShouldSetResponderCapture,
167
- onStartShouldSetResponder,
168
- onStartShouldSetResponderCapture,
169
-
170
- // android
171
- collapsable,
172
- focusable,
173
-
174
- // deprecated,
175
- accessible,
176
- accessibilityDisabled,
177
-
178
- onLayout,
179
- hrefAttrs,
180
-
181
- ...plainDOMProps
182
- } = propsIn
183
-
184
- if (willHydrate || isDOM) {
185
- useElementLayout(stateRef, !isDOM ? undefined : (onLayout as any))
186
- // responder events removed for web - use native pointer/touch events instead
187
- // the onResponder* props are stripped above and not passed to DOM
188
- }
189
-
190
- if (isDOM) {
191
- // TODO move into getSplitStyles
192
- if (plainDOMProps.href && hrefAttrs) {
193
- const { download, rel, target } = hrefAttrs
194
- if (download != null) {
195
- plainDOMProps.download = download
196
- }
197
- if (rel) {
198
- plainDOMProps.rel = rel
199
- }
200
- if (typeof target === 'string') {
201
- plainDOMProps.target = target.charAt(0) !== '_' ? `_${target}` : target
202
- }
203
- }
204
- return plainDOMProps
205
- }
206
- }
207
- },
208
-
209
- // attempt at properly fixing RN input, but <Pressable><TextInput /> just doesnt work on RN
210
- ...(process.env.TAMAGUI_TARGET === 'native' && {
211
- useChildren(elementType, children, viewProps) {
212
- if (process.env.NODE_ENV === 'test') {
213
- // test mode - just use regular views since optimizations cause weirdness
214
- return
215
- }
216
-
217
- if (elementType === baseViews.View && baseViews.TextAncestor) {
218
- // optimize view
219
- return createOptimizedView(children, viewProps, baseViews)
220
- }
221
- },
222
- }),
223
- })
66
+ // the one platform setup path, shared with `@tamagui/core/internal-runtime`
67
+ export { TamaguiProvider, createTamagui } from './runtime'
224
68
 
225
69
  // overwrite web versions:
226
70
  // putting at the end ensures it overwrites in dist/cjs/index.js
@@ -259,45 +103,22 @@ export const Text = WebText as any as RNTamaguiText
259
103
 
260
104
  // const zz = <A />
261
105
 
262
- // const variants = {
263
- // fullscreen: {
264
- // true: {},
265
- // },
266
- // elevation: {
267
- // '...size': () => ({}),
268
- // ':number': () => ({}),
269
- // },
270
- // } as const
271
-
272
- // export const YStack = styled(View, {
273
- // flexDirection: 'column',
274
- // variants,
275
- // })
276
-
277
106
  // import { TextInput } from 'react-native'
278
107
  // export const InputFrame = styled(
279
108
  // TextInput,
280
109
  // {
281
- // name: 'Input',
110
+ // displayName: 'Input',
282
111
  // backgroundColor: 'green',
283
112
 
284
113
  // variants: {
285
- // // unstyled: {
286
- // // false: {},
287
- // // },
288
-
289
114
  // size: {
290
- // '...size': () => ({}),
115
+ // Size: () => ({}),
291
116
  // },
292
117
 
293
118
  // // disabled: {
294
- // // ':boolean': () => ({})
119
+ // // boolean: () => ({})
295
120
  // // },
296
121
  // } as const,
297
-
298
- // // defaultVariants: {
299
- // // unstyled: process.env.TAMAGUI_HEADLESS === '1' ? true : false,
300
- // // },
301
122
  // },
302
123
  // {
303
124
  // isText: true,
@@ -306,68 +127,3 @@ export const Text = WebText as any as RNTamaguiText
306
127
  // },
307
128
  // }
308
129
  // )
309
-
310
- // export const StyledInputFrame = styled(InputFrame, {
311
- // fontSize: 16,
312
- // fontFamily: '$silkscreen',
313
- // color: '$color5',
314
- // minWidth: 0,
315
- // borderWidth: 0,
316
- // borderColor: 'transparent',
317
-
318
- // variants: {
319
- // unset: {
320
- // false: {
321
- // borderWidth: 2,
322
- // py: 12,
323
- // px: 14,
324
- // borderRadius: 6,
325
- // bg: '$color3',
326
- // focusStyle: {
327
- // bg: '$color4',
328
- // margin: 0,
329
- // },
330
- // },
331
- // },
332
- // } as const,
333
-
334
- // defaultVariants: {
335
- // unset: false,
336
- // },
337
- // })
338
-
339
- // export const StyledStyledInputFrame = styled(
340
- // StyledInputFrame,
341
- // {
342
- // fontSize: 16,
343
- // fontFamily: '$silkscreen',
344
- // color: '$color5',
345
- // minWidth: 0,
346
- // borderWidth: 0,
347
- // borderColor: 'transparent',
348
-
349
- // variants: {
350
- // unset: {
351
- // false: {
352
- // borderWidth: 2,
353
- // py: 12,
354
- // px: 14,
355
- // borderRadius: 6,
356
- // bg: '$color3',
357
- // focusStyle: {
358
- // bg: '$color4',
359
- // margin: 0,
360
- // },
361
- // },
362
- // },
363
- // } as const,
364
-
365
- // defaultVariants: {
366
- // unset: false,
367
- // },
368
- // },
369
- // {
370
- // inlineProps: new Set(['id', 'testID']),
371
- // }
372
- // )
373
- // export const DepthTest = () => <StyledStyledInputFrame placeholder="" />
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Private implementation boundary: what another style frontend package needs to
3
+ * build components on the shared Tamagui runtime, with the platform setup already
4
+ * applied. Not public API — never reexport it from `@tamagui/core`, `tamagui`, or
5
+ * `@tamagui/tailwind` roots.
6
+ *
7
+ * Reading a real binding from `./runtime` keeps the one platform setup module in
8
+ * the built artifact. A bare side-effect import was pruned from ESM while CJS kept
9
+ * it. `runtime.*` is also declared side-effectful so downstream bundlers retain it.
10
+ * The binding stays private so this declaration entry does not pull the regular
11
+ * provider/config type graph into another frontend.
12
+ */
13
+ import { createTamagui as platformSetup } from './runtime'
14
+
15
+ void platformSetup
16
+
17
+ export {
18
+ STYLE_FRONTEND_PASSTHROUGH_PREFIX,
19
+ STYLE_FRONTEND_PREPROCESSED,
20
+ createFrontendProgram,
21
+ createFrontendStyled,
22
+ createFrontendViews,
23
+ plainValueToPayload,
24
+ regularStyleFrontend,
25
+ } from '@tamagui/web/internal-runtime'
26
+ export type { FrontendProgramValue } from '@tamagui/web/internal-runtime'
27
+ export type {
28
+ FrontendComponent,
29
+ FrontendStaticConfig,
30
+ StyleFrontend,
31
+ StyleFrontendConfig,
32
+ } from '@tamagui/web/internal-runtime'