Compare commits

...
Author SHA1 Message Date
Sonarly Claude Code 02491571d7 Stale v1.17.0 frontend cache queries removed 'builtHandlerPath' GraphQL field
https://sonarly.com/issue/4132?type=bug

A breaking GraphQL schema change in PR #17861 removed `builtHandlerPath` from the `LogicFunction` type without backward compatibility, causing stale-cached v1.17.0 frontend bundles to fail against v1.18.x servers.

Fix: ## Root Cause Classification: Category D — Schema Mismatch (Breaking API Change)

The fix re-adds `builtHandlerPath` to `LogicFunctionDTO` as a **deprecated, nullable optional field** to restore backward compatibility with v1.17.0 clients that still query it.

### What was changed

```typescript file=packages/twenty-server/src/engine/metadata-modules/logic-function/dtos/logic-function.dto.ts lines=67-70
  @IsString()
  @IsOptional()
  @Field({ nullable: true, deprecationReason: 'Use sourceHandlerPath instead' })
  builtHandlerPath?: string;
```

This block is inserted between `sourceHandlerPath` and `handlerName`.

### Why this fixes the problem

- **v1.17.0 clients** include `builtHandlerPath` in their `LogicFunctionFields` fragment. Before the fix, the v1.18.x server rejected those queries with a GraphQL validation error (`Cannot query field "builtHandlerPath"`), breaking authentication and all downstream flows for users with stale cached bundles.
- After the fix, the field exists in the schema again (marked deprecated and nullable), so the server accepts the query and returns `null` for `builtHandlerPath`. The v1.17.0 client code ignores a `null` value gracefully.
- The field was **never removed from the database entity** (`logic-function.entity.ts` line 44 still has `builtHandlerPath: string`), so the resolver can also return the actual stored value when present — no migration is needed.
- The `deprecationReason` signals to current clients and tooling that the field should no longer be used, paving the way for a clean removal in a future major version after all clients have updated.
2026-03-02 17:33:31 +00:00
nitinandGitHub 1eb284c87f Fix command menu text/number inputs to commit on blur and cancel cleanly on Escape (#18283)
closes https://github.com/twentyhq/twenty/issues/18264




https://github.com/user-attachments/assets/7b576a00-78bc-46a2-9528-d8b3bcbdd530




https://github.com/user-attachments/assets/4102468e-e85f-46a0-8b23-e7abd77bfc95



### PR description -
This fixes flaky persistence in command menu text and number inputs.

- moved commit logic to onBlur (single commit path)
- Enter now blurs, so it uses the same commit path
- Escape now cancels edit (restores draft + exits) without persisting
- removed dependency on input click-outside commit timing

### Outcome -

- clicking anywhere outside the input now reliably persists edits
- Escape consistently discards edits
2026-03-02 15:30:51 +00:00
Charles BochetandGitHub c4140f85df chore(twenty-front): migrate small modules from Emotion to Linaria (PR 1/10) (#18314)
## Emotion → Linaria migration — PR 1 of 10

First batch of the `twenty-front` migration from Emotion (runtime
CSS-in-JS) to Linaria (zero-runtime, build-time extraction via
wyw-in-js). Covers **100 files** across 10 small standalone modules —
chosen as the lowest-risk starting point.

### Modules migrated

spreadsheet-import (28) · navigation-menu-item (17) · views (14) ·
billing (10) · blocknote-editor (7) · advanced-text-editor (7) ·
favorites (7) · navigation (4) · information-banner (3) ·
sign-in-background-mock (3)

### Migration pattern

Every file follows the same mechanical transformation:

| Emotion | Linaria |
|---|---|
| `import styled from '@emotion/styled'` | `import { styled } from
'@linaria/react'` |
| `${({ theme }) => theme.font.color.primary}` |
`${themeCssVariables.font.color.primary}` |
| `${({ theme }) => theme.spacing(4)}` |
`${themeCssVariables.spacing[4]}` |
| `const theme = useTheme()` | `const { theme } =
useContext(ThemeContext)` |
| `import { type Theme } from '@emotion/react'` | `import { type
ThemeType } from 'twenty-ui/theme'` |

`themeCssVariables` is a build-time object where every leaf is a
`var(--t-xxx)` CSS custom property reference, evaluated statically by
wyw-in-js. Runtime theme access (icon sizes, colors passed as props)
uses `useContext(ThemeContext)`.

### Gotchas encountered & fixed

- **Interpolation return types** — wyw-in-js requires `string | number`,
never `false`/`undefined`. Replaced `condition && 'css'` with `condition
? 'css' : ''`.
- **`css` tag inside `styled` templates** — Linaria `css` returns a
class name, not CSS text. Replaced with plain template strings.
- **`styled(Component)` needs `className`** — added `className` prop to
`NavigationDrawerSection`, `DropdownMenuItemsContainer`, and `Heading`.
- **`shouldForwardProp` not supported** — Linaria filters invalid DOM
props automatically for HTML elements. For custom components, used
wrapper divs where needed.
- **`FormFieldPlaceholderStyles`** — converted from Emotion `css`
function to a static string using `themeCssVariables`.
2026-03-02 16:33:40 +01:00
Charles BochetandGitHub 9c4b0f526c Refactor chip component hierarchy: AvatarChip → AvatarOrIcon (#18313)
## Summary

Cleans up the chip component hierarchy in `twenty-ui`:

- **Fix twenty-ui Storybook** — The `wyw-in-js` Vite plugin crashed on
`/@react-refresh` virtual module. Fixed by setting `enforce: 'pre'` so
it runs before the React refresh plugin injects virtual imports.
- **Rename `AvatarChip` → `AvatarOrIcon`** — The old name was
misleading. This component is not a chip — it's a polymorphic renderer
that displays either an `Avatar` (image/initials) or an `Icon` (plain or
with colored background). It's typically slotted into `Chip`/`LinkChip`
as `leftComponent`.
- **Move `rightComponentDivider` to `Chip`/`LinkChip`** — The vertical
separator between chip content and a right action (e.g. a close button)
is a chip layout concern, not an avatar concern. Added
`rightComponentDivider` boolean prop to `Chip` and `LinkChip`.
- **Remove `MultipleAvatarChip`** — Zero consumers in the codebase. The
command menu implements its own overlapping avatar layout.
- **Migrate raw icon usages** — `CalendarEventDetails` and `FileIcon`
(small size) now use `AvatarOrIcon` for consistent Chip icon rendering.
- **Enhance stories** — Full `CatalogDecorator` coverage for `Chip` and
`LinkChip` showing all variants, sizes, accents, and states.

## Component hierarchy

```
AvatarOrIcon (twenty-ui)
  ├── No Icon → renders Avatar (image or initials)
  ├── Icon + background → renders icon in colored square
  └── Icon only → renders plain icon
  Used as leftComponent/rightComponent in Chip or standalone

Chip (twenty-ui)
  ├── leftComponent (typically AvatarOrIcon)
  ├── label (with overflow tooltip)
  ├── rightComponentDivider (optional vertical separator)
  └── rightComponent (e.g. close icon via AvatarOrIcon)

LinkChip (twenty-ui)
  └── Wraps Chip inside a react-router <Link>

RecordChip (twenty-front)
  └── Composes Chip/LinkChip + AvatarOrIcon with record data
```

## `Chip` API additions

| Prop | Type | Description |
|------|------|-------------|
| `rightComponentDivider` | `boolean` | Renders a vertical separator
before `rightComponent` |

## Stories

<img width="1032" height="576" alt="image"
src="https://github.com/user-attachments/assets/fe7c7666-9b16-4545-b87e-1b53e22d462d"
/>
2026-03-02 15:48:49 +01:00
WeikoandGitHub 37bcb35391 Migrate pagelayout position frontend (#18229)
## Context
Part 1 of migrating gridPosition in favor of typed position
FE should now always send both values to the BE and use both.

Next steps: 
- Update the backend to enforce and validate the new position field + DB
migrations gridPositon -> position (type: GRID)
- Cleanup frontend usage
- Cleanup backend
2026-03-02 14:42:30 +01:00
Thomas TrompetteandGitHub 78a0197643 Prevent deletion of il-else branches (#18294)
If-else branches cannot be recreated once deleted. Only else-if branches
can. On if-else branches removal, we now remplace the node by an empty
node instead of only deleting

Also fixing nested if-else.
2026-03-02 13:52:32 +01:00
ff3326a53b i18n - translations (#18323)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-02 13:46:36 +01:00
martmullandGitHub 5e92fb4fc6 Do not console.log while consoleListener (#18322)
It can occur infinite loops

see
https://twenty-v7.sentry.io/issues/7269592888/?environment=prod&environment=prod-eu&project=4507072499810304&query=is%3Aunresolved%20!issue.type%3A%5Bperformance_consecutive_db_queries%2Cperformance_consecutive_http%2Cperformance_file_io_main_thread%2Cperformance_db_main_thread%2Cperformance_n_plus_one_db_queries%2Cperformance_n_plus_one_api_calls%2Cperformance_p95_endpoint_regression%2Cperformance_slow_db_query%2Cperformance_render_blocking_asset_span%2Cperformance_uncompressed_assets%2Cperformance_http_overhead%2Cperformance_large_http_payload%5D%20timesSeen%3A%3E10&referrer=issue-stream&sort=freq
2026-03-02 12:04:12 +00:00
Félix MalfaitandGitHub 1a8be234de OAuth security hardening: RFC compliance, PKCE binding, rate limiting (#18305)
## Summary

Follow-up to #18267. Hardens the OAuth implementation with security
fixes identified during audit:

**P0 — Critical:**
- Bind authorization codes to `client_id` in context to prevent auth
code injection (RFC 6749 §4.1.3)
- Store PKCE `code_challenge` directly in auth code context instead of a
separate `CodeChallenge` token — cryptographically binds the challenge
to its code
- Enforce `code_verifier` when `code_challenge` was used during
authorization
- Hash authorization codes (SHA-256) before storage to prevent exposure
if DB is compromised
- Add `Cache-Control: no-store` + `Pragma: no-cache` headers on token
responses (RFC 6749 §5.1)
- Add rate limiting on `/oauth/token` endpoint (20 req/min per client
via existing `ThrottlerService`)

**P1 — High:**
- Return HTTP 401 for `invalid_client` errors instead of 400 (RFC 6749
§5.2)
- Verify refresh tokens belong to the presenting client (cross-client
token theft prevention)
- Limit fields exposed by public `findApplicationRegistrationByClientId`
query to only what the frontend needs (`id`, `name`, `logoUrl`,
`websiteUrl`, `oAuthScopes`)
- Require `API_KEYS_AND_WEBHOOKS` permission for
`createApplicationRegistration` mutation

**P2/P3 — Medium/Low:**
- Add error handling and loading states to frontend Authorize page
- Rename redirect URL param from `authorizationCode` to `code` (RFC
standard)
- Add unit tests for `validateRedirectUri` utility (8 test cases)

## Test plan

- [ ] Existing OAuth integration tests updated for all changes (hashed
codes, context-based PKCE, client binding, 401 status codes, cache
headers)
- [ ] New test: auth code rejected when presented by a different client
- [ ] New test: refresh token rejected when presented by a different
client
- [ ] New test: `code_verifier` required when PKCE was used in
authorization
- [ ] New test: `Cache-Control: no-store` header present on responses
- [ ] New unit tests for `validateRedirectUri` (HTTPS, localhost,
fragments, invalid URIs)
- [ ] Verify frontend authorize page shows errors gracefully


Made with [Cursor](https://cursor.com)
2026-03-02 12:21:26 +01:00
martmullGitHubcubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
d021f7e369 Fix self host application (#18292)
- Fixes self host application
- add new telemetry information
- add serverId to identify a server instance
- remove .twenty from git tracking
- tree-shake "twenty-sdk" usage in built logic functions and front
components
- fix "twenty-sdk" version usage
- fix twenty-zapier cli

---------

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-03-02 12:06:05 +01:00
neo773andGitHub 1b67ba6a75 Draft emails fix onblur on text input and callout banner component overflow (#18310)
Before

<img width="396" height="759" alt="SCR-20260301-daft"
src="https://github.com/user-attachments/assets/c3fb3a19-3456-424d-9fd2-dd13ed0d2ad5"
/>

After

<img width="391" height="752" alt="SCR-20260301-daio"
src="https://github.com/user-attachments/assets/80a64991-6e69-4ddf-b968-bdc788af02cd"
/>
2026-03-02 12:04:30 +01:00
5afc46ebd3 i18n - translations (#18321)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-03-02 12:03:13 +01:00
a06abb1d60 Fields widget rename group (#18169)
## Rename


https://github.com/user-attachments/assets/b151683a-d1ae-447f-9d9f-95a14b50608b

## Delete



https://github.com/user-attachments/assets/8da73a33-1c57-4771-b712-527b8080117d

---------

Co-authored-by: Weiko <corentin@twenty.com>
2026-03-02 10:32:31 +00:00
Félix Malfait 2a5b2746c9 Fix preview-env-dispatch: repository_dispatch requires contents:write
The `repository_dispatch` API endpoint requires `contents: write`
permission on the GITHUB_TOKEN, not `actions: write`. Our security
hardening PR inadvertently changed this to `contents: read`, breaking
the self-dispatch to the keepalive workflow.

Made-with: Cursor
2026-03-02 11:25:14 +01:00
393 changed files with 14389 additions and 2070 deletions
+74 -6
View File
@@ -1,12 +1,10 @@
name: CI Zapier
on:
push:
branches:
- main
pull_request:
merge_group:
permissions:
contents: read
@@ -14,6 +12,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
env:
SERVER_SETUP_CACHE_KEY: server-setup
jobs:
changed-files-check:
uses: ./.github/workflows/changed-files.yaml
@@ -23,14 +24,81 @@ jobs:
packages/twenty-server/**
!packages/twenty-zapier/package.json
!packages/twenty-zapier/CHANGELOG.md
zapier-test:
server-setup:
needs: changed-files-check
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: depot-ubuntu-24.04-8
services:
postgres:
image: twentycrm/twenty-postgres-spilo
env:
PGUSER_SUPERUSER: postgres
PGPASSWORD_SUPERUSER: postgres
ALLOW_NOSSL: 'true'
SPILO_PROVIDER: 'local'
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis
ports:
- 6379:6379
steps:
- name: Fetch custom Github Actions and base branch history
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Build twenty-shared
run: npx nx build twenty-shared
- name: Server / Write .env
run: npx nx reset:env:e2e-testing-server twenty-server
- name: Server / Build
run: npx nx build twenty-server
- name: Create and setup database
run: |
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "default";'
PGPASSWORD=postgres psql -h localhost -p 5432 -U postgres -d postgres -c 'CREATE DATABASE "test";'
npx nx run twenty-server:database:reset
- name: Server / Start
run: |
npx nx start twenty-server &
echo "Waiting for server to be ready..."
timeout 60 bash -c 'until curl -s http://localhost:3000/health; do sleep 2; done'
- name: Start worker
run: |
npx nx run twenty-server:worker &
echo "Worker started"
- name: Zapier / Build
run: npx nx build twenty-zapier
- name: Zapier / Run Tests
uses: ./.github/actions/nx-affected
with:
tag: scope:zapier
tasks: test
zapier-test:
needs: server-setup
if: needs.changed-files-check.outputs.any_changed == 'true'
timeout-minutes: 30
runs-on: depot-ubuntu-24.04
strategy:
matrix:
task: [lint, typecheck, test, validate]
task: [lint, typecheck, validate]
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
+1 -2
View File
@@ -1,8 +1,7 @@
name: 'Preview Environment Dispatch'
permissions:
contents: read
actions: write
contents: write
on:
pull_request_target:
+381
View File
@@ -0,0 +1,381 @@
# Emotion → Linaria Migration Plan: twenty-front
## Overview
Migrate all Emotion (`@emotion/styled`, `@emotion/react`) usages in
`packages/twenty-front/src` to Linaria (`@linaria/react`, `@linaria/core`),
following the same patterns already established in the `twenty-ui` package.
Linaria is a **zero-runtime** CSS-in-JS library. Styles are extracted at
build time by [wyw-in-js](https://wyw-in-js.dev/) (the Vite plugin is
`@wyw-in-js/vite`, already configured in `twenty-front/vite.config.ts`).
This means every expression inside a `styled` or `css` template literal
must be statically evaluable at build time — no runtime theme objects,
no closures over component state, no side-effects.
**Total files to migrate: ~998**
| Category | Files | Description |
|---|---|---|
| styled-only | 694 | Import `@emotion/styled` but not `useTheme` |
| styled + useTheme | 224 | Import both `@emotion/styled` and `useTheme` |
| useTheme-only | 79 | Import `useTheme` but not `@emotion/styled` |
| css / Global only | 1 | Import `css` or `Global` from `@emotion/react` only |
## Theme Architecture
Two build-time utilities produce the theme system:
- **`buildThemeReferencingRootCssVariables`** — walks the theme object and
builds a nested mirror where every leaf is a `var(--t-xxx)` string
(evaluated at build time by wyw-in-js)
- **`prepareThemeForRootCssVariableInjection`** — walks the runtime theme
and collects flat `[--css-variable-name, value]` pairs, injected onto
`document.documentElement` by `ThemeCssVariableInjectorEffect`
`themeCssVariables` is the build-time object; every leaf resolves to a CSS
`var()` reference. It is safe to use inside `styled` and `css` templates
because wyw-in-js can evaluate it statically.
## Migration Patterns
### 1. `styled` import
```diff
- import styled from '@emotion/styled';
+ import { styled } from '@linaria/react';
```
### 2. Theme access in styled components
Replace Emotion's `({ theme }) =>` prop-function pattern with static
`themeCssVariables` references:
```diff
+ import { themeCssVariables } from 'twenty-ui/theme';
const StyledTitle = styled.span`
- color: ${({ theme }) => theme.font.color.primary};
- font-size: ${({ theme }) => theme.font.size.lg};
+ color: ${themeCssVariables.font.color.primary};
+ font-size: ${themeCssVariables.font.size.lg};
`;
```
### 3. Spacing
`theme.spacing(N)` is a function; in Linaria it becomes an indexed lookup:
```diff
- margin-top: ${({ theme }) => theme.spacing(3)};
+ margin-top: ${themeCssVariables.spacing[3]};
```
For multi-arg spacing like `theme.spacing(2, 4)``"8px 16px"`:
```diff
- padding: ${({ theme }) => theme.spacing(2, 4)};
+ padding: ${themeCssVariables.spacing[2]} ${themeCssVariables.spacing[4]};
```
The spacing scale covers integers 032 plus `0.5` and `1.5`. Any other
fractional values (`0.25`, `0.75`, `1.25`, `2.5`, `3.5`) must be replaced
with literal pixel values (e.g. `theme.spacing(2.5)``10px`).
### 4. `useTheme` → `useContext(ThemeContext)`
For runtime theme access (icon sizes, animation durations, conditional logic
outside of styled components):
```diff
- import { useTheme } from '@emotion/react';
+ import { useContext } from 'react';
+ import { ThemeContext } from 'twenty-ui/theme';
const MyComponent = () => {
- const theme = useTheme();
+ const { theme } = useContext(ThemeContext);
return <Icon size={theme.icon.size.sm} />;
};
```
### 5. `css` template literal
Linaria's `css` (from `@linaria/core`) returns a **class name string**, not
a serialized style object like Emotion's `css`. This has two consequences:
**Standalone usage** — apply via `className`, not the `css` prop:
```diff
- import { css } from '@emotion/react';
+ import { css } from '@linaria/core';
const myClass = css`
text-decoration: none;
`;
- <Link css={myClass} />
+ <Link className={myClass} />
```
**Inside `styled` templates** — do NOT nest `css` tags. Linaria's `css`
returns a class name, not raw CSS text, so interpolating it inside `styled`
produces broken output. Use plain strings instead:
```diff
// WRONG — css`` returns a class name, not CSS text
${({ handle }) =>
handle === 'left'
- ? css`left: ${themeCssVariables.spacing[1]};`
- : css`right: ${themeCssVariables.spacing[1]};`}
+ ? `left: ${themeCssVariables.spacing[1]};`
+ : `right: ${themeCssVariables.spacing[1]};`}
```
### 6. Interpolation return types
wyw-in-js requires prop interpolation functions to return `string | number`.
They must **never** return `false`, `undefined`, or `null`. Replace
short-circuit `&&` with ternary expressions:
```diff
// WRONG — returns false when condition is false
- ${({ isActive }) => isActive && `background: ${themeCssVariables.color.blue};`}
// CORRECT
+ ${({ isActive }) => isActive ? `background: ${themeCssVariables.color.blue};` : ''}
```
### 7. Block interpolations (multi-declaration returns)
Linaria wraps each interpolation result in a single CSS custom property
(`var(--xxx)`). An interpolation that returns **multiple CSS declarations**
produces invalid CSS. Split into one interpolation per property:
```diff
// WRONG — single interpolation returning multiple declarations
- ${({ divider, theme }) => {
- const border = `1px solid ${theme.border.color.light}`;
- return divider === 'left' ? `border-left: ${border}` : `border-right: ${border}`;
- }}
// CORRECT — one interpolation per property
+ border-left: ${({ divider }) =>
+ divider === 'left' ? `1px solid ${themeCssVariables.border.color.light}` : 'none'};
+ border-right: ${({ divider }) =>
+ divider === 'right' ? `1px solid ${themeCssVariables.border.color.light}` : 'none'};
```
### 8. CSS var + unit concatenation
CSS custom properties can't be concatenated with unit suffixes directly
(`var(--x)px` is invalid). Use `calc()` to attach units:
```diff
- transition: background ${themeCssVariables.animation.duration.instant}s ease;
+ transition: background calc(${themeCssVariables.animation.duration.instant} * 1s) ease;
```
### 9. `styled(Component)` requires `className`
Linaria's `styled(Component)` works by passing a generated `className` to
the wrapped component. The component **must** accept and forward a
`className` prop — otherwise the styles are silently lost. If the component
doesn't support it, either add `className` support or use a wrapper div.
Linaria also does **not** support Emotion's `shouldForwardProp` option.
Custom props on HTML elements are automatically filtered by Linaria's
runtime (via `@emotion/is-prop-valid`). For custom components, all props are
forwarded — ensure the wrapped component ignores unknown props gracefully.
### 10. `type Theme` → `type ThemeType`
```diff
- import { type Theme } from '@emotion/react';
+ import { type ThemeType } from 'twenty-ui/theme';
```
### 11. Framer Motion integration
Linaria doesn't support `styled(motion.div)` — wrapping a motion element
with `styled()` causes the component body to be stripped at build time by
wyw-in-js. Define the styled component first, then wrap with
`motion.create()`:
```tsx
const StyledBarBase = styled.div`
background-color: ${themeCssVariables.font.color.primary};
height: 100%;
`;
const StyledBar = motion.create(StyledBarBase);
```
### 12. Dynamic styles via CSS variables
When a component needs to compute styles from multiple props with complex
branching logic (e.g. combining `variant`, `accent`, `disabled`, `focus`),
Linaria's prop interpolations become unwieldy. Use a `computeDynamicStyles`
helper that returns a `CSSProperties` object injected via `style={}`,
referenced from the static CSS with `var()`:
```tsx
const StyledButton = styled.button`
background: var(--btn-bg);
border-color: var(--btn-border-color);
&:hover { background: var(--btn-hover-bg); }
`;
const dynamicStyles = useMemo(() => {
const s = computeButtonDynamicStyles(variant, accent, ...);
return {
'--btn-bg': s.background,
'--btn-hover-bg': s.hoverBackground,
} as CSSProperties;
}, [variant, accent, ...]);
return <StyledButton style={dynamicStyles} />;
```
### 13. `Global` component
Replace Emotion's `<Global styles={...} />` with standard CSS or the
`ThemeCssVariableInjectorEffect` pattern from twenty-ui.
### 14. `ThemeProvider`
The `BaseThemeProvider` already wraps children with both Emotion's
`ThemeProvider` and Linaria's `ThemeContextProvider`. Once all Emotion usages
are gone, the Emotion `ThemeProvider` wrapper can be removed.
---
## PR Breakdown
Files are grouped to keep each PR around ~100 files with consistent review
surface. We start with the simplest, lowest-risk modules.
### PR 1 (~97 files) — Small standalone modules
Low-risk modules with mostly simple `styled`-only patterns.
| Module | Files |
|---|---|
| spreadsheet-import | 28 |
| billing | 10 |
| views | 14 |
| navigation-menu-item | 14 |
| blocknote-editor | 7 |
| advanced-text-editor | 7 |
| favorites | 7 |
| navigation | 4 |
| information-banner | 3 |
| sign-in-background-mock | 3 |
### PR 2 (~100 files) — Auth, tiny modules, loading, testing, pages (part 1)
| Module | Files |
|---|---|
| auth | 19 |
| action-menu | 3 |
| object-metadata | 3 |
| onboarding | 2 |
| workspace | 2 |
| file | 2 |
| error-handler | 2 |
| front-components | 1 |
| geo-map | 1 |
| hooks | 1 |
| loading | 5 |
| testing | 5 |
| pages (first ~55 files) | ~55 |
### PR 3 (~97 files) — Pages (remaining) + activities + AI
| Module | Files |
|---|---|
| pages (remaining ~16 files) | ~16 |
| activities | 53 |
| ai | 28 |
### PR 4 (~100 files) — Command-menu + workflow (part 1)
| Module | Files |
|---|---|
| command-menu | 53 |
| workflow (first ~47 files) | ~47 |
### PR 5 (~115 files) — Workflow (remaining) + page-layout
| Module | Files |
|---|---|
| workflow (remaining ~32 files) | ~32 |
| page-layout | 83 |
### PR 6 (~100 files) — UI module (part 1)
| Module | Files |
|---|---|
| ui (first ~100 files) | ~100 |
### PR 7 (~85 files) — UI module (remaining) + object-record (start)
| Module | Files |
|---|---|
| ui (remaining ~23 files) | ~23 |
| object-record (first ~62 files) | ~62 |
### PR 8 (~100 files) — Object-record (continued)
| Module | Files |
|---|---|
| object-record (next ~100 files) | ~100 |
### PR 9 (~100 files) — Settings (part 1)
| Module | Files |
|---|---|
| settings (first ~100 files) | ~100 |
### PR 10 (~102 files) — Settings (part 2) + final cleanup
| Module | Files |
|---|---|
| settings (remaining ~102 files) | ~102 |
| css/Global-only file | 1 |
### Post-migration PR — Remove Emotion
Once all PRs are merged:
- Remove `ThemeProvider` from `@emotion/react` in `BaseThemeProvider`
- Remove `@emotion/styled` and `@emotion/react` dependencies
- Remove `@styled/typescript-styled-plugin` from tsconfig
- Clean up any remaining Emotion-related configuration
---
## Risk Assessment
| Risk | Mitigation |
|---|---|
| wyw-in-js evaluates at build time; dynamic expressions may fail | Use `themeCssVariables` for static theme values; pass dynamic values as component props or via `style={}` CSS variables |
| `theme.spacing(N)` function → `themeCssVariables.spacing[N]` index | Pre-computed for integers 032 plus 0.5 and 1.5; other fractional values → literal pixel values |
| `useTheme` used for runtime logic (not just styles) | Replace with `useContext(ThemeContext)`, destructure `{ theme }` |
| Multi-arg `theme.spacing(a, b, c)` | Split into individual `themeCssVariables.spacing[N]` references |
| `css` tag inside `styled` templates | Linaria `css` returns class name, not CSS text; use plain strings inside `styled` |
| Interpolation returns `false` / `undefined` | wyw-in-js requires `string \| number`; use ternary `? : ''` instead of `&&` |
| Block interpolations (multiple declarations) | Split into one interpolation per CSS property |
| `var(--x)px` concatenation | Use `calc(var(--x) * 1px)` |
| `styled(motion.div)` stripped by wyw-in-js | Use `motion.create(StyledBase)` pattern |
| `styled(Component)` with no `className` prop | Add `className` support to wrapped component or use wrapper div |
| Complex multi-prop style branching | Use `computeDynamicStyles` + `style={}` + `var()` references |
---
## Validation Checklist (per PR)
- [ ] `npx nx lint:diff-with-main twenty-front` passes
- [ ] `npx nx typecheck twenty-front` passes
- [ ] `npx nx test twenty-front` passes
- [ ] Visual spot-check of affected components in the app
- [ ] No remaining `@emotion/styled` or `@emotion/react` imports in migrated files
@@ -15,6 +15,7 @@ const jestConfig = {
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^package.json$': '<rootDir>/package.json',
},
moduleFileExtensions: ['ts', 'js'],
extensionsToTreatAsEsm: ['.ts'],
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "create-twenty-app",
"version": "0.6.2",
"version": "0.6.3",
"description": "Command-line interface to create Twenty application",
"main": "dist/cli.cjs",
"bin": "dist/cli.cjs",
@@ -4,6 +4,7 @@ import { copyBaseApplicationProject } from '@/utils/app-template';
import * as fs from 'fs-extra';
import { tmpdir } from 'os';
import { join } from 'path';
import createTwentyAppPackageJson from 'package.json';
jest.mock('fs-extra', () => {
const actual = jest.requireActual('fs-extra');
@@ -88,7 +89,9 @@ describe('copyBaseApplicationProject', () => {
const packageJson = await fs.readJson(packageJsonPath);
expect(packageJson.name).toBe('my-test-app');
expect(packageJson.version).toBe('0.1.0');
expect(packageJson.dependencies['twenty-sdk']).toBe('latest');
expect(packageJson.devDependencies['twenty-sdk']).toBe(
createTwentyAppPackageJson.version,
);
expect(packageJson.scripts['twenty']).toBe('twenty');
});
@@ -4,6 +4,7 @@ import { v4 } from 'uuid';
import { ASSETS_DIR } from 'twenty-shared/application';
import { type ExampleOptions } from '@/types/scaffolding-options';
import createTwentyAppPackageJson from 'package.json';
const SRC_FOLDER = 'src';
@@ -146,8 +147,7 @@ generated
# dev
/dist/
.twenty/*
!.twenty/output/
.twenty
# production
/build
@@ -546,10 +546,9 @@ const createPackageJson = async ({
lint: 'eslint',
'lint:fix': 'eslint --fix',
},
dependencies: {
'twenty-sdk': 'latest',
},
dependencies: {},
devDependencies: {
'twenty-sdk': createTwentyAppPackageJson.version,
typescript: '^5.9.3',
'@types/node': '^24.7.2',
'@types/react': '^18.2.0',
+2 -1
View File
@@ -11,7 +11,8 @@
"noEmit": true,
"types": ["jest", "node"],
"paths": {
"@/*": ["./src/*"]
"@/*": ["./src/*"],
"package.json": ["./package.json"]
},
"jsx": "react"
},
@@ -1,2 +1,37 @@
.yarn/install-state.gz
.env
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.*
.yarn
# codegen
generated
# testing
/coverage
# dev
/dist/
.twenty
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# env files (can opt-in for committing if needed)
.env*
# typescript
*.tsbuildinfo
@@ -2,25 +2,6 @@
Used to manage billing and telemetry of self-hosted instances
## Requirements
- twenty-cli `npm install -g twenty-cli`
- an `apiKey`. Go to `https://twenty.com/settings/api-webhooks` to generate one
## Install to your Twenty workspace
```bash
twenty auth login
twenty app sync
```
## Environment Variables
This application requires the following environment variables to be set:
- `TWENTY_API_URL`: The Twenty instance API URL where selfHostingUser records will be created
- `TWENTY_API_KEY`: API key for authentication (generate at `/settings/api-webhooks`)
## Features
### Telemetry Webhook
@@ -9,26 +9,13 @@
},
"packageManager": "yarn@4.9.2",
"scripts": {
"auth:login": "twenty auth login",
"auth:logout": "twenty auth logout",
"auth:status": "twenty auth status",
"auth:switch": "twenty auth switch",
"auth:list": "twenty auth list",
"app:dev": "twenty app dev",
"app:sync": "twenty app sync",
"entity:add": "twenty entity add",
"function:logs": "twenty function logs",
"function:execute": "twenty function execute",
"app:uninstall": "twenty app uninstall",
"help": "twenty help",
"twenty": "twenty",
"lint": "eslint",
"lint:fix": "eslint --fix"
},
"dependencies": {
"twenty-sdk": "0.3.1"
},
"devDependencies": {
"@types/node": "^24.7.2"
"@types/node": "^24.7.2",
"twenty-sdk": "0.6.2"
},
"$schema": "https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-cli/src/constants/schemas/appManifest.schema.json",
"universalIdentifier": "a7070f46-3158-4b40-828f-8e6b1febc233"
@@ -1,19 +0,0 @@
import { defineApp } from 'twenty-sdk';
export default defineApp({
universalIdentifier: '94f7db30-59e5-4b09-a5fe-64cd3d4a65b0',
displayName: 'Self Hosting',
description: 'Used to manage billing and telemetry of self-hosted instances',
applicationVariables: {
TWENTY_API_KEY: {
universalIdentifier: 'a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d',
description: 'Twenty API key for creating selfHostingUser records',
isSecret: true,
},
TWENTY_API_URL: {
universalIdentifier: 'b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e',
description: 'Twenty API URL (e.g., https://api.twenty.com)',
isSecret: false,
},
},
});
@@ -1,18 +0,0 @@
import { FieldType, defineObject } from 'twenty-sdk';
export default defineObject({
universalIdentifier: '06f3fb53-599e-4c6b-9df6-8f731973afd7',
nameSingular: 'selfHostingUser',
namePlural: 'selfHostingUsers',
labelSingular: 'Self Hosting User',
labelPlural: 'Self Hosting Users',
fields: [
{
type: FieldType.EMAILS,
name: 'email',
label: 'Email',
description: 'The email of the self hosting user',
universalIdentifier: 'a4b7892c-431a-4d44-973e-a5481652704f',
},
],
});
@@ -1,132 +0,0 @@
import { defineFunction } from 'twenty-sdk';
import { createClient } from '../../generated';
// TODO: import from twenty-sdk when 0.4.0 is deployed
type ServerlessFunctionEvent<TBody = object> = {
headers: Record<string, string | undefined>;
queryStringParameters: Record<string, string | undefined>;
pathParameters: Record<string, string | undefined>;
body: TBody | null;
isBase64Encoded: boolean;
requestContext: {
http: {
method: string;
path: string;
};
};
};
type TelemetryEventPayload = {
action: string;
timestamp: string;
version: string;
payload: {
userId: string | null;
workspaceId: string | null;
payload?: {
events?: Array<{
userId?: string;
userEmail?: string;
userFirstName?: string;
userLastName?: string;
locale?: string;
serverUrl?: string;
}>;
};
};
};
export const main = async (
params: ServerlessFunctionEvent<TelemetryEventPayload>,
): Promise<{ success: boolean; message: string; error?: string }> => {
try {
const { action, payload } = params.body || {};
if (action !== 'user_signup') {
return {
success: true,
message: `Event type '${action}' ignored`,
};
}
const userEmail =
payload?.payload?.events?.[0]?.userEmail ||
payload?.payload?.events?.[0]?.userId;
if (!userEmail) {
return {
success: false,
message: 'No email found in telemetry event',
error: 'Missing userEmail in payload',
};
}
if (
userEmail.toLowerCase().includes('example') ||
userEmail.toLowerCase().includes('test')
) {
return {
success: true,
message: `Email '${userEmail}' ignored (contains test/example data)`,
};
}
const client = createClient({
url: `${process.env.TWENTY_API_URL}/graphql`,
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.TWENTY_API_KEY}`,
},
});
// Create or update selfHostingUser record
const result = await client.mutation({
createSelfHostingUser: {
__args: {
data: {
name:
payload?.payload?.events?.[0]?.userFirstName +
' ' +
payload?.payload?.events?.[0]?.userLastName,
email: {
primaryEmail: userEmail,
additionalEmails: null,
},
},
upsert: true,
},
id: true,
email: {
primaryEmail: true,
},
},
});
return {
success: true,
message: `Self hosting user created/updated: ${result.createSelfHostingUser?.id}`,
};
} catch (error) {
return {
success: false,
message: 'Failed to process telemetry event',
error: error instanceof Error ? error.message : String(error),
};
}
};
export default defineFunction({
universalIdentifier: '10104201-622b-4a5e-9f27-8f2af19b2a3c',
name: 'telemetry-webhook',
timeoutSeconds: 5,
handler: main,
triggers: [
{
universalIdentifier: '7c8e3f5a-9b4c-4d1e-8f2a-1b3c4d5e6f7a',
type: 'route',
path: '/webhook/telemetry',
httpMethod: 'POST',
isAuthRequired: false,
},
],
});
@@ -0,0 +1,10 @@
import { defineApplication } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export default defineApplication({
universalIdentifier: '94f7db30-59e5-4b09-a5fe-64cd3d4a65b0',
displayName: 'Self Hosting',
description: 'Used to manage billing and telemetry of self-hosted instances',
defaultRoleUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.roles.defaultRole.universalIdentifier,
});
@@ -0,0 +1,120 @@
export const UNIVERSAL_IDENTIFIERS = {
objects: {
selfHostingUser: {
universalIdentifier: '06f3fb53-599e-4c6b-9df6-8f731973afd7',
fields: {
name: { universalIdentifier: '682cccbf-9f37-4290-a94c-902c771f61e4' },
email: { universalIdentifier: 'a4b7892c-431a-4d44-973e-a5481652704f' },
personId: {
universalIdentifier: 'b453a43c-1512-48ca-8604-db750ad3ffb8',
},
domain: {
universalIdentifier: '1dfa7d4e-c8f5-4639-b58e-3392a8789f76',
},
userWorkspaceId: {
universalIdentifier: '297a7d6b-e407-4b2d-8c03-8964bc1b7805',
},
userId: {
universalIdentifier: '5c7ba3ce-1473-4e3d-8e7c-31816fcb87d8',
},
locale: {
universalIdentifier: '7b39df37-a22e-4f38-ae77-91cf3ee7c076',
},
serverUrl: {
universalIdentifier: 'f2516b77-2912-4cbb-8838-46ac5a5465d9',
},
serverId: {
universalIdentifier: 'e68a2b15-786d-4e9d-a74d-6d6d577ae721',
},
numberOfEmailsWithSameDomain: {
universalIdentifier: '0bf05db0-6771-4400-91ca-1579ec11e76e',
},
isEnriched: {
universalIdentifier: 'fefe9fd6-23ae-4046-b60b-64d17e9ff7ed',
},
triedToBeEnriched: {
universalIdentifier: 'd32c8cc3-8855-453d-bb7d-9c9c0b3f2128',
},
isPersonalEmail: {
universalIdentifier: 'f4568391-9474-4ed8-8cbb-e36d86e0f5f9',
},
isTwenty: {
universalIdentifier: 'b1acef1f-7c10-47a9-899e-aaca45b36e04',
},
personCity: {
universalIdentifier: 'ca733484-e595-4257-9ca9-9a7802fb8bcb',
},
personCountry: {
universalIdentifier: '18c06357-1b50-4d5b-82cf-1f71f286fbe4',
},
personJobFunction: {
universalIdentifier: '26e7e2c7-ea83-41e0-8c07-1fc2549a3fb4',
},
personJobTitle: {
universalIdentifier: '177908e9-1ca6-4762-9518-0df966d3e9fc',
},
personLinkedIn: {
universalIdentifier: '3515683f-7f9f-4b6d-9b16-614824d277b7',
},
personSeniority: {
universalIdentifier: '8b63855a-5915-4d6a-a6ed-ef7d8f8e5dd1',
},
companyAlexaRank: {
universalIdentifier: '7c61335b-cd4b-4eae-8b02-0db746913e36',
},
companyAnnualRevenue: {
universalIdentifier: 'a2367973-aa12-42c2-9577-fe868f61b83b',
},
companyAnnualRevenuePrinted: {
universalIdentifier: 'bc02b6af-8f48-4fde-920d-1fd3e2a8557b',
},
companyDescription: {
universalIdentifier: 'a9bb622e-56b6-42ba-8b03-17a47d707409',
},
companyEmployees: {
universalIdentifier: '8e1dbc58-d444-470f-b8fe-9eed8da4b59e',
},
companyFoundedYear: {
universalIdentifier: '3cf95527-5064-43ab-bf5e-421eb45fac5f',
},
companyFundingLatestStage: {
universalIdentifier: 'a7dcd92a-6811-490b-a8dd-fad1c19091a1',
},
companyFundingTotalAmount: {
universalIdentifier: '6fca8a11-b49a-4081-a7c9-9646f43ad7aa',
},
companyFundingTotalAmountPrinted: {
universalIdentifier: '0078f0f0-2262-4c74-aaf8-4061c6c8a1f3',
},
companyIndustries: {
universalIdentifier: '6b971b9c-6ef5-4497-989e-f9a7c72720cf',
},
companyIndustry: {
universalIdentifier: 'ab84e651-d35b-4e02-8d69-1740af3e22f7',
},
companyLinkedIn: {
universalIdentifier: '4c44b956-f880-434f-b4cd-854b82076e56',
},
companyName: {
universalIdentifier: '1a25412b-f9ce-4406-ac53-f20d1ab8c5ea',
},
companyTags: {
universalIdentifier: 'ceb64d0b-1203-4c6d-af00-39b668f5f891',
},
companyTech: {
universalIdentifier: '11dd57c3-06bb-4722-bb65-96d0a899ca91',
},
},
},
},
roles: {
defaultRole: {
universalIdentifier: '66972e19-9fdb-4336-87ce-442a17fd179c',
},
},
views: {
selfHostingUserView: {
universalIdentifier: 'e903f0ee-52cb-4537-aca8-8940e30b023d',
},
},
};
@@ -0,0 +1,29 @@
import {
defineField,
FieldType,
RelationType,
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
} from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export const SELF_HOSTING_USER_ID_UNIVERSAL_IDENTIFIER =
'9507f244-fdea-47d5-a734-725d4dae43da';
export default defineField({
universalIdentifier: SELF_HOSTING_USER_ID_UNIVERSAL_IDENTIFIER,
name: 'selfHostingUsers',
label: 'Self hosting users',
description: 'Self hosting user related to the person',
type: FieldType.RELATION,
relationTargetFieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personId
.universalIdentifier,
relationTargetObjectMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.universalIdentifier,
objectUniversalIdentifier:
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier,
isNullable: true,
universalSettings: {
relationType: RelationType.ONE_TO_MANY,
},
});
@@ -0,0 +1,94 @@
import {
defineLogicFunction,
type DatabaseEventPayload,
type ObjectRecordCreateEvent,
type ObjectRecordUpdateEvent,
} from 'twenty-sdk';
import { SELF_HOSTING_USER_NAME_SINGULAR } from 'src/objects/selfHostingUser.object';
import { type SelfHostingUser } from 'twenty-sdk/generated/core';
import { CoreApiClient } from 'twenty-sdk/generated';
const handler = async (
params: DatabaseEventPayload<
| ObjectRecordCreateEvent<SelfHostingUser>
| ObjectRecordUpdateEvent<SelfHostingUser>
>,
) => {
const [object, action] = params.name.split('.');
if (object !== SELF_HOSTING_USER_NAME_SINGULAR) {
return;
}
if (!['created', 'updated'].includes(action)) {
return;
}
const email = params.properties.after.email?.primaryEmail;
if (!email) {
return;
}
const client = new CoreApiClient();
const { people } = await client.query({
people: {
edges: { node: { id: true } },
__args: {
filter: {
emails: {
primaryEmail: { eq: email },
},
},
},
},
});
let personId = people?.edges[0]?.node?.id;
if (!personId) {
const { createPerson } = await client.mutation({
createPerson: {
__args: {
data: {
name: {
firstName: params.properties.after.name?.firstName,
lastName: params.properties.after.name?.lastName,
},
emails: {
primaryEmail: email,
},
},
},
id: true,
},
});
personId = createPerson?.id;
}
await client.mutation({
updateSelfHostingUser: {
__args: {
id: params.properties.after.id,
data: {
personId,
},
},
id: true,
},
});
};
export default defineLogicFunction({
universalIdentifier: '87f0293a-997a-4c7b-85e2-e77462ccf0c5',
name: 'match-telemetry-event-with-people',
description:
'Matches self hosting users with existing people based on email address',
timeoutSeconds: 10,
handler,
databaseEventTriggerSettings: {
eventName: `${SELF_HOSTING_USER_NAME_SINGULAR}.*`,
},
});
@@ -0,0 +1,136 @@
import { defineLogicFunction, type RoutePayload } from 'twenty-sdk';
import { CoreApiClient } from 'twenty-sdk/generated';
import { type TelemetryEvent } from 'src/logic-functions/types/telemetry-event.type';
export const main = async (
params: RoutePayload<TelemetryEvent>,
): Promise<{
success: boolean;
message: string;
error?: string;
}> => {
try {
const {
action,
workspaceId,
userWorkspaceId,
userId,
userEmail,
userFirstName,
userLastName,
locale,
serverUrl,
serverId,
} = params.body || {};
if (action !== 'user_signup') {
return {
success: true,
message: `Event type '${action}' ignored`,
};
}
if (!userEmail) {
return {
success: true,
message: 'No email found in telemetry event',
};
}
if (
userEmail.toLowerCase().includes('example') ||
userEmail.toLowerCase().includes('test')
) {
return {
success: true,
message: `Email '${userEmail}' ignored (contains test/example data)`,
};
}
const client = new CoreApiClient();
let existingSelfHostingUserId: string | undefined = undefined;
try {
const { selfHostingUser: existingSelfHostingUser } = await client.query({
selfHostingUser: {
__args: {
filter: {
email: { primaryEmail: { eq: userEmail } },
},
},
id: true,
},
});
existingSelfHostingUserId = existingSelfHostingUser?.id;
} catch {
//
}
if (existingSelfHostingUserId) {
await client.mutation({
updateSelfHostingUser: {
__args: {
id: existingSelfHostingUserId,
data: {
name: { firstName: userFirstName, lastName: userLastName },
email: { primaryEmail: userEmail, additionalEmails: null },
userWorkspaceId,
userId,
locale,
serverUrl,
serverId,
},
},
id: true,
},
});
return {
success: true,
message: `Self hosting user ${existingSelfHostingUserId} updated`,
};
}
const { createSelfHostingUser } = await client.mutation({
createSelfHostingUser: {
__args: {
data: {
name: { firstName: userFirstName, lastName: userLastName },
email: { primaryEmail: userEmail, additionalEmails: null },
workspaceId,
userWorkspaceId,
userId,
locale,
serverUrl,
serverId,
},
},
id: true,
},
});
return {
success: true,
message: `Self hosting user ${createSelfHostingUser?.id} created`,
};
} catch (error) {
return {
success: false,
message: 'Failed to process telemetry event',
error: error instanceof Error ? error.message : String(error),
};
}
};
export default defineLogicFunction({
universalIdentifier: '10104201-622b-4a5e-9f27-8f2af19b2a3c',
name: 'telemetry-webhook',
timeoutSeconds: 10,
handler: main,
httpRouteTriggerSettings: {
path: '/webhook/telemetry',
httpMethod: 'POST',
isAuthRequired: false,
},
});
@@ -0,0 +1,12 @@
export type TelemetryEvent = {
action: string;
workspaceId?: string;
userWorkspaceId?: string;
userId: string;
userEmail?: string;
userFirstName?: string;
userLastName?: string;
locale?: string;
serverUrl: string;
serverId: string;
};
@@ -0,0 +1,11 @@
import { defineNavigationMenuItem } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export default defineNavigationMenuItem({
universalIdentifier: 'fe3aaca4-9eda-4565-b215-5d268fbf8164',
name: 'Self host user',
icon: 'IconList',
position: 1,
viewUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.views.selfHostingUserView.universalIdentifier,
});
@@ -0,0 +1,354 @@
import {
defineObject,
FieldType,
RelationType,
OnDeleteAction,
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS,
} from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
import { SELF_HOSTING_USER_ID_UNIVERSAL_IDENTIFIER } from 'src/fields/self-hosting-user-id';
export const SELF_HOSTING_USER_NAME_SINGULAR = 'selfHostingUser';
export default defineObject({
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.universalIdentifier,
nameSingular: SELF_HOSTING_USER_NAME_SINGULAR,
namePlural: 'selfHostingUsers',
labelSingular: 'Self Hosting User',
labelPlural: 'Self Hosting Users',
fields: [
{
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personId
.universalIdentifier,
name: 'person',
label: 'Person',
description: 'Person matching with the self hosting user',
type: FieldType.RELATION,
relationTargetFieldMetadataUniversalIdentifier:
SELF_HOSTING_USER_ID_UNIVERSAL_IDENTIFIER,
relationTargetObjectMetadataUniversalIdentifier:
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.universalIdentifier,
isNullable: true,
universalSettings: {
relationType: RelationType.MANY_TO_ONE,
onDelete: OnDeleteAction.SET_NULL,
joinColumnName: 'personId',
},
},
{
type: FieldType.FULL_NAME,
name: 'name',
label: 'Name',
description: 'Name of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.name
.universalIdentifier,
},
{
type: FieldType.EMAILS,
name: 'email',
label: 'Email',
description: 'The email of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.email
.universalIdentifier,
},
{
type: FieldType.LINKS,
name: 'domain',
label: 'Domain',
description:
'Domain extracted from the email address (e.g. domain.com / https://domain.com/)',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.domain
.universalIdentifier,
},
{
type: FieldType.UUID,
name: 'userWorkspaceId',
label: 'User workspace Id',
description: 'User workspace id of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.userWorkspaceId
.universalIdentifier,
},
{
type: FieldType.UUID,
name: 'userId',
label: 'User Id',
description: 'User id of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.userId
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'locale',
label: 'Locale',
description: 'Locale of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.locale
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'serverUrl',
label: 'Server url',
description: 'Server url of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.serverUrl
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'serverId',
label: 'Server id',
description: 'Server id of the self hosting user',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.serverId
.universalIdentifier,
},
{
type: FieldType.NUMBER,
name: 'numberOfEmailsWithSameDomain',
label: 'Number of Emails with Same Domain',
description:
'Aggregated count of self hosting users sharing the same business domain',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.numberOfEmailsWithSameDomain.universalIdentifier,
},
{
type: FieldType.BOOLEAN,
name: 'isEnriched',
label: 'Is Enriched',
description: 'Whether the record has been enriched',
defaultValue: false,
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isEnriched
.universalIdentifier,
},
{
type: FieldType.BOOLEAN,
name: 'triedToBeEnriched',
label: 'Tried to Be Enriched',
description: 'Whether an enrichment attempt has been made',
defaultValue: false,
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.triedToBeEnriched
.universalIdentifier,
},
{
type: FieldType.BOOLEAN,
name: 'isPersonalEmail',
label: 'Is Personal Email',
description: 'Whether the email is a personal email address',
defaultValue: true,
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isPersonalEmail
.universalIdentifier,
},
{
type: FieldType.BOOLEAN,
name: 'isTwenty',
label: 'Is Twenty',
description: 'Whether the user is from Twenty',
defaultValue: false,
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isTwenty
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personCity',
label: 'Person City',
description: 'City of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personCity
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personCountry',
label: 'Person Country',
description: 'Country of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personCountry
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personJobFunction',
label: 'Person Job Function',
description: 'Job function of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personJobFunction
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personJobTitle',
label: 'Person Job Title',
description: 'Job title of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personJobTitle
.universalIdentifier,
},
{
type: FieldType.LINKS,
name: 'personLinkedIn',
label: 'Person LinkedIn',
description: 'LinkedIn profile of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personLinkedIn
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'personSeniority',
label: 'Person Seniority',
description: 'Seniority level of the person',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personSeniority
.universalIdentifier,
},
{
type: FieldType.NUMBER,
name: 'companyAlexaRank',
label: 'Company Alexa Rank',
description: 'Alexa rank of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyAlexaRank
.universalIdentifier,
},
{
type: FieldType.CURRENCY,
name: 'companyAnnualRevenue',
label: 'Company Annual Revenue',
description: 'Annual revenue of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyAnnualRevenue.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyAnnualRevenuePrinted',
label: 'Company Annual Revenue Printed',
description: 'Formatted annual revenue of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyAnnualRevenuePrinted.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyDescription',
label: 'Company Description',
description: 'Description of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyDescription
.universalIdentifier,
},
{
type: FieldType.NUMBER,
name: 'companyEmployees',
label: 'Company Employees',
description: 'Number of employees at the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyEmployees
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyFoundedYear',
label: 'Company Founded Year',
description: 'Year the company was founded',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyFoundedYear
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyFundingLatestStage',
label: 'Company Funding Latest Stage',
description: 'Latest funding stage of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingLatestStage.universalIdentifier,
},
{
type: FieldType.NUMBER,
name: 'companyFundingTotalAmount',
label: 'Company Funding Total Amount',
description: 'Total funding amount of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingTotalAmount.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyFundingTotalAmountPrinted',
label: 'Company Funding Total Amount Printed',
description: 'Formatted total funding amount of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingTotalAmountPrinted.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyIndustries',
label: 'Company Industries',
description: 'Industries the company operates in',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyIndustries
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyIndustry',
label: 'Company Industry',
description: 'Primary industry of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyIndustry
.universalIdentifier,
},
{
type: FieldType.LINKS,
name: 'companyLinkedIn',
label: 'Company LinkedIn',
description: 'LinkedIn page of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyLinkedIn
.universalIdentifier,
},
{
type: FieldType.TEXT,
name: 'companyName',
label: 'Company Name',
description: 'Name of the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyName
.universalIdentifier,
},
{
type: FieldType.ARRAY,
name: 'companyTags',
label: 'Company Tags',
description: 'Tags associated with the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyTags
.universalIdentifier,
},
{
type: FieldType.ARRAY,
name: 'companyTech',
label: 'Company Tech',
description: 'Technologies used by the company',
universalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyTech
.universalIdentifier,
},
],
});
@@ -0,0 +1,13 @@
import { defineRole } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export default defineRole({
universalIdentifier:
UNIVERSAL_IDENTIFIERS.roles.defaultRole.universalIdentifier,
label: 'default role',
description: 'Add a description for your role',
canReadAllObjectRecords: true,
canUpdateAllObjectRecords: true,
canSoftDeleteAllObjectRecords: true,
canDestroyAllObjectRecords: false,
});
@@ -0,0 +1,308 @@
import { defineView } from 'twenty-sdk';
import { UNIVERSAL_IDENTIFIERS } from 'src/constants/universal-identifiers.constant';
export default defineView({
universalIdentifier:
UNIVERSAL_IDENTIFIERS.views.selfHostingUserView.universalIdentifier,
name: 'Self hosting users',
objectUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.universalIdentifier,
icon: 'IconList',
position: 0,
fields: [
{
universalIdentifier: '243a2401-cd13-440c-8dcd-649e26df36bc',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.name
.universalIdentifier,
position: 0,
isVisible: true,
size: 150,
},
{
universalIdentifier: 'dfa75ef8-d40d-416f-9f1c-3e86edfa9fce',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.email
.universalIdentifier,
position: 1,
isVisible: true,
size: 150,
},
{
universalIdentifier: '15cc9215-eb48-4487-a92e-a25d8e99702f',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.domain
.universalIdentifier,
position: 2,
isVisible: true,
size: 200,
},
{
universalIdentifier: '0f9e4f63-3664-443a-9f06-8a6cc04c1d90',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personId
.universalIdentifier,
position: 2.1,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'dcf88ae8-e71d-452f-b51e-d88cbc6dd273',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.userWorkspaceId
.universalIdentifier,
position: 3,
isVisible: true,
},
{
universalIdentifier: 'aad70516-936b-41d1-b6c6-961a22299761',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.userId
.universalIdentifier,
position: 4,
isVisible: true,
},
{
universalIdentifier: '8c210eb0-bdda-476e-9f98-42f909872f2a',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.locale
.universalIdentifier,
position: 5,
isVisible: true,
},
{
universalIdentifier: '367abe85-11c4-440f-80a2-663edd6b4231',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.serverUrl
.universalIdentifier,
position: 6,
isVisible: true,
},
{
universalIdentifier: '32c199d6-ebf3-434b-81b4-e2b59a0518b7',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.serverId
.universalIdentifier,
position: 6.1,
isVisible: true,
},
{
universalIdentifier: '924ee786-ab93-44be-9d21-941ff9ffe1ac',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.numberOfEmailsWithSameDomain.universalIdentifier,
position: 7,
isVisible: true,
},
{
universalIdentifier: '2feadf3d-e251-4356-add8-7fa70dea5401',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isEnriched
.universalIdentifier,
position: 8,
isVisible: true,
},
{
universalIdentifier: 'de252ae6-c723-4bf7-96cf-d93f5a539f36',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.triedToBeEnriched
.universalIdentifier,
position: 9,
isVisible: true,
},
{
universalIdentifier: 'b121e8e6-b3eb-4f6c-b67e-c7c6d19e1bc5',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isPersonalEmail
.universalIdentifier,
position: 10,
isVisible: true,
},
{
universalIdentifier: '0ada0bcc-8d6b-4df6-bcc1-78ba14cb04e6',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.isTwenty
.universalIdentifier,
position: 11,
isVisible: true,
},
{
universalIdentifier: 'ec7c8d51-ea63-41bd-9eb1-995835b94218',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personCity
.universalIdentifier,
position: 12,
isVisible: true,
},
{
universalIdentifier: '7522dd84-0d23-48e7-85dd-f0a8d9e275f8',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personCountry
.universalIdentifier,
position: 13,
isVisible: true,
},
{
universalIdentifier: '54191cb9-4d5c-466e-affb-d9ba4adeff87',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personJobFunction
.universalIdentifier,
position: 14,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'ace75fc7-fb20-4e53-a9a2-6a7529befaf0',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personJobTitle
.universalIdentifier,
position: 15,
isVisible: true,
size: 180,
},
{
universalIdentifier: 'a0b42d61-4553-42eb-aca4-327b9bf9f30e',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personLinkedIn
.universalIdentifier,
position: 16,
isVisible: true,
},
{
universalIdentifier: '74bc7dd2-fe53-4ff4-8778-2768f3439571',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.personSeniority
.universalIdentifier,
position: 17,
isVisible: true,
size: 180,
},
{
universalIdentifier: '61b34f41-8d56-472d-ab1e-414703c6ca12',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyAlexaRank
.universalIdentifier,
position: 18,
isVisible: true,
},
{
universalIdentifier: '5bb7d36b-6a73-4832-b41e-f67130a4708f',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyAnnualRevenue.universalIdentifier,
position: 19,
isVisible: true,
},
{
universalIdentifier: 'ae6f23ce-006c-41dd-82a1-e9fe7b65bce3',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyAnnualRevenuePrinted.universalIdentifier,
position: 20,
isVisible: true,
size: 250,
},
{
universalIdentifier: 'dd2a4728-a743-43bb-b096-9e7bd5125e56',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyDescription
.universalIdentifier,
position: 21,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'ecca02c9-db2e-41e2-b571-b5db75054b56',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyEmployees
.universalIdentifier,
position: 22,
isVisible: true,
},
{
universalIdentifier: '2e76775b-f8b8-4184-8cd3-72d2b93edaa2',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyFoundedYear
.universalIdentifier,
position: 23,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'a7eb002c-6f0c-48ba-a9eb-247c498ad9bd',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingLatestStage.universalIdentifier,
position: 24,
isVisible: true,
size: 240,
},
{
universalIdentifier: '61be97f6-20da-4b2b-861d-32345e0f9953',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingTotalAmount.universalIdentifier,
position: 25,
isVisible: true,
},
{
universalIdentifier: '55720810-3120-4e76-bcf2-2da9517edbbc',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields
.companyFundingTotalAmountPrinted.universalIdentifier,
position: 26,
isVisible: true,
size: 280,
},
{
universalIdentifier: '01e31752-cbc1-499a-8ecf-504dd402d7e2',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyIndustries
.universalIdentifier,
position: 27,
isVisible: true,
size: 200,
},
{
universalIdentifier: '2e1c8b8b-469b-483e-8348-1fe3d1764e17',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyIndustry
.universalIdentifier,
position: 28,
isVisible: true,
size: 180,
},
{
universalIdentifier: '976cc8ae-6cf8-4c30-8da4-5bf61e799893',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyLinkedIn
.universalIdentifier,
position: 29,
isVisible: true,
},
{
universalIdentifier: '5f0776b3-2849-4b9b-82f0-baa38c6d889d',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyName
.universalIdentifier,
position: 30,
isVisible: true,
},
{
universalIdentifier: '86f0397a-2924-4e5c-a610-3c9ad7bb4923',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyTags
.universalIdentifier,
position: 31,
isVisible: true,
},
{
universalIdentifier: '562084f4-1242-4e60-868b-1d9b268a35b0',
fieldMetadataUniversalIdentifier:
UNIVERSAL_IDENTIFIERS.objects.selfHostingUser.fields.companyTech
.universalIdentifier,
position: 32,
isVisible: true,
},
],
});
@@ -5,13 +5,14 @@
"declaration": true,
"outDir": "./dist",
"rootDir": ".",
"jsx": "react-jsx",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"allowUnreachableCode": false,
"strictNullChecks": true,
"strict": true,
"alwaysStrict": true,
"noImplicitAny": true,
"strictBindCallApply": false,
@@ -26,10 +27,5 @@
"~/*": ["./*"]
}
},
"exclude": [
"node_modules",
"dist",
"**/*.test.ts",
"**/*.spec.ts"
]
"exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"]
}
File diff suppressed because it is too large Load Diff
@@ -2485,6 +2485,8 @@ export type MutationAuthorizeAppArgs = {
clientId: Scalars['String'];
codeChallenge?: InputMaybe<Scalars['String']>;
redirectUrl: Scalars['String'];
scope?: InputMaybe<Scalars['String']>;
state?: InputMaybe<Scalars['String']>;
};
@@ -3804,6 +3806,15 @@ export type PostgresCredentials = {
workspaceId: Scalars['UUID'];
};
export type PublicApplicationRegistration = {
__typename?: 'PublicApplicationRegistration';
id: Scalars['UUID'];
logoUrl?: Maybe<Scalars['String']>;
name: Scalars['String'];
oAuthScopes: Array<Scalars['String']>;
websiteUrl?: Maybe<Scalars['String']>;
};
export type PublicDomain = {
__typename?: 'PublicDomain';
createdAt: Scalars['DateTime'];
@@ -3854,7 +3865,7 @@ export type Query = {
eventLogs: EventLogQueryResult;
field: Field;
fields: FieldConnection;
findApplicationRegistrationByClientId?: Maybe<ApplicationRegistration>;
findApplicationRegistrationByClientId?: Maybe<PublicApplicationRegistration>;
findApplicationRegistrationByUniversalIdentifier?: Maybe<ApplicationRegistration>;
findApplicationRegistrationStats: ApplicationRegistrationStats;
findApplicationRegistrationVariables: Array<ApplicationRegistrationVariable>;
@@ -6461,7 +6472,7 @@ export type FindApplicationRegistrationByClientIdQueryVariables = Exact<{
}>;
export type FindApplicationRegistrationByClientIdQuery = { __typename?: 'Query', findApplicationRegistrationByClientId?: { __typename?: 'ApplicationRegistration', id: string, name: string, oAuthScopes: Array<string>, websiteUrl?: string | null, logoUrl?: string | null } | null };
export type FindApplicationRegistrationByClientIdQuery = { __typename?: 'Query', findApplicationRegistrationByClientId?: { __typename?: 'PublicApplicationRegistration', id: string, name: string, oAuthScopes: Array<string>, websiteUrl?: string | null, logoUrl?: string | null } | null };
export type FindApplicationRegistrationStatsQueryVariables = Exact<{
id: Scalars['String'];
@@ -2088,6 +2088,11 @@ msgstr "Magtiging App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Magtiging toep en blaaier-uitbreidings soos 1Password, Authy, Microsoft Authenticator, ens. genereer eenmalige wagwoorde wat as 'n tweede faktor gebruik word om jou identiteit te verifieer wanneer daar tydens aanmelding daarom gevra word."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Gemagtigde URI"
msgid "Authorized URL copied to clipboard"
msgstr "Gemagtigde URL na knipbord gekopieer"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "verwyder"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Groepeer"
msgid "Group by"
msgstr "Groepeer volgens"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Verwyder veranderlike"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Sommige"
msgid "Some folders"
msgstr "Sommige vouers"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "تطبيق المصادق"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "تقوم تطبيقات المصادقة وملحقات المتصفح مثل 1Password وAuthy وMicrosoft Authenticator وغيرها بإنشاء كلمات مرور لمرة واحدة يتم استخدامها كعامل ثانٍ للتحقق من هويتك عند المطالبة أثناء تسجيل الدخول."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "معرف URI المرخص"
msgid "Authorized URL copied to clipboard"
msgstr "تم نسخ رابط URL المرخص إلى الحافظة"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "حذف"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "مجموعة"
msgid "Group by"
msgstr "المجموعة حسب"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "إزالة المتغير"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "بعض"
msgid "Some folders"
msgstr "بعض المجلدات"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Aplicació d'autenticació"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Les aplicacions d'autenticació i extensions del navegador com 1Password, Authy, Microsoft Authenticator, etc. generen contrasenyes d'un sol ús que s'utilitzen com a segon factor per verificar la teva identitat quan se't sol·licita durant l'inici de sessió."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "URI autoritzat"
msgid "Authorized URL copied to clipboard"
msgstr "URL autoritzat copiat al porta-retalls"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "elimina"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Agrupament"
msgid "Group by"
msgstr "Agrupa per"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Elimina la variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Alguns"
msgid "Some folders"
msgstr "Algunes carpetes"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Autentizační aplikace"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Autentizační aplikace a prohlížečové rozšíření, jako je 1Password, Authy, Microsoft Authenticator atd., generují jednorázová hesla, která se používají jako druhý faktor k ověření vaší identity během přihlášení."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Autorizované URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autorizovaná URL zkopírována do schránky"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "smazat"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Skupina"
msgid "Group by"
msgstr "Skupina podle"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Odstranit proměnnou"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Některé"
msgid "Some folders"
msgstr "Některé složky"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Authenticator App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Autentifikator apps og browserudvidelser som 1Password, Authy, Microsoft Authenticator mv. genererer engangskoder, der bruges som en anden faktor til at bekræfte din identitet, når du bliver bedt om under sign-in."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Autoriseret URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autoriseret URL kopieret til udklipsholder"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "slet"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Gruppe"
msgid "Group by"
msgstr "Gruppér efter"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Fjern variabel"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Nogle"
msgid "Some folders"
msgstr "Nogle mapper"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13573,6 +13595,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Authentifikator-App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Authentifikator-Apps und Browser-Erweiterungen wie 1Password, Authy, Microsoft Authenticator usw. generieren Einmalpasswörter, die als zweiter Faktor verwendet werden, um Ihre Identität bei der Anmeldung zu verifizieren."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Autorisierte URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autorisierte URL in die Zwischenablage kopiert"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "löschen"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Gruppe"
msgid "Group by"
msgstr "Gruppieren nach"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Variable entfernen"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Einige"
msgid "Some folders"
msgstr "Einige Ordner"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Εφαρμογή Ταυτοποίησης"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Οι εφαρμογές ταυτοποίησης και οι επεκτάσεις προγράμματος περιήγησης όπως οι 1Password, Authy, Microsoft Authenticator, κ.λπ., δημιουργούν κωδικούς μιας χρήσης που χρησιμοποιούνται ως δεύτερος παράγοντας για να επαληθεύσουν την ταυτότητά σας όταν σας ζητηθεί στη διασύνδεση."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Εξουσιοδοτημένο URI"
msgid "Authorized URL copied to clipboard"
msgstr "Το εξουσιοδοτημένο URL αντιγράφηκε στο πρόχειρο"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "διαγραφή"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Ομάδα"
msgid "Group by"
msgstr "Ομαδοποίηση ανά"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Αφαίρεση μεταβλητής"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12238,6 +12255,11 @@ msgstr "Μερικά"
msgid "Some folders"
msgstr "Ορισμένοι φάκελοι"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13575,6 +13597,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
+27
View File
@@ -2083,6 +2083,11 @@ msgstr "Authenticator App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr "Authorization failed. Please try again."
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2098,6 +2103,11 @@ msgstr "Authorized URI"
msgid "Authorized URL copied to clipboard"
msgstr "Authorized URL copied to clipboard"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr "Authorizing..."
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4160,6 +4170,7 @@ msgstr "delete"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6647,6 +6658,11 @@ msgstr "Group"
msgid "Group by"
msgstr "Group by"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr "Group name"
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10848,6 +10864,7 @@ msgid "Remove variable"
msgstr "Remove variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12231,6 +12248,11 @@ msgstr "Some"
msgid "Some folders"
msgstr "Some folders"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr "Something went wrong"
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13568,6 +13590,11 @@ msgstr "ul"
msgid "Unable to delete member right now"
msgstr "Unable to delete member right now"
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr "Unable to load application details. Please try again later."
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Aplicación de Autenticación"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Las aplicaciones de autenticación y las extensiones de navegador como 1Password, Authy, Microsoft Authenticator, etc., generan contraseñas de un solo uso que se utilizan como un segundo factor para verificar tu identidad cuando se te solicita durante el inicio de sesión."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "URI autorizado"
msgid "Authorized URL copied to clipboard"
msgstr "URL autorizada copiada al portapapeles"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "eliminar"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Grupo"
msgid "Group by"
msgstr "Agrupar por"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Eliminar variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Alguno"
msgid "Some folders"
msgstr "Algunas carpetas"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13573,6 +13595,11 @@ msgstr "ul"
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Todennussovellus"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Todennussovellukset ja selainlaajennukset kuten 1Password, Authy, Microsoft Authenticator, jne. luovat kertakäyttöisiä salasanoja, joita käytetään vaadittaessa toisen tekijän vahvistamiseen kirjautumisen yhteydessä."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Valtuutettu URI"
msgid "Authorized URL copied to clipboard"
msgstr "Valtuutettu URL kopioitu leikepöydälle"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "poista"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Ryhmä"
msgid "Group by"
msgstr "Ryhmittäin"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Poista muuttuja"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Jotkut"
msgid "Some folders"
msgstr "Jotkin kansiot"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Application d'authentification"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Les applications d'authentification et les extensions de navigateur telles que 1Password, Authy, Microsoft Authenticator, etc. génèrent des mots de passe à usage unique qui sont utilisés comme deuxième facteur pour vérifier votre identité lorsque vous y êtes invité lors de la connexion."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "URI autorisé"
msgid "Authorized URL copied to clipboard"
msgstr "URL autorisée copiée dans le presse-papiers"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "supprimer"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Groupe"
msgid "Group by"
msgstr "Grouper par"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Supprimer la variable"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Certains"
msgid "Some folders"
msgstr "Certains dossiers"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13573,6 +13595,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -2088,6 +2088,11 @@ msgstr "אפליקציית מאמת"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "אפליקציות מאמת ותוספי דפדפן כמו 1Password, Authy, Microsoft Authenticator, וכו' מייצרים סיסמאות חד-פעמיות המשמשות כגורם שני לאימות זהותכם בעת התחברות."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "כתובת URI מורשית"
msgid "Authorized URL copied to clipboard"
msgstr "כתובת URL המורשית הועתקה ללוח הגזירים"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "מחק"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "קבוצה"
msgid "Group by"
msgstr "קיבוץ לפי"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "הסר משתנה"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "חלק"
msgid "Some folders"
msgstr "כמה תיקיות"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Hitelesítő alkalmazás"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Hitelesítő alkalmazások és böngésző-kiegészítők, mint például a 1Password, Authy, Microsoft Authenticator, stb., egyszeri jelszavakat generálnak, amelyeket második tényezőként használnak fel az azonosításod megerősítésére belépéskor."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Engedélyezett URI"
msgid "Authorized URL copied to clipboard"
msgstr "Engedélyezett URL vágólapra másolva"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "törlés"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Csoport"
msgid "Group by"
msgstr "Csoportosítás"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Változó eltávolítása"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Néhány"
msgid "Some folders"
msgstr "Néhány mappa"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "App Authenticator"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Le app di autenticazione e le estensioni del browser come 1Password, Authy, Microsoft Authenticator, ecc. generano password monouso utilizzate come secondo fattore per verificare la tua identità quando richiesto durante l'accesso."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "URI autorizzato"
msgid "Authorized URL copied to clipboard"
msgstr "URL autorizzato copiato negli appunti"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "elimina"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Gruppo"
msgid "Group by"
msgstr "Raggruppa per"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Rimuovi variabile"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Alcuni"
msgid "Some folders"
msgstr "Alcune cartelle"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13573,6 +13595,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "認証アプリ"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "1Password、Authy、Microsoft Authenticator などの認証アプリやブラウザー拡張機能は、サインイン時にユーザーの身元確認として使用されるワンタイム パスワードを生成します。"
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "認可されたURI"
msgid "Authorized URL copied to clipboard"
msgstr "認可されたURLがクリップボードにコピーされました"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "削除"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "グループ"
msgid "Group by"
msgstr "グループ化"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "変数を削除"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "一部"
msgid "Some folders"
msgstr "いくつかのフォルダー"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "인증 앱"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "1Password, Authy, Microsoft Authenticator 등의 인증 앱과 브라우저 확장 프로그램은 로그인 중 신원 확인 시 두 번째 인증 요소로 사용되는 일회용 비밀번호를 생성합니다."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "승인된 URI"
msgid "Authorized URL copied to clipboard"
msgstr "승인된 URL이 클립보드에 복사되었습니다"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "삭제"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "그룹"
msgid "Group by"
msgstr "그룹별"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "변수 제거"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "일부"
msgid "Some folders"
msgstr "일부 폴더"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Authenticator App"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Authenticator-apps en browserextensies zoals 1Password, Authy, Microsoft Authenticator, enz. genereren eenmalige wachtwoorden die als tweede factor worden gebruikt om uw identiteit te verifiëren wanneer daarom wordt gevraagd tijdens het inloggen."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Geautoriseerde URI"
msgid "Authorized URL copied to clipboard"
msgstr "Geautoriseerde URL gekopieerd naar klembord"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "verwijderen"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Groep"
msgid "Group by"
msgstr "Groeperen op"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Variabele verwijderen"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Enkele"
msgid "Some folders"
msgstr "Sommige mappen"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13573,6 +13595,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Autentiseringsapp"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Autentiseringsapper og nettleserutvidelser som 1Password, Authy, Microsoft Authenticator, osv. genererer engangspassord som brukes som en andre faktor for å bekrefte din identitet når du blir bedt om det under pålogging."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Autoriserte URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autoriserte URL kopiert til utklippstavlen"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "slett"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Gruppe"
msgid "Group by"
msgstr "Grupper etter"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Fjern variabel"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Noen"
msgid "Some folders"
msgstr "Noen mapper"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Aplikacja uwierzytelniająca"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Aplikacje uwierzytelniające i rozszerzenia przeglądarki, takie jak 1Password, Authy, Microsoft Authenticator, itp., generują jednorazowe hasła używane jako drugi czynnik do weryfikacji tożsamości podczas logowania."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Autoryzowany URI"
msgid "Authorized URL copied to clipboard"
msgstr "Autoryzowany URL skopiowany do schowka"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "usuń"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Grupa"
msgid "Group by"
msgstr "Grupuj według"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Usuń zmienną"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Niektóre"
msgid "Some folders"
msgstr "Niektóre foldery"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2083,6 +2083,11 @@ msgstr ""
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr ""
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2098,6 +2103,11 @@ msgstr ""
msgid "Authorized URL copied to clipboard"
msgstr ""
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4160,6 +4170,7 @@ msgstr ""
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6647,6 +6658,11 @@ msgstr ""
msgid "Group by"
msgstr ""
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10848,6 +10864,7 @@ msgid "Remove variable"
msgstr ""
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12231,6 +12248,11 @@ msgstr ""
msgid "Some folders"
msgstr ""
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13566,6 +13588,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "App Autenticador"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Aplicativos de autenticadores e extensões de navegador, como 1Password, Authy, Microsoft Authenticator, etc. geram senhas de uso único que são utilizadas como um segundo fator para verificar sua identidade quando solicitado durante o login."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "URI Autorizado"
msgid "Authorized URL copied to clipboard"
msgstr "URL autorizado copiado para a área de transferência"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "excluir"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Agrupar"
msgid "Group by"
msgstr "Agrupar por"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Remover variável"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Alguns"
msgid "Some folders"
msgstr "Algumas pastas"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Aplicativo de Autenticação"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Os aplicativos de autenticação e extensões de navegador, como 1Password, Authy, Microsoft Authenticator, etc., geram senhas de uso único que são usadas como um segundo fator para verificar sua identidade quando solicitado durante o login."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "URI autorizada"
msgid "Authorized URL copied to clipboard"
msgstr "URL autorizada copiada para a área de transferência"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "eliminar"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Grupo"
msgid "Group by"
msgstr "Agrupar por"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Remover variável"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Alguns"
msgid "Some folders"
msgstr "Algumas pastas"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Aplicație de autentificare"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Aplicațiile de autentificare și extensiile de browser precum 1Password, Authy, Microsoft Authenticator, etc. generează parole unice care sunt utilizate ca al doilea factor pentru a verifica identitatea dumneavoastră atunci când vi se solicită în timpul autentificării."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "URI autorizat"
msgid "Authorized URL copied to clipboard"
msgstr "URL-ul autorizat copiat în clipboard"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "șterge"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Grup"
msgid "Group by"
msgstr "Grupare după"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Elimină variabila"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Câteva"
msgid "Some folders"
msgstr "Unele foldere"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
Binary file not shown.
@@ -2088,6 +2088,11 @@ msgstr "Апликација за аутентификацију"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Апликације за аутентификацију и проширења за претраживаче као што су 1Password, Authy, Microsoft Authenticator, итд. генеришу једнократне лозинке које се користе као други фактор за проверу вашег идентитета приликом пријаве."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Ауторизован URI"
msgid "Authorized URL copied to clipboard"
msgstr "Ауторизовани URL копиран у клипборд"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "обриши"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Група"
msgid "Group by"
msgstr "Групиши по"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Уклони променљиву"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Неки"
msgid "Some folders"
msgstr "Неке фасцикле"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Autentiseringsapp"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Autentiseringsappar och webbläsartillägg som 1Password, Authy, Microsoft Authenticator, etc. genererar engångslösenord som används som en andra faktor för att verifiera din identitet vid inloggning."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Auktoriserad URI"
msgid "Authorized URL copied to clipboard"
msgstr "Auktoriserad URL kopierad till urklipp"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "ta bort"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Gruppera"
msgid "Group by"
msgstr "Gruppera efter"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10855,6 +10871,7 @@ msgid "Remove variable"
msgstr "Ta bort variabel"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12240,6 +12257,11 @@ msgstr "Vissa"
msgid "Some folders"
msgstr "Vissa mappar"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13585,6 +13607,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Doğrulama Uygulaması"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "1Password, Authy, Microsoft Authenticator gibi doğrulama uygulamaları ve tarayıcı eklentileri, oturum açma sırasında kimliğinizi doğrulamak için ikinci faktör olarak kullanılan tek seferlik şifreler üretir."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Yetkilendirilmiş URI"
msgid "Authorized URL copied to clipboard"
msgstr "Yetkilendirilmiş URL panoya kopyalandı"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "sil"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Grup"
msgid "Group by"
msgstr "Grupla"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Değişkeni kaldır"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Bazı"
msgid "Some folders"
msgstr "Bazı klasörler"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Додаток для аутентифікації"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Додатки для аутентифікації та розширення для браузерів, такі як 1Password, Authy, Microsoft Authenticator тощо, генерують одноразові паролі, які використовуються як другий фактор для перевірки вашої особи, коли це запитується під час входу."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "Авторизований URI"
msgid "Authorized URL copied to clipboard"
msgstr "Авторизований URL скопійовано в буфер обміну"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "видалити"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Група"
msgid "Group by"
msgstr "Групувати за"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Вилучити змінну"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Деякі"
msgid "Some folders"
msgstr "Деякі папки"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13573,6 +13595,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "Ứng dụng Xác thực"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "Các ứng dụng xác thực và tiện ích mở rộng trình duyệt như 1Password, Authy, Microsoft Authenticator, v.v... tạo mã một lần dùng làm yếu tố thứ hai để xác minh danh tính của bạn khi được yêu cầu trong quá trình đăng nhập."
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "URI được ủy quyền"
msgid "Authorized URL copied to clipboard"
msgstr "URL được ủy quyền đã được sao chép vào bảng tạm"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "xóa"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "Nhóm"
msgid "Group by"
msgstr "Nhóm theo"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "Xóa biến"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "Một số"
msgid "Some folders"
msgstr "Một số thư mục"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "身份验证器应用"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "身份验证器应用和浏览器扩展程序(例如1Password、Authy、Microsoft Authenticator等)生成的动态密码作为第二个验证因素在登录时使用,以验证您的身份。"
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "授权 URI"
msgid "Authorized URL copied to clipboard"
msgstr "授权 URL 已复制到剪贴板"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "删除"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "分组"
msgid "Group by"
msgstr "分组依据"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "移除变量"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "一些"
msgid "Some folders"
msgstr "某些文件夹"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -2088,6 +2088,11 @@ msgstr "身份驗證器應用程式"
msgid "Authenticator apps and browser extensions like 1Password, Authy, Microsoft Authenticator, etc. generate one-time passwords that are used as a second factor to verify your identity when prompted during sign-in."
msgstr "像 1Password、Authy、Microsoft Authenticator 等身份驗證器應用程式和瀏覽器擴充功能會生成用於二次驗證您的身份的單次密碼,這些密碼會在登錄時要求您輸入。"
#. js-lingui-id: SIFUTh
#: src/pages/auth/Authorize.tsx
msgid "Authorization failed. Please try again."
msgstr ""
#. js-lingui-id: yIVrHZ
#: src/pages/auth/Authorize.tsx
msgid "Authorize"
@@ -2103,6 +2108,11 @@ msgstr "授權 URI"
msgid "Authorized URL copied to clipboard"
msgstr "授權 URL 已複製到剪貼板"
#. js-lingui-id: 8RmQki
#: src/pages/auth/Authorize.tsx
msgid "Authorizing..."
msgstr ""
#. js-lingui-id: 2zJkmL
#: src/modules/settings/accounts/components/SettingsAccountsCalendarChannelDetails.tsx
msgid "Auto-creation"
@@ -4165,6 +4175,7 @@ msgstr "刪除"
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminQueueJobRowDropdownMenu.tsx
#: src/modules/settings/admin-panel/health-status/components/SettingsAdminDeleteJobsConfirmationModal.tsx
#: src/modules/page-layout/widgets/standalone-rich-text/components/DashboardEditorSideMenu.tsx
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsListItem.tsx
#: src/modules/object-record/record-field/ui/meta-types/input/components/MultiItemFieldMenuItem.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
@@ -6652,6 +6663,11 @@ msgstr "群組"
msgid "Group by"
msgstr "分組依據"
#. js-lingui-id: WcF1uL
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupRenameInput.tsx
msgid "Group name"
msgstr ""
#. js-lingui-id: 6JlTu+
#: src/modules/object-record/record-group/components/RecordGroupReorderConfirmationModal.tsx
msgid "Group sorting"
@@ -10853,6 +10869,7 @@ msgid "Remove variable"
msgstr "移除變數"
#. js-lingui-id: 2wxgft
#: src/modules/page-layout/widgets/fields/components/FieldsConfigurationGroupDropdown.tsx
#: src/modules/navigation-menu-item/components/NavigationMenuItemFolderNavigationDrawerItemDropdown.tsx
#: src/modules/favorites/components/FavoriteFolderNavigationDrawerItemDropdown.tsx
#: src/modules/activities/files/components/AttachmentDropdown.tsx
@@ -12236,6 +12253,11 @@ msgstr "一些"
msgid "Some folders"
msgstr "某些資料夾"
#. js-lingui-id: nwtY4N
#: src/pages/auth/Authorize.tsx
msgid "Something went wrong"
msgstr ""
#. js-lingui-id: yHwG3y
#: src/modules/ui/navigation/navigation-drawer/components/NavigationDrawerItem.tsx
#: src/modules/settings/components/SettingsCard.tsx
@@ -13571,6 +13593,11 @@ msgstr ""
msgid "Unable to delete member right now"
msgstr ""
#. js-lingui-id: HSLWzn
#: src/pages/auth/Authorize.tsx
msgid "Unable to load application details. Please try again later."
msgstr ""
#. js-lingui-id: l+ALBd
#: src/modules/client-config/components/ClientConfigProvider.tsx
msgid "Unable to Reach Back-end"
@@ -1,4 +1,4 @@
import { css, useTheme } from '@emotion/react';
import { css } from '@emotion/react';
import styled from '@emotion/styled';
import { useLingui } from '@lingui/react/macro';
import { useCallback, useState } from 'react';
@@ -25,7 +25,13 @@ import { useIsRecordReadOnly } from '@/object-record/read-only/hooks/useIsRecord
import { isRecordFieldReadOnly } from '@/object-record/read-only/utils/isRecordFieldReadOnly';
import { getRecordFieldInputInstanceId } from '@/object-record/utils/getRecordFieldInputId';
import { isDefined } from 'twenty-shared/utils';
import { Chip, ChipAccent, ChipSize, ChipVariant } from 'twenty-ui/components';
import {
AvatarOrIcon,
Chip,
ChipAccent,
ChipSize,
ChipVariant,
} from 'twenty-ui/components';
import { IconCalendarEvent } from 'twenty-ui/display';
import { beautifyPastDateRelativeToNow } from '~/utils/date-utils';
@@ -88,7 +94,6 @@ export const CalendarEventDetails = ({
calendarEvent,
}: CalendarEventDetailsProps) => {
const { t } = useLingui();
const theme = useTheme();
const { objectMetadataItem } = useObjectMetadataItem({
objectNameSingular: CoreObjectNameSingular.CalendarEvent,
});
@@ -202,7 +207,7 @@ export const CalendarEventDetails = ({
size={ChipSize.Large}
variant={ChipVariant.Highlighted}
clickable={false}
leftComponent={<IconCalendarEvent size={theme.icon.size.md} />}
leftComponent={<AvatarOrIcon Icon={IconCalendarEvent} />}
label={t`Event`}
/>
<StyledHeader>
@@ -2,8 +2,9 @@ import { ImageBubbleMenu } from '@/advanced-text-editor/components/ImageBubbleMe
import { LinkBubbleMenu } from '@/advanced-text-editor/components/LinkBubbleMenu';
import { TextBubbleMenu } from '@/advanced-text-editor/components/TextBubbleMenu';
import { FORM_FIELD_PLACEHOLDER_STYLES } from '@/object-record/record-field/ui/form-types/constants/FormFieldPlaceholderStyles';
import styled from '@emotion/styled';
import { styled } from '@linaria/react';
import { EditorContent, type Editor } from '@tiptap/react';
import { themeCssVariables } from 'twenty-ui/theme-constants';
const StyledEditorContainer = styled.div<{
readonly?: boolean;
@@ -24,14 +25,16 @@ const StyledEditorContainer = styled.div<{
}
.tiptap {
padding: ${({ theme }) => `${theme.spacing(1)} ${theme.spacing(2)}`};
padding: ${themeCssVariables.spacing[1]} ${themeCssVariables.spacing[2]};
box-sizing: border-box;
height: 100%;
color: ${({ theme, readonly }) =>
readonly ? theme.font.color.light : theme.font.color.primary};
font-family: ${({ theme }) => theme.font.family};
font-size: ${({ theme }) => theme.font.size.sm};
font-weight: ${({ theme }) => theme.font.weight.regular};
color: ${({ readonly }) =>
readonly
? themeCssVariables.font.color.light
: themeCssVariables.font.color.primary};
font-family: ${themeCssVariables.font.family};
font-size: ${themeCssVariables.font.size.sm};
font-weight: ${themeCssVariables.font.weight.regular};
border: none !important;
p.is-editor-empty:first-of-type::before {
@@ -48,10 +51,10 @@ const StyledEditorContainer = styled.div<{
}
.variable-tag {
background-color: ${({ theme }) => theme.color.blue3};
border-radius: ${({ theme }) => theme.border.radius.sm};
color: ${({ theme }) => theme.color.blue};
padding: ${({ theme }) => theme.spacing(1)};
background-color: ${themeCssVariables.color.blue3};
border-radius: ${themeCssVariables.border.radius.sm};
color: ${themeCssVariables.color.blue};
padding: ${themeCssVariables.spacing[1]};
}
h1 {
@@ -67,7 +70,7 @@ const StyledEditorContainer = styled.div<{
}
li {
margin-bottom: ${({ theme }) => theme.spacing(2)};
margin-bottom: ${themeCssVariables.spacing[2]};
line-height: 1.5;
}
}
@@ -1,7 +1,8 @@
import styled from '@emotion/styled';
import { styled } from '@linaria/react';
import React from 'react';
import type { IconComponent } from 'twenty-ui/display';
import { FloatingIconButton } from 'twenty-ui/input';
import { themeCssVariables } from 'twenty-ui/theme-constants';
type BubbleMenuIconButtonProps = {
className?: string;
@@ -14,9 +15,9 @@ type BubbleMenuIconButtonProps = {
const StyledBubbleMenuIconButton = styled(FloatingIconButton)`
border: none;
border-radius: ${({ theme }) => theme.spacing(1.5)};
width: ${({ theme }) => theme.spacing(6)};
height: ${({ theme }) => theme.spacing(6)};
border-radius: ${themeCssVariables.spacing[1.5]};
width: ${themeCssVariables.spacing[6]};
height: ${themeCssVariables.spacing[6]};
`;
export const BubbleMenuIconButton = ({
@@ -3,7 +3,7 @@ import { EditLinkPopover } from '@/advanced-text-editor/components/EditLinkPopov
import { TurnIntoBlockDropdown } from '@/advanced-text-editor/components/TurnIntoBlockDropdown';
import { useTextBubbleState } from '@/advanced-text-editor/hooks/useTextBubbleState';
import { isTextSelected } from '@/advanced-text-editor/utils/isTextSelected';
import styled from '@emotion/styled';
import { styled } from '@linaria/react';
import { type Editor } from '@tiptap/core';
import { BubbleMenu } from '@tiptap/react/menus';
import {
@@ -14,13 +14,15 @@ import {
IconStrikethrough,
IconUnderline,
} from 'twenty-ui/display';
import { themeCssVariables } from 'twenty-ui/theme-constants';
export const StyledBubbleMenuContainer = styled.div`
backdrop-filter: blur(20px);
background-color: ${({ theme }) => theme.background.primary};
border-radius: ${({ theme }) => theme.border.radius.md};
box-shadow: ${({ theme }) =>
`0px 2px 4px 0px ${theme.background.transparent.light}, 0px 0px 4px 0px ${theme.background.transparent.medium}`};
background-color: ${themeCssVariables.background.primary};
border-radius: ${themeCssVariables.border.radius.md};
box-shadow:
0px 2px 4px 0px ${themeCssVariables.background.transparent.light},
0px 0px 4px 0px ${themeCssVariables.background.transparent.medium};
display: inline-flex;
gap: 2px;
padding: 2px;
@@ -3,32 +3,33 @@ import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent';
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { useToggleDropdown } from '@/ui/layout/dropdown/hooks/useToggleDropdown';
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { styled } from '@linaria/react';
import { t } from '@lingui/core/macro';
import { type Editor } from '@tiptap/react';
import { useId } from 'react';
import { useContext, useId } from 'react';
import { IconPilcrow } from 'twenty-ui/display';
import { MenuItem } from 'twenty-ui/navigation';
import { ThemeContext } from 'twenty-ui/theme';
import { themeCssVariables } from 'twenty-ui/theme-constants';
const StyledMenuItem = styled.button`
align-items: center;
background: none;
border: none;
color: ${({ theme }) => theme.font.color.tertiary};
color: ${themeCssVariables.font.color.tertiary};
cursor: pointer;
display: flex;
font-size: ${({ theme }) => theme.font.size.sm};
font-weight: ${({ theme }) => theme.font.weight.regular};
font-size: ${themeCssVariables.font.size.sm};
font-weight: ${themeCssVariables.font.weight.regular};
gap: 4px;
height: ${({ theme }) => theme.spacing(6)};
height: ${themeCssVariables.spacing[6]};
padding: 0;
width: 100%;
padding: 0 ${({ theme }) => theme.spacing(1.5)};
border-radius: ${({ theme }) => theme.spacing(1.5)};
padding: 0 ${themeCssVariables.spacing[1.5]};
border-radius: ${themeCssVariables.spacing[1.5]};
:hover {
background: ${({ theme }) => theme.background.transparent.medium};
background: ${themeCssVariables.background.transparent.medium};
}
:focus {
@@ -43,7 +44,7 @@ type TurnIntoBlockDropdownProps = {
export const TurnIntoBlockDropdown = ({
editor,
}: TurnIntoBlockDropdownProps) => {
const theme = useTheme();
const { theme } = useContext(ThemeContext);
const instanceId = useId();
const dropdownId = `turn-into-block-dropdown-${instanceId}`;
@@ -1,11 +1,13 @@
import { getFileType } from '@/activities/files/utils/getFileType';
import { useFileCategoryColors } from '@/file/hooks/useFileCategoryColors';
import { IconMapping } from '@/file/utils/fileIconMappings';
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { styled } from '@linaria/react';
import { useContext } from 'react';
import { type WorkflowAttachment } from 'twenty-shared/workflow';
import { AvatarChip } from 'twenty-ui/components';
import { AvatarOrIcon } from 'twenty-ui/components';
import { IconX } from 'twenty-ui/display';
import { ThemeContext } from 'twenty-ui/theme';
import { themeCssVariables } from 'twenty-ui/theme-constants';
type WorkflowAttachmentChipProps = {
file: WorkflowAttachment;
@@ -15,20 +17,20 @@ type WorkflowAttachmentChipProps = {
const StyledChip = styled.div<{ deletable: boolean }>`
align-items: center;
background-color: ${({ theme }) => theme.background.transparent.light};
border: 1px solid ${({ theme }) => theme.border.color.medium};
border-radius: ${({ theme }) => theme.border.radius.sm};
column-gap: ${({ theme }) => theme.spacing(1)};
background-color: ${themeCssVariables.background.transparent.light};
border: 1px solid ${themeCssVariables.border.color.medium};
border-radius: ${themeCssVariables.border.radius.sm};
column-gap: ${themeCssVariables.spacing[1]};
display: inline-flex;
flex-direction: row;
flex-shrink: 0;
max-width: 140px;
padding-left: ${({ theme }) => theme.spacing(1)};
padding-left: ${themeCssVariables.spacing[1]};
`;
const StyledLabel = styled.span`
color: ${({ theme }) => theme.font.color.primary};
font-size: ${({ theme }) => theme.font.size.sm};
color: ${themeCssVariables.font.color.primary};
font-size: ${themeCssVariables.font.size.sm};
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
@@ -43,18 +45,18 @@ const StyledDelete = styled.button`
margin: 0;
padding: 0;
cursor: pointer;
font-size: ${({ theme }) => theme.font.size.sm};
font-size: ${themeCssVariables.font.size.sm};
user-select: none;
flex-shrink: 0;
background: none;
border: none;
color: ${({ theme }) => theme.font.color.tertiary};
border-top-right-radius: ${({ theme }) => theme.border.radius.sm};
border-bottom-right-radius: ${({ theme }) => theme.border.radius.sm};
color: ${themeCssVariables.font.color.tertiary};
border-top-right-radius: ${themeCssVariables.border.radius.sm};
border-bottom-right-radius: ${themeCssVariables.border.radius.sm};
&:hover {
background-color: ${({ theme }) => theme.background.transparent.medium};
color: ${({ theme }) => theme.font.color.primary};
background-color: ${themeCssVariables.background.transparent.medium};
color: ${themeCssVariables.font.color.primary};
}
`;
@@ -64,11 +66,11 @@ export const WorkflowAttachmentChip = ({
readonly = false,
}: WorkflowAttachmentChipProps) => {
const iconColors = useFileCategoryColors();
const theme = useTheme();
const { theme } = useContext(ThemeContext);
return (
<StyledChip data-chip deletable={!readonly}>
<AvatarChip
<AvatarOrIcon
Icon={IconMapping[getFileType(file.name)]}
IconBackgroundColor={iconColors[getFileType(file.name)]}
/>
@@ -2,13 +2,14 @@ import { WorkflowAttachmentChip } from '@/advanced-text-editor/components/Workfl
import { useUploadWorkflowFile } from '@/advanced-text-editor/hooks/useUploadWorkflowFile';
import { InputLabel } from '@/ui/input/components/InputLabel';
import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { styled } from '@linaria/react';
import { useLingui } from '@lingui/react/macro';
import { type ChangeEvent, useRef } from 'react';
import { type ChangeEvent, useContext, useRef } from 'react';
import { isDefined } from 'twenty-shared/utils';
import { type WorkflowAttachment } from 'twenty-shared/workflow';
import { IconUpload } from 'twenty-ui/display';
import { ThemeContext } from 'twenty-ui/theme';
import { themeCssVariables } from 'twenty-ui/theme-constants';
type WorkflowSendEmailAttachmentsProps = {
files: WorkflowAttachment[];
@@ -26,21 +27,21 @@ const StyledFileInput = styled.input`
`;
const StyledUploadArea = styled.div<{ hasFiles: boolean }>`
background-color: ${({ theme }) => theme.background.transparent.lighter};
border: 1px solid ${({ theme }) => theme.border.color.medium};
border-radius: ${({ theme }) => theme.border.radius.sm};
background-color: ${themeCssVariables.background.transparent.lighter};
border: 1px solid ${themeCssVariables.border.color.medium};
border-radius: ${themeCssVariables.border.radius.sm};
display: flex;
flex-direction: column;
min-height: ${({ hasFiles }) => (hasFiles ? 'auto' : '24px')};
justify-content: center;
padding-top: ${({ theme }) => theme.spacing(1)};
padding-bottom: ${({ theme }) => theme.spacing(1)};
padding-left: ${({ theme }) => theme.spacing(2)};
padding-right: ${({ theme }) => theme.spacing(2)};
padding-top: ${themeCssVariables.spacing[1]};
padding-bottom: ${themeCssVariables.spacing[1]};
padding-left: ${themeCssVariables.spacing[2]};
padding-right: ${themeCssVariables.spacing[2]};
&:hover {
background-color: ${({ theme }) => theme.background.transparent.light};
border-color: ${({ theme }) => theme.border.color.strong};
background-color: ${themeCssVariables.background.transparent.light};
border-color: ${themeCssVariables.border.color.strong};
}
`;
@@ -48,17 +49,17 @@ const StyledChipsContainer = styled.div`
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: ${({ theme }) => theme.spacing(1)};
gap: ${themeCssVariables.spacing[1]};
`;
const StyledUploadAreaLabel = styled.div`
justify-content: center;
color: ${({ theme }) => theme.font.color.tertiary};
color: ${themeCssVariables.font.color.tertiary};
display: flex;
font-size: ${({ theme }) => theme.font.size.sm};
font-weight: ${({ theme }) => theme.font.weight.medium};
color: ${({ theme }) => theme.font.color.secondary};
gap: ${({ theme }) => theme.spacing(1)};
font-size: ${themeCssVariables.font.size.sm};
font-weight: ${themeCssVariables.font.weight.medium};
color: ${themeCssVariables.font.color.secondary};
gap: ${themeCssVariables.spacing[1]};
`;
export const WorkflowSendEmailAttachments = ({
@@ -69,7 +70,7 @@ export const WorkflowSendEmailAttachments = ({
const fileInputRef = useRef<HTMLInputElement>(null);
const { uploadWorkflowFile } = useUploadWorkflowFile();
const { t } = useLingui();
const theme = useTheme();
const { theme } = useContext(ThemeContext);
const handleAddFileClick = (e: React.MouseEvent) => {
const target = e.target as HTMLElement;
@@ -1,29 +1,26 @@
import { css } from '@emotion/react';
import styled from '@emotion/styled';
import { styled } from '@linaria/react';
import { type NodeViewProps, NodeViewWrapper } from '@tiptap/react';
import React, { useCallback, useRef, useState } from 'react';
import { isDefined } from 'twenty-shared/utils';
import { themeCssVariables } from 'twenty-ui/theme-constants';
const IMAGE_MIN_WIDTH = 32;
const IMAGE_MAX_WIDTH = 600;
const StyledNodeViewWrapper = styled(NodeViewWrapper)`
const StyledNodeViewWrapperContainer = styled.div<{
align?: string;
}>`
height: 100%;
${({ align }) => {
switch (align) {
case 'left':
return css`
margin-left: 0;
`;
return 'margin-left: 0;';
case 'right':
return css`
margin-right: 0;
`;
return 'margin-right: 0;';
case 'center':
return css`
margin-left: auto;
margin-right: auto;
`;
return 'margin-left: auto; margin-right: auto;';
default:
return '';
}
}}
`;
@@ -43,28 +40,21 @@ const StyledImage = styled.img`
`;
const StyledImageHandle = styled.div<{ handle: 'left' | 'right' }>`
border-radius: ${({ theme }) => theme.border.radius.md};
background-color: ${({ theme }) => theme.background.primaryInverted};
border: 1px solid ${({ theme }) => theme.background.primary};
border-radius: ${themeCssVariables.border.radius.md};
background-color: ${themeCssVariables.background.primaryInverted};
border: 1px solid ${themeCssVariables.background.primary};
cursor: col-resize;
height: ${({ theme }) => theme.spacing(8)};
height: ${themeCssVariables.spacing[8]};
position: absolute;
top: 50%;
transform: translateY(-50%);
width: ${({ theme }) => theme.spacing(2)};
width: ${themeCssVariables.spacing[2]};
z-index: 1;
${({ handle, theme }) => {
if (handle === 'left') {
return css`
left: ${theme.spacing(1)};
`;
}
return css`
right: ${theme.spacing(1)};
`;
}}
${({ handle }) =>
handle === 'left'
? `left: ${themeCssVariables.spacing[1]};`
: `right: ${themeCssVariables.spacing[1]};`}
`;
type ResizeParams = {
@@ -179,37 +169,38 @@ export const ResizableImageView = (props: ResizableImageViewProps) => {
}, []);
return (
<StyledNodeViewWrapper
onMouseEnter={handleImageHover}
onMouseLeave={handleImageHoverEnd}
align={align}
>
<StyledImageWrapper
ref={imageWrapperRef}
style={{ width: width ? `${width}px` : 'fit-content' }}
<NodeViewWrapper>
<StyledNodeViewWrapperContainer
onMouseEnter={handleImageHover}
onMouseLeave={handleImageHoverEnd}
align={align}
>
<StyledImageContainer>
<StyledImage
src={src}
alt={alt}
draggable={false}
contentEditable={false}
/>
{/* Show resize handles when hovering over image OR actively resizing */}
{(isHovering || isDefined(resizeParams)) && (
<>
<StyledImageHandle
handle="left"
onMouseDown={(e) => handleImageHandleMouseDown('left', e)}
/>
<StyledImageHandle
handle="right"
onMouseDown={(e) => handleImageHandleMouseDown('right', e)}
/>
</>
)}
</StyledImageContainer>
</StyledImageWrapper>
</StyledNodeViewWrapper>
<StyledImageWrapper
ref={imageWrapperRef}
style={{ width: width ? `${width}px` : 'fit-content' }}
>
<StyledImageContainer>
<StyledImage
src={src}
alt={alt}
draggable={false}
contentEditable={false}
/>
{(isHovering || isDefined(resizeParams)) && (
<>
<StyledImageHandle
handle="left"
onMouseDown={(e) => handleImageHandleMouseDown('left', e)}
/>
<StyledImageHandle
handle="right"
onMouseDown={(e) => handleImageHandleMouseDown('right', e)}
/>
</>
)}
</StyledImageContainer>
</StyledImageWrapper>
</StyledNodeViewWrapperContainer>
</NodeViewWrapper>
);
};
@@ -2,7 +2,7 @@ import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadata
import { getLinkToShowPage } from '@/object-metadata/utils/getLinkToShowPage';
import { t } from '@lingui/core/macro';
import { isNonEmptyString } from '@sniptt/guards';
import { AvatarChip, ChipVariant, LinkChip } from 'twenty-ui/components';
import { AvatarOrIcon, ChipVariant, LinkChip } from 'twenty-ui/components';
type RecordLinkProps = {
objectNameSingular: string;
@@ -34,7 +34,7 @@ export const RecordLink = ({
to={linkToShowPage}
variant={ChipVariant.Highlighted}
leftComponent={
<AvatarChip
<AvatarOrIcon
placeholder={displayName}
placeholderColorSeed={recordId}
avatarType="rounded"
@@ -6,7 +6,12 @@ import { useTheme } from '@emotion/react';
import { t } from '@lingui/core/macro';
import { type FileUIPart } from 'ai';
import { isDefined } from 'twenty-shared/utils';
import { AvatarChip, Chip, ChipVariant, LinkChip } from 'twenty-ui/components';
import {
AvatarOrIcon,
Chip,
ChipVariant,
LinkChip,
} from 'twenty-ui/components';
import { type IconComponent, IconX } from 'twenty-ui/display';
import { Loader } from 'twenty-ui/feedback';
@@ -36,21 +41,22 @@ export const AgentChatFilePreview = ({
const leftComponent = isUploading ? (
<Loader color="yellow" />
) : (
<AvatarChip
<AvatarOrIcon
Icon={FileCategoryIcon}
IconBackgroundColor={iconBackgroundColor}
/>
);
const rightComponent = onRemove ? (
<AvatarChip
<AvatarOrIcon
Icon={IconX}
IconColor={theme.font.color.secondary}
onClick={onRemove}
divider="left"
/>
) : undefined;
const hasRightDivider = isDefined(onRemove);
if (isDefined(fileUrl)) {
return (
<LinkChip
@@ -61,6 +67,7 @@ export const AgentChatFilePreview = ({
target="_blank"
leftComponent={leftComponent}
rightComponent={rightComponent}
rightComponentDivider={hasRightDivider}
/>
);
}
@@ -73,6 +80,7 @@ export const AgentChatFilePreview = ({
clickable={false}
leftComponent={leftComponent}
rightComponent={rightComponent}
rightComponentDivider={hasRightDivider}
/>
);
};
@@ -8,12 +8,13 @@ import { useCurrentMetered } from '@/billing/hooks/useCurrentMetered';
import { useGetWorkflowNodeExecutionUsage } from '@/billing/hooks/useGetWorkflowNodeExecutionUsage';
import { useNumberFormat } from '@/localization/hooks/useNumberFormat';
import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
import { useTheme } from '@emotion/react';
import { t } from '@lingui/core/macro';
import { useContext } from 'react';
import { formatToShortNumber } from 'twenty-shared/utils';
import { H2Title, HorizontalSeparator } from 'twenty-ui/display';
import { ProgressBar } from 'twenty-ui/feedback';
import { Section } from 'twenty-ui/layout';
import { ThemeContext } from 'twenty-ui/theme';
import { SubscriptionStatus } from '~/generated-metadata/graphql';
export const SettingsBillingCreditsSection = ({
@@ -59,7 +60,7 @@ export const SettingsBillingCreditsSection = ({
currentBillingSubscription.interval,
);
const theme = useTheme();
const { theme } = useContext(ThemeContext);
return (
<>

Some files were not shown because too many files have changed in this diff Show More