@tamagui/button 2.0.0-rc.4 → 2.0.0-rc.40

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 (93) hide show
  1. package/dist/cjs/Button.cjs +195 -186
  2. package/dist/cjs/Button.native.js +195 -188
  3. package/dist/cjs/Button.native.js.map +1 -1
  4. package/dist/cjs/Button.test.cjs +33 -5
  5. package/dist/cjs/Button.test.native.js +34 -6
  6. package/dist/cjs/Button.test.native.js.map +1 -1
  7. package/dist/cjs/index.cjs +7 -5
  8. package/dist/cjs/index.native.js +7 -5
  9. package/dist/cjs/index.native.js.map +1 -1
  10. package/dist/cjs/v1/Button.cjs +215 -212
  11. package/dist/cjs/v1/Button.native.js +217 -215
  12. package/dist/cjs/v1/Button.native.js.map +1 -1
  13. package/dist/cjs/v1/Button.test.cjs +5 -5
  14. package/dist/cjs/v1/Button.test.native.js +6 -6
  15. package/dist/cjs/v1/Button.test.native.js.map +1 -1
  16. package/dist/cjs/v1/index.cjs +7 -5
  17. package/dist/cjs/v1/index.native.js +7 -5
  18. package/dist/cjs/v1/index.native.js.map +1 -1
  19. package/dist/esm/Button.mjs +175 -168
  20. package/dist/esm/Button.mjs.map +1 -1
  21. package/dist/esm/Button.native.js +175 -170
  22. package/dist/esm/Button.native.js.map +1 -1
  23. package/dist/esm/Button.test.mjs +30 -2
  24. package/dist/esm/Button.test.mjs.map +1 -1
  25. package/dist/esm/Button.test.native.js +30 -2
  26. package/dist/esm/Button.test.native.js.map +1 -1
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/index.js.map +1 -6
  29. package/dist/esm/v1/Button.mjs +193 -192
  30. package/dist/esm/v1/Button.mjs.map +1 -1
  31. package/dist/esm/v1/Button.native.js +194 -194
  32. package/dist/esm/v1/Button.native.js.map +1 -1
  33. package/dist/esm/v1/Button.test.mjs +2 -2
  34. package/dist/esm/v1/Button.test.mjs.map +1 -1
  35. package/dist/esm/v1/Button.test.native.js +2 -2
  36. package/dist/esm/v1/Button.test.native.js.map +1 -1
  37. package/dist/jsx/Button.mjs +175 -168
  38. package/dist/jsx/Button.mjs.map +1 -1
  39. package/dist/jsx/Button.native.js +195 -188
  40. package/dist/jsx/Button.native.js.map +1 -1
  41. package/dist/jsx/Button.test.mjs +30 -2
  42. package/dist/jsx/Button.test.mjs.map +1 -1
  43. package/dist/jsx/Button.test.native.js +34 -6
  44. package/dist/jsx/Button.test.native.js.map +1 -1
  45. package/dist/jsx/index.js +1 -1
  46. package/dist/jsx/index.js.map +1 -6
  47. package/dist/jsx/index.native.js +7 -5
  48. package/dist/jsx/v1/Button.mjs +193 -192
  49. package/dist/jsx/v1/Button.mjs.map +1 -1
  50. package/dist/jsx/v1/Button.native.js +217 -215
  51. package/dist/jsx/v1/Button.native.js.map +1 -1
  52. package/dist/jsx/v1/Button.test.mjs +2 -2
  53. package/dist/jsx/v1/Button.test.mjs.map +1 -1
  54. package/dist/jsx/v1/Button.test.native.js +6 -6
  55. package/dist/jsx/v1/Button.test.native.js.map +1 -1
  56. package/dist/jsx/v1/index.native.js +7 -5
  57. package/package.json +15 -18
  58. package/src/Button.test.tsx +24 -0
  59. package/src/Button.tsx +16 -3
  60. package/types/Button.d.ts +9 -0
  61. package/types/Button.d.ts.map +1 -1
  62. package/dist/cjs/Button.js +0 -176
  63. package/dist/cjs/Button.js.map +0 -6
  64. package/dist/cjs/Button.test.js +0 -8
  65. package/dist/cjs/Button.test.js.map +0 -6
  66. package/dist/cjs/index.js +0 -15
  67. package/dist/cjs/index.js.map +0 -6
  68. package/dist/cjs/v1/Button.js +0 -208
  69. package/dist/cjs/v1/Button.js.map +0 -6
  70. package/dist/cjs/v1/Button.test.js +0 -8
  71. package/dist/cjs/v1/Button.test.js.map +0 -6
  72. package/dist/cjs/v1/index.js +0 -15
  73. package/dist/cjs/v1/index.js.map +0 -6
  74. package/dist/esm/Button.js +0 -174
  75. package/dist/esm/Button.js.map +0 -6
  76. package/dist/esm/Button.test.js +0 -10
  77. package/dist/esm/Button.test.js.map +0 -6
  78. package/dist/esm/v1/Button.js +0 -201
  79. package/dist/esm/v1/Button.js.map +0 -6
  80. package/dist/esm/v1/Button.test.js +0 -10
  81. package/dist/esm/v1/Button.test.js.map +0 -6
  82. package/dist/esm/v1/index.js +0 -2
  83. package/dist/esm/v1/index.js.map +0 -6
  84. package/dist/jsx/Button.js +0 -174
  85. package/dist/jsx/Button.js.map +0 -6
  86. package/dist/jsx/Button.test.js +0 -10
  87. package/dist/jsx/Button.test.js.map +0 -6
  88. package/dist/jsx/v1/Button.js +0 -201
  89. package/dist/jsx/v1/Button.js.map +0 -6
  90. package/dist/jsx/v1/Button.test.js +0 -10
  91. package/dist/jsx/v1/Button.test.js.map +0 -6
  92. package/dist/jsx/v1/index.js +0 -2
  93. package/dist/jsx/v1/index.js.map +0 -6
@@ -1,201 +0,0 @@
1
- import { getFontSize } from "@tamagui/font-size";
2
- import { getButtonSized } from "@tamagui/get-button-sized";
3
- import { withStaticProperties } from "@tamagui/helpers";
4
- import { useGetThemedIcon } from "@tamagui/helpers-tamagui";
5
- import { ButtonNestingContext, ThemeableStack } from "@tamagui/stacks";
6
- import { SizableText, wrapChildrenInText } from "@tamagui/text";
7
- import { createStyledContext, getVariableValue, styled, useProps } from "@tamagui/web";
8
- import { useContext } from "react";
9
- import { spacedChildren } from "@tamagui/spacer";
10
- import { jsx } from "react/jsx-runtime";
11
- const ButtonContext = createStyledContext({
12
- // keeping these here means they work with styled() passing down color to text
13
- color: void 0,
14
- ellipsis: void 0,
15
- fontFamily: void 0,
16
- fontSize: void 0,
17
- fontStyle: void 0,
18
- fontWeight: void 0,
19
- letterSpacing: void 0,
20
- maxFontSizeMultiplier: void 0,
21
- size: void 0,
22
- textAlign: void 0,
23
- variant: void 0
24
- }), BUTTON_NAME = "Button", ButtonFrame = styled(ThemeableStack, {
25
- name: BUTTON_NAME,
26
- render: "button",
27
- context: ButtonContext,
28
- role: "button",
29
- focusable: !0,
30
- variants: {
31
- unstyled: {
32
- false: {
33
- size: "$true",
34
- justifyContent: "center",
35
- alignItems: "center",
36
- flexWrap: "nowrap",
37
- flexDirection: "row",
38
- cursor: "pointer",
39
- hoverTheme: !0,
40
- pressTheme: !0,
41
- backgroundColor: "$background",
42
- borderWidth: 1,
43
- borderColor: "transparent",
44
- focusVisibleStyle: {
45
- outlineColor: "$outlineColor",
46
- outlineStyle: "solid",
47
- outlineWidth: 2
48
- }
49
- }
50
- },
51
- variant: {
52
- outlined: {
53
- backgroundColor: "transparent",
54
- borderWidth: 2,
55
- borderColor: "$borderColor",
56
- hoverStyle: {
57
- backgroundColor: "transparent",
58
- borderColor: "$borderColorHover"
59
- },
60
- pressStyle: {
61
- backgroundColor: "transparent",
62
- borderColor: "$borderColorPress"
63
- },
64
- focusVisibleStyle: {
65
- backgroundColor: "transparent",
66
- borderColor: "$borderColorFocus"
67
- }
68
- }
69
- },
70
- size: {
71
- "...size": getButtonSized,
72
- ":number": getButtonSized
73
- },
74
- disabled: {
75
- true: {
76
- pointerEvents: "none"
77
- }
78
- }
79
- },
80
- defaultVariants: {
81
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
82
- }
83
- }), ButtonText = styled(SizableText, {
84
- name: "Button",
85
- context: ButtonContext,
86
- variants: {
87
- unstyled: {
88
- false: {
89
- userSelect: "none",
90
- cursor: "pointer",
91
- // flexGrow 1 leads to inconsistent native style where text pushes to start of view
92
- flexGrow: 0,
93
- flexShrink: 1,
94
- ellipsis: !0,
95
- color: "$color"
96
- }
97
- }
98
- },
99
- defaultVariants: {
100
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
101
- }
102
- }), ButtonIcon = (props) => {
103
- const { children, scaleIcon = 1 } = props, { size, color } = useContext(ButtonContext), iconSize = (typeof size == "number" ? size * 0.5 : getFontSize(size)) * scaleIcon;
104
- return useGetThemedIcon({ size: iconSize, color })(children);
105
- }, ButtonComponent = ButtonFrame.styleable(
106
- function(props, ref) {
107
- const { props: buttonProps } = useButton(props);
108
- return /* @__PURE__ */ jsx(ButtonFrame, { "data-disable-theme": !0, ...buttonProps, ref });
109
- }
110
- ), Button2 = withStaticProperties(ButtonComponent, {
111
- Text: ButtonText,
112
- Icon: ButtonIcon
113
- });
114
- function useButton({ textProps, ...propsIn }, { Text = Button2.Text } = { Text: Button2.Text }) {
115
- const isNested = useContext(ButtonNestingContext), propsActive = useProps(propsIn, {
116
- noNormalize: !0,
117
- noExpand: !0
118
- }), {
119
- icon,
120
- iconAfter,
121
- gap,
122
- spaceFlex,
123
- scaleIcon = 1,
124
- scaleSpace = 0.66,
125
- noTextWrap,
126
- fontFamily,
127
- fontSize,
128
- fontWeight,
129
- fontStyle,
130
- letterSpacing,
131
- render,
132
- ellipsis,
133
- maxFontSizeMultiplier,
134
- ...restProps
135
- } = propsActive, size = propsActive.size || (propsActive.unstyled ? void 0 : "$true"), color = propsActive.color, iconSize = (typeof size == "number" ? size * 0.5 : getFontSize(size, {
136
- font: fontFamily?.[0] === "$" ? fontFamily : void 0
137
- })) * scaleIcon, getThemedIcon = useGetThemedIcon({
138
- size: iconSize,
139
- color
140
- }), [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon), spaceSize = gap ?? getVariableValue(iconSize) * scaleSpace, contents = noTextWrap ? [propsIn.children] : wrapChildrenInText(
141
- Text,
142
- {
143
- children: propsIn.children,
144
- fontFamily,
145
- fontSize,
146
- textProps,
147
- fontWeight,
148
- fontStyle,
149
- letterSpacing,
150
- ellipsis,
151
- maxFontSizeMultiplier
152
- },
153
- Text === ButtonText && propsActive.unstyled !== !0 ? {
154
- unstyled: process.env.TAMAGUI_HEADLESS === "1",
155
- size
156
- } : void 0
157
- ), inner = spacedChildren({
158
- // a bit arbitrary but scaling to font size is necessary so long as button does
159
- space: spaceSize,
160
- spaceFlex,
161
- ensureKeys: !0,
162
- direction: propsActive.flexDirection === "column" || propsActive.flexDirection === "column-reverse" ? "vertical" : "horizontal",
163
- // for keys to stay the same we keep indices as similar a possible
164
- // so even if icons are undefined we still pass them
165
- children: [themedIcon, ...contents, themedIconAfter]
166
- }), props = {
167
- size,
168
- ...propsIn.disabled && {
169
- // in rnw - false still has keyboard tabIndex, undefined = not actually focusable
170
- focusable: void 0,
171
- // even with tabIndex unset, it will keep focusVisibleStyle on web so disable it here
172
- focusVisibleStyle: {
173
- borderColor: "$background"
174
- }
175
- },
176
- // fixes SSR issue + DOM nesting issue of not allowing button in button
177
- render: render ?? (isNested ? "span" : (
178
- // defaults to <a /> when accessibilityRole = link
179
- // see https://github.com/tamagui/tamagui/issues/505
180
- propsActive.accessibilityRole === "link" || propsActive.role === "link" ? "a" : "button"
181
- )),
182
- ...restProps,
183
- children: /* @__PURE__ */ jsx(ButtonNestingContext.Provider, { value: !0, children: inner }),
184
- // forces it to be a runtime pressStyle so it passes through context text colors
185
- disableClassName: !0
186
- };
187
- return {
188
- spaceSize,
189
- isNested,
190
- props
191
- };
192
- }
193
- export {
194
- Button2 as Button,
195
- ButtonContext,
196
- ButtonFrame,
197
- ButtonIcon,
198
- ButtonText,
199
- useButton
200
- };
201
- //# sourceMappingURL=Button.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/v1/Button.tsx"],
4
- "mappings": "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",
5
- "names": ["Button"]
6
- }
@@ -1,10 +0,0 @@
1
- import { getDefaultTamaguiConfig } from "@tamagui/config-default";
2
- import { createTamagui } from "@tamagui/core";
3
- import { describe, expect, test } from "vitest";
4
- const conf = createTamagui(getDefaultTamaguiConfig());
5
- describe("Button", () => {
6
- test("123", () => {
7
- expect(!0).toBeTruthy();
8
- });
9
- });
10
- //# sourceMappingURL=Button.test.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/v1/Button.test.tsx"],
4
- "mappings": "AAAA,SAAS,+BAA+B;AACxC,SAAS,qBAAqB;AAC9B,SAAS,UAAU,QAAQ,YAAY;AAEvC,MAAM,OAAO,cAAc,wBAAwB,CAAC;AAEpD,SAAS,UAAU,MAAM;AACvB,OAAK,OAAO,MAAM;AAChB,WAAO,EAAI,EAAE,WAAW;AAAA,EAC1B,CAAC;AAWH,CAAC;",
5
- "names": []
6
- }
@@ -1,2 +0,0 @@
1
- export * from "./Button";
2
- //# sourceMappingURL=index.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/v1/index.ts"],
4
- "mappings": "AAAA,cAAc;",
5
- "names": []
6
- }