|
1 | 1 | <script setup lang="ts">
|
2 |
| -const main = { |
3 |
| - backgroundColor: '#f6f9fc', |
4 |
| - fontFamily: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif', |
| 2 | +interface Props { |
| 3 | + invitedByUsername?: string; |
| 4 | + teamName?: string; |
| 5 | + username?: string; |
| 6 | + invitedByEmail?: string; |
| 7 | + inviteLink?: string; |
| 8 | + inviteFromIp?: string; |
| 9 | + inviteFromLocation?: string; |
5 | 10 | }
|
6 | 11 |
|
7 |
| -const container = { |
8 |
| - backgroundColor: '#ffffff', |
9 |
| - margin: '0 auto', |
10 |
| - padding: '20px 0 48px', |
11 |
| - marginBottom: '64px', |
12 |
| -} |
13 |
| -
|
14 |
| -const box = { |
15 |
| - padding: '0 48px', |
16 |
| -} |
17 |
| -
|
18 |
| -const hr = { |
19 |
| - borderColor: '#e6ebf1', |
20 |
| - margin: '20px 0', |
21 |
| -} |
22 |
| -
|
23 |
| -const paragraph = { |
24 |
| - color: '#525f7f', |
| 12 | +const props = withDefaults(defineProps<Props>(), { |
| 13 | + teamName: "My project", |
| 14 | + username: "John Doe", |
| 15 | + invitedByEmail: "anpch@example.com", |
| 16 | + inviteLink: "https://vercel.com/teams/invite/foo", |
| 17 | + inviteFromIp: "172.0.0.1", |
| 18 | + inviteFromLocation: "San Francisco, CA", |
| 19 | +}); |
25 | 20 |
|
26 |
| - fontSize: '16px', |
27 |
| - lineHeight: '24px', |
28 |
| - textAlign: 'left', |
29 |
| -} |
30 |
| -
|
31 |
| -const anchor = { |
32 |
| - color: '#556cd6', |
33 |
| -} |
34 |
| -
|
35 |
| -const button = { |
36 |
| - backgroundColor: '#656ee8', |
37 |
| - borderRadius: '5px', |
38 |
| - color: '#fff', |
39 |
| - fontSize: '16px', |
40 |
| - fontWeight: 'bold', |
41 |
| - textDecoration: 'none', |
42 |
| - textAlign: 'center', |
43 |
| - display: 'block', |
44 |
| - width: '100%', |
45 |
| -} |
46 |
| -
|
47 |
| -const footer = { |
48 |
| - color: '#8898aa', |
49 |
| - fontSize: '12px', |
50 |
| - lineHeight: '16px', |
51 |
| -} |
52 |
| -
|
53 |
| -const code = `import { codeToThemedTokens } from 'shikiji' |
| 21 | +const previewText = `Join ${props.invitedByUsername} on Vercel`; |
54 | 22 |
|
| 23 | +const code = `import { codeToThemedTokens } from 'shiki' |
55 | 24 | const tokens = await codeToThemedTokens('<div class="foo">bar</div>', {
|
56 | 25 | lang: 'html',
|
57 | 26 | theme: 'min-dark'
|
58 | 27 | })
|
59 |
| -` |
| 28 | +`; |
60 | 29 | </script>
|
61 | 30 |
|
62 | 31 | <template>
|
63 |
| - <EHtml> |
64 |
| - <EHead /> |
65 |
| - <EPreview>You're now ready to make live transactions with Stripe!</EPreview> |
66 |
| - <EBody :style="main"> |
67 |
| - <EContainer :style="container"> |
68 |
| - <ESection :style="box"> |
69 |
| - <EImg |
70 |
| - src="/static/stripe-logo.png" |
71 |
| - width="49" |
72 |
| - height="21" |
73 |
| - alt="Stripe" |
74 |
| - /> |
75 |
| - <EHr :style="hr" /> |
76 |
| - <EText :style="paragraph"> |
77 |
| - Thanks for submitting your account information. You're now ready to make live transactions with Stripe! |
| 32 | + <ETailwind> |
| 33 | + <EHtml> |
| 34 | + <EHead> |
| 35 | + <EStyle> |
| 36 | + .pager {display: none;} @media only screen and (max-width: 480px) { |
| 37 | + .pager {display: block;} } |
| 38 | + </EStyle> |
| 39 | + </EHead> |
| 40 | + <EPreview>{{ previewText }}</EPreview> |
| 41 | + <EBody class="bg-primary my-auto mx-auto font-sans"> |
| 42 | + <EContainer |
| 43 | + class="border border-solid border-[#eaeaea] p-[20px] md:p-20 rounded my-[40px] mx-auto max-w-[465px]" |
| 44 | + > |
| 45 | + <ESection class="mt-[32px] pager"> |
| 46 | + <EImg |
| 47 | + src="/static/vercel-logo.png" |
| 48 | + width="40" |
| 49 | + height="37" |
| 50 | + alt="Vercel" |
| 51 | + class="my-0 mx-auto" |
| 52 | + /> |
| 53 | + </ESection> |
| 54 | + <EHeading |
| 55 | + class="text-black text-[24px] font-normal text-center p-0 my-[30px] mx-0" |
| 56 | + > |
| 57 | + Join <strong>{{ teamName }}</strong> on <strong>Vercel</strong> |
| 58 | + </EHeading> |
| 59 | + <EText class="text-black text-[14px] leading-[24px]"> |
| 60 | + Hello {{ username }}, |
78 | 61 | </EText>
|
79 |
| - <EText :style="paragraph"> |
80 |
| - You can view your payments and a variety of other information about your account right from your dashboard. |
| 62 | + <EText class="text-black text-[14px] leading-[24px]"> |
| 63 | + {{ $vueEmail.baseUrl }} |
81 | 64 | </EText>
|
82 |
| - <EButton |
83 |
| - px="10" |
84 |
| - py="10" |
85 |
| - :style="button" |
86 |
| - href="https://dashboard.stripe.com/login" |
87 |
| - > |
88 |
| - View your Stripe Dashboard |
89 |
| - </EButton> |
90 |
| - <EHr :style="hr" /> |
91 |
| - <EText :style="paragraph"> |
92 |
| - If you haven't finished your integration, you might find our |
| 65 | + <EText class="text-black text-[14px] leading-[24px]"> |
| 66 | + <strong>bukinoshita</strong> ( |
93 | 67 | <ELink
|
94 |
| - :style="anchor" |
95 |
| - href="https://stripe.com/docs" |
| 68 | + :href="`mailto:${invitedByEmail}`" |
| 69 | + class="text-blue-600 no-underline" |
96 | 70 | >
|
97 |
| - docs |
| 71 | + {{ invitedByEmail }} |
98 | 72 | </ELink>
|
99 |
| - handy. |
| 73 | + ) has invited you to the <strong>{{ teamName }}</strong> team on |
| 74 | + <strong>Vercel</strong>. |
100 | 75 | </EText>
|
101 | 76 | <ECodeBlock
|
102 |
| - style="padding: 20px;" |
| 77 | + class="p-5" |
103 | 78 | :code="code"
|
104 | 79 | lang="typescript"
|
105 | 80 | theme="min-dark"
|
106 | 81 | />
|
107 |
| - <EText :style="paragraph"> |
108 |
| - Once you're ready to start accepting payments, you'll just need to use your live |
109 |
| - <ELink |
110 |
| - :style="anchor" |
111 |
| - href="https://dashboard.stripe.com/login?redirect=%2Fapikeys" |
112 |
| - > |
113 |
| - API keys |
114 |
| - </ELink> |
115 |
| - instead of your test API keys. Your account can simultaneously be used for both test and live requests, so you can continue testing while accepting live payments. Check |
116 |
| - out our |
117 |
| - <ELink |
118 |
| - :style="anchor" |
119 |
| - href="https://stripe.com/docs/dashboard" |
120 |
| - > |
121 |
| - tutorial about account basics |
122 |
| - </ELink> |
123 |
| - . |
124 |
| - </EText> |
125 |
| - <EText :style="paragraph"> |
126 |
| - Finally, we've put together a |
127 |
| - <ELink |
128 |
| - :style="anchor" |
129 |
| - href="https://stripe.com/docs/checklist/website" |
| 82 | + <ESection> |
| 83 | + <ERow> |
| 84 | + <EColumn align="right"> |
| 85 | + <EImg |
| 86 | + class="rounded-full" |
| 87 | + src="/static/vercel-user.png" |
| 88 | + width="64" |
| 89 | + height="64" |
| 90 | + /> |
| 91 | + </EColumn> |
| 92 | + <EColumn align="center"> |
| 93 | + <EImg |
| 94 | + src="/static/vercel-arrow.png" |
| 95 | + width="12" |
| 96 | + height="9" |
| 97 | + alt="invited you to" |
| 98 | + /> |
| 99 | + </EColumn> |
| 100 | + <EColumn align="left"> |
| 101 | + <EImg |
| 102 | + class="rounded-full" |
| 103 | + src="/static/vercel-team.png" |
| 104 | + width="64" |
| 105 | + height="64" |
| 106 | + /> |
| 107 | + </EColumn> |
| 108 | + </ERow> |
| 109 | + </ESection> |
| 110 | + <ESection class="text-center mt-[32px] mb-[32px]"> |
| 111 | + <EButton |
| 112 | + px="20" |
| 113 | + py="12" |
| 114 | + class="bg-[#000000] rounded text-white text-[12px] font-semibold no-underline text-center" |
| 115 | + :href="inviteLink" |
130 | 116 | >
|
131 |
| - quick checklist |
132 |
| - </ELink> |
133 |
| - to ensure your website conforms to card network standards. |
134 |
| - </EText> |
135 |
| - <EText :style="paragraph"> |
136 |
| - We'll be here to help you with any step along the way. You can find answers to most questions and get in touch with us on our |
| 117 | + Join the team |
| 118 | + </EButton> |
| 119 | + </ESection> |
| 120 | + <EText class="text-black text-[14px] leading-[24px]"> |
| 121 | + or copy and paste this URL into your browser: |
137 | 122 | <ELink
|
138 |
| - :style="anchor" |
139 |
| - href="https://support.stripe.com/" |
| 123 | + :href="inviteLink" |
| 124 | + class="text-blue-600 no-underline" |
140 | 125 | >
|
141 |
| - support site |
| 126 | + {{ inviteLink }} |
142 | 127 | </ELink>
|
143 |
| - . |
144 |
| - </EText> |
145 |
| - <EText :style="paragraph"> |
146 |
| - — The Stripe team |
147 | 128 | </EText>
|
148 |
| - <EHr :style="hr" /> |
149 |
| - <EText :style="footer"> |
150 |
| - Stripe, 354 Oyster Point Blvd, South San Francisco, CA 94080 |
| 129 | + <EHr |
| 130 | + class="border border-solid border-[#eaeaea] my-[26px] mx-0 w-full" |
| 131 | + /> |
| 132 | + <EText class="text-[#666666] text-[12px] leading-[24px]"> |
| 133 | + This invitation was intended for |
| 134 | + <span class="text-black">{{ username }} </span>.This invite was sent |
| 135 | + from <span class="text-black">{{ inviteFromIp }}</span> located in |
| 136 | + <span class="text-black">{{ inviteFromLocation }}</span>. If you were not expecting this invitation, you can ignore this |
| 137 | + email. If you are concerned about your account's safety, please |
| 138 | + reply to this email to get in touch with us. |
151 | 139 | </EText>
|
152 |
| - </ESection> |
153 |
| - </EContainer> |
154 |
| - </EBody> |
155 |
| - </EHtml> |
| 140 | + </EContainer> |
| 141 | + </EBody> |
| 142 | + </EHtml> |
| 143 | + </ETailwind> |
156 | 144 | </template>
|
0 commit comments