@tamagui/logo 1.0.1-beta.165 → 1.0.1-beta.166

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.
@@ -28,10 +28,10 @@ module.exports = __toCommonJS(TamaguiLogo_exports);
28
28
  var import_jsx_runtime = require("react/jsx-runtime");
29
29
  var import_react = require("react");
30
30
  var import_tamagui = require("tamagui");
31
- const tints = ["red", "orange", "yellow", "green", "blue", "purple", "pink"];
31
+ const tints = ["orange", "yellow", "green", "blue", "purple", "pink", "red"];
32
32
  const logoColors = tints.map((t) => `var(--${t}9)`);
33
33
  const TamaguiLogo = (0, import_react.forwardRef)(
34
- ({ showWords, color, downscale, onHoverLetter, pathPrefix, ...props }, ref) => {
34
+ ({ showWords, color, downscale, onHoverLetter, pathPrefix, animated, ...props }, ref) => {
35
35
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
36
36
  tag: "span",
37
37
  ref,
@@ -49,6 +49,7 @@ const TamaguiLogo = (0, import_react.forwardRef)(
49
49
  tag: "span",
50
50
  marginBottom: -4,
51
51
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LogoWords, {
52
+ animated,
52
53
  onHoverLetter,
53
54
  downscale: downscale ?? 2,
54
55
  color
@@ -61,55 +62,108 @@ const TamaguiLogo = (0, import_react.forwardRef)(
61
62
  const LogoWords = ({
62
63
  color,
63
64
  downscale = 1,
64
- onHoverLetter
65
+ onHoverLetter,
66
+ animated
65
67
  }) => {
66
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
67
- width: 373 * (1 / downscale) * 0.333333334,
68
- height: 41 * (1 / downscale) * 0.333333334,
69
- viewBox: "0 0 373 41",
68
+ const [index, setIndex] = (0, import_react.useState)(3);
69
+ const [hovered, setHovered] = (0, import_react.useState)(false);
70
+ const [mounted, setMounted] = (0, import_react.useState)("start");
71
+ const updateHoveredLetter = (index2) => {
72
+ setIndex(index2);
73
+ setTimeout(() => {
74
+ onHoverLetter == null ? void 0 : onHoverLetter(index2);
75
+ });
76
+ };
77
+ (0, import_react.useEffect)(() => {
78
+ setTimeout(() => {
79
+ setMounted("animate");
80
+ });
81
+ setTimeout(() => {
82
+ setMounted("done");
83
+ }, 2e3);
84
+ }, []);
85
+ (0, import_react.useEffect)(() => {
86
+ var _a;
87
+ return (_a = globalThis["onChangeTint"]) == null ? void 0 : _a.call(globalThis, (index2) => {
88
+ setIndex(index2);
89
+ });
90
+ }, []);
91
+ const getColor = (i) => {
92
+ const isActive = mounted !== "start" && i === index;
93
+ if (mounted !== "done" || hovered) {
94
+ return isActive ? "var(--color)" : logoColors[index];
95
+ }
96
+ if (isActive) {
97
+ return "var(--color)";
98
+ }
99
+ return logoColors[i];
100
+ };
101
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
102
+ onHoverIn: () => setHovered(true),
103
+ onHoverOut: () => setHovered(false),
104
+ paddingVertical: "$2",
105
+ marginVertical: "$-2",
106
+ position: "relative",
70
107
  children: [
71
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
72
- shapeRendering: "crispEdges",
73
- fill: color || logoColors[0],
74
- points: "24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903",
75
- onMouseEnter: onHoverLetter ? () => onHoverLetter(0) : void 0
76
- }),
77
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
78
- shapeRendering: "crispEdges",
79
- fill: color || logoColors[1],
80
- d: "M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z",
81
- fillRule: "nonzero",
82
- onMouseEnter: onHoverLetter ? () => onHoverLetter(1) : void 0
83
- }),
84
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
85
- shapeRendering: "crispEdges",
86
- fill: color || logoColors[2],
87
- points: "130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903",
88
- onMouseEnter: onHoverLetter ? () => onHoverLetter(2) : void 0
108
+ animated && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_tamagui.Circle, {
109
+ animation: "quick",
110
+ position: "absolute",
111
+ top: 0,
112
+ left: 0,
113
+ y: mounted === "start" ? -30 : -3,
114
+ x: index * 18.5 + 18 / 2 * (index / logoColors.length) + 3 + (index === 6 ? -3 : 0),
115
+ size: 4,
116
+ backgroundColor: logoColors[index]
89
117
  }),
90
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
91
- fill: color || logoColors[3],
92
- d: "M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z",
93
- fillRule: "nonzero",
94
- onMouseEnter: onHoverLetter ? () => onHoverLetter(3) : void 0
95
- }),
96
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
97
- shapeRendering: "crispEdges",
98
- fill: color || logoColors[4],
99
- points: "264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903",
100
- onMouseEnter: onHoverLetter ? () => onHoverLetter(4) : void 0
101
- }),
102
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
103
- shapeRendering: "crispEdges",
104
- fill: color || logoColors[5],
105
- points: "323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903",
106
- onMouseEnter: onHoverLetter ? () => onHoverLetter(5) : void 0
107
- }),
108
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
109
- shapeRendering: "crispEdges",
110
- fill: color || logoColors[6],
111
- points: "372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903",
112
- onMouseEnter: onHoverLetter ? () => onHoverLetter(6) : void 0
118
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", {
119
+ width: 373 * (1 / downscale) * 0.333333334,
120
+ height: 41 * (1 / downscale) * 0.333333334,
121
+ viewBox: "0 0 373 41",
122
+ children: [
123
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
124
+ shapeRendering: "crispEdges",
125
+ fill: color || getColor(0),
126
+ points: "24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903",
127
+ onMouseEnter: () => updateHoveredLetter(0)
128
+ }),
129
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
130
+ shapeRendering: "crispEdges",
131
+ fill: color || getColor(1),
132
+ d: "M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z",
133
+ fillRule: "nonzero",
134
+ onMouseEnter: () => updateHoveredLetter(1)
135
+ }),
136
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
137
+ shapeRendering: "crispEdges",
138
+ fill: color || getColor(2),
139
+ points: "130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903",
140
+ onMouseEnter: () => updateHoveredLetter(2)
141
+ }),
142
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", {
143
+ fill: color || getColor(3),
144
+ d: "M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z",
145
+ fillRule: "nonzero",
146
+ onMouseEnter: () => updateHoveredLetter(3)
147
+ }),
148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
149
+ shapeRendering: "crispEdges",
150
+ fill: color || getColor(4),
151
+ points: "264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903",
152
+ onMouseEnter: () => updateHoveredLetter(4)
153
+ }),
154
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
155
+ shapeRendering: "crispEdges",
156
+ fill: color || getColor(5),
157
+ points: "323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903",
158
+ onMouseEnter: () => updateHoveredLetter(5)
159
+ }),
160
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", {
161
+ shapeRendering: "crispEdges",
162
+ fill: color || getColor(6),
163
+ points: "372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903",
164
+ onMouseEnter: () => updateHoveredLetter(6)
165
+ })
166
+ ]
113
167
  })
114
168
  ]
115
169
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/TamaguiLogo.tsx"],
4
- "sourcesContent": ["import React, { forwardRef } from 'react'\nimport { ThemeName, XStack, XStackProps, YStack } from 'tamagui'\n\nexport const tints: ThemeName[] = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'pink']\n\nexport const logoColors = tints.map((t) => `var(--${t}9)`)\n\ntype LogoProps = {\n onHoverLetter?: (i: number) => void\n showWords?: boolean\n color?: string\n downscale?: number\n pathPrefix?: string\n} & XStackProps\n\nexport const TamaguiLogo = forwardRef<any, LogoProps>(\n ({ showWords, color, downscale, onHoverLetter, pathPrefix, ...props }: LogoProps, ref) => {\n return (\n <XStack\n tag=\"span\"\n ref={ref}\n alignItems=\"center\"\n justifyContent=\"center\"\n space=\"$5\"\n {...props}\n >\n <LogoIcon\n pathPrefix={pathPrefix}\n downscale={(downscale ?? 1) * (showWords ? 2 : 1.5)}\n color={color}\n />\n {showWords && (\n <YStack tag=\"span\" marginBottom={-4}>\n <LogoWords onHoverLetter={onHoverLetter} downscale={downscale ?? 2} color={color} />\n </YStack>\n )}\n </XStack>\n )\n }\n)\n\nexport const LogoWords = ({\n color,\n downscale = 1,\n onHoverLetter,\n}: {\n color?: string\n downscale?: number\n onHoverLetter?: any\n}) => {\n return (\n <svg\n width={373 * (1 / downscale) * 0.333333334}\n height={41 * (1 / downscale) * 0.333333334}\n viewBox=\"0 0 373 41\"\n >\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[0]}\n points=\"24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(0) : undefined}\n />\n <path\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[1]}\n d=\"M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(1) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[2]}\n points=\"130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(2) : undefined}\n />\n <path\n fill={color || logoColors[3]}\n d=\"M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(3) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[4]}\n points=\"264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(4) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[5]}\n points=\"323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(5) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[6]}\n points=\"372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(6) : undefined}\n />\n </svg>\n )\n}\n\nexport const LogoIcon = ({ downscale = 2, pathPrefix }: any) => {\n return (\n <YStack\n tag=\"span\"\n className=\"unselectable\"\n alignSelf=\"center\"\n marginVertical={-10}\n pressStyle={{\n opacity: 0.7,\n }}\n >\n <img\n className=\"tamagui-icon\"\n width={450 / 8 / downscale}\n height={420 / 8 / downscale}\n src={`${pathPrefix || ''}/tamagui-icon.svg`}\n />\n </YStack>\n )\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import React, { forwardRef, useEffect, useState } from 'react'\nimport { Circle, ThemeName, XStack, XStackProps, YStack } from 'tamagui'\n\nexport const tints: ThemeName[] = ['orange', 'yellow', 'green', 'blue', 'purple', 'pink', 'red']\n\nexport const logoColors = tints.map((t) => `var(--${t}9)`)\n\ntype LogoProps = {\n onHoverLetter?: (i: number) => void\n showWords?: boolean\n color?: string\n downscale?: number\n pathPrefix?: string\n animated?: boolean\n} & XStackProps\n\nexport const TamaguiLogo = forwardRef<any, LogoProps>(\n (\n { showWords, color, downscale, onHoverLetter, pathPrefix, animated, ...props }: LogoProps,\n ref\n ) => {\n return (\n <XStack\n tag=\"span\"\n ref={ref}\n alignItems=\"center\"\n justifyContent=\"center\"\n space=\"$5\"\n {...props}\n >\n <LogoIcon\n pathPrefix={pathPrefix}\n downscale={(downscale ?? 1) * (showWords ? 2 : 1.5)}\n color={color}\n />\n {showWords && (\n <YStack tag=\"span\" marginBottom={-4}>\n <LogoWords\n animated={animated}\n onHoverLetter={onHoverLetter}\n downscale={downscale ?? 2}\n color={color}\n />\n </YStack>\n )}\n </XStack>\n )\n }\n)\n\nexport const LogoWords = ({\n color,\n downscale = 1,\n onHoverLetter,\n animated,\n}: {\n color?: string\n downscale?: number\n onHoverLetter?: any\n animated?: boolean\n}) => {\n const [index, setIndex] = useState(3)\n const [hovered, setHovered] = useState(false)\n const [mounted, setMounted] = useState<'start' | 'animate' | 'done'>('start')\n\n const updateHoveredLetter = (index: number) => {\n setIndex(index)\n setTimeout(() => {\n onHoverLetter?.(index)\n })\n }\n\n useEffect(() => {\n setTimeout(() => {\n setMounted('animate')\n })\n\n setTimeout(() => {\n setMounted('done')\n }, 2000)\n }, [])\n\n useEffect(() => {\n // temp hack\n return globalThis['onChangeTint']?.((index) => {\n setIndex(index)\n })\n }, [])\n\n const getColor = (i: number) => {\n const isActive = mounted !== 'start' && i === index\n if (mounted !== 'done' || hovered) {\n return isActive ? 'var(--color)' : logoColors[index]\n }\n if (isActive) {\n return 'var(--color)'\n }\n return logoColors[i]\n }\n\n return (\n <XStack\n onHoverIn={() => setHovered(true)}\n onHoverOut={() => setHovered(false)}\n paddingVertical=\"$2\"\n marginVertical=\"$-2\"\n position=\"relative\"\n >\n {animated && (\n <Circle\n animation=\"quick\"\n position=\"absolute\"\n top={0}\n left={0}\n y={mounted === 'start' ? -30 : -3}\n // the last i is less wide\n x={index * 18.5 + (18 / 2) * (index / logoColors.length) + 3 + (index === 6 ? -3 : 0)}\n size={4}\n backgroundColor={logoColors[index]}\n />\n )}\n <svg\n width={373 * (1 / downscale) * 0.333333334}\n height={41 * (1 / downscale) * 0.333333334}\n viewBox=\"0 0 373 41\"\n >\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(0)}\n points=\"24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(0)}\n />\n <path\n shapeRendering=\"crispEdges\"\n fill={color || getColor(1)}\n d=\"M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={() => updateHoveredLetter(1)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(2)}\n points=\"130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(2)}\n />\n <path\n fill={color || getColor(3)}\n d=\"M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={() => updateHoveredLetter(3)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(4)}\n points=\"264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(4)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(5)}\n points=\"323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(5)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(6)}\n points=\"372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(6)}\n />\n </svg>\n </XStack>\n )\n}\n\nexport const LogoIcon = ({ downscale = 2, pathPrefix }: any) => {\n return (\n <YStack\n tag=\"span\"\n className=\"unselectable\"\n alignSelf=\"center\"\n marginVertical={-10}\n pressStyle={{\n opacity: 0.7,\n }}\n >\n <img\n className=\"tamagui-icon\"\n width={450 / 8 / downscale}\n height={420 / 8 / downscale}\n src={`${pathPrefix || ''}/tamagui-icon.svg`}\n />\n </YStack>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["index"]
7
7
  }
@@ -1,10 +1,10 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { forwardRef } from "react";
3
- import { XStack, YStack } from "tamagui";
4
- const tints = ["red", "orange", "yellow", "green", "blue", "purple", "pink"];
2
+ import { forwardRef, useEffect, useState } from "react";
3
+ import { Circle, XStack, YStack } from "tamagui";
4
+ const tints = ["orange", "yellow", "green", "blue", "purple", "pink", "red"];
5
5
  const logoColors = tints.map((t) => `var(--${t}9)`);
6
6
  const TamaguiLogo = forwardRef(
7
- ({ showWords, color, downscale, onHoverLetter, pathPrefix, ...props }, ref) => {
7
+ ({ showWords, color, downscale, onHoverLetter, pathPrefix, animated, ...props }, ref) => {
8
8
  return /* @__PURE__ */ jsxs(XStack, {
9
9
  tag: "span",
10
10
  ref,
@@ -22,6 +22,7 @@ const TamaguiLogo = forwardRef(
22
22
  tag: "span",
23
23
  marginBottom: -4,
24
24
  children: /* @__PURE__ */ jsx(LogoWords, {
25
+ animated,
25
26
  onHoverLetter,
26
27
  downscale: downscale ?? 2,
27
28
  color
@@ -34,55 +35,108 @@ const TamaguiLogo = forwardRef(
34
35
  const LogoWords = ({
35
36
  color,
36
37
  downscale = 1,
37
- onHoverLetter
38
+ onHoverLetter,
39
+ animated
38
40
  }) => {
39
- return /* @__PURE__ */ jsxs("svg", {
40
- width: 373 * (1 / downscale) * 0.333333334,
41
- height: 41 * (1 / downscale) * 0.333333334,
42
- viewBox: "0 0 373 41",
41
+ const [index, setIndex] = useState(3);
42
+ const [hovered, setHovered] = useState(false);
43
+ const [mounted, setMounted] = useState("start");
44
+ const updateHoveredLetter = (index2) => {
45
+ setIndex(index2);
46
+ setTimeout(() => {
47
+ onHoverLetter == null ? void 0 : onHoverLetter(index2);
48
+ });
49
+ };
50
+ useEffect(() => {
51
+ setTimeout(() => {
52
+ setMounted("animate");
53
+ });
54
+ setTimeout(() => {
55
+ setMounted("done");
56
+ }, 2e3);
57
+ }, []);
58
+ useEffect(() => {
59
+ var _a;
60
+ return (_a = globalThis["onChangeTint"]) == null ? void 0 : _a.call(globalThis, (index2) => {
61
+ setIndex(index2);
62
+ });
63
+ }, []);
64
+ const getColor = (i) => {
65
+ const isActive = mounted !== "start" && i === index;
66
+ if (mounted !== "done" || hovered) {
67
+ return isActive ? "var(--color)" : logoColors[index];
68
+ }
69
+ if (isActive) {
70
+ return "var(--color)";
71
+ }
72
+ return logoColors[i];
73
+ };
74
+ return /* @__PURE__ */ jsxs(XStack, {
75
+ onHoverIn: () => setHovered(true),
76
+ onHoverOut: () => setHovered(false),
77
+ paddingVertical: "$2",
78
+ marginVertical: "$-2",
79
+ position: "relative",
43
80
  children: [
44
- /* @__PURE__ */ jsx("polygon", {
45
- shapeRendering: "crispEdges",
46
- fill: color || logoColors[0],
47
- points: "24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903",
48
- onMouseEnter: onHoverLetter ? () => onHoverLetter(0) : void 0
49
- }),
50
- /* @__PURE__ */ jsx("path", {
51
- shapeRendering: "crispEdges",
52
- fill: color || logoColors[1],
53
- d: "M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z",
54
- fillRule: "nonzero",
55
- onMouseEnter: onHoverLetter ? () => onHoverLetter(1) : void 0
56
- }),
57
- /* @__PURE__ */ jsx("polygon", {
58
- shapeRendering: "crispEdges",
59
- fill: color || logoColors[2],
60
- points: "130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903",
61
- onMouseEnter: onHoverLetter ? () => onHoverLetter(2) : void 0
81
+ animated && /* @__PURE__ */ jsx(Circle, {
82
+ animation: "quick",
83
+ position: "absolute",
84
+ top: 0,
85
+ left: 0,
86
+ y: mounted === "start" ? -30 : -3,
87
+ x: index * 18.5 + 18 / 2 * (index / logoColors.length) + 3 + (index === 6 ? -3 : 0),
88
+ size: 4,
89
+ backgroundColor: logoColors[index]
62
90
  }),
63
- /* @__PURE__ */ jsx("path", {
64
- fill: color || logoColors[3],
65
- d: "M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z",
66
- fillRule: "nonzero",
67
- onMouseEnter: onHoverLetter ? () => onHoverLetter(3) : void 0
68
- }),
69
- /* @__PURE__ */ jsx("polygon", {
70
- shapeRendering: "crispEdges",
71
- fill: color || logoColors[4],
72
- points: "264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903",
73
- onMouseEnter: onHoverLetter ? () => onHoverLetter(4) : void 0
74
- }),
75
- /* @__PURE__ */ jsx("polygon", {
76
- shapeRendering: "crispEdges",
77
- fill: color || logoColors[5],
78
- points: "323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903",
79
- onMouseEnter: onHoverLetter ? () => onHoverLetter(5) : void 0
80
- }),
81
- /* @__PURE__ */ jsx("polygon", {
82
- shapeRendering: "crispEdges",
83
- fill: color || logoColors[6],
84
- points: "372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903",
85
- onMouseEnter: onHoverLetter ? () => onHoverLetter(6) : void 0
91
+ /* @__PURE__ */ jsxs("svg", {
92
+ width: 373 * (1 / downscale) * 0.333333334,
93
+ height: 41 * (1 / downscale) * 0.333333334,
94
+ viewBox: "0 0 373 41",
95
+ children: [
96
+ /* @__PURE__ */ jsx("polygon", {
97
+ shapeRendering: "crispEdges",
98
+ fill: color || getColor(0),
99
+ points: "24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903",
100
+ onMouseEnter: () => updateHoveredLetter(0)
101
+ }),
102
+ /* @__PURE__ */ jsx("path", {
103
+ shapeRendering: "crispEdges",
104
+ fill: color || getColor(1),
105
+ d: "M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z",
106
+ fillRule: "nonzero",
107
+ onMouseEnter: () => updateHoveredLetter(1)
108
+ }),
109
+ /* @__PURE__ */ jsx("polygon", {
110
+ shapeRendering: "crispEdges",
111
+ fill: color || getColor(2),
112
+ points: "130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903",
113
+ onMouseEnter: () => updateHoveredLetter(2)
114
+ }),
115
+ /* @__PURE__ */ jsx("path", {
116
+ fill: color || getColor(3),
117
+ d: "M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z",
118
+ fillRule: "nonzero",
119
+ onMouseEnter: () => updateHoveredLetter(3)
120
+ }),
121
+ /* @__PURE__ */ jsx("polygon", {
122
+ shapeRendering: "crispEdges",
123
+ fill: color || getColor(4),
124
+ points: "264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903",
125
+ onMouseEnter: () => updateHoveredLetter(4)
126
+ }),
127
+ /* @__PURE__ */ jsx("polygon", {
128
+ shapeRendering: "crispEdges",
129
+ fill: color || getColor(5),
130
+ points: "323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903",
131
+ onMouseEnter: () => updateHoveredLetter(5)
132
+ }),
133
+ /* @__PURE__ */ jsx("polygon", {
134
+ shapeRendering: "crispEdges",
135
+ fill: color || getColor(6),
136
+ points: "372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903",
137
+ onMouseEnter: () => updateHoveredLetter(6)
138
+ })
139
+ ]
86
140
  })
87
141
  ]
88
142
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/TamaguiLogo.tsx"],
4
- "sourcesContent": ["import React, { forwardRef } from 'react'\nimport { ThemeName, XStack, XStackProps, YStack } from 'tamagui'\n\nexport const tints: ThemeName[] = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'pink']\n\nexport const logoColors = tints.map((t) => `var(--${t}9)`)\n\ntype LogoProps = {\n onHoverLetter?: (i: number) => void\n showWords?: boolean\n color?: string\n downscale?: number\n pathPrefix?: string\n} & XStackProps\n\nexport const TamaguiLogo = forwardRef<any, LogoProps>(\n ({ showWords, color, downscale, onHoverLetter, pathPrefix, ...props }: LogoProps, ref) => {\n return (\n <XStack\n tag=\"span\"\n ref={ref}\n alignItems=\"center\"\n justifyContent=\"center\"\n space=\"$5\"\n {...props}\n >\n <LogoIcon\n pathPrefix={pathPrefix}\n downscale={(downscale ?? 1) * (showWords ? 2 : 1.5)}\n color={color}\n />\n {showWords && (\n <YStack tag=\"span\" marginBottom={-4}>\n <LogoWords onHoverLetter={onHoverLetter} downscale={downscale ?? 2} color={color} />\n </YStack>\n )}\n </XStack>\n )\n }\n)\n\nexport const LogoWords = ({\n color,\n downscale = 1,\n onHoverLetter,\n}: {\n color?: string\n downscale?: number\n onHoverLetter?: any\n}) => {\n return (\n <svg\n width={373 * (1 / downscale) * 0.333333334}\n height={41 * (1 / downscale) * 0.333333334}\n viewBox=\"0 0 373 41\"\n >\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[0]}\n points=\"24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(0) : undefined}\n />\n <path\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[1]}\n d=\"M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(1) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[2]}\n points=\"130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(2) : undefined}\n />\n <path\n fill={color || logoColors[3]}\n d=\"M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(3) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[4]}\n points=\"264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(4) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[5]}\n points=\"323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(5) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[6]}\n points=\"372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(6) : undefined}\n />\n </svg>\n )\n}\n\nexport const LogoIcon = ({ downscale = 2, pathPrefix }: any) => {\n return (\n <YStack\n tag=\"span\"\n className=\"unselectable\"\n alignSelf=\"center\"\n marginVertical={-10}\n pressStyle={{\n opacity: 0.7,\n }}\n >\n <img\n className=\"tamagui-icon\"\n width={450 / 8 / downscale}\n height={420 / 8 / downscale}\n src={`${pathPrefix || ''}/tamagui-icon.svg`}\n />\n </YStack>\n )\n}\n"],
5
- "mappings": "AAkBM,SAQE,KARF;AAlBN,SAAgB,kBAAkB;AAClC,SAAoB,QAAqB,cAAc;AAEhD,MAAM,QAAqB,CAAC,OAAO,UAAU,UAAU,SAAS,QAAQ,UAAU,MAAM;AAExF,MAAM,aAAa,MAAM,IAAI,CAAC,MAAM,SAAS,KAAK;AAUlD,MAAM,cAAc;AAAA,EACzB,CAAC,EAAE,WAAW,OAAO,WAAW,eAAe,eAAe,MAAM,GAAc,QAAQ;AACxF,WACE,qBAAC;AAAA,MACC,KAAI;AAAA,MACJ;AAAA,MACA,YAAW;AAAA,MACX,gBAAe;AAAA,MACf,OAAM;AAAA,MACL,GAAG;AAAA,MAEJ;AAAA,4BAAC;AAAA,UACC;AAAA,UACA,YAAY,aAAa,MAAM,YAAY,IAAI;AAAA,UAC/C;AAAA,SACF;AAAA,QACC,aACC,oBAAC;AAAA,UAAO,KAAI;AAAA,UAAO,cAAc;AAAA,UAC/B,8BAAC;AAAA,YAAU;AAAA,YAA8B,WAAW,aAAa;AAAA,YAAG;AAAA,WAAc;AAAA,SACpF;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEO,MAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,EACZ;AACF,MAIM;AACJ,SACE,qBAAC;AAAA,IACC,OAAO,OAAO,IAAI,aAAa;AAAA,IAC/B,QAAQ,MAAM,IAAI,aAAa;AAAA,IAC/B,SAAQ;AAAA,IAER;AAAA,0BAAC;AAAA,QACC,gBAAe;AAAA,QACf,MAAM,SAAS,WAAW;AAAA,QAC1B,QAAO;AAAA,QACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI;AAAA,OACzD;AAAA,MACA,oBAAC;AAAA,QACC,gBAAe;AAAA,QACf,MAAM,SAAS,WAAW;AAAA,QAC1B,GAAE;AAAA,QACF,UAAS;AAAA,QACT,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI;AAAA,OACzD;AAAA,MACA,oBAAC;AAAA,QACC,gBAAe;AAAA,QACf,MAAM,SAAS,WAAW;AAAA,QAC1B,QAAO;AAAA,QACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI;AAAA,OACzD;AAAA,MACA,oBAAC;AAAA,QACC,MAAM,SAAS,WAAW;AAAA,QAC1B,GAAE;AAAA,QACF,UAAS;AAAA,QACT,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI;AAAA,OACzD;AAAA,MACA,oBAAC;AAAA,QACC,gBAAe;AAAA,QACf,MAAM,SAAS,WAAW;AAAA,QAC1B,QAAO;AAAA,QACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI;AAAA,OACzD;AAAA,MACA,oBAAC;AAAA,QACC,gBAAe;AAAA,QACf,MAAM,SAAS,WAAW;AAAA,QAC1B,QAAO;AAAA,QACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI;AAAA,OACzD;AAAA,MACA,oBAAC;AAAA,QACC,gBAAe;AAAA,QACf,MAAM,SAAS,WAAW;AAAA,QAC1B,QAAO;AAAA,QACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI;AAAA,OACzD;AAAA;AAAA,GACF;AAEJ;AAEO,MAAM,WAAW,CAAC,EAAE,YAAY,GAAG,WAAW,MAAW;AAC9D,SACE,oBAAC;AAAA,IACC,KAAI;AAAA,IACJ,WAAU;AAAA,IACV,WAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,YAAY;AAAA,MACV,SAAS;AAAA,IACX;AAAA,IAEA,8BAAC;AAAA,MACC,WAAU;AAAA,MACV,OAAO,MAAM,IAAI;AAAA,MACjB,QAAQ,MAAM,IAAI;AAAA,MAClB,KAAK,GAAG,cAAc;AAAA,KACxB;AAAA,GACF;AAEJ;",
6
- "names": []
4
+ "sourcesContent": ["import React, { forwardRef, useEffect, useState } from 'react'\nimport { Circle, ThemeName, XStack, XStackProps, YStack } from 'tamagui'\n\nexport const tints: ThemeName[] = ['orange', 'yellow', 'green', 'blue', 'purple', 'pink', 'red']\n\nexport const logoColors = tints.map((t) => `var(--${t}9)`)\n\ntype LogoProps = {\n onHoverLetter?: (i: number) => void\n showWords?: boolean\n color?: string\n downscale?: number\n pathPrefix?: string\n animated?: boolean\n} & XStackProps\n\nexport const TamaguiLogo = forwardRef<any, LogoProps>(\n (\n { showWords, color, downscale, onHoverLetter, pathPrefix, animated, ...props }: LogoProps,\n ref\n ) => {\n return (\n <XStack\n tag=\"span\"\n ref={ref}\n alignItems=\"center\"\n justifyContent=\"center\"\n space=\"$5\"\n {...props}\n >\n <LogoIcon\n pathPrefix={pathPrefix}\n downscale={(downscale ?? 1) * (showWords ? 2 : 1.5)}\n color={color}\n />\n {showWords && (\n <YStack tag=\"span\" marginBottom={-4}>\n <LogoWords\n animated={animated}\n onHoverLetter={onHoverLetter}\n downscale={downscale ?? 2}\n color={color}\n />\n </YStack>\n )}\n </XStack>\n )\n }\n)\n\nexport const LogoWords = ({\n color,\n downscale = 1,\n onHoverLetter,\n animated,\n}: {\n color?: string\n downscale?: number\n onHoverLetter?: any\n animated?: boolean\n}) => {\n const [index, setIndex] = useState(3)\n const [hovered, setHovered] = useState(false)\n const [mounted, setMounted] = useState<'start' | 'animate' | 'done'>('start')\n\n const updateHoveredLetter = (index: number) => {\n setIndex(index)\n setTimeout(() => {\n onHoverLetter?.(index)\n })\n }\n\n useEffect(() => {\n setTimeout(() => {\n setMounted('animate')\n })\n\n setTimeout(() => {\n setMounted('done')\n }, 2000)\n }, [])\n\n useEffect(() => {\n // temp hack\n return globalThis['onChangeTint']?.((index) => {\n setIndex(index)\n })\n }, [])\n\n const getColor = (i: number) => {\n const isActive = mounted !== 'start' && i === index\n if (mounted !== 'done' || hovered) {\n return isActive ? 'var(--color)' : logoColors[index]\n }\n if (isActive) {\n return 'var(--color)'\n }\n return logoColors[i]\n }\n\n return (\n <XStack\n onHoverIn={() => setHovered(true)}\n onHoverOut={() => setHovered(false)}\n paddingVertical=\"$2\"\n marginVertical=\"$-2\"\n position=\"relative\"\n >\n {animated && (\n <Circle\n animation=\"quick\"\n position=\"absolute\"\n top={0}\n left={0}\n y={mounted === 'start' ? -30 : -3}\n // the last i is less wide\n x={index * 18.5 + (18 / 2) * (index / logoColors.length) + 3 + (index === 6 ? -3 : 0)}\n size={4}\n backgroundColor={logoColors[index]}\n />\n )}\n <svg\n width={373 * (1 / downscale) * 0.333333334}\n height={41 * (1 / downscale) * 0.333333334}\n viewBox=\"0 0 373 41\"\n >\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(0)}\n points=\"24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(0)}\n />\n <path\n shapeRendering=\"crispEdges\"\n fill={color || getColor(1)}\n d=\"M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={() => updateHoveredLetter(1)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(2)}\n points=\"130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(2)}\n />\n <path\n fill={color || getColor(3)}\n d=\"M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={() => updateHoveredLetter(3)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(4)}\n points=\"264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(4)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(5)}\n points=\"323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(5)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(6)}\n points=\"372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(6)}\n />\n </svg>\n </XStack>\n )\n}\n\nexport const LogoIcon = ({ downscale = 2, pathPrefix }: any) => {\n return (\n <YStack\n tag=\"span\"\n className=\"unselectable\"\n alignSelf=\"center\"\n marginVertical={-10}\n pressStyle={{\n opacity: 0.7,\n }}\n >\n <img\n className=\"tamagui-icon\"\n width={450 / 8 / downscale}\n height={420 / 8 / downscale}\n src={`${pathPrefix || ''}/tamagui-icon.svg`}\n />\n </YStack>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["index"]
7
7
  }
@@ -1,29 +1,65 @@
1
- import { forwardRef } from "react";
2
- import { XStack, YStack } from "tamagui";
3
- const tints = ["red", "orange", "yellow", "green", "blue", "purple", "pink"];
1
+ import { forwardRef, useEffect, useState } from "react";
2
+ import { Circle, XStack, YStack } from "tamagui";
3
+ const tints = ["orange", "yellow", "green", "blue", "purple", "pink", "red"];
4
4
  const logoColors = tints.map((t) => `var(--${t}9)`);
5
5
  const TamaguiLogo = forwardRef(
6
- ({ showWords, color, downscale, onHoverLetter, pathPrefix, ...props }, ref) => {
6
+ ({ showWords, color, downscale, onHoverLetter, pathPrefix, animated, ...props }, ref) => {
7
7
  return <XStack tag="span" ref={ref} alignItems="center" justifyContent="center" space="$5" {...props}>
8
8
  <LogoIcon pathPrefix={pathPrefix} downscale={(downscale ?? 1) * (showWords ? 2 : 1.5)} color={color} />
9
- {showWords && <YStack tag="span" marginBottom={-4}><LogoWords onHoverLetter={onHoverLetter} downscale={downscale ?? 2} color={color} /></YStack>}
9
+ {showWords && <YStack tag="span" marginBottom={-4}><LogoWords animated={animated} onHoverLetter={onHoverLetter} downscale={downscale ?? 2} color={color} /></YStack>}
10
10
  </XStack>;
11
11
  }
12
12
  );
13
13
  const LogoWords = ({
14
14
  color,
15
15
  downscale = 1,
16
- onHoverLetter
16
+ onHoverLetter,
17
+ animated
17
18
  }) => {
18
- return <svg width={373 * (1 / downscale) * 0.333333334} height={41 * (1 / downscale) * 0.333333334} viewBox="0 0 373 41">
19
- <polygon shapeRendering="crispEdges" fill={color || logoColors[0]} points="24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903" onMouseEnter={onHoverLetter ? () => onHoverLetter(0) : void 0} />
20
- <path shapeRendering="crispEdges" fill={color || logoColors[1]} d="M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z" fillRule="nonzero" onMouseEnter={onHoverLetter ? () => onHoverLetter(1) : void 0} />
21
- <polygon shapeRendering="crispEdges" fill={color || logoColors[2]} points="130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903" onMouseEnter={onHoverLetter ? () => onHoverLetter(2) : void 0} />
22
- <path fill={color || logoColors[3]} d="M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z" fillRule="nonzero" onMouseEnter={onHoverLetter ? () => onHoverLetter(3) : void 0} />
23
- <polygon shapeRendering="crispEdges" fill={color || logoColors[4]} points="264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903" onMouseEnter={onHoverLetter ? () => onHoverLetter(4) : void 0} />
24
- <polygon shapeRendering="crispEdges" fill={color || logoColors[5]} points="323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903" onMouseEnter={onHoverLetter ? () => onHoverLetter(5) : void 0} />
25
- <polygon shapeRendering="crispEdges" fill={color || logoColors[6]} points="372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903" onMouseEnter={onHoverLetter ? () => onHoverLetter(6) : void 0} />
26
- </svg>;
19
+ const [index, setIndex] = useState(3);
20
+ const [hovered, setHovered] = useState(false);
21
+ const [mounted, setMounted] = useState("start");
22
+ const updateHoveredLetter = (index2) => {
23
+ setIndex(index2);
24
+ setTimeout(() => {
25
+ onHoverLetter?.(index2);
26
+ });
27
+ };
28
+ useEffect(() => {
29
+ setTimeout(() => {
30
+ setMounted("animate");
31
+ });
32
+ setTimeout(() => {
33
+ setMounted("done");
34
+ }, 2e3);
35
+ }, []);
36
+ useEffect(() => {
37
+ return globalThis["onChangeTint"]?.((index2) => {
38
+ setIndex(index2);
39
+ });
40
+ }, []);
41
+ const getColor = (i) => {
42
+ const isActive = mounted !== "start" && i === index;
43
+ if (mounted !== "done" || hovered) {
44
+ return isActive ? "var(--color)" : logoColors[index];
45
+ }
46
+ if (isActive) {
47
+ return "var(--color)";
48
+ }
49
+ return logoColors[i];
50
+ };
51
+ return <XStack onHoverIn={() => setHovered(true)} onHoverOut={() => setHovered(false)} paddingVertical="$2" marginVertical="$-2" position="relative">
52
+ {animated && <Circle animation="quick" position="absolute" top={0} left={0} y={mounted === "start" ? -30 : -3} x={index * 18.5 + 18 / 2 * (index / logoColors.length) + 3 + (index === 6 ? -3 : 0)} size={4} backgroundColor={logoColors[index]} />}
53
+ <svg width={373 * (1 / downscale) * 0.333333334} height={41 * (1 / downscale) * 0.333333334} viewBox="0 0 373 41">
54
+ <polygon shapeRendering="crispEdges" fill={color || getColor(0)} points="24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903" onMouseEnter={() => updateHoveredLetter(0)} />
55
+ <path shapeRendering="crispEdges" fill={color || getColor(1)} d="M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z" fillRule="nonzero" onMouseEnter={() => updateHoveredLetter(1)} />
56
+ <polygon shapeRendering="crispEdges" fill={color || getColor(2)} points="130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903" onMouseEnter={() => updateHoveredLetter(2)} />
57
+ <path fill={color || getColor(3)} d="M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z" fillRule="nonzero" onMouseEnter={() => updateHoveredLetter(3)} />
58
+ <polygon shapeRendering="crispEdges" fill={color || getColor(4)} points="264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903" onMouseEnter={() => updateHoveredLetter(4)} />
59
+ <polygon shapeRendering="crispEdges" fill={color || getColor(5)} points="323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903" onMouseEnter={() => updateHoveredLetter(5)} />
60
+ <polygon shapeRendering="crispEdges" fill={color || getColor(6)} points="372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903" onMouseEnter={() => updateHoveredLetter(6)} />
61
+ </svg>
62
+ </XStack>;
27
63
  };
28
64
  const LogoIcon = ({ downscale = 2, pathPrefix }) => {
29
65
  return <YStack tag="span" className="unselectable" alignSelf="center" marginVertical={-10} pressStyle={{
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/TamaguiLogo.tsx"],
4
- "sourcesContent": ["import React, { forwardRef } from 'react'\nimport { ThemeName, XStack, XStackProps, YStack } from 'tamagui'\n\nexport const tints: ThemeName[] = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'pink']\n\nexport const logoColors = tints.map((t) => `var(--${t}9)`)\n\ntype LogoProps = {\n onHoverLetter?: (i: number) => void\n showWords?: boolean\n color?: string\n downscale?: number\n pathPrefix?: string\n} & XStackProps\n\nexport const TamaguiLogo = forwardRef<any, LogoProps>(\n ({ showWords, color, downscale, onHoverLetter, pathPrefix, ...props }: LogoProps, ref) => {\n return (\n <XStack\n tag=\"span\"\n ref={ref}\n alignItems=\"center\"\n justifyContent=\"center\"\n space=\"$5\"\n {...props}\n >\n <LogoIcon\n pathPrefix={pathPrefix}\n downscale={(downscale ?? 1) * (showWords ? 2 : 1.5)}\n color={color}\n />\n {showWords && (\n <YStack tag=\"span\" marginBottom={-4}>\n <LogoWords onHoverLetter={onHoverLetter} downscale={downscale ?? 2} color={color} />\n </YStack>\n )}\n </XStack>\n )\n }\n)\n\nexport const LogoWords = ({\n color,\n downscale = 1,\n onHoverLetter,\n}: {\n color?: string\n downscale?: number\n onHoverLetter?: any\n}) => {\n return (\n <svg\n width={373 * (1 / downscale) * 0.333333334}\n height={41 * (1 / downscale) * 0.333333334}\n viewBox=\"0 0 373 41\"\n >\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[0]}\n points=\"24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(0) : undefined}\n />\n <path\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[1]}\n d=\"M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(1) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[2]}\n points=\"130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(2) : undefined}\n />\n <path\n fill={color || logoColors[3]}\n d=\"M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(3) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[4]}\n points=\"264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(4) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[5]}\n points=\"323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(5) : undefined}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || logoColors[6]}\n points=\"372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903\"\n onMouseEnter={onHoverLetter ? () => onHoverLetter(6) : undefined}\n />\n </svg>\n )\n}\n\nexport const LogoIcon = ({ downscale = 2, pathPrefix }: any) => {\n return (\n <YStack\n tag=\"span\"\n className=\"unselectable\"\n alignSelf=\"center\"\n marginVertical={-10}\n pressStyle={{\n opacity: 0.7,\n }}\n >\n <img\n className=\"tamagui-icon\"\n width={450 / 8 / downscale}\n height={420 / 8 / downscale}\n src={`${pathPrefix || ''}/tamagui-icon.svg`}\n />\n </YStack>\n )\n}\n"],
5
- "mappings": "AAAA,SAAgB,kBAAkB;AAClC,SAAoB,QAAqB,cAAc;AAEhD,MAAM,QAAqB,CAAC,OAAO,UAAU,UAAU,SAAS,QAAQ,UAAU,MAAM;AAExF,MAAM,aAAa,MAAM,IAAI,CAAC,MAAM,SAAS,KAAK;AAUlD,MAAM,cAAc;AAAA,EACzB,CAAC,EAAE,WAAW,OAAO,WAAW,eAAe,eAAe,MAAM,GAAc,QAAQ;AACxF,WACE,CAAC,OACC,IAAI,OACJ,KAAK,KACL,WAAW,SACX,eAAe,SACf,MAAM,SACF;AAAA,MAEJ,CAAC,SACC,YAAY,YACZ,YAAY,aAAa,MAAM,YAAY,IAAI,MAC/C,OAAO,OACT;AAAA,OACC,aACC,CAAC,OAAO,IAAI,OAAO,cAAc,IAC/B,CAAC,UAAU,eAAe,eAAe,WAAW,aAAa,GAAG,OAAO,OAAO,EACpF,EAFC;AAAA,IAIL,EAlBC;AAAA,EAoBL;AACF;AAEO,MAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,EACZ;AACF,MAIM;AACJ,SACE,CAAC,IACC,OAAO,OAAO,IAAI,aAAa,aAC/B,QAAQ,MAAM,IAAI,aAAa,aAC/B,QAAQ;AAAA,IAER,CAAC,QACC,eAAe,aACf,MAAM,SAAS,WAAW,IAC1B,OAAO,sLACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI,QACzD;AAAA,IACA,CAAC,KACC,eAAe,aACf,MAAM,SAAS,WAAW,IAC1B,EAAE,kaACF,SAAS,UACT,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI,QACzD;AAAA,IACA,CAAC,QACC,eAAe,aACf,MAAM,SAAS,WAAW,IAC1B,OAAO,8QACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI,QACzD;AAAA,IACA,CAAC,KACC,MAAM,SAAS,WAAW,IAC1B,EAAE,uaACF,SAAS,UACT,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI,QACzD;AAAA,IACA,CAAC,QACC,eAAe,aACf,MAAM,SAAS,WAAW,IAC1B,OAAO,gWACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI,QACzD;AAAA,IACA,CAAC,QACC,eAAe,aACf,MAAM,SAAS,WAAW,IAC1B,OAAO,gQACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI,QACzD;AAAA,IACA,CAAC,QACC,eAAe,aACf,MAAM,SAAS,WAAW,IAC1B,OAAO,4FACP,cAAc,gBAAgB,MAAM,cAAc,CAAC,IAAI,QACzD;AAAA,EACF,EAhDC;AAkDL;AAEO,MAAM,WAAW,CAAC,EAAE,YAAY,GAAG,WAAW,MAAW;AAC9D,SACE,CAAC,OACC,IAAI,OACJ,UAAU,eACV,UAAU,SACV,gBAAgB,KAChB,YAAY;AAAA,IACV,SAAS;AAAA,EACX,GAEA,CAAC,IACC,UAAU,eACV,OAAO,MAAM,IAAI,WACjB,QAAQ,MAAM,IAAI,WAClB,KAAK,GAAG,cAAc,uBACxB,EACF,EAfC;AAiBL;",
6
- "names": []
4
+ "sourcesContent": ["import React, { forwardRef, useEffect, useState } from 'react'\nimport { Circle, ThemeName, XStack, XStackProps, YStack } from 'tamagui'\n\nexport const tints: ThemeName[] = ['orange', 'yellow', 'green', 'blue', 'purple', 'pink', 'red']\n\nexport const logoColors = tints.map((t) => `var(--${t}9)`)\n\ntype LogoProps = {\n onHoverLetter?: (i: number) => void\n showWords?: boolean\n color?: string\n downscale?: number\n pathPrefix?: string\n animated?: boolean\n} & XStackProps\n\nexport const TamaguiLogo = forwardRef<any, LogoProps>(\n (\n { showWords, color, downscale, onHoverLetter, pathPrefix, animated, ...props }: LogoProps,\n ref\n ) => {\n return (\n <XStack\n tag=\"span\"\n ref={ref}\n alignItems=\"center\"\n justifyContent=\"center\"\n space=\"$5\"\n {...props}\n >\n <LogoIcon\n pathPrefix={pathPrefix}\n downscale={(downscale ?? 1) * (showWords ? 2 : 1.5)}\n color={color}\n />\n {showWords && (\n <YStack tag=\"span\" marginBottom={-4}>\n <LogoWords\n animated={animated}\n onHoverLetter={onHoverLetter}\n downscale={downscale ?? 2}\n color={color}\n />\n </YStack>\n )}\n </XStack>\n )\n }\n)\n\nexport const LogoWords = ({\n color,\n downscale = 1,\n onHoverLetter,\n animated,\n}: {\n color?: string\n downscale?: number\n onHoverLetter?: any\n animated?: boolean\n}) => {\n const [index, setIndex] = useState(3)\n const [hovered, setHovered] = useState(false)\n const [mounted, setMounted] = useState<'start' | 'animate' | 'done'>('start')\n\n const updateHoveredLetter = (index: number) => {\n setIndex(index)\n setTimeout(() => {\n onHoverLetter?.(index)\n })\n }\n\n useEffect(() => {\n setTimeout(() => {\n setMounted('animate')\n })\n\n setTimeout(() => {\n setMounted('done')\n }, 2000)\n }, [])\n\n useEffect(() => {\n // temp hack\n return globalThis['onChangeTint']?.((index) => {\n setIndex(index)\n })\n }, [])\n\n const getColor = (i: number) => {\n const isActive = mounted !== 'start' && i === index\n if (mounted !== 'done' || hovered) {\n return isActive ? 'var(--color)' : logoColors[index]\n }\n if (isActive) {\n return 'var(--color)'\n }\n return logoColors[i]\n }\n\n return (\n <XStack\n onHoverIn={() => setHovered(true)}\n onHoverOut={() => setHovered(false)}\n paddingVertical=\"$2\"\n marginVertical=\"$-2\"\n position=\"relative\"\n >\n {animated && (\n <Circle\n animation=\"quick\"\n position=\"absolute\"\n top={0}\n left={0}\n y={mounted === 'start' ? -30 : -3}\n // the last i is less wide\n x={index * 18.5 + (18 / 2) * (index / logoColors.length) + 3 + (index === 6 ? -3 : 0)}\n size={4}\n backgroundColor={logoColors[index]}\n />\n )}\n <svg\n width={373 * (1 / downscale) * 0.333333334}\n height={41 * (1 / downscale) * 0.333333334}\n viewBox=\"0 0 373 41\"\n >\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(0)}\n points=\"24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(0)}\n />\n <path\n shapeRendering=\"crispEdges\"\n fill={color || getColor(1)}\n d=\"M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={() => updateHoveredLetter(1)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(2)}\n points=\"130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(2)}\n />\n <path\n fill={color || getColor(3)}\n d=\"M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z\"\n fillRule=\"nonzero\"\n onMouseEnter={() => updateHoveredLetter(3)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(4)}\n points=\"264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(4)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(5)}\n points=\"323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(5)}\n />\n <polygon\n shapeRendering=\"crispEdges\"\n fill={color || getColor(6)}\n points=\"372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903\"\n onMouseEnter={() => updateHoveredLetter(6)}\n />\n </svg>\n </XStack>\n )\n}\n\nexport const LogoIcon = ({ downscale = 2, pathPrefix }: any) => {\n return (\n <YStack\n tag=\"span\"\n className=\"unselectable\"\n alignSelf=\"center\"\n marginVertical={-10}\n pressStyle={{\n opacity: 0.7,\n }}\n >\n <img\n className=\"tamagui-icon\"\n width={450 / 8 / downscale}\n height={420 / 8 / downscale}\n src={`${pathPrefix || ''}/tamagui-icon.svg`}\n />\n </YStack>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["index"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/logo",
3
- "version": "1.0.1-beta.165",
3
+ "version": "1.0.1-beta.166",
4
4
  "sideEffects": false,
5
5
  "source": "src/index.ts",
6
6
  "types": "./types/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "react-dom": "*"
22
22
  },
23
23
  "devDependencies": {
24
- "@tamagui/build": "^1.0.1-beta.165",
24
+ "@tamagui/build": "^1.0.1-beta.166",
25
25
  "react": "*",
26
26
  "react-dom": "*"
27
27
  },
@@ -1,7 +1,7 @@
1
- import React, { forwardRef } from 'react'
2
- import { ThemeName, XStack, XStackProps, YStack } from 'tamagui'
1
+ import React, { forwardRef, useEffect, useState } from 'react'
2
+ import { Circle, ThemeName, XStack, XStackProps, YStack } from 'tamagui'
3
3
 
4
- export const tints: ThemeName[] = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'pink']
4
+ export const tints: ThemeName[] = ['orange', 'yellow', 'green', 'blue', 'purple', 'pink', 'red']
5
5
 
6
6
  export const logoColors = tints.map((t) => `var(--${t}9)`)
7
7
 
@@ -11,10 +11,14 @@ type LogoProps = {
11
11
  color?: string
12
12
  downscale?: number
13
13
  pathPrefix?: string
14
+ animated?: boolean
14
15
  } & XStackProps
15
16
 
16
17
  export const TamaguiLogo = forwardRef<any, LogoProps>(
17
- ({ showWords, color, downscale, onHoverLetter, pathPrefix, ...props }: LogoProps, ref) => {
18
+ (
19
+ { showWords, color, downscale, onHoverLetter, pathPrefix, animated, ...props }: LogoProps,
20
+ ref
21
+ ) => {
18
22
  return (
19
23
  <XStack
20
24
  tag="span"
@@ -31,7 +35,12 @@ export const TamaguiLogo = forwardRef<any, LogoProps>(
31
35
  />
32
36
  {showWords && (
33
37
  <YStack tag="span" marginBottom={-4}>
34
- <LogoWords onHoverLetter={onHoverLetter} downscale={downscale ?? 2} color={color} />
38
+ <LogoWords
39
+ animated={animated}
40
+ onHoverLetter={onHoverLetter}
41
+ downscale={downscale ?? 2}
42
+ color={color}
43
+ />
35
44
  </YStack>
36
45
  )}
37
46
  </XStack>
@@ -43,61 +52,123 @@ export const LogoWords = ({
43
52
  color,
44
53
  downscale = 1,
45
54
  onHoverLetter,
55
+ animated,
46
56
  }: {
47
57
  color?: string
48
58
  downscale?: number
49
59
  onHoverLetter?: any
60
+ animated?: boolean
50
61
  }) => {
62
+ const [index, setIndex] = useState(3)
63
+ const [hovered, setHovered] = useState(false)
64
+ const [mounted, setMounted] = useState<'start' | 'animate' | 'done'>('start')
65
+
66
+ const updateHoveredLetter = (index: number) => {
67
+ setIndex(index)
68
+ setTimeout(() => {
69
+ onHoverLetter?.(index)
70
+ })
71
+ }
72
+
73
+ useEffect(() => {
74
+ setTimeout(() => {
75
+ setMounted('animate')
76
+ })
77
+
78
+ setTimeout(() => {
79
+ setMounted('done')
80
+ }, 2000)
81
+ }, [])
82
+
83
+ useEffect(() => {
84
+ // temp hack
85
+ return globalThis['onChangeTint']?.((index) => {
86
+ setIndex(index)
87
+ })
88
+ }, [])
89
+
90
+ const getColor = (i: number) => {
91
+ const isActive = mounted !== 'start' && i === index
92
+ if (mounted !== 'done' || hovered) {
93
+ return isActive ? 'var(--color)' : logoColors[index]
94
+ }
95
+ if (isActive) {
96
+ return 'var(--color)'
97
+ }
98
+ return logoColors[i]
99
+ }
100
+
51
101
  return (
52
- <svg
53
- width={373 * (1 / downscale) * 0.333333334}
54
- height={41 * (1 / downscale) * 0.333333334}
55
- viewBox="0 0 373 41"
102
+ <XStack
103
+ onHoverIn={() => setHovered(true)}
104
+ onHoverOut={() => setHovered(false)}
105
+ paddingVertical="$2"
106
+ marginVertical="$-2"
107
+ position="relative"
56
108
  >
57
- <polygon
58
- shapeRendering="crispEdges"
59
- fill={color || logoColors[0]}
60
- points="24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903"
61
- onMouseEnter={onHoverLetter ? () => onHoverLetter(0) : undefined}
62
- />
63
- <path
64
- shapeRendering="crispEdges"
65
- fill={color || logoColors[1]}
66
- d="M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z"
67
- fillRule="nonzero"
68
- onMouseEnter={onHoverLetter ? () => onHoverLetter(1) : undefined}
69
- />
70
- <polygon
71
- shapeRendering="crispEdges"
72
- fill={color || logoColors[2]}
73
- points="130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903"
74
- onMouseEnter={onHoverLetter ? () => onHoverLetter(2) : undefined}
75
- />
76
- <path
77
- fill={color || logoColors[3]}
78
- d="M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z"
79
- fillRule="nonzero"
80
- onMouseEnter={onHoverLetter ? () => onHoverLetter(3) : undefined}
81
- />
82
- <polygon
83
- shapeRendering="crispEdges"
84
- fill={color || logoColors[4]}
85
- points="264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903"
86
- onMouseEnter={onHoverLetter ? () => onHoverLetter(4) : undefined}
87
- />
88
- <polygon
89
- shapeRendering="crispEdges"
90
- fill={color || logoColors[5]}
91
- points="323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903"
92
- onMouseEnter={onHoverLetter ? () => onHoverLetter(5) : undefined}
93
- />
94
- <polygon
95
- shapeRendering="crispEdges"
96
- fill={color || logoColors[6]}
97
- points="372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903"
98
- onMouseEnter={onHoverLetter ? () => onHoverLetter(6) : undefined}
99
- />
100
- </svg>
109
+ {animated && (
110
+ <Circle
111
+ animation="quick"
112
+ position="absolute"
113
+ top={0}
114
+ left={0}
115
+ y={mounted === 'start' ? -30 : -3}
116
+ // the last i is less wide
117
+ x={index * 18.5 + (18 / 2) * (index / logoColors.length) + 3 + (index === 6 ? -3 : 0)}
118
+ size={4}
119
+ backgroundColor={logoColors[index]}
120
+ />
121
+ )}
122
+ <svg
123
+ width={373 * (1 / downscale) * 0.333333334}
124
+ height={41 * (1 / downscale) * 0.333333334}
125
+ viewBox="0 0 373 41"
126
+ >
127
+ <polygon
128
+ shapeRendering="crispEdges"
129
+ fill={color || getColor(0)}
130
+ points="24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903"
131
+ onMouseEnter={() => updateHoveredLetter(0)}
132
+ />
133
+ <path
134
+ shapeRendering="crispEdges"
135
+ fill={color || getColor(1)}
136
+ d="M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z"
137
+ fillRule="nonzero"
138
+ onMouseEnter={() => updateHoveredLetter(1)}
139
+ />
140
+ <polygon
141
+ shapeRendering="crispEdges"
142
+ fill={color || getColor(2)}
143
+ points="130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903"
144
+ onMouseEnter={() => updateHoveredLetter(2)}
145
+ />
146
+ <path
147
+ fill={color || getColor(3)}
148
+ d="M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z"
149
+ fillRule="nonzero"
150
+ onMouseEnter={() => updateHoveredLetter(3)}
151
+ />
152
+ <polygon
153
+ shapeRendering="crispEdges"
154
+ fill={color || getColor(4)}
155
+ points="264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903"
156
+ onMouseEnter={() => updateHoveredLetter(4)}
157
+ />
158
+ <polygon
159
+ shapeRendering="crispEdges"
160
+ fill={color || getColor(5)}
161
+ points="323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903"
162
+ onMouseEnter={() => updateHoveredLetter(5)}
163
+ />
164
+ <polygon
165
+ shapeRendering="crispEdges"
166
+ fill={color || getColor(6)}
167
+ points="372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903"
168
+ onMouseEnter={() => updateHoveredLetter(6)}
169
+ />
170
+ </svg>
171
+ </XStack>
101
172
  )
102
173
  }
103
174
 
@@ -8,6 +8,7 @@ export declare const TamaguiLogo: React.ForwardRefExoticComponent<{
8
8
  color?: string | undefined;
9
9
  downscale?: number | undefined;
10
10
  pathPrefix?: string | undefined;
11
+ animated?: boolean | undefined;
11
12
  } & Omit<import("react-native").ViewProps, "display" | "children"> & import("tamagui").RNWViewProps & import("tamagui").TamaguiComponentPropsBase & import("@tamagui/core").WithThemeValues<import("@tamagui/core").StackStylePropsBase> & import("@tamagui/core").WithShorthands<import("@tamagui/core").WithThemeValues<import("@tamagui/core").StackStylePropsBase>> & Omit<{}, "elevation" | "fullscreen"> & {
12
13
  readonly fullscreen?: boolean | undefined;
13
14
  readonly elevation?: import("tamagui").SizeTokens | undefined;
@@ -18,10 +19,11 @@ export declare const TamaguiLogo: React.ForwardRefExoticComponent<{
18
19
  readonly fullscreen?: boolean | undefined;
19
20
  readonly elevation?: import("tamagui").SizeTokens | undefined;
20
21
  }>> & React.RefAttributes<any>>;
21
- export declare const LogoWords: ({ color, downscale, onHoverLetter, }: {
22
+ export declare const LogoWords: ({ color, downscale, onHoverLetter, animated, }: {
22
23
  color?: string | undefined;
23
24
  downscale?: number | undefined;
24
25
  onHoverLetter?: any;
26
+ animated?: boolean | undefined;
25
27
  }) => JSX.Element;
26
28
  export declare const LogoIcon: ({ downscale, pathPrefix }: any) => JSX.Element;
27
29
  //# sourceMappingURL=TamaguiLogo.d.ts.map