Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc6aafd3c6 |
@@ -1,43 +0,0 @@
|
||||
name: 'Preview Environment Dispatch'
|
||||
|
||||
on:
|
||||
# Using pull_request_target instead of pull_request to have access to secrets for external contributors
|
||||
# Security note: This is safe because we're only using the repository-dispatch action with limited scope
|
||||
# and not checking out or running any code from the external contributor's PR
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened, labeled]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
actions: write
|
||||
pull-requests: read
|
||||
|
||||
jobs:
|
||||
changed-files-check:
|
||||
uses: ./.github/workflows/changed-files.yaml
|
||||
with:
|
||||
files: |
|
||||
.github/workflows/preview-env-dispatch.yaml
|
||||
.github/workflows/preview-env-keepalive.yaml
|
||||
packages/twenty-docker/**
|
||||
docker-compose.yml
|
||||
packages/twenty-server/**
|
||||
packages/twenty-front/**
|
||||
|
||||
trigger-preview:
|
||||
needs: changed-files-check
|
||||
if: needs.changed-files-check.outputs.any_changed == 'true' || contains(github.event.pull_request.labels.*.name, 'preview')
|
||||
timeout-minutes: 5
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Trigger preview environment workflow
|
||||
uses: peter-evans/repository-dispatch@v2
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
repository: ${{ github.repository }}
|
||||
event-type: preview-environment
|
||||
client-payload: '{"pr_number": "${{ github.event.pull_request.number }}", "pr_head_sha": "${{ github.event.pull_request.head.sha }}", "repo_full_name": "${{ github.repository }}"}'
|
||||
@@ -1,141 +0,0 @@
|
||||
name: 'Preview Environment Keep Alive'
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [preview-environment]
|
||||
|
||||
jobs:
|
||||
preview-environment:
|
||||
timeout-minutes: 310
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout PR
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.client_payload.pr_head_sha }}
|
||||
|
||||
- name: Run compose setup
|
||||
run: |
|
||||
echo "Patching docker-compose.yml..."
|
||||
# change image to localbuild using yq
|
||||
yq eval 'del(.services.server.image)' -i packages/twenty-docker/docker-compose.yml
|
||||
yq eval '.services.server.build.context = "../../"' -i packages/twenty-docker/docker-compose.yml
|
||||
yq eval '.services.server.build.dockerfile = "./packages/twenty-docker/twenty/Dockerfile"' -i packages/twenty-docker/docker-compose.yml
|
||||
|
||||
yq eval 'del(.services.worker.image)' -i packages/twenty-docker/docker-compose.yml
|
||||
yq eval '.services.worker.build.context = "../../"' -i packages/twenty-docker/docker-compose.yml
|
||||
yq eval '.services.worker.build.dockerfile = "./packages/twenty-docker/twenty/Dockerfile"' -i packages/twenty-docker/docker-compose.yml
|
||||
|
||||
echo "Setting up .env file..."
|
||||
cp packages/twenty-docker/.env.example packages/twenty-docker/.env
|
||||
|
||||
echo "Generating secrets..."
|
||||
echo "# === Randomly generated secrets ===" >> packages/twenty-docker/.env
|
||||
echo "APP_SECRET=$(openssl rand -base64 32)" >> packages/twenty-docker/.env
|
||||
echo "PG_DATABASE_PASSWORD=$(openssl rand -hex 16)" >> packages/twenty-docker/.env
|
||||
# Remove line below when true becomes the default value (soon)
|
||||
echo "CONFIG_VARIABLES_IN_DB_ENABLED=true" >> packages/twenty-docker/.env
|
||||
|
||||
echo "Docker compose build..."
|
||||
cd packages/twenty-docker/
|
||||
docker compose build
|
||||
working-directory: ./
|
||||
|
||||
- name: Create Tunnel
|
||||
id: expose-tunnel
|
||||
uses: codetalkio/expose-tunnel@v1.5.0
|
||||
with:
|
||||
service: bore.pub
|
||||
port: 3000
|
||||
|
||||
- name: Start services with correct SERVER_URL
|
||||
run: |
|
||||
cd packages/twenty-docker/
|
||||
|
||||
# Update the SERVER_URL with the tunnel URL
|
||||
echo "Setting SERVER_URL to ${{ steps.expose-tunnel.outputs.tunnel-url }}"
|
||||
sed -i '/SERVER_URL=/d' .env
|
||||
echo "SERVER_URL=${{ steps.expose-tunnel.outputs.tunnel-url }}" >> .env
|
||||
|
||||
# Start the services
|
||||
echo "Docker compose up..."
|
||||
docker compose up -d || {
|
||||
echo "Docker compose failed to start"
|
||||
docker compose logs
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "Waiting for services to be ready..."
|
||||
count=0
|
||||
while [ ! $(docker inspect --format='{{.State.Health.Status}}' twenty-db-1) = "healthy" ] || [ ! $(docker inspect --format='{{.State.Health.Status}}' twenty-server-1) = "healthy" ]; do
|
||||
sleep 5
|
||||
count=$((count+1))
|
||||
if [ $count -gt 60 ]; then
|
||||
echo "Timeout waiting for services to be ready"
|
||||
docker compose logs
|
||||
exit 1
|
||||
fi
|
||||
echo "Still waiting for services... ($count/60)"
|
||||
done
|
||||
|
||||
echo "All services are up and running!"
|
||||
working-directory: ./
|
||||
|
||||
- name: Output tunnel URL to logs
|
||||
run: |
|
||||
echo "✅ Preview Environment Ready!"
|
||||
echo "🔗 Preview URL: ${{ steps.expose-tunnel.outputs.tunnel-url }}"
|
||||
echo "⏱️ This environment will be available for 5 hours"
|
||||
|
||||
- name: Post comment on PR
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
const COMMENT_MARKER = '<!-- PR_PREVIEW_ENV -->';
|
||||
const commentBody = `${COMMENT_MARKER}
|
||||
🚀 **Preview Environment Ready!**
|
||||
|
||||
Your preview environment is available at: ${{ steps.expose-tunnel.outputs.tunnel-url }}
|
||||
|
||||
This environment will automatically shut down when the PR is closed or after 5 hours.`;
|
||||
|
||||
// Get all comments
|
||||
const {data: comments} = await github.rest.issues.listComments({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: ${{ github.event.client_payload.pr_number }},
|
||||
});
|
||||
|
||||
// Find our comment
|
||||
const botComment = comments.find(comment => comment.body.includes(COMMENT_MARKER));
|
||||
|
||||
if (botComment) {
|
||||
// Update existing comment
|
||||
await github.rest.issues.updateComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
comment_id: botComment.id,
|
||||
body: commentBody
|
||||
});
|
||||
console.log('Updated existing comment');
|
||||
} else {
|
||||
// Create new comment
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: ${{ github.event.client_payload.pr_number }},
|
||||
body: commentBody
|
||||
});
|
||||
console.log('Created new comment');
|
||||
}
|
||||
|
||||
- name: Keep tunnel alive for 5 hours
|
||||
run: timeout 300m sleep 18000 # Stop on whichever we reach first (300m or 5hour sleep)
|
||||
|
||||
- name: Cleanup
|
||||
if: always()
|
||||
run: |
|
||||
cd packages/twenty-docker/
|
||||
docker compose down -v
|
||||
working-directory: ./
|
||||
@@ -1,28 +1,28 @@
|
||||
|
||||
<br />
|
||||
<br>
|
||||
<p align="center">
|
||||
<a href="https://www.twenty.com">
|
||||
<img src="./packages/twenty-website/public/images/core/logo.svg" width="100px" alt="Twenty logo" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<h2 align="center" >The #1 Open-Source CRM </h2>
|
||||
<h2 align="center" >The #1 Open-Source CRM </h3>
|
||||
|
||||
<p align="center"><a href="https://twenty.com">🌐 Website</a> · <a href="https://twenty.com/developers">📚 Documentation</a> · <a href="https://github.com/orgs/twentyhq/projects/1"><img src="./packages/twenty-website/public/images/readme/planner-icon.svg" width="12" height="12"/> Roadmap </a> · <a href="https://discord.gg/cx5n4Jzs57"><img src="./packages/twenty-website/public/images/readme/discord-icon.svg" width="12" height="12"/> Discord</a> · <a href="https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty"><img src="./packages/twenty-website/public/images/readme/figma-icon.png" width="12" height="12"/> Figma</a></p>
|
||||
<p align="center"><a href="https://twenty.com">🌐 Website</a> · <a href="https://twenty.com/developers">📚 Documentation</a> · <a href="https://github.com/orgs/twentyhq/projects/1"><img src="./packages/twenty-website/public/images/readme/planner-icon.svg" width="12" height="12"/> Roadmap </a> · <a href="https://discord.gg/cx5n4Jzs57"><img src="./packages/twenty-website/public/images/readme/discord-icon.svg" width="12" height="12"/> Discord</a> · <a href="https://www.figma.com/file/xt8O9mFeLl46C5InWwoMrN/Twenty"><img src="./packages/twenty-website/public/images/readme/figma-icon.png" width="12" height="12"/> Figma</a><p>
|
||||
<br />
|
||||
|
||||
|
||||
<p align="center">
|
||||
<a href="https://www.twenty.com">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/preview-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/preview-light.png" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/preview-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/preview-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/preview-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<br />
|
||||
<br>
|
||||
|
||||
# Installation
|
||||
|
||||
@@ -40,7 +40,7 @@ We built Twenty for three reasons:
|
||||
|
||||
**We believe in Open-source and community.** Hundreds of developers are already building Twenty together. Once we have plugin capabilities, a whole ecosystem will grow around it.
|
||||
|
||||
<br />
|
||||
<br>
|
||||
|
||||
# What You Can Do With Twenty
|
||||
We're currently developing Twenty's beta version.
|
||||
@@ -60,8 +60,8 @@ Below are a few features we have implemented to date:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/index-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/index-light.png" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/index-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/index-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/visualise-customer-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</p>
|
||||
@@ -70,9 +70,9 @@ Below are a few features we have implemented to date:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/kanban-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/kanban-light.png" />
|
||||
<img src="./packages/twenty-docs/static/img/follow-your-deals-light.png" alt="Opportunities view" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/kanban-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/kanban-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/follow-your-deals-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
@@ -80,9 +80,9 @@ Below are a few features we have implemented to date:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/emails-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/emails-light.png" />
|
||||
<img src="./packages/twenty-docs/static/img/emails-light.png" alt="Emails" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/emails-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/emails-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/rich-notes-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
@@ -90,9 +90,9 @@ Below are a few features we have implemented to date:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/data-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/data-light.png" />
|
||||
<img src="./packages/twenty-docs/static/img/data-light.png" alt="Data model" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/data-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/data-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/rich-notes-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
@@ -100,9 +100,9 @@ Below are a few features we have implemented to date:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/notes-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/notes-light.png" />
|
||||
<img src="./packages/twenty-docs/static/img/notes-light.png" alt="Rich notes" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/notes-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/notes-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/rich-notes-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
@@ -110,9 +110,9 @@ Below are a few features we have implemented to date:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/tasks-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/tasks-light.png" />
|
||||
<img src="./packages/twenty-docs/static/img/create-tasks-light.png" alt="Tasks" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/tasks-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/tasks-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/create-tasks-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
@@ -120,9 +120,9 @@ Below are a few features we have implemented to date:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/keyboard-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/keyboard-light.png" />
|
||||
<img src="./packages/twenty-docs/static/img/keyboard-dark.png" alt="Keyboard shortcuts" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/keyboard-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/keyboard-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/shortcut-navigation-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
@@ -130,33 +130,22 @@ Below are a few features we have implemented to date:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/api-dark.png" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/api-light.png" />
|
||||
<img src="./packages/twenty-docs/static/img/api-light.png" alt="API" />
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/api-dark.png">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/twentyhq/twenty/v0.12.0/packages/twenty-docs/static/img/api-light.png">
|
||||
<img src="./packages/twenty-docs/static/img/shortcut-navigation-light.png" alt="Companies view" />
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
|
||||
<br />
|
||||
<br>
|
||||
|
||||
# Stack
|
||||
- [TypeScript](https://www.typescriptlang.org/)
|
||||
- [Nx](https://nx.dev/)
|
||||
- [NestJS](https://nestjs.com/), with [BullMQ](https://bullmq.io/), [PostgreSQL](https://www.postgresql.org/), [Redis](https://redis.io/)
|
||||
- [React](https://reactjs.org/), with [Recoil](https://recoiljs.org/), [Emotion](https://emotion.sh/) and [Lingui](https://lingui.dev/)
|
||||
|
||||
|
||||
|
||||
# Thanks
|
||||
|
||||
<p align="center">
|
||||
<a href="https://www.chromatic.com/"><img src="./packages/twenty-website/public/images/readme/chromatic.png" height="30" alt="Chromatic" /></a>
|
||||
<a href="https://greptile.com"><img src="./packages/twenty-website/public/images/readme/greptile.png" height="30" alt="Greptile" /></a>
|
||||
<a href="https://sentry.io/"><img src="./packages/twenty-website/public/images/readme/sentry.png" height="30" alt="Sentry" /></a>
|
||||
<a href="https://crowdin.com/"><img src="./packages/twenty-website/public/images/readme/crowdin.png" height="30" alt="Crowdin" /></a>
|
||||
</p>
|
||||
|
||||
Thanks to these amazing services that we use and recommend for UI testing (Chromatic), code review (Greptile), catching bugs (Sentry) and translating (Crowdin).
|
||||
- [React](https://reactjs.org/), with [Recoil](https://recoiljs.org/) and [Emotion](https://emotion.sh/)
|
||||
- [Greptile](https://greptile.com) for code reviews.
|
||||
- [Lingui](https://lingui.dev/) and [Crowdin](https://twenty.crowdin.com/twenty) for translations.
|
||||
|
||||
|
||||
# Join the Community
|
||||
|
||||
@@ -77,7 +77,6 @@
|
||||
"bytes": "^3.1.2",
|
||||
"class-transformer": "^0.5.1",
|
||||
"clsx": "^2.1.1",
|
||||
"cron-parser": "^5.1.1",
|
||||
"cron-validate": "^1.4.5",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^7.1.2",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="images/icons/android/android-launchericon-48-48.png" />
|
||||
<link rel="icon" href="/icons/android/android-launchericon-48-48.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Twenty</title>
|
||||
</head>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="images/icons/android/android-launchericon-48-48.png" />
|
||||
<link rel="icon" href="/icons/android/android-launchericon-48-48.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Twenty</title>
|
||||
</head>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="images/icons/android/android-launchericon-48-48.png" />
|
||||
<link rel="icon" href="/icons/android/android-launchericon-48-48.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Twenty</title>
|
||||
<style>
|
||||
|
||||
@@ -24,8 +24,6 @@ export class WorkflowVisualizerPage {
|
||||
readonly useAsDraftButton: Locator;
|
||||
readonly overrideDraftButton: Locator;
|
||||
readonly discardDraftButton: Locator;
|
||||
readonly seeRunsButton: Locator;
|
||||
readonly goBackInCommandMenu: Locator;
|
||||
|
||||
#actionNames: Record<WorkflowActionType, string> = {
|
||||
'create-record': 'Create Record',
|
||||
@@ -33,7 +31,6 @@ export class WorkflowVisualizerPage {
|
||||
'delete-record': 'Delete Record',
|
||||
code: 'Code',
|
||||
'send-email': 'Send Email',
|
||||
form: 'Form',
|
||||
};
|
||||
|
||||
#createdActionNames: Record<WorkflowActionType, string> = {
|
||||
@@ -42,7 +39,6 @@ export class WorkflowVisualizerPage {
|
||||
'delete-record': 'Delete Record',
|
||||
code: 'Code - Serverless Function',
|
||||
'send-email': 'Send Email',
|
||||
form: 'Form',
|
||||
};
|
||||
|
||||
#triggerNames: Record<WorkflowTriggerType, string> = {
|
||||
@@ -88,10 +84,6 @@ export class WorkflowVisualizerPage {
|
||||
this.discardDraftButton = page.getByRole('button', {
|
||||
name: 'Discard Draft',
|
||||
});
|
||||
this.seeRunsButton = page.getByRole('link', { name: 'See runs' });
|
||||
this.goBackInCommandMenu = this.commandMenu
|
||||
.getByRole('button')
|
||||
.and(this.commandMenu.getByTestId('command-menu-go-back-button'));
|
||||
}
|
||||
|
||||
async createOneWorkflow() {
|
||||
@@ -258,64 +250,29 @@ export class WorkflowVisualizerPage {
|
||||
|
||||
await expect(this.#page.getByTestId('command-menu')).not.toBeVisible();
|
||||
}
|
||||
|
||||
async goToWorkflowsIndexPage() {
|
||||
await this.#page.goto('/objects/workflows');
|
||||
}
|
||||
|
||||
async setWorkflowsOpenInMode(mode: 'side-panel' | 'record-page') {
|
||||
const recordTableOptionsButton = this.#page.getByText('Options');
|
||||
await recordTableOptionsButton.click();
|
||||
|
||||
const layoutButton = this.#page.getByText('Layout');
|
||||
await layoutButton.click();
|
||||
|
||||
const openInButton = this.#page.getByText('Open in');
|
||||
await openInButton.click();
|
||||
|
||||
if (mode === 'side-panel') {
|
||||
const openInSidePanelOption = this.#page.getByRole('option', {
|
||||
name: 'Side Panel',
|
||||
});
|
||||
|
||||
await openInSidePanelOption.click();
|
||||
} else {
|
||||
const openInRecordPageOption = this.#page.getByRole('option', {
|
||||
name: 'Record Page',
|
||||
});
|
||||
|
||||
await openInRecordPageOption.click();
|
||||
}
|
||||
|
||||
// Close the dropdown
|
||||
await recordTableOptionsButton.click();
|
||||
}
|
||||
}
|
||||
|
||||
export const test = base.extend<{
|
||||
workflowVisualizer: WorkflowVisualizerPage;
|
||||
}>({
|
||||
workflowVisualizer: async ({ page }, use) => {
|
||||
const workflowVisualizer = new WorkflowVisualizerPage({
|
||||
page,
|
||||
workflowName: 'Test Workflow',
|
||||
});
|
||||
export const test = base.extend<{ workflowVisualizer: WorkflowVisualizerPage }>(
|
||||
{
|
||||
workflowVisualizer: async ({ page }, use) => {
|
||||
const workflowVisualizer = new WorkflowVisualizerPage({
|
||||
page,
|
||||
workflowName: 'Test Workflow',
|
||||
});
|
||||
|
||||
await workflowVisualizer.createOneWorkflow();
|
||||
await workflowVisualizer.goToWorkflowVisualizerPage();
|
||||
await workflowVisualizer.createOneWorkflow();
|
||||
await workflowVisualizer.goToWorkflowVisualizerPage();
|
||||
|
||||
await use(workflowVisualizer);
|
||||
await use(workflowVisualizer);
|
||||
|
||||
await deleteWorkflow({
|
||||
page,
|
||||
workflowId: workflowVisualizer.workflowId,
|
||||
});
|
||||
await destroyWorkflow({
|
||||
page,
|
||||
workflowId: workflowVisualizer.workflowId,
|
||||
});
|
||||
|
||||
await workflowVisualizer.goToWorkflowsIndexPage();
|
||||
await workflowVisualizer.setWorkflowsOpenInMode('record-page');
|
||||
await deleteWorkflow({
|
||||
page,
|
||||
workflowId: workflowVisualizer.workflowId,
|
||||
});
|
||||
await destroyWorkflow({
|
||||
page,
|
||||
workflowId: workflowVisualizer.workflowId,
|
||||
});
|
||||
},
|
||||
},
|
||||
});
|
||||
);
|
||||
|
||||
@@ -9,5 +9,4 @@ export type WorkflowActionType =
|
||||
| 'update-record'
|
||||
| 'delete-record'
|
||||
| 'code'
|
||||
| 'send-email'
|
||||
| 'form';
|
||||
| 'send-email';
|
||||
|
||||
@@ -56,98 +56,3 @@ test('The workflow run visualizer shows the executed draft version without the l
|
||||
'Create Record',
|
||||
);
|
||||
});
|
||||
|
||||
// FIXME: Documented bug. See https://github.com/twentyhq/core-team-issues/issues/921
|
||||
test.fail('Workflow Runs with a pending form step can be opened in the side panel and then in full screen', async ({
|
||||
workflowVisualizer,
|
||||
page,
|
||||
}) => {
|
||||
await workflowVisualizer.createInitialTrigger('manual');
|
||||
|
||||
const manualTriggerAvailabilitySelect = page.getByRole('button', {
|
||||
name: 'When record(s) are selected',
|
||||
});
|
||||
|
||||
await manualTriggerAvailabilitySelect.click();
|
||||
|
||||
const alwaysAvailableOption = page.getByText(
|
||||
'When no record(s) are selected',
|
||||
);
|
||||
|
||||
await alwaysAvailableOption.click();
|
||||
|
||||
await workflowVisualizer.closeSidePanel();
|
||||
|
||||
const { createdStepId: firstStepId } =
|
||||
await workflowVisualizer.createStep('form');
|
||||
|
||||
await workflowVisualizer.closeSidePanel();
|
||||
|
||||
const launchTestButton = page.getByLabel(workflowVisualizer.workflowName);
|
||||
|
||||
await launchTestButton.click();
|
||||
|
||||
const goToExecutionPageLink = page.getByRole('link', {
|
||||
name: 'View execution details',
|
||||
});
|
||||
|
||||
await expect(goToExecutionPageLink).toBeVisible();
|
||||
|
||||
await workflowVisualizer.seeRunsButton.click();
|
||||
|
||||
const workflowRunName = `#1 - ${workflowVisualizer.workflowName}`;
|
||||
|
||||
const workflowRunNameCell = page.getByRole('cell', { name: workflowRunName });
|
||||
|
||||
await expect(workflowRunNameCell).toBeVisible();
|
||||
|
||||
await workflowVisualizer.setWorkflowsOpenInMode('side-panel');
|
||||
|
||||
// 1. Exit the dropdown
|
||||
await workflowRunNameCell.click();
|
||||
// 2. Actually open the workflow run in the side panel
|
||||
await workflowRunNameCell.click();
|
||||
|
||||
await expect(workflowVisualizer.stepHeaderInCommandMenu).toContainText(
|
||||
'Form',
|
||||
);
|
||||
|
||||
await workflowVisualizer.goBackInCommandMenu.click();
|
||||
|
||||
const workflowRunNameInCommandMenu =
|
||||
workflowVisualizer.commandMenu.getByText(workflowRunName);
|
||||
|
||||
await expect(workflowRunNameInCommandMenu).toBeVisible();
|
||||
|
||||
await workflowVisualizer.triggerNode.click();
|
||||
|
||||
await expect(workflowVisualizer.stepHeaderInCommandMenu).toContainText(
|
||||
'Launch manually',
|
||||
);
|
||||
|
||||
await workflowVisualizer.goBackInCommandMenu.click();
|
||||
|
||||
const formStep = workflowVisualizer.getStepNode(firstStepId);
|
||||
|
||||
await formStep.click();
|
||||
|
||||
await workflowVisualizer.goBackInCommandMenu.click();
|
||||
|
||||
const openInFullScreenButton = workflowVisualizer.commandMenu.getByRole(
|
||||
'button',
|
||||
{ name: 'Open' },
|
||||
);
|
||||
|
||||
await openInFullScreenButton.click();
|
||||
|
||||
const workflowRunNameInShowPage = page
|
||||
.getByText(`#1 - ${workflowVisualizer.workflowName}`)
|
||||
.nth(1);
|
||||
|
||||
await expect(workflowRunNameInShowPage).toBeVisible();
|
||||
|
||||
// Expect the side panel to be opened by default on the form.
|
||||
await expect(workflowVisualizer.stepHeaderInCommandMenu).toContainText(
|
||||
'Form',
|
||||
);
|
||||
});
|
||||
|
||||
@@ -8,19 +8,25 @@ test('Use an old version as draft', async ({ workflowVisualizer, page }) => {
|
||||
|
||||
await workflowVisualizer.background.click();
|
||||
|
||||
await workflowVisualizer.activateWorkflowButton.click();
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Active'),
|
||||
|
||||
await expect(workflowVisualizer.workflowStatus).toHaveText('Active');
|
||||
workflowVisualizer.activateWorkflowButton.click(),
|
||||
]);
|
||||
|
||||
await workflowVisualizer.createStep('delete-record');
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Draft'),
|
||||
|
||||
await expect(workflowVisualizer.workflowStatus).toHaveText('Draft');
|
||||
workflowVisualizer.createStep('delete-record'),
|
||||
]);
|
||||
|
||||
await workflowVisualizer.closeSidePanel();
|
||||
await workflowVisualizer.background.click();
|
||||
|
||||
await workflowVisualizer.activateWorkflowButton.click();
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Active'),
|
||||
|
||||
await expect(workflowVisualizer.workflowStatus).toHaveText('Active');
|
||||
workflowVisualizer.activateWorkflowButton.click(),
|
||||
]);
|
||||
|
||||
await expect(workflowVisualizer.triggerNode).toContainText(
|
||||
'Record is Created',
|
||||
@@ -35,8 +41,6 @@ test('Use an old version as draft', async ({ workflowVisualizer, page }) => {
|
||||
const workflowsLink = page.getByRole('link', { name: 'Workflows' });
|
||||
await workflowsLink.click();
|
||||
|
||||
await workflowVisualizer.setWorkflowsOpenInMode('record-page');
|
||||
|
||||
const recordTableRowForWorkflow = page.getByRole('row', {
|
||||
name: workflowVisualizer.workflowName,
|
||||
});
|
||||
@@ -44,7 +48,7 @@ test('Use an old version as draft', async ({ workflowVisualizer, page }) => {
|
||||
const linkToWorkflow = recordTableRowForWorkflow.getByRole('link', {
|
||||
name: workflowVisualizer.workflowName,
|
||||
});
|
||||
await expect(linkToWorkflow).toBeVisible();
|
||||
expect(linkToWorkflow).toBeVisible();
|
||||
|
||||
const linkToFirstWorkflowVersion = recordTableRowForWorkflow.getByRole(
|
||||
'link',
|
||||
@@ -65,9 +69,11 @@ test('Use an old version as draft', async ({ workflowVisualizer, page }) => {
|
||||
]);
|
||||
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(1);
|
||||
|
||||
await workflowVisualizer.useAsDraftButton.click();
|
||||
await Promise.all([
|
||||
page.waitForURL(`/object/workflow/${workflowVisualizer.workflowId}`),
|
||||
|
||||
await page.waitForURL(`/object/workflow/${workflowVisualizer.workflowId}`);
|
||||
workflowVisualizer.useAsDraftButton.click(),
|
||||
]);
|
||||
|
||||
await expect(workflowVisualizer.workflowStatus).toHaveText('Draft');
|
||||
await expect(workflowVisualizer.useAsDraftButton).not.toBeVisible();
|
||||
@@ -90,13 +96,17 @@ test('Use an old version as draft while having a pending draft version', async (
|
||||
|
||||
await workflowVisualizer.background.click();
|
||||
|
||||
await workflowVisualizer.activateWorkflowButton.click();
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Active'),
|
||||
|
||||
await expect(workflowVisualizer.workflowStatus).toHaveText('Active');
|
||||
workflowVisualizer.activateWorkflowButton.click(),
|
||||
]);
|
||||
|
||||
await workflowVisualizer.createStep('delete-record');
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.workflowStatus).toHaveText('Draft'),
|
||||
|
||||
await expect(workflowVisualizer.workflowStatus).toHaveText('Draft');
|
||||
workflowVisualizer.createStep('delete-record'),
|
||||
]);
|
||||
|
||||
await expect(workflowVisualizer.triggerNode).toContainText(
|
||||
'Record is Created',
|
||||
@@ -120,7 +130,7 @@ test('Use an old version as draft while having a pending draft version', async (
|
||||
const linkToWorkflow = recordTableRowForWorkflow.getByRole('link', {
|
||||
name: workflowVisualizer.workflowName,
|
||||
});
|
||||
await expect(linkToWorkflow).toBeVisible();
|
||||
expect(linkToWorkflow).toBeVisible();
|
||||
|
||||
const linkToFirstWorkflowVersion = recordTableRowForWorkflow.getByRole(
|
||||
'link',
|
||||
@@ -141,13 +151,17 @@ test('Use an old version as draft while having a pending draft version', async (
|
||||
]);
|
||||
await expect(workflowVisualizer.getAllStepNodes()).toHaveCount(1);
|
||||
|
||||
await workflowVisualizer.useAsDraftButton.click();
|
||||
await Promise.all([
|
||||
expect(workflowVisualizer.overrideDraftButton).toBeVisible(),
|
||||
|
||||
await expect(workflowVisualizer.overrideDraftButton).toBeVisible();
|
||||
workflowVisualizer.useAsDraftButton.click(),
|
||||
]);
|
||||
|
||||
await workflowVisualizer.overrideDraftButton.click();
|
||||
await Promise.all([
|
||||
page.waitForURL(`/object/workflow/${workflowVisualizer.workflowId}`),
|
||||
|
||||
await page.waitForURL(`/object/workflow/${workflowVisualizer.workflowId}`);
|
||||
workflowVisualizer.overrideDraftButton.click(),
|
||||
]);
|
||||
|
||||
await expect(workflowVisualizer.workflowStatus).toHaveText('Draft');
|
||||
await expect(workflowVisualizer.useAsDraftButton).not.toBeVisible();
|
||||
|
||||
@@ -54,7 +54,8 @@ export const emailTheme = {
|
||||
},
|
||||
background: {
|
||||
colors: { highlight: grayScale.gray15 },
|
||||
button: grayScale.gray60,
|
||||
radialGradient: `radial-gradient(50% 62.62% at 50% 0%, #505050 0%, ${grayScale.gray60} 100%)`,
|
||||
radialGradientHover: `radial-gradient(76.32% 95.59% at 50% 0%, #505050 0%, ${grayScale.gray60} 100%)`,
|
||||
transparent: {
|
||||
medium: 'rgba(0, 0, 0, 0.08)',
|
||||
light: 'rgba(0, 0, 0, 0.04)',
|
||||
|
||||
@@ -3,16 +3,15 @@ import { Button } from '@react-email/components';
|
||||
import { emailTheme } from 'src/common-style';
|
||||
|
||||
const callToActionStyle = {
|
||||
display: 'inline-flex',
|
||||
display: 'flex',
|
||||
padding: '8px 32px',
|
||||
borderRadius: emailTheme.border.radius.md,
|
||||
border: `1px solid ${emailTheme.background.transparent.light}`,
|
||||
background: emailTheme.background.button,
|
||||
background: emailTheme.background.radialGradient,
|
||||
boxShadow: `0px 2px 4px 0px ${emailTheme.background.transparent.light}, 0px 0px 4px 0px ${emailTheme.background.transparent.medium}`,
|
||||
color: emailTheme.font.colors.inverted,
|
||||
fontSize: emailTheme.font.size.md,
|
||||
fontWeight: emailTheme.font.weight.bold,
|
||||
width: 'auto',
|
||||
};
|
||||
|
||||
type CallToActionProps = {
|
||||
|
||||
@@ -42,13 +42,10 @@ export const CleanSuspendedWorkspaceEmail = ({
|
||||
<br />
|
||||
<Trans id="If you wish to use Twenty again, you can create a new workspace." />
|
||||
</MainText>
|
||||
<br />
|
||||
<CallToAction
|
||||
href="https://app.twenty.com/"
|
||||
value={i18n._('Create a new workspace')}
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -21,6 +21,7 @@ export const PasswordResetLinkEmail = ({
|
||||
return (
|
||||
<BaseEmail locale={locale}>
|
||||
<Title value={i18n._('Reset your password 🗝')} />
|
||||
<CallToAction href={link} value={i18n._('Reset')} />
|
||||
<MainText>
|
||||
<Trans
|
||||
id="This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
@@ -29,10 +30,6 @@ export const PasswordResetLinkEmail = ({
|
||||
<br />
|
||||
<Link href={link} value={link} />
|
||||
</MainText>
|
||||
<br />
|
||||
<CallToAction href={link} value={i18n._('Reset')} />
|
||||
<br />
|
||||
<br />
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -41,10 +41,7 @@ export const PasswordUpdateNotifyEmail = ({
|
||||
<Trans id="If you did not initiate this change, please contact your workspace owner immediately." />
|
||||
<br />
|
||||
</MainText>
|
||||
<br />
|
||||
<CallToAction value={i18n._('Connect to Twenty')} href={link} />
|
||||
<br />
|
||||
<br />
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -18,13 +18,12 @@ export const SendEmailVerificationLinkEmail = ({
|
||||
return (
|
||||
<BaseEmail width={333} locale={locale}>
|
||||
<Title value={i18n._('Confirm your email address')} />
|
||||
<MainText>
|
||||
<Trans id="Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address." />
|
||||
</MainText>
|
||||
<br />
|
||||
<CallToAction href={link} value={i18n._('Verify Email')} />
|
||||
<br />
|
||||
<br />
|
||||
<MainText>
|
||||
<Trans id="Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address." />
|
||||
</MainText>
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -13,8 +13,6 @@ export const TestEmail = ({ locale }: TestEmailProps) => {
|
||||
return (
|
||||
<BaseEmail locale={locale}>
|
||||
<Title value={i18n._('Test email')} />
|
||||
<br />
|
||||
<br />
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -76,7 +76,6 @@ export const SendApprovedAccessDomainValidation = ({
|
||||
{workspace.name ? <HighlightedText value={workspace.name} /> : <></>}
|
||||
<CallToAction href={link} value={i18n._('Validate domain')} />
|
||||
</HighlightedContainer>
|
||||
<br />
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -54,13 +54,10 @@ export const WarnSuspendedWorkspaceEmail = ({
|
||||
values={{ remainingDays, dayOrDays }}
|
||||
/>
|
||||
</MainText>
|
||||
<br />
|
||||
<CallToAction
|
||||
href="https://app.twenty.com/settings/billing"
|
||||
value={i18n._('Update your subscription')}
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
</BaseEmail>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -90,13 +90,13 @@ msgstr "Confirm your email address"
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgstr "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr "Verify Email"
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgstr "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-update-notify.email.tsx
|
||||
@@ -125,13 +125,13 @@ msgstr "Reset your password 🗝"
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr "Reset"
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgstr "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/clean-suspended-workspace.email.tsx
|
||||
@@ -218,11 +218,6 @@ msgstr "Twenty.com, Public Benefit Corporation"
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr "San Francisco / Paris"
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -90,12 +90,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -125,12 +125,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -218,11 +218,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -95,12 +95,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click below to verify your email address."
|
||||
msgid "Verify Email"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
msgid "Verify Email"
|
||||
msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -130,12 +130,12 @@ msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/password-reset-link.email.tsx
|
||||
msgid "Reset"
|
||||
msgid "This link is only valid for the next {duration}. If the link does not work, you can use the login verification link directly:"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
@@ -223,11 +223,6 @@ msgstr ""
|
||||
msgid "San Francisco / Paris"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-explicit-id
|
||||
#: src/emails/send-email-verification-link.email.tsx
|
||||
#~ msgid "Thanks for registering for an account on Twenty! Before we get started, we just need to confirm that this is you. Click above to verify your email address."
|
||||
#~ msgstr ""
|
||||
|
||||
#. js-lingui-id: 4WPI3S
|
||||
#: src/emails/send-invite-link.email.tsx
|
||||
#~ msgid "Accept invite"
|
||||
|
||||
@@ -6,11 +6,10 @@
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/x-icon"
|
||||
href="images/icons/android/android-launchericon-48-48.png"
|
||||
href="/icons/android/android-launchericon-48-48.png"
|
||||
data-rh="true"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="images/icons/ios/192.png" />
|
||||
<link rel="manifest" href="manifest.json" />
|
||||
<link rel="apple-touch-icon" href="/icons/ios/192.png" />
|
||||
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta name="description" content="A modern open-source CRM" />
|
||||
|
||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1014 B After Width: | Height: | Size: 1014 B |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 432 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |