@tamagui/button 1.26.1 → 1.27.0

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.
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var base_exports = {};
20
+ __export(base_exports, {
21
+ Button: () => import_Button.Button
22
+ });
23
+ module.exports = __toCommonJS(base_exports);
24
+ var import_Button = require("./Button");
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ Button
28
+ });
29
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/base.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;",
5
+ "names": []
6
+ }
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var themed_exports = {};
20
+ __export(themed_exports, {
21
+ Button: () => Button,
22
+ ButtonFrame: () => ButtonFrame,
23
+ ButtonText: () => ButtonTextFrame,
24
+ buttonStaticConfig: () => buttonStaticConfig,
25
+ createButtonScope: () => createButtonScope,
26
+ useButton: () => useButton
27
+ });
28
+ module.exports = __toCommonJS(themed_exports);
29
+ var import_jsx_runtime = require("react/jsx-runtime");
30
+ var import_create_context = require("@tamagui/create-context");
31
+ var import_font_size = require("@tamagui/font-size");
32
+ var import_get_button_sized = require("@tamagui/get-button-sized");
33
+ var import_helpers_tamagui = require("@tamagui/helpers-tamagui");
34
+ var import_text = require("@tamagui/text");
35
+ var import_web = require("@tamagui/web");
36
+ var import_react = require("react");
37
+ var import_Button = require("./Button");
38
+ const ButtonFrame = (0, import_web.styled)(import_Button.Button, {
39
+ name: import_Button.BUTTON_NAME,
40
+ variants: {
41
+ unstyled: {
42
+ false: {
43
+ size: "$true",
44
+ justifyContent: "center",
45
+ alignItems: "center",
46
+ flexWrap: "nowrap",
47
+ flexDirection: "row",
48
+ cursor: "pointer",
49
+ hoverTheme: true,
50
+ pressTheme: true,
51
+ backgrounded: true,
52
+ borderWidth: 1,
53
+ borderColor: "$borderColor",
54
+ pressStyle: {
55
+ borderColor: "$borderColorPress"
56
+ },
57
+ focusStyle: {
58
+ outlineColor: "$borderColorFocus",
59
+ outlineStyle: "solid",
60
+ outlineWidth: 2
61
+ }
62
+ }
63
+ },
64
+ size: {
65
+ "...size": import_get_button_sized.getButtonSized
66
+ },
67
+ active: {
68
+ true: {
69
+ hoverStyle: {
70
+ backgroundColor: "$background"
71
+ }
72
+ }
73
+ },
74
+ disabled: {
75
+ true: {
76
+ pointerEvents: "none"
77
+ }
78
+ }
79
+ },
80
+ defaultVariants: {
81
+ unstyled: false
82
+ }
83
+ });
84
+ const [createButtonContext, createButtonScope] = (0, import_create_context.createContextScope)(import_Button.BUTTON_NAME);
85
+ const [ButtonProvider, useButtonContext] = createButtonContext("Button");
86
+ const ButtonTextFrame = (0, import_web.styled)(import_Button.Button.Text, {
87
+ name: import_Button.BUTTON_TEXT_NAME,
88
+ variants: {
89
+ unstyled: {
90
+ false: {
91
+ userSelect: "none",
92
+ cursor: "pointer",
93
+ // flexGrow 1 leads to inconsistent native style where text pushes to start of view
94
+ flexGrow: 0,
95
+ flexShrink: 1,
96
+ ellipse: true,
97
+ color: "$color"
98
+ }
99
+ }
100
+ },
101
+ defaultVariants: {
102
+ unstyled: false
103
+ }
104
+ });
105
+ const ButtonText = ButtonTextFrame.styleable(
106
+ (props, ref) => {
107
+ const context = useButtonContext(import_Button.BUTTON_TEXT_NAME, props.__scopeButton);
108
+ (0, import_react.useEffect)(() => {
109
+ const unregister = context.registerButtonText();
110
+ return () => unregister();
111
+ }, [context.registerButtonText]);
112
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonTextFrame, { ref, color: context.color, size: context.size, ...props, children: props.children });
113
+ }
114
+ );
115
+ const ButtonIcon = (props) => {
116
+ const { children, scaleIcon = 1 } = props;
117
+ const context = useButtonContext(import_Button.BUTTON_ICON_NAME, props.__scopeButton);
118
+ const size = context.size;
119
+ const color = context.color;
120
+ const iconSize = (typeof size === "number" ? size * 0.5 : (0, import_font_size.getFontSize)(size)) * scaleIcon;
121
+ const getThemedIcon = (0, import_helpers_tamagui.useGetThemedIcon)({ size: iconSize, color });
122
+ return getThemedIcon(children);
123
+ };
124
+ const ButtonComponent = ButtonFrame.styleable(
125
+ (props, ref) => {
126
+ const buttonApi = props.forceButtonApi ?? (0, import_web.getConfig)().buttonApi ?? "mixed";
127
+ const { props: buttonProps } = useButton(props);
128
+ const [buttonTextCount, setButtonTextCount] = (0, import_react.useState)(0);
129
+ const registerButtonText = (0, import_react.useCallback)(() => {
130
+ if (buttonApi === "simple") {
131
+ console.warn(
132
+ "You are using Button.Text with simple button API. Either remove Button.Text or use either `buttonApi: composable` or `mixed` in your tamagui config."
133
+ );
134
+ }
135
+ if (buttonApi === "composable")
136
+ return () => {
137
+ };
138
+ setButtonTextCount((prev) => prev + 1);
139
+ return () => setButtonTextCount((prev) => prev - 1);
140
+ }, [setButtonTextCount]);
141
+ const usesComposableApi = buttonApi === "composable" || buttonApi === "mixed" && buttonTextCount > 0;
142
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
143
+ ButtonProvider,
144
+ {
145
+ scope: props.__scopeButton,
146
+ size: props.size ?? "$true",
147
+ color: props.color,
148
+ usesComposableApi,
149
+ registerButtonText,
150
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonFrame, { unstyled: props.unstyled ?? false, ref, ...buttonProps })
151
+ }
152
+ );
153
+ }
154
+ );
155
+ const Button = (0, import_web.withStaticProperties)(ButtonComponent, {
156
+ Text: ButtonText,
157
+ Icon: ButtonIcon
158
+ });
159
+ function useButton(propsIn, { Text = ButtonTextFrame } = { Text: ButtonTextFrame }) {
160
+ const {
161
+ children,
162
+ icon,
163
+ iconAfter,
164
+ noTextWrap,
165
+ theme: themeName,
166
+ space,
167
+ spaceFlex,
168
+ scaleIcon = 1,
169
+ scaleSpace = 0.66,
170
+ separator,
171
+ // text props
172
+ color,
173
+ fontWeight,
174
+ letterSpacing,
175
+ fontSize,
176
+ fontFamily,
177
+ fontStyle,
178
+ textAlign,
179
+ unstyled = false,
180
+ textProps,
181
+ ...rest
182
+ } = propsIn;
183
+ const isNested = import_web.isRSC ? false : (0, import_react.useContext)(import_web.ButtonNestingContext);
184
+ const propsActive = (0, import_web.useMediaPropsActive)(propsIn);
185
+ const size = propsActive.size || "$true";
186
+ const iconSize = (typeof size === "number" ? size * 0.5 : (0, import_font_size.getFontSize)(size)) * scaleIcon;
187
+ const getThemedIcon = (0, import_helpers_tamagui.useGetThemedIcon)({ size: iconSize, color });
188
+ const [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon);
189
+ const spaceSize = propsActive.space ?? (0, import_web.getVariableValue)(iconSize) * scaleSpace;
190
+ const contents = (0, import_text.wrapChildrenInText)(
191
+ Text,
192
+ propsActive,
193
+ Text === ButtonTextFrame ? {
194
+ unstyled
195
+ } : void 0
196
+ );
197
+ const inner = (0, import_web.spacedChildren)({
198
+ // a bit arbitrary but scaling to font size is necessary so long as button does
199
+ space: spaceSize,
200
+ spaceFlex,
201
+ separator,
202
+ direction: propsActive.flexDirection === "column" || propsActive.flexDirection === "column-reverse" ? "vertical" : "horizontal",
203
+ children: [themedIcon, ...contents, themedIconAfter]
204
+ });
205
+ const tag = isNested ? "span" : (
206
+ // defaults to <a /> when accessibilityRole = link
207
+ // see https://github.com/tamagui/tamagui/issues/505
208
+ propsIn.accessibilityRole === "link" ? "a" : void 0
209
+ );
210
+ const props = {
211
+ ...propsActive.disabled && {
212
+ // in rnw - false still has keyboard tabIndex, undefined = not actually focusable
213
+ focusable: void 0,
214
+ // even with tabIndex unset, it will keep focusStyle on web so disable it here
215
+ focusStyle: {
216
+ borderColor: "$background"
217
+ }
218
+ },
219
+ tag,
220
+ ...rest,
221
+ children: import_web.isRSC ? inner : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_web.ButtonNestingContext.Provider, { value: true, children: inner })
222
+ };
223
+ return {
224
+ spaceSize,
225
+ isNested,
226
+ props
227
+ };
228
+ }
229
+ const buttonStaticConfig = {
230
+ inlineProps: /* @__PURE__ */ new Set([
231
+ // text props go here (can't really optimize them, but we never fully extract button anyway)
232
+ // may be able to remove this entirely, as the compiler / runtime have gotten better
233
+ "color",
234
+ "fontWeight",
235
+ "fontSize",
236
+ "fontFamily",
237
+ "fontStyle",
238
+ "letterSpacing",
239
+ "textAlign",
240
+ "unstyled"
241
+ ])
242
+ };
243
+ // Annotate the CommonJS export names for ESM import in node:
244
+ 0 && (module.exports = {
245
+ Button,
246
+ ButtonFrame,
247
+ ButtonText,
248
+ buttonStaticConfig,
249
+ createButtonScope,
250
+ useButton
251
+ });
252
+ //# sourceMappingURL=themed.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/themed.tsx"],
4
+ "mappings": "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",
5
+ "names": ["BaseButton"]
6
+ }
@@ -0,0 +1,5 @@
1
+ import { Button } from "./Button";
2
+ export {
3
+ Button
4
+ };
5
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/base.ts"],
4
+ "mappings": "AACA,SAAS,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,237 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContextScope } from "@tamagui/create-context";
3
+ import { getFontSize } from "@tamagui/font-size";
4
+ import { getButtonSized } from "@tamagui/get-button-sized";
5
+ import { useGetThemedIcon } from "@tamagui/helpers-tamagui";
6
+ import { wrapChildrenInText } from "@tamagui/text";
7
+ import {
8
+ ButtonNestingContext,
9
+ getConfig,
10
+ getVariableValue,
11
+ isRSC,
12
+ spacedChildren,
13
+ styled,
14
+ useMediaPropsActive,
15
+ withStaticProperties
16
+ } from "@tamagui/web";
17
+ import { useCallback, useContext, useEffect, useState } from "react";
18
+ import {
19
+ BUTTON_ICON_NAME,
20
+ BUTTON_NAME,
21
+ BUTTON_TEXT_NAME,
22
+ Button as BaseButton
23
+ } from "./Button";
24
+ const ButtonFrame = styled(BaseButton, {
25
+ name: BUTTON_NAME,
26
+ variants: {
27
+ unstyled: {
28
+ false: {
29
+ size: "$true",
30
+ justifyContent: "center",
31
+ alignItems: "center",
32
+ flexWrap: "nowrap",
33
+ flexDirection: "row",
34
+ cursor: "pointer",
35
+ hoverTheme: true,
36
+ pressTheme: true,
37
+ backgrounded: true,
38
+ borderWidth: 1,
39
+ borderColor: "$borderColor",
40
+ pressStyle: {
41
+ borderColor: "$borderColorPress"
42
+ },
43
+ focusStyle: {
44
+ outlineColor: "$borderColorFocus",
45
+ outlineStyle: "solid",
46
+ outlineWidth: 2
47
+ }
48
+ }
49
+ },
50
+ size: {
51
+ "...size": getButtonSized
52
+ },
53
+ active: {
54
+ true: {
55
+ hoverStyle: {
56
+ backgroundColor: "$background"
57
+ }
58
+ }
59
+ },
60
+ disabled: {
61
+ true: {
62
+ pointerEvents: "none"
63
+ }
64
+ }
65
+ },
66
+ defaultVariants: {
67
+ unstyled: false
68
+ }
69
+ });
70
+ const [createButtonContext, createButtonScope] = createContextScope(BUTTON_NAME);
71
+ const [ButtonProvider, useButtonContext] = createButtonContext("Button");
72
+ const ButtonTextFrame = styled(BaseButton.Text, {
73
+ name: BUTTON_TEXT_NAME,
74
+ variants: {
75
+ unstyled: {
76
+ false: {
77
+ userSelect: "none",
78
+ cursor: "pointer",
79
+ // flexGrow 1 leads to inconsistent native style where text pushes to start of view
80
+ flexGrow: 0,
81
+ flexShrink: 1,
82
+ ellipse: true,
83
+ color: "$color"
84
+ }
85
+ }
86
+ },
87
+ defaultVariants: {
88
+ unstyled: false
89
+ }
90
+ });
91
+ const ButtonText = ButtonTextFrame.styleable(
92
+ (props, ref) => {
93
+ const context = useButtonContext(BUTTON_TEXT_NAME, props.__scopeButton);
94
+ useEffect(() => {
95
+ const unregister = context.registerButtonText();
96
+ return () => unregister();
97
+ }, [context.registerButtonText]);
98
+ return /* @__PURE__ */ jsx(ButtonTextFrame, { ref, color: context.color, size: context.size, ...props, children: props.children });
99
+ }
100
+ );
101
+ const ButtonIcon = (props) => {
102
+ const { children, scaleIcon = 1 } = props;
103
+ const context = useButtonContext(BUTTON_ICON_NAME, props.__scopeButton);
104
+ const size = context.size;
105
+ const color = context.color;
106
+ const iconSize = (typeof size === "number" ? size * 0.5 : getFontSize(size)) * scaleIcon;
107
+ const getThemedIcon = useGetThemedIcon({ size: iconSize, color });
108
+ return getThemedIcon(children);
109
+ };
110
+ const ButtonComponent = ButtonFrame.styleable(
111
+ (props, ref) => {
112
+ const buttonApi = props.forceButtonApi ?? getConfig().buttonApi ?? "mixed";
113
+ const { props: buttonProps } = useButton(props);
114
+ const [buttonTextCount, setButtonTextCount] = useState(0);
115
+ const registerButtonText = useCallback(() => {
116
+ if (buttonApi === "simple") {
117
+ console.warn(
118
+ "You are using Button.Text with simple button API. Either remove Button.Text or use either `buttonApi: composable` or `mixed` in your tamagui config."
119
+ );
120
+ }
121
+ if (buttonApi === "composable")
122
+ return () => {
123
+ };
124
+ setButtonTextCount((prev) => prev + 1);
125
+ return () => setButtonTextCount((prev) => prev - 1);
126
+ }, [setButtonTextCount]);
127
+ const usesComposableApi = buttonApi === "composable" || buttonApi === "mixed" && buttonTextCount > 0;
128
+ return /* @__PURE__ */ jsx(
129
+ ButtonProvider,
130
+ {
131
+ scope: props.__scopeButton,
132
+ size: props.size ?? "$true",
133
+ color: props.color,
134
+ usesComposableApi,
135
+ registerButtonText,
136
+ children: /* @__PURE__ */ jsx(ButtonFrame, { unstyled: props.unstyled ?? false, ref, ...buttonProps })
137
+ }
138
+ );
139
+ }
140
+ );
141
+ const Button = withStaticProperties(ButtonComponent, {
142
+ Text: ButtonText,
143
+ Icon: ButtonIcon
144
+ });
145
+ function useButton(propsIn, { Text = ButtonTextFrame } = { Text: ButtonTextFrame }) {
146
+ const {
147
+ children,
148
+ icon,
149
+ iconAfter,
150
+ noTextWrap,
151
+ theme: themeName,
152
+ space,
153
+ spaceFlex,
154
+ scaleIcon = 1,
155
+ scaleSpace = 0.66,
156
+ separator,
157
+ // text props
158
+ color,
159
+ fontWeight,
160
+ letterSpacing,
161
+ fontSize,
162
+ fontFamily,
163
+ fontStyle,
164
+ textAlign,
165
+ unstyled = false,
166
+ textProps,
167
+ ...rest
168
+ } = propsIn;
169
+ const isNested = isRSC ? false : useContext(ButtonNestingContext);
170
+ const propsActive = useMediaPropsActive(propsIn);
171
+ const size = propsActive.size || "$true";
172
+ const iconSize = (typeof size === "number" ? size * 0.5 : getFontSize(size)) * scaleIcon;
173
+ const getThemedIcon = useGetThemedIcon({ size: iconSize, color });
174
+ const [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon);
175
+ const spaceSize = propsActive.space ?? getVariableValue(iconSize) * scaleSpace;
176
+ const contents = wrapChildrenInText(
177
+ Text,
178
+ propsActive,
179
+ Text === ButtonTextFrame ? {
180
+ unstyled
181
+ } : void 0
182
+ );
183
+ const inner = spacedChildren({
184
+ // a bit arbitrary but scaling to font size is necessary so long as button does
185
+ space: spaceSize,
186
+ spaceFlex,
187
+ separator,
188
+ direction: propsActive.flexDirection === "column" || propsActive.flexDirection === "column-reverse" ? "vertical" : "horizontal",
189
+ children: [themedIcon, ...contents, themedIconAfter]
190
+ });
191
+ const tag = isNested ? "span" : (
192
+ // defaults to <a /> when accessibilityRole = link
193
+ // see https://github.com/tamagui/tamagui/issues/505
194
+ propsIn.accessibilityRole === "link" ? "a" : void 0
195
+ );
196
+ const props = {
197
+ ...propsActive.disabled && {
198
+ // in rnw - false still has keyboard tabIndex, undefined = not actually focusable
199
+ focusable: void 0,
200
+ // even with tabIndex unset, it will keep focusStyle on web so disable it here
201
+ focusStyle: {
202
+ borderColor: "$background"
203
+ }
204
+ },
205
+ tag,
206
+ ...rest,
207
+ children: isRSC ? inner : /* @__PURE__ */ jsx(ButtonNestingContext.Provider, { value: true, children: inner })
208
+ };
209
+ return {
210
+ spaceSize,
211
+ isNested,
212
+ props
213
+ };
214
+ }
215
+ const buttonStaticConfig = {
216
+ inlineProps: /* @__PURE__ */ new Set([
217
+ // text props go here (can't really optimize them, but we never fully extract button anyway)
218
+ // may be able to remove this entirely, as the compiler / runtime have gotten better
219
+ "color",
220
+ "fontWeight",
221
+ "fontSize",
222
+ "fontFamily",
223
+ "fontStyle",
224
+ "letterSpacing",
225
+ "textAlign",
226
+ "unstyled"
227
+ ])
228
+ };
229
+ export {
230
+ Button,
231
+ ButtonFrame,
232
+ ButtonTextFrame as ButtonText,
233
+ buttonStaticConfig,
234
+ createButtonScope,
235
+ useButton
236
+ };
237
+ //# sourceMappingURL=themed.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/themed.tsx"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,5 @@
1
+ import { Button } from "./Button";
2
+ export {
3
+ Button
4
+ };
5
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/base.ts"],
4
+ "mappings": "AACA,SAAS,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,5 @@
1
+ import { Button } from "./Button";
2
+ export {
3
+ Button
4
+ };
5
+ //# sourceMappingURL=base.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/base.ts"],
4
+ "mappings": "AACA,SAAS,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,232 @@
1
+ import { createContextScope } from "@tamagui/create-context";
2
+ import { getFontSize } from "@tamagui/font-size";
3
+ import { getButtonSized } from "@tamagui/get-button-sized";
4
+ import { useGetThemedIcon } from "@tamagui/helpers-tamagui";
5
+ import { wrapChildrenInText } from "@tamagui/text";
6
+ import {
7
+ ButtonNestingContext,
8
+ getConfig,
9
+ getVariableValue,
10
+ isRSC,
11
+ spacedChildren,
12
+ styled,
13
+ useMediaPropsActive,
14
+ withStaticProperties
15
+ } from "@tamagui/web";
16
+ import { useCallback, useContext, useEffect, useState } from "react";
17
+ import {
18
+ BUTTON_ICON_NAME,
19
+ BUTTON_NAME,
20
+ BUTTON_TEXT_NAME,
21
+ Button as BaseButton
22
+ } from "./Button";
23
+ const ButtonFrame = styled(BaseButton, {
24
+ name: BUTTON_NAME,
25
+ variants: {
26
+ unstyled: {
27
+ false: {
28
+ size: "$true",
29
+ justifyContent: "center",
30
+ alignItems: "center",
31
+ flexWrap: "nowrap",
32
+ flexDirection: "row",
33
+ cursor: "pointer",
34
+ hoverTheme: true,
35
+ pressTheme: true,
36
+ backgrounded: true,
37
+ borderWidth: 1,
38
+ borderColor: "$borderColor",
39
+ pressStyle: {
40
+ borderColor: "$borderColorPress"
41
+ },
42
+ focusStyle: {
43
+ outlineColor: "$borderColorFocus",
44
+ outlineStyle: "solid",
45
+ outlineWidth: 2
46
+ }
47
+ }
48
+ },
49
+ size: {
50
+ "...size": getButtonSized
51
+ },
52
+ active: {
53
+ true: {
54
+ hoverStyle: {
55
+ backgroundColor: "$background"
56
+ }
57
+ }
58
+ },
59
+ disabled: {
60
+ true: {
61
+ pointerEvents: "none"
62
+ }
63
+ }
64
+ },
65
+ defaultVariants: {
66
+ unstyled: false
67
+ }
68
+ });
69
+ const [createButtonContext, createButtonScope] = createContextScope(BUTTON_NAME);
70
+ const [ButtonProvider, useButtonContext] = createButtonContext("Button");
71
+ const ButtonTextFrame = styled(BaseButton.Text, {
72
+ name: BUTTON_TEXT_NAME,
73
+ variants: {
74
+ unstyled: {
75
+ false: {
76
+ userSelect: "none",
77
+ cursor: "pointer",
78
+ // flexGrow 1 leads to inconsistent native style where text pushes to start of view
79
+ flexGrow: 0,
80
+ flexShrink: 1,
81
+ ellipse: true,
82
+ color: "$color"
83
+ }
84
+ }
85
+ },
86
+ defaultVariants: {
87
+ unstyled: false
88
+ }
89
+ });
90
+ const ButtonText = ButtonTextFrame.styleable(
91
+ (props, ref) => {
92
+ const context = useButtonContext(BUTTON_TEXT_NAME, props.__scopeButton);
93
+ useEffect(() => {
94
+ const unregister = context.registerButtonText();
95
+ return () => unregister();
96
+ }, [context.registerButtonText]);
97
+ return <ButtonTextFrame ref={ref} color={context.color} size={context.size} {...props}>{props.children}</ButtonTextFrame>;
98
+ }
99
+ );
100
+ const ButtonIcon = (props) => {
101
+ const { children, scaleIcon = 1 } = props;
102
+ const context = useButtonContext(BUTTON_ICON_NAME, props.__scopeButton);
103
+ const size = context.size;
104
+ const color = context.color;
105
+ const iconSize = (typeof size === "number" ? size * 0.5 : getFontSize(size)) * scaleIcon;
106
+ const getThemedIcon = useGetThemedIcon({ size: iconSize, color });
107
+ return getThemedIcon(children);
108
+ };
109
+ const ButtonComponent = ButtonFrame.styleable(
110
+ (props, ref) => {
111
+ const buttonApi = props.forceButtonApi ?? getConfig().buttonApi ?? "mixed";
112
+ const { props: buttonProps } = useButton(props);
113
+ const [buttonTextCount, setButtonTextCount] = useState(0);
114
+ const registerButtonText = useCallback(() => {
115
+ if (buttonApi === "simple") {
116
+ console.warn(
117
+ "You are using Button.Text with simple button API. Either remove Button.Text or use either `buttonApi: composable` or `mixed` in your tamagui config."
118
+ );
119
+ }
120
+ if (buttonApi === "composable")
121
+ return () => {
122
+ };
123
+ setButtonTextCount((prev) => prev + 1);
124
+ return () => setButtonTextCount((prev) => prev - 1);
125
+ }, [setButtonTextCount]);
126
+ const usesComposableApi = buttonApi === "composable" || buttonApi === "mixed" && buttonTextCount > 0;
127
+ return <ButtonProvider
128
+ scope={props.__scopeButton}
129
+ size={props.size ?? "$true"}
130
+ color={props.color}
131
+ usesComposableApi={usesComposableApi}
132
+ registerButtonText={registerButtonText}
133
+ ><ButtonFrame unstyled={props.unstyled ?? false} ref={ref} {...buttonProps} /></ButtonProvider>;
134
+ }
135
+ );
136
+ const Button = withStaticProperties(ButtonComponent, {
137
+ Text: ButtonText,
138
+ Icon: ButtonIcon
139
+ });
140
+ function useButton(propsIn, { Text = ButtonTextFrame } = { Text: ButtonTextFrame }) {
141
+ const {
142
+ children,
143
+ icon,
144
+ iconAfter,
145
+ noTextWrap,
146
+ theme: themeName,
147
+ space,
148
+ spaceFlex,
149
+ scaleIcon = 1,
150
+ scaleSpace = 0.66,
151
+ separator,
152
+ // text props
153
+ color,
154
+ fontWeight,
155
+ letterSpacing,
156
+ fontSize,
157
+ fontFamily,
158
+ fontStyle,
159
+ textAlign,
160
+ unstyled = false,
161
+ textProps,
162
+ ...rest
163
+ } = propsIn;
164
+ const isNested = isRSC ? false : useContext(ButtonNestingContext);
165
+ const propsActive = useMediaPropsActive(propsIn);
166
+ const size = propsActive.size || "$true";
167
+ const iconSize = (typeof size === "number" ? size * 0.5 : getFontSize(size)) * scaleIcon;
168
+ const getThemedIcon = useGetThemedIcon({ size: iconSize, color });
169
+ const [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon);
170
+ const spaceSize = propsActive.space ?? getVariableValue(iconSize) * scaleSpace;
171
+ const contents = wrapChildrenInText(
172
+ Text,
173
+ propsActive,
174
+ Text === ButtonTextFrame ? {
175
+ unstyled
176
+ } : void 0
177
+ );
178
+ const inner = spacedChildren({
179
+ // a bit arbitrary but scaling to font size is necessary so long as button does
180
+ space: spaceSize,
181
+ spaceFlex,
182
+ separator,
183
+ direction: propsActive.flexDirection === "column" || propsActive.flexDirection === "column-reverse" ? "vertical" : "horizontal",
184
+ children: [themedIcon, ...contents, themedIconAfter]
185
+ });
186
+ const tag = isNested ? "span" : (
187
+ // defaults to <a /> when accessibilityRole = link
188
+ // see https://github.com/tamagui/tamagui/issues/505
189
+ propsIn.accessibilityRole === "link" ? "a" : void 0
190
+ );
191
+ const props = {
192
+ ...propsActive.disabled && {
193
+ // in rnw - false still has keyboard tabIndex, undefined = not actually focusable
194
+ focusable: void 0,
195
+ // even with tabIndex unset, it will keep focusStyle on web so disable it here
196
+ focusStyle: {
197
+ borderColor: "$background"
198
+ }
199
+ },
200
+ tag,
201
+ ...rest,
202
+ children: isRSC ? inner : <ButtonNestingContext.Provider value={true}>{inner}</ButtonNestingContext.Provider>
203
+ };
204
+ return {
205
+ spaceSize,
206
+ isNested,
207
+ props
208
+ };
209
+ }
210
+ const buttonStaticConfig = {
211
+ inlineProps: /* @__PURE__ */ new Set([
212
+ // text props go here (can't really optimize them, but we never fully extract button anyway)
213
+ // may be able to remove this entirely, as the compiler / runtime have gotten better
214
+ "color",
215
+ "fontWeight",
216
+ "fontSize",
217
+ "fontFamily",
218
+ "fontStyle",
219
+ "letterSpacing",
220
+ "textAlign",
221
+ "unstyled"
222
+ ])
223
+ };
224
+ export {
225
+ Button,
226
+ ButtonFrame,
227
+ ButtonTextFrame as ButtonText,
228
+ buttonStaticConfig,
229
+ createButtonScope,
230
+ useButton
231
+ };
232
+ //# sourceMappingURL=themed.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/themed.tsx"],
4
+ "mappings": "AACA,SAAS,0BAA0B;AACnC,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAoB,wBAAwB;AAC5C,SAA2B,0BAA0B;AACrD;AAAA,EACE;AAAA,EAKA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAA4B,aAAa,YAAY,WAAW,gBAAgB;AAEhF;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,OACL;AAEP,MAAM,cAAc,OAAO,YAAY;AAAA,EACrC,MAAM;AAAA,EACN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,MAAM;AAAA,QACN,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,QACf,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,aAAa;AAAA,QAEb,YAAY;AAAA,UACV,aAAa;AAAA,QACf;AAAA,QAEA,YAAY;AAAA,UACV,cAAc;AAAA,UACd,cAAc;AAAA,UACd,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW;AAAA,IACb;AAAA,IAEA,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,YAAY;AAAA,UACV,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC;AAgDD,MAAM,CAAC,qBAAqB,iBAAiB,IAAI,mBAAmB,WAAW;AAY/E,MAAM,CAAC,gBAAgB,gBAAgB,IACrC,oBAAwC,QAAQ;AAGlD,MAAM,kBAAkB,OAAO,WAAW,MAAM;AAAA,EAC9C,MAAM;AAAA,EACN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA;AAAA,QAER,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC;AAED,MAAM,aAAa,gBAAgB;AAAA,EACjC,CAAC,OAAsD,QAAQ;AAC7D,UAAM,UAAU,iBAAiB,kBAAkB,MAAM,aAAa;AACtE,cAAU,MAAM;AACd,YAAM,aAAa,QAAQ,mBAAmB;AAC9C,aAAO,MAAM,WAAW;AAAA,IAC1B,GAAG,CAAC,QAAQ,kBAAkB,CAAC;AAE/B,WACE,CAAC,gBAAgB,KAAK,KAAK,OAAO,QAAQ,OAAO,MAAM,QAAQ,UAAU,QACtE,MAAM,SACT,EAFC;AAAA,EAIL;AACF;AAOA,MAAM,aAAa,CAAC,UAAiD;AACnE,QAAM,EAAE,UAAU,YAAY,EAAE,IAAI;AACpC,QAAM,UAAU,iBAAiB,kBAAkB,MAAM,aAAa;AAEtE,QAAM,OAAO,QAAQ;AACrB,QAAM,QAAQ,QAAQ;AAEtB,QAAM,YAAY,OAAO,SAAS,WAAW,OAAO,MAAM,YAAY,IAAI,KAAK;AAC/E,QAAM,gBAAgB,iBAAiB,EAAE,MAAM,UAAU,MAAM,CAAC;AAChE,SAAO,cAAc,QAAQ;AAC/B;AAEA,MAAM,kBAAkB,YAAY;AAAA,EAClC,CAAC,OAAiC,QAAQ;AACxC,UAAM,YAAY,MAAM,kBAAkB,UAAU,EAAE,aAAa;AACnE,UAAM,EAAE,OAAO,YAAY,IAAI,UAAU,KAAK;AAC9C,UAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,CAAC;AAExD,UAAM,qBAAqB,YAAY,MAAM;AAC3C,UAAI,cAAc,UAAU;AAC1B,gBAAQ;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAEA,UAAI,cAAc;AAAc,eAAO,MAAM;AAAA,QAAC;AAG9C,yBAAmB,CAAC,SAAS,OAAO,CAAC;AACrC,aAAO,MAAM,mBAAmB,CAAC,SAAS,OAAO,CAAC;AAAA,IACpD,GAAG,CAAC,kBAAkB,CAAC;AAEvB,UAAM,oBACJ,cAAc,gBAAiB,cAAc,WAAW,kBAAkB;AAE5E,WACE,CAAC;AAAA,MACC,OAAO,MAAM;AAAA,MACb,MAAM,MAAM,QAAQ;AAAA,MACpB,OAAO,MAAM;AAAA,MACb,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,KAEpB,CAAC,YAAY,UAAU,MAAM,YAAY,OAAO,KAAK,SAAS,aAAa,EAC7E,EARC;AAAA,EAUL;AACF;AAEA,MAAM,SAAS,qBAAqB,iBAAiB;AAAA,EACnD,MAAM;AAAA,EACN,MAAM;AACR,CAAC;AAMD,SAAS,UACP,SACA,EAAE,OAAO,gBAAgB,IAAmB,EAAE,MAAM,gBAAgB,GACpE;AAEA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,aAAa;AAAA,IACb;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IAEA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,WAAW,QAAQ,QAAQ,WAAW,oBAAoB;AAChE,QAAM,cAAc,oBAAoB,OAAO;AAC/C,QAAM,OAAO,YAAY,QAAQ;AACjC,QAAM,YAAY,OAAO,SAAS,WAAW,OAAO,MAAM,YAAY,IAAI,KAAK;AAC/E,QAAM,gBAAgB,iBAAiB,EAAE,MAAM,UAAU,MAAM,CAAC;AAChE,QAAM,CAAC,YAAY,eAAe,IAAI,CAAC,MAAM,SAAS,EAAE,IAAI,aAAa;AACzE,QAAM,YAAY,YAAY,SAAS,iBAAiB,QAAQ,IAAI;AACpE,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA,SAAS,kBACL;AAAA,MACE;AAAA,IACF,IACA;AAAA,EACN;AACA,QAAM,QAAQ,eAAe;AAAA;AAAA,IAE3B,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,WACE,YAAY,kBAAkB,YAC9B,YAAY,kBAAkB,mBAC1B,aACA;AAAA,IACN,UAAU,CAAC,YAAY,GAAG,UAAU,eAAe;AAAA,EACrD,CAAC;AAGD,QAAM,MAAM,WACR;AAAA;AAAA;AAAA,IAGF,QAAQ,sBAAsB,SAC5B,MACA;AAAA;AAEJ,QAAM,QAAQ;AAAA,IACZ,GAAI,YAAY,YAAY;AAAA;AAAA,MAE1B,WAAW;AAAA;AAAA,MAEX,YAAY;AAAA,QACV,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA;AAAA,IACA,GAAG;AAAA,IACH,UAAU,QACR,QAEA,CAAC,qBAAqB,SAAS,OAAO,OAAO,MAAM,EAAlD,qBAAqB;AAAA,EAE1B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,qBAAqB;AAAA,EACzB,aAAa,oBAAI,IAAI;AAAA;AAAA;AAAA,IAGnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;",
5
+ "names": []
6
+ }
@@ -0,0 +1,232 @@
1
+ import { createContextScope } from "@tamagui/create-context";
2
+ import { getFontSize } from "@tamagui/font-size";
3
+ import { getButtonSized } from "@tamagui/get-button-sized";
4
+ import { useGetThemedIcon } from "@tamagui/helpers-tamagui";
5
+ import { wrapChildrenInText } from "@tamagui/text";
6
+ import {
7
+ ButtonNestingContext,
8
+ getConfig,
9
+ getVariableValue,
10
+ isRSC,
11
+ spacedChildren,
12
+ styled,
13
+ useMediaPropsActive,
14
+ withStaticProperties
15
+ } from "@tamagui/web";
16
+ import { useCallback, useContext, useEffect, useState } from "react";
17
+ import {
18
+ BUTTON_ICON_NAME,
19
+ BUTTON_NAME,
20
+ BUTTON_TEXT_NAME,
21
+ Button as BaseButton
22
+ } from "./Button";
23
+ const ButtonFrame = styled(BaseButton, {
24
+ name: BUTTON_NAME,
25
+ variants: {
26
+ unstyled: {
27
+ false: {
28
+ size: "$true",
29
+ justifyContent: "center",
30
+ alignItems: "center",
31
+ flexWrap: "nowrap",
32
+ flexDirection: "row",
33
+ cursor: "pointer",
34
+ hoverTheme: true,
35
+ pressTheme: true,
36
+ backgrounded: true,
37
+ borderWidth: 1,
38
+ borderColor: "$borderColor",
39
+ pressStyle: {
40
+ borderColor: "$borderColorPress"
41
+ },
42
+ focusStyle: {
43
+ outlineColor: "$borderColorFocus",
44
+ outlineStyle: "solid",
45
+ outlineWidth: 2
46
+ }
47
+ }
48
+ },
49
+ size: {
50
+ "...size": getButtonSized
51
+ },
52
+ active: {
53
+ true: {
54
+ hoverStyle: {
55
+ backgroundColor: "$background"
56
+ }
57
+ }
58
+ },
59
+ disabled: {
60
+ true: {
61
+ pointerEvents: "none"
62
+ }
63
+ }
64
+ },
65
+ defaultVariants: {
66
+ unstyled: false
67
+ }
68
+ });
69
+ const [createButtonContext, createButtonScope] = createContextScope(BUTTON_NAME);
70
+ const [ButtonProvider, useButtonContext] = createButtonContext("Button");
71
+ const ButtonTextFrame = styled(BaseButton.Text, {
72
+ name: BUTTON_TEXT_NAME,
73
+ variants: {
74
+ unstyled: {
75
+ false: {
76
+ userSelect: "none",
77
+ cursor: "pointer",
78
+ // flexGrow 1 leads to inconsistent native style where text pushes to start of view
79
+ flexGrow: 0,
80
+ flexShrink: 1,
81
+ ellipse: true,
82
+ color: "$color"
83
+ }
84
+ }
85
+ },
86
+ defaultVariants: {
87
+ unstyled: false
88
+ }
89
+ });
90
+ const ButtonText = ButtonTextFrame.styleable(
91
+ (props, ref) => {
92
+ const context = useButtonContext(BUTTON_TEXT_NAME, props.__scopeButton);
93
+ useEffect(() => {
94
+ const unregister = context.registerButtonText();
95
+ return () => unregister();
96
+ }, [context.registerButtonText]);
97
+ return <ButtonTextFrame ref={ref} color={context.color} size={context.size} {...props}>{props.children}</ButtonTextFrame>;
98
+ }
99
+ );
100
+ const ButtonIcon = (props) => {
101
+ const { children, scaleIcon = 1 } = props;
102
+ const context = useButtonContext(BUTTON_ICON_NAME, props.__scopeButton);
103
+ const size = context.size;
104
+ const color = context.color;
105
+ const iconSize = (typeof size === "number" ? size * 0.5 : getFontSize(size)) * scaleIcon;
106
+ const getThemedIcon = useGetThemedIcon({ size: iconSize, color });
107
+ return getThemedIcon(children);
108
+ };
109
+ const ButtonComponent = ButtonFrame.styleable(
110
+ (props, ref) => {
111
+ const buttonApi = props.forceButtonApi ?? getConfig().buttonApi ?? "mixed";
112
+ const { props: buttonProps } = useButton(props);
113
+ const [buttonTextCount, setButtonTextCount] = useState(0);
114
+ const registerButtonText = useCallback(() => {
115
+ if (buttonApi === "simple") {
116
+ console.warn(
117
+ "You are using Button.Text with simple button API. Either remove Button.Text or use either `buttonApi: composable` or `mixed` in your tamagui config."
118
+ );
119
+ }
120
+ if (buttonApi === "composable")
121
+ return () => {
122
+ };
123
+ setButtonTextCount((prev) => prev + 1);
124
+ return () => setButtonTextCount((prev) => prev - 1);
125
+ }, [setButtonTextCount]);
126
+ const usesComposableApi = buttonApi === "composable" || buttonApi === "mixed" && buttonTextCount > 0;
127
+ return <ButtonProvider
128
+ scope={props.__scopeButton}
129
+ size={props.size ?? "$true"}
130
+ color={props.color}
131
+ usesComposableApi={usesComposableApi}
132
+ registerButtonText={registerButtonText}
133
+ ><ButtonFrame unstyled={props.unstyled ?? false} ref={ref} {...buttonProps} /></ButtonProvider>;
134
+ }
135
+ );
136
+ const Button = withStaticProperties(ButtonComponent, {
137
+ Text: ButtonText,
138
+ Icon: ButtonIcon
139
+ });
140
+ function useButton(propsIn, { Text = ButtonTextFrame } = { Text: ButtonTextFrame }) {
141
+ const {
142
+ children,
143
+ icon,
144
+ iconAfter,
145
+ noTextWrap,
146
+ theme: themeName,
147
+ space,
148
+ spaceFlex,
149
+ scaleIcon = 1,
150
+ scaleSpace = 0.66,
151
+ separator,
152
+ // text props
153
+ color,
154
+ fontWeight,
155
+ letterSpacing,
156
+ fontSize,
157
+ fontFamily,
158
+ fontStyle,
159
+ textAlign,
160
+ unstyled = false,
161
+ textProps,
162
+ ...rest
163
+ } = propsIn;
164
+ const isNested = isRSC ? false : useContext(ButtonNestingContext);
165
+ const propsActive = useMediaPropsActive(propsIn);
166
+ const size = propsActive.size || "$true";
167
+ const iconSize = (typeof size === "number" ? size * 0.5 : getFontSize(size)) * scaleIcon;
168
+ const getThemedIcon = useGetThemedIcon({ size: iconSize, color });
169
+ const [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon);
170
+ const spaceSize = propsActive.space ?? getVariableValue(iconSize) * scaleSpace;
171
+ const contents = wrapChildrenInText(
172
+ Text,
173
+ propsActive,
174
+ Text === ButtonTextFrame ? {
175
+ unstyled
176
+ } : void 0
177
+ );
178
+ const inner = spacedChildren({
179
+ // a bit arbitrary but scaling to font size is necessary so long as button does
180
+ space: spaceSize,
181
+ spaceFlex,
182
+ separator,
183
+ direction: propsActive.flexDirection === "column" || propsActive.flexDirection === "column-reverse" ? "vertical" : "horizontal",
184
+ children: [themedIcon, ...contents, themedIconAfter]
185
+ });
186
+ const tag = isNested ? "span" : (
187
+ // defaults to <a /> when accessibilityRole = link
188
+ // see https://github.com/tamagui/tamagui/issues/505
189
+ propsIn.accessibilityRole === "link" ? "a" : void 0
190
+ );
191
+ const props = {
192
+ ...propsActive.disabled && {
193
+ // in rnw - false still has keyboard tabIndex, undefined = not actually focusable
194
+ focusable: void 0,
195
+ // even with tabIndex unset, it will keep focusStyle on web so disable it here
196
+ focusStyle: {
197
+ borderColor: "$background"
198
+ }
199
+ },
200
+ tag,
201
+ ...rest,
202
+ children: isRSC ? inner : <ButtonNestingContext.Provider value={true}>{inner}</ButtonNestingContext.Provider>
203
+ };
204
+ return {
205
+ spaceSize,
206
+ isNested,
207
+ props
208
+ };
209
+ }
210
+ const buttonStaticConfig = {
211
+ inlineProps: /* @__PURE__ */ new Set([
212
+ // text props go here (can't really optimize them, but we never fully extract button anyway)
213
+ // may be able to remove this entirely, as the compiler / runtime have gotten better
214
+ "color",
215
+ "fontWeight",
216
+ "fontSize",
217
+ "fontFamily",
218
+ "fontStyle",
219
+ "letterSpacing",
220
+ "textAlign",
221
+ "unstyled"
222
+ ])
223
+ };
224
+ export {
225
+ Button,
226
+ ButtonFrame,
227
+ ButtonTextFrame as ButtonText,
228
+ buttonStaticConfig,
229
+ createButtonScope,
230
+ useButton
231
+ };
232
+ //# sourceMappingURL=themed.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/themed.tsx"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/button",
3
- "version": "1.26.1",
3
+ "version": "1.27.0",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -29,17 +29,17 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@tamagui/font-size": "1.26.1",
33
- "@tamagui/get-button-sized": "1.26.1",
34
- "@tamagui/helpers-tamagui": "1.26.1",
35
- "@tamagui/text": "1.26.1",
36
- "@tamagui/web": "1.26.1"
32
+ "@tamagui/font-size": "1.27.0",
33
+ "@tamagui/get-button-sized": "1.27.0",
34
+ "@tamagui/helpers-tamagui": "1.27.0",
35
+ "@tamagui/text": "1.27.0",
36
+ "@tamagui/web": "1.27.0"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "react": "*"
40
40
  },
41
41
  "devDependencies": {
42
- "@tamagui/build": "1.26.1",
42
+ "@tamagui/build": "1.27.0",
43
43
  "react": "^18.2.0",
44
44
  "vitest": "^0.26.3"
45
45
  },
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themed.d.ts","sourceRoot":"","sources":["../src/themed.tsx"],"names":[],"mappings":"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"}