36 examples

Duplicate key error

Duplicate entry violates database uniqueness constraints.

[ FAQ1 ]

What is a duplicate key error?

A duplicate key error happens when a database insertion or update operation tries to introduce a record whose key value (primary key or unique field) is identical to an existing record. Relational databases, such as MySQL, display this as an error message like "SQL error 1062," while MongoDB shows a similar error code "E11000." This error is triggered by database constraints enforcing uniqueness to prevent data duplication. Duplicate key errors indicate application logic issues or data validation shortcomings, potentially causing transactional failures, data integrity concerns, or unexpected behavior.
[ FAQ2 ]

How to fix duplicate key errors

To fix duplicate key errors, verify and enforce proper validation of data before database operations. Implement checks within your application to ensure the uniqueness of keys before insertion or updates. Handle exceptions gracefully by catching duplicate key errors explicitly, providing meaningful feedback or fallback actions. For relational databases, you might consider using mechanisms like INSERT IGNORE or ON DUPLICATE KEY UPDATE to handle conflicts gracefully. In MongoDB, consider using upsert operations (update with upsert=true) to manage duplicate key scenarios effectively. Regularly review and validate your schema constraints and application logic to proactively prevent duplicate key conflicts.
diff block
return (
<div className="mt-2 flex min-h-8 items-center px-3">
<Suspense fallback={<Skeleton className="h-4 w-10" />}>
- {pages.map((page) => (
- <Badge
- key={page.key}
- variant="outline"
- className="mr-2 flex items-center"
- >
- {page.key === "group" && (
- <GroupBreadcrumbs {...page.params} />
+ {pages.map((page, index) => (
+ <Fragment key={page.key}>
+ {index > 0 && (
+ <Icon
+ icon={faAngleRight}
+ className="mr-2 size-3 text-muted-foreground"
+ />
)}
- {page.key === "project" && (
- <ProjectBreadcrumb {...page.params} />
- )}
- {page.key === "environment" && (
- <EnvironmentBreadcrumb {...page.params} />
- )}
- {page.key === "backend" && <BackendBreadcrumb />}
- </Badge>
+ <Badge
+ key={page.key}
Greptile
greptile
logic: Duplicate key prop - already defined on Fragment. Remove key from Badge since Fragment handles it
suggested fix
+ variant="outline"
diff block
-/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"ypz2+E\":[\": Prázdné\"],\"CE75IR\":[\": Budoucnost\"],\"Nk/d+Z\":[\": Ne\"],\"1ORnec\":[\": Není prázdný\"],\"11QpPG\":[\": Není null\"],\"gK4ysT\":[\": Minulost\"],\"4iJDkt\":[\": Dnes\"],\"ROdDR9\":[[\"aggregateLabel\"],\" z \",[\"fieldLabel\"]],\"uogEAL\":[[\"apiKeyName\"],\" API klíč\"],\"6j5rE1\":[[\"name\"]],\"WN9tFl\":[[\"workspaceMemberName\"],\" bude odebrán z následující role:\"],\"YT0WJ4\":[\"1 000 spuštění uzlů Workflow\"],\"vb5TwV\":[\"1. Vyberte typ pole\"],\"SLjiTq\":[\"1. Typ\"],\"4EdXYs\":[\"12h (\",[\"hour12Label\"],\")\"],\"yXvRMf\":[\"2. Nakonfigurujte\"],\"0HAF12\":[\"2. Nakonfigurujte pole\"],\"QsMprd\":[\"24h (\",[\"hour24Label\"],\")\"],\"nMTB1f\":[\"Sdílené prostředí, ve kterém budete moci spravovat vztahy se zákazníky se svým týmem.\"],\"09tRFp\":[\"Možnost interakce s každým objektem\"],\"ssjjFt\":[\"Přerušit\"],\"uyJsf6\":[\"O aplikaci\"],\"AeXO77\":[\"Účet\"],\"nD0Y+a\":[\"Smazání účtu\"],\"bPwFdf\":[\"Účty\"],\"7L01XJ\":[\"Akce\"],\"FQBaXG\":[\"Aktivovat\"],\"tu8A/k\":[\"Aktivovat Workflow\"],\"F6pfE9\":[\"Aktivní\"],\"Mue4oc\":[\"Aktivní API klíče vytvořené vámi nebo vaším týmem.\"],\"m16xKo\":[\"Přidat\"],\"MPPZ54\":[\"Přidat účet\"],\"HD0x5p\":[\"Přidat schválenou přístupovou doménu\"],\"DpV70M\":[\"Přidat pole\"],\"vCSBPD\":[\"Přidat filtr\"],\"Hkobke\":[\"Přidat nový\"],\"dEO3Zx\":[\"Přidat objekt\"],\"Dl5lVI\":[\"Přidat možnost\"],\"sgXUv+\":[\"Přidat poskytovatele identity SSO\"],\"5+ttxv\":[\"Přidat do seznamu blokovaných\"],\"yVOmgE\":[\"Přidat do oblíbených\"],\"pBsoKL\":[\"Přidat do oblíbených\"],\"q9e2Bs\":[\"Přidat zobrazení\"],\"m2qDV8\":[\"Přidejte svůj první \",[\"objectLabel\"]],\"vLO+NG\":[\"Přidáno \",[\"beautifiedCreatedAt\"]],\"jEHeq+\":[\"Přidáno \",[\"beautifyPastDateRelative\"]],\"9iIYOy\":[\"Přidáno do blokovaného seznamu\"],\"Eis4ey\":[\"Upravit nastavení související s rolí\"],\"tMFFwF\":[\"Pokročilý filtr\"],\"1Cox/a\":[\"Afrikánština\"],\"N40H+G\":[\"Vše\"],\"3saA7W\":[\"Vše (\",[\"relationRecordsCount\"],\")\"],\"9ljU00\":[\"Všechny akce\"],\"7EZqN0\":[\"Všechny e-maily a události spojené s tímto účtem budou smazány\"],\"623MHa\":[\"Všechny řádky\"],\"aFE/OW\":[\"Všechny objekty\"],\"Hm90t3\":[\"Všechny role\"],\"GMx1K0\":[\"Povolit přihlašování prostřednictvím jednotného přihlášení Google.\"],\"dea+zy\":[\"Povolit přihlašování prostřednictvím jednotného přihlášení Microsoft.\"],\"wMg43c\":[\"Umožnit pozvání nových uživatelů sdílením odkazu na pozvánku.\"],\"vHeVg5\":[\"Povolit uživatelům přihlášení pomocí e-mailu a hesla.\"],\"LG4K0m\":[\"Při aktualizaci hesla došlo k chybě\"],\"mJ6m4C\":[\"Volitelný popis\"],\"HZFm5R\":[\"a\"],\"xJR+Wq\":[\"Kdokoli s e-mailovou adresou na těchto doménách se může přihlásit do tohoto pracovního prostoru.\"],\"0RqpZr\":[\"API & Webhooks\"],\"yRnk5W\":[\"API klíč\"],\"r+NRG6\":[\"Klíč API zkopírován do schránky\"],\"5h8ooz\":[\"API klíče\"],\"kAtj+q\":[\"Název API\"],\"lwCAhN\":[\"Název API (množné číslo)\"],\"KclpRp\":[\"API název (jednotné číslo)\"],\"Z3Brb2\":[\"Hodnoty API\"],\"aAIQg2\":[\"Vzhled\"],\"9tggYj\":[\"Schválené domény\"],\"1844JP\":[\"Approved Email Domain\"],\"8HV3WN\":[\"Arabština\"],\"3iX0kh\":[\"Jste si jisti, že chcete změnit interval fakturace?\"],\"3SRf5B\":[\"Are you sure you want to assign this role?\"],\"8Y3Jbl\":[\"Jste si jisti, že chcete smazat tyto záznamy? Můžete je obnovit z nabídky Příkaz (\",[\"osControlSymbol\"],\" + K).\"],\"Se0vJw\":[\"Jste si jisti, že chcete smazat tento záznam? Můžete jej obnovit z nabídky Příkaz (\",[\"osControlSymbol\"],\" + K).\"],\"nYD/Cq\":[\"Vzestupně\"],\"9ch9Mz\":[\"Přiřadit uživatele \",[\"workspaceMemberName\"],\"?\"],\"rfYmIr\":[\"Přiřaďte role pro specifikaci přístupových oprávnění každého člena\"],\"2y2quh\":[\"Přiřadit členu\"],\"OItM/o\":[\"Přiřazení členové\"],\"lxQ+5m\":[\"Přiřazeno\"],\"0dtKl9\":[\"Přiřazení\"],\"H8QGSx\":[\"Délka alespoň 8 znaků.\"],\"Y7Dx6e\":[\"Musí být povolena alespoň jedna metoda ověření\"],\"P8fBlG\":[\"Ověření\"],\"htuqBH\":[\"Ověření selhalo\"],\"yIVrHZ\":[\"Autorizovat\"],\"wTBNbL\":[\"Autorizované URI\"],\"Ovw0c6\":[\"Autorizovaná URL zkopírována do schránky\"],\"2zJkmL\":[\"Automatické vytváření\"],\"YRT7ZW\":[\"Automaticky vytvářet kontakty pro osoby, se kterými jste se zúčastnil(a) události.\"],\"lgw3U4\":[\"Automaticky vytvářet kontakty pro lidi.\"],\"RpExX0\":[\"Automaticky vytvářet záznamy lidí při přijímání nebo odesílání emailů\"],\"3uQmjD\":[\"Průměrně\"],\"Dht9W3\":[\"Zpět k obsahu\"],\"R+w/Va\":[\"Fakturace\"],\"K1172m\":[\"Blacklist\"],\"2yl5lQ\":[\"Objednat hovor\"],\"8Pfllj\":[\"Použitím Twenty souhlasíte s\"],\"PmmvzS\":[\"Spočítat\"],\"AjVXBS\":[\"Kalendář\"],\"wLtx+m\":[\"Nastavení kalendáře\"],\"EUpfsd\":[\"Kalendáře\"],\"dEgA5A\":[\"Storno\"],\"0TllC8\":[\"Kdykoliv možno zrušit\"],\"rRK/Lf\":[\"Zrušit plán\"],\"N6gPiD\":[\"Zrušit vaše předplatné\"],\"M1RLfx\":[\"Katalánština\"],\"OfzMnb\":[\"Změnit \",[\"to\"]],\"VhMDMg\":[\"Změnit heslo\"],\"SviKkE\":[\"Čínština — zjednodušená\"],\"dzb4Ep\":[\"Čínština — tradiční\"],\"JEFFOR\":[\"Vyberte objekt\"],\"Qz73jD\":[\"Vyberte mezi protokoly OIDC a SAML\"],\"YcrXB2\":[\"Vyberte výchozí měnu, která se použije\"],\"LHce7q\":[\"Vyberte pole, která budou identifikovat vaše záznamy\"],\"KT6rEB\":[\"Vyberte svého poskytovatele\"],\"9qP96p\":[\"Vyberte si Trial\"],\"xCJdfg\":[\"Vymazat\"],\"b9Y4up\":[\"ID klienta\"],\"Bdj4LI\":[\"Klientský tajný klíč\"],\"XUe4cu\":[\"Nastavení klienta\"],\"yz7wBu\":[\"Zavřít\"],\"qYsAlX\":[\"Zavřít příkazové menu\"],\"H86f9p\":[\"Sbalit\"],\"Xose0w\":[\"Barevný kód\"],\"NM9bMd\":[\"Kompaktní zobrazení\"],\"+zUMwJ\":[\"Nakonfigurujte připojení SSO\"],\"QTNsSm\":[\"Nakonfigurujte a přizpůsobte si předvolby kalendáře.\"],\"aGwm+D\":[\"Nakonfigurujte, jak se mají zobrazovat data v aplikaci\"],\"ghdb7+\":[\"Nakonfigurujte, jak by se měly zobrazovat vaše události ve vašem kalendáři\"],\"Bh4GBD\":[\"Nakonfigurujte nastavení svých e-mailů a kalendáře.\"],\"7VpPHA\":[\"Potvrdit\"],\"D8ATlr\":[\"Připojte nový účet k vašemu pracovnímu prostoru\"],\"Zgi9Fd\":[\"Připojit s Google\"],\"IOfqM8\":[\"Připojit s Microsoft\"],\"9TzudL\":[\"Připojené účty\"],\"Y2y0mC\":[\"Politika automatického vytváření kontaktů\"],\"/5mghO\":[\"Obsahuje\"],\"M73whl\":[\"Kontext\"],\"xGVfLh\":[\"Pokračovat\"],\"RvVi9c\":[\"Pokračovat s e-mailem\"],\"oZyG4C\":[\"Pokračovat s Google\"],\"ztoybH\":[\"Pokračovat s Microsoftem\"],\"u+VWhB\":[\"Zkopírováno do schránky!\"],\"CcGOj+\":[\"Kopilot\"],\"he3ygx\":[\"Kopírovat\"],\"7eVkEH\":[\"Kopírovat odkaz na pozvánku\"],\"y1eoq1\":[\"Kopírovat odkaz\"],\"Ej5euX\":[\"Zkopírujte tento klíč, nebude již znovu viditelný\"],\"wBMjJ2\":[\"Počet\"],\"EkZfen\":[\"Celkový počet\"],\"vQJINq\":[\"Počet prázdných\"],\"DzRsDJ\":[\"Počet neprázdných\"],\"9FZBbf\":[\"Počet unikátních hodnot\"],\"hYgDIe\":[\"Vytvořit\"],\"zNoOC2\":[\"Vytvořte workflow a vraťte se zde pro zobrazení jeho verzí\"],\"uXGLuq\":[\"Vytvořit API klíč\"],\"d0DCww\":[\"Vytvořit nový záznam\"],\"gSyzEV\":[\"Vytvořit profil\"],\"RoyYUE\":[\"Vytvořit roli\"],\"6MP9lc\":[\"Vytvořit výběrové pole\"],\"zt6Erc\":[\"Vytvořit zobrazení\"],\"dkAPxi\":[\"Vytvořit Webhook\"],\"9chYz/\":[\"Vytvořte svůj pracovní prostor\"],\"d+F6q9\":[\"Vytvořeno\"],\"XQ681Q\":[\"Vlastní doména\"],\"1GTWIA\":[\"Vlastní doména aktualizována\"],\"8skTDV\":[\"Vlastní objekty\"],\"qt+EaC\":[\"Přizpůsobit pole dostupná ve zobrazeních \",[\"objectLabelSingular\"],\".\"],\"CMhr4u\":[\"Přizpůsobit doménu\"],\"RP2we8\":[\"Přizpůsobit pole\"],\"bCJa9l\":[\"Přizpůsobit zabezpečení vašeho pracovního prostoru\"],\"w9VTXG\":[\"Čeština\"],\"Zz6Cxn\":[\"Nebezpečná zóna\"],\"Fo2vDn\":[\"Dánština\"],\"pvnfJD\":[\"Tmavý\"],\"TtG/MN\":[\"Smazání dat\"],\"5cNMFz\":[\"Datový model\"],\"r+cVRP\":[\"Datový typ\"],\"mYGY3B\":[\"Datum\"],\"Ud9zHv\":[\"Datum a čas\"],\"Lhd0oQ\":[\"Formát data\"],\"5y3O+A\":[\"Deaktivovat\"],\"qk4i22\":[\"Deaktivujte \\\"Synchronizace štítků objektů a API názvů\\\" pro nastavení vlastního API názvu\"],\"T2YbXF\":[\"Deaktivovat objekt\"],\"gexAq8\":[\"Deaktivovat toto pole\"],\"4tpC8V\":[\"Deaktivovat Workflow\"],\"yAT3be\":[\"Deaktivováno\"],\"mC21D6\":[\"Výchozí země\"],\"4zuPQL\":[\"Výchozí číselný kód země\"],\"aQ8swY\":[\"Výchozí hodnota\"],\"Y2ImVJ\":[\"Definujte název a popis vašeho objektu\"],\"bQkkFU\":[\"Definujte, co bude viditelné pro ostatní uživatele ve vaší pracovní oblasti\"],\"cnGeoo\":[\"Smazat\"],\"ZDGm40\":[\"Smazat účet\"],\"gAz0S5\":[\"Smazat účet a veškerá související data\"],\"hGfWDm\":[\"Smazat API klíč\"],\"4dpwsE\":[\"Smazat záznam\"],\"kf0A63\":[\"Smazat záznamy\"],\"T6S2Ns\":[\"Smazat tuto integraci\"],\"snMaH4\":[\"Smazat Webhook\"],\"UA2IpC\":[\"Smazat pracovní postup\"],\"ABwG9x\":[\"Smazat pracovní postupy\"],\"kYu0eF\":[\"Smazat pracovní prostor\"],\"mk2Ygs\":[\"Smazat celý pracovní prostor\"],\"vGjmyl\":[\"Smazáno\"],\"kcGoDz\":[\"Deleted \",[\"objectNamePlural\"]],\"WH/5rN\":[\"Smazané záznamy\"],\"/TC7qI\":[\"Smazané běhy\"],\"Wj5mzm\":[\"Smazané verze\"],\"gw3Tlm\":[\"Smazané pracovní postupy\"],\"Cko536\":[\"Sestupně\"],\"Nu4oKW\":[\"Popis\"],\"2xxBws\":[\"\\\"\\\"\"],\"n+SX4g\":[\"Vývojáři\"],\"zAg2B9\":[\"Zrušit koncept\"],\"Xm/s+u\":[\"Zobrazit\"],\"8Vg8H7\":[\"Zobrazit jako obyčejné číslo nebo procento\"],\"i66xz9\":[\"Zobrazit jako relativní datum\"],\"GoHpxA\":[\"Zobrazit text na více řádcích\"],\"U9q4zF\":[\"Neobsahuje\"],\"EoKe5U\":[\"Doména\"],\"yGpVSw\":[\"Doména úspěšně přidána.\"],\"7kVRe6\":[\"Domény musí být menší než 256 znaků, nesmí obsahovat mezery a nesmí obsahovat žádné speciální znaky.\"],\"KUxVkp\":[\"Nevytvářet automaticky kontakty.\"],\"cx0Ws8\":[\"Nevytvářet kontakty z/do Gmailu, Outlook e-mailů\"],\"3qDEYI\":[\"Nesynchronizovat e-maily z team@ support@ noreply@...\"],\"WcWS//\":[\"Stáhnout soubor\"],\"KIjvtr\":[\"Holandština\"],\"QVVmxi\":[\"Např. integrace backoffice\"],\"tOkc8o\":[\"Nejdříve\"],\"JTbQuO\":[\"Nejstarší datum\"],\"ePK91l\":[\"Upravit\"],\"v+uKyy\":[\"Upravit fakturační interval\"],\"9QCQIc\":[\"Upravit hodnoty polí\"],\"oKQ7ls\":[\"Upravit pole\"],\"h2KoTu\":[\"Upravit způsob platby, zobrazit faktury a další\"],\"6o1M/Q\":[\"Upravit název vaší subdomény nebo nastavit vlastní doménu.\"],\"O3oNi5\":[\"E-mail\"],\"2SWjdJ\":[\"Email can not be empty\"],\"unEEog\":[\"Email nesmí být prázdný\"],\"lfQsvW\":[\"Integrace e-mailů\"],\"QT/Wo7\":[\"E-mail nebo doména již je v seznamu blokovaných\"],\"LimKOG\":[\"Ověření e-mailu\"],\"TBv/iZ\":[\"Ověření e-mailu selhalo.\"],\"svTijF\":[\"Odkaz k ověření e-mailu byl znovu odeslán!\"],\"00icDW\":[\"Email ověřen.\"],\"VI2hiF\":[\"E-mail/Doména\"],\"BXEcos\":[\"E-maily\"],\"Ww/M6X\":[\"Nastavení e-mailů\"],\"eXoH4Q\":[\"zaměstnanci\"],\"gqv5ZL\":[\"Zaměstnanci\"],\"N2S1rs\":[\"Prázdné\"],\"T3juzf\":[\"URL koncového bodu\"],\"lYGfRP\":[\"Angličtina\"],\"/bfFKe\":[\"Užijte si \",[\"withCreditCardTrialPeriodDuration\"],\"-denní bezplatnou zkušební dobu\"],\"XJU8BD\":[\"Zadejte údaje pro nastavení připojení\"],\"rGWgcm\":[\"Zadejte informace pro nastavení připojení\"],\"rYIISB\":[\"Zadejte ID uživatele nebo e-mailovou adresu\"],\"GpB8YV\":[\"Podnik\"],\"8PrrNJ\":[\"ID entita zkopírována do schránky\"],\"7RnAWe\":[\"Proměnné prostředí\"],\"XOEl9R\":[\"Chyba při kopírování do schránky\"],\"c3qGJX\":[\"Chyba při odstraňování klíče API: \",[\"err\"]],\"QnVLjD\":[\"Chyba při mazání pozvánky\"],\"cyvTSq\":[\"Chyba při mazání poskytovatele identity SSO\"],\"WEltn2\":[\"Chyba při úpravě poskytovatele identity SSO\"],\"bj7nh3\":[\"Chyba při obnovování klíče API: \",[\"err\"]],\"clfpgU\":[\"Chyba při opětovném odeslání pozvánky\"],\"VSQxWH\":[\"Chyba při přepínání předplatného \",[\"to\"],\".\"],\"JLxMta\":[\"Vytvořte koncové body Webhook pro oznámení o asynchronních událostech.\"],\"poC90w\":[\"Viditelnost událostí\"],\"jvNRZW\":[\"Události, kterých jste se zúčastnili, jsou zobrazeny červeně.\"],\"wqF3jl\":[\"Vše\"],\"QQlMid\":[\"Vyloučit emaily skupin\"],\"+tk2yZ\":[\"Vyloučit nepracovní e-maily\"],\"cIgBjB\":[\"Exclude the following people and domains from my email sync\"],\"yhhfqh\":[\"Vyloučit následující lidi a domény z mé synchronizace emailů. Interní konverzace nebudou importovány\"],\"fV7V51\":[\"Stávající objekty\"],\"IZ4o2e\":[\"Opustit nastavení\"],\"1A3EXy\":[\"Rozbalit\"],\"tXGQvS\":[\"Expected selected node to be a create step node.\"],\"bKBhgb\":[\"Zkušenosti\"],\"LxRNPw\":[\"Platnost\"],\"SkXfL0\":[\"Datum vypršení platnosti\"],\"M1RnFv\":[\"Vypršela platnost\"],\"i9qiyR\":[\"Vyprší za\"],\"GS+Mus\":[\"Exportovat\"],\"G5DJkP\":[\"Exportovat záznam\"],\"ep2rbf\":[\"Export záznamů\"],\"vwtAUW\":[\"Exportovat spuštění\"],\"q46CjD\":[\"Exportovat do PDF\"],\"4FLUle\":[\"Exportovat verze\"],\"DaGxE0\":[\"Exportovat zobrazení\"],\"+FMXdE\":[\"Exportovat pracovní postup\"],\"XcAij/\":[\"Exportovat pracovní postupy\"],\"eWCNmu\":[\"Export Workflows\"],\"ocUvR+\":[\"Nepravdivé\"],\"X9kySA\":[\"Oblíbené\"],\"YXjpZx\":[\"Příznak funkce\"],\"kP/brT\":[\"Příznaky funkcí a Impersonace\"],\"nrXDdR\":[\"Název pole\"],\"zXgopL\":[\"Typ pole\"],\"vF68cg\":[\"Pole\"],\"3w/aqw\":[\"Počet polí\"],\"o7J4JM\":[\"Filtr\"],\"cSev+j\":[\"Filtry\"],\"USZ2N6\":[\"Finština\"],\"ZyIk6Y\":[\"Prvních 10 řádků\"],\"I3hko2\":[\"První 2 řádky\"],\"BDDkm3\":[\"Prvních 5 řádků\"],\"kODvZJ\":[\"Jméno\"],\"glx6on\":[\"Zapomněli jste heslo?\"],\"nLC6tu\":[\"Francouzština\"],\"aTieE0\":[\"z měsíčního na roční\"],\"K04lE5\":[\"z ročního na měsíční\"],\"scmRyR\":[\"Plný přístup\"],\"xANKBj\":[\"Funkce\"],\"Weq9zb\":[\"Obecné\"],\"DDcvSo\":[\"Němčina\"],\"NXEW3h\":[\"Získejte maximum ze svého pracovního prostoru tím, že pozvete svůj tým.\"],\"zSGbaR\":[\"Získejte své předplatné\"],\"2GT3Hf\":[\"Globální\"],\"mT57+Q\":[\"Přejít do nastavení\"],\"hWp1MY\":[\"Twenty podpoře dočasně udělit přístup do vašeho pracovního prostoru, aby bylo možné řešit problémy nebo obnovit obsah za vás. Přístup můžete kdykoli zrušit.\"],\"JXaffl\":[\"Větší než\"],\"CZXzs4\":[\"Řečtina\"],\"ALoP4W\":[\"Skupina podle\"],\"I1IOmb\":[\"Zdravotní stav\"],\"3oTCgM\":[\"Hebrejština\"],\"D+zLDD\":[\"Skrytý\"],\"oK+1Wj\":[\"Skrytá pole\"],\"vLyv1R\":[\"Skrýt\"],\"HS8BG/\":[\"Skrýt prázdné skupiny\"],\"B06Bgk\":[\"Jak budete identifikováni v aplikaci.\"],\"mkWad2\":[\"Maďarština\"],\"wwu18a\":[\"Ikona\"],\"XTWO+W\":[\"Ikona a název\"],\"sJGljQ\":[\"Identifikátor\"],\"06cbfQ\":[\"Poskytovatel identity\"],\"LPN8Ma\":[\"Metadata XML poskytovatele identity\"],\"j843N3\":[\"Pokud jste ztratili tento klíč, můžete jej obnovit, ale mějte na paměti, že všechny skripty používající tento klíč bude potřeba aktualizovat. Prosím, napište \\\"<b>\",[\"confirmationValue\"],\"</b>\\\" pro potvrzení.\"],\"tSVr6t\":[\"Impersonovat\"],\"l3s5ri\":[\"Importovat\"],\"eECp4f\":[\"Importovat záznamy\"],\"ZsIcZZ\":[\"Importovat pracovní postupy\"],\"RqSvT0\":[\"Importování\"],\"NoNwIX\":[\"Neaktivní\"],\"pZ/USH\":[\"Indexy\"],\"JE2tjr\":[\"Vstup musí být zapsán v camel case a nesmí začínat číslem\"],\"AwUsnG\":[\"Instance\"],\"nbfdhU\":[\"Integrace\"],\"NtFk/Z\":[\"Neplatný poskytovatel ověřování\"],\"qcXnvu\":[\"Invalid custom domain. Custom domains have to be smaller than 256 characters in length, cannot be IP addresses, cannot contain spaces, cannot contain any special characters such as _~`!@#$%^*()=+{}[]|\\\\;:'\\\",<>/? and cannot begin or end with a '-' character.\"],\"P3qQyo\":[\"Neplatná vlastní doména. Uveďte prosím alespoň jednu subdoménu (např. sub.example.com).\"],\"u3hwhx\":[\"Neplatná doména. Domény musí být kratší než 256 znaků, nesmí být IP adresy, nesmí obsahovat žádné speciální znaky jako _~`!@#$%^*()=+{}[]|\\\\;:'\\\",<>/? a nesmí začínat ani končit znakem '-'.\"],\"B2Tpo0\":[\"Neplatný e-mail\"],\"/m52AE\":[\"Neplatný e-mail nebo doména\"],\"b2B7Ze\":[\"Neplatný odkaz na ověření e-mailu.\"],\"uzxr9u\":[\"Neplatný soubor\"],\"QdoUFL\":[\"Neplatné hodnoty formuláře\"],\"K8XJhc\":[\"Neplatný pracovní prostor\"],\"MFKlMB\":[\"Pozvat\"],\"0M8+El\":[\"Pozvat e-mailem\"],\"PWIq/W\":[\"Pozvat odkazem\"],\"3athPG\":[\"Pozvat odkazem\"],\"5IfmKA\":[\"Pozvánka odeslána na e-mailové adresy\"],\"d+Y+rP\":[\"Pozvěte svůj tým\"],\"W153SA\":[\"Je\"],\"N73SBG\":[\"Je po\"],\"NgIlDJ\":[\"Je před\"],\"Hte7bc\":[\"Je prázdné\"],\"glSyvW\":[\"Je v budoucnosti\"],\"F9Vw4E\":[\"Je v minulosti\"],\"5pz6vU\":[\"Není\"],\"ldI7NO\":[\"Není prázdné\"],\"HQFVAU\":[\"Není null\"],\"jPtV7x\":[\"Je relativní\"],\"0TLhix\":[\"Je dnes\"],\"IhCN5p\":[\"Issuer URI\"],\"Lj7sBL\":[\"Italština\"],\"dFtidv\":[\"Japonština\"],\"OGXtL8\":[\"Kanban\"],\"h6S9Yz\":[\"Korejština\"],\"zrpwCd\":[\"Laboratoř\"],\"vXIe7J\":[\"Jazyk\"],\"UXBCwc\":[\"Příjmení\"],\"wL3cK8\":[\"Nejnovější\"],\"Kcjbmz\":[\"Nejnovější datum\"],\"haJ2Hb\":[\"Menší než\"],\"1njn7W\":[\"Světlý\"],\"pQjjYo\":[\"Odkaz byl zkopírován do schránky\"],\"DL2sg0\":[\"Výpisy\"],\"FgAxTj\":[\"Odhlásit se\"],\"nOhz3x\":[\"Odhlásit\"],\"PTozs8\":[\"Vyhledejte uživatele a spravujte jejich funkce ve workspace nebo je impersonujte.\"],\"GPSwzy\":[\"Vyhledejte uživatele pro impersonaci.\"],\"U8dG4j\":[\"Spravovat oblíbené\"],\"T6YjCk\":[\"Spravovat členy\"],\"4cjU2u\":[\"Zde můžete spravovat členy vašeho prostoru\"],\"FyFNsd\":[\"Spravujte své internetové účty.\"],\"36kYu0\":[\"Spravujte své předplatné\"],\"3Sdni6\":[\"Označit jako hotovo\"],\"CK1KXz\":[\"Maximální\"],\"wlQNTg\":[\"Členové\"],\"6GBt0m\":[\"Metadata\"],\"dN5YOb\":[\"Generování souboru metadat selhalo\"],\"eTUF28\":[\"Minimální\"],\"3Siwmw\":[\"Více možností\"],\"iSLA/r\":[\"Posunout doleva\"],\"Ubl2by\":[\"Posunout doprava\"],\"6YtxFj\":[\"Název\"],\"XSwyCU\":[\"Název nesmí být prázdný\"],\"zaxmAs\":[\"Název v jednotném (<b>např.</b>, 'Faktura') i množném (<b>např.</b>, 'Faktury') čísle.\"],\"z+6jaZ\":[\"Název vašeho API klíče\"],\"J7w8lI\":[\"Název vašeho pracovního prostoru\"],\"2T8KCk\":[\"Přejít na další záznam\"],\"UX6+vb\":[\"Přejít na další spuštění\"],\"veSA19\":[\"Přejít na další verzi\"],\"ZTEho+\":[\"Přejít na další workflow\"],\"2tw9bo\":[\"Přejít na předchozí záznam\"],\"HddE65\":[\"Přejít na předchozí spuštění\"],\"I+Pm5V\":[\"Přejít na předchozí verzi\"],\"QVUN3K\":[\"Přejít na předchozí workflow\"],\"isRobC\":[\"Nový\"],\"Gntx7w\":[\"Nový \",[\"capitalizedObjectNameSingular\"]],\"Kcr9Fr\":[\"Nový účet\"],\"2qr/61\":[\"Nová schválená přístupová doména\"],\"8YPqRx\":[\"Nové pole\"],\"o8MyXb\":[\"Nový klíč\"],\"j313SZ\":[\"Nový klíč\"],\"hFxdey\":[\"Nový objekt\"],\"7vhWI8\":[\"Nové heslo\"],\"BcCzLv\":[\"Nový záznam\"],\"2lmOC5\":[\"New Role\"],\"OzWuT+\":[\"Nová konfigurace SSO\"],\"C7WtCv\":[\"Nový poskytovatel SSO\"],\"U1DAok\":[\"New Webhook\"],\"OTe3RI\":[\"Žádná změna nebyla zjištěna\"],\"pwenQu\":[\"Žádný propojený účet\"],\"4BSfjK\":[\"Žádná země\"],\"hfYSED\":[\"No members assigned to this role yet\"],\"F9pWel\":[\"No members matching this search\"],\"NluSN3\":[\"No members matching your search\"],\"iMCnTm\":[\"No more members to add\"],\"DL8pzn\":[\"Žádní další členové k přiřazení\"],\"EqGTpW\":[\"Žádné záznamy nenalezeny\"],\"4bobEy\":[\"No Result\"],\"MA3x23\":[\"Žádné výsledky\"],\"Hsl+kr\":[\"Žádné výběrové pole\"],\"0uWxPM\":[\"Zatím žádné běhy workflow\"],\"AQCvCC\":[\"Zatím žádné verze workflow\"],\"EdQY6l\":[\"Žádný\"],\"1IipHp\":[\"Norština\"],\"0qBE9S\":[\"Není dostupné ve výchozím zobrazení\"],\"4wUkDk\":[\"Není prázdný\"],\"hZWthZ\":[\"Nesynchronizováno\"],\"HptUxX\":[\"Číslo\"],\"0fRFSb\":[\"Počet desetinných míst\"],\"qg5nhQ\":[\"Číselný typ\"],\"W0i24j\":[\"Objekt\"],\"Zrauom\":[\"Cíl objektu\"],\"B3toQF\":[\"Objekty\"],\"KNz3EF\":[\"Mimo ušlapané cesty\"],\"zii2Qj\":[\"Pouze datum a účastníci budou sdíleni s vaším týmem.\"],\"50ETCF\":[\"Pouze časová značka a účastníci budou sdíleni s vaším týmem.\"],\"69b7aE\":[\"Otevřít příkazové menu\"],\"C39K59\":[\"Otevřít v\"],\"OV5wZZ\":[\"Otevřený\"],\"qNELak\":[\"Volitelné: Definujte tajný řetězec, který zahrneme do každého webhooku. Použijte to pro ověření a ověření webhooku po přijetí.\"],\"0zpgxV\":[\"Možnosti\"],\"BzEFor\":[\"nebo\"],\"/IX/7x\":[\"Ostatní\"],\"boJlGf\":[\"Stránka nenalezena\"],\"8ZsakT\":[\"Heslo\"],\"BxQ79w\":[\"Heslo bylo aktualizováno\"],\"mi6Rel\":[\"Odkaz pro resetování hesla byl odeslán na email\"],\"PxBA+g\":[\"Lidé, kterým jsem poslal e-maily a od kterých jsem dostal e-maily.\"],\"U/UvMm\":[\"Lidé, kterým jsem poslal e-maily.\"],\"SrVzRe\":[\"Procento\"],\"yIK1GU\":[\"Procento prázdné\"],\"PWLd4c\":[\"Procento neprázdné\"],\"/roQKz\":[\"Procento\"],\"Bv3y5w\":[\"Trvale zničit záznam\"],\"xjWlSJ\":[\"Trvale zničit záznamy\"],\"uKWXhB\":[\"Trvale zničit workflody\"],\"9cDpsw\":[\"Oprávnění\"],\"qlqT9z\":[\"Telefonní číslo zkopírováno do schránky\"],\"N0+GsR\":[\"Obrázek\"],\"jEw0Mr\":[\"Prosím zadejte platnou URL\"],\"X5x85V\":[\"Nejprve vyhledejte uživatele\"],\"6nsIo3\":[\"Pro zrušení přístupu API klíče zadejte \\\\\"],\"mFZTXr\":[\"Prosím, napište \",[\"confirmationText\"],\", abyste potvrdili, že chcete smazat tento webhook.\"],\"BPig2P\":[\"Množné číslo\"],\"trnWaw\":[\"Polština\"],\"MOERNx\":[\"Portuguese\"],\"0nsqwk\":[\"Portugalština — Brazílie\"],\"xtXHeo\":[\"Portugalština — Portugalsko\"],\"R7+D0/\":[\"Portuguese (Brazil)\"],\"512Uma\":[\"Portuguese (Portugal)\"],\"rdUucN\":[\"Náhled\"],\"LcET2C\":[\"Zásady ochrany osobních údajů\"],\"vERlcd\":[\"Profil\"],\"GVxbU6\":[\"Uveďte údaje o vašem poskytovateli OIDC\"],\"YJgRqq\":[\"Pseudo-Angličtina\"],\"ibPuCP\":[\"Přečtěte si dokumentaci\"],\"v3xM25\":[\"Obdržíte e-mail s odkazem na aktualizaci hesla\"],\"gcoiFh\":[\"Znovu připojit\"],\"mj1fkT\":[\"Záznamový obrázek\"],\"K6/7kH\":[\"Záznamový popisek\"],\"mAHjRd\":[\"Záznamová stránka\"],\"dSCufP\":[\"Výběr záznamů\"],\"LfH+Ea\":[\"Údaj přesměrování Url zkopírován do schránky\"],\"RZjynQ\":[\"URI přesměrování\"],\"vpZcGd\":[\"Znovu vygenerujte API klíč\"],\"Mwqo5m\":[\"Znovu vygenerujte klíč\"],\"D+Mv78\":[\"Znovu vygenerujte klíč\"],\"UiAJoB\":[\"Typ vztahu\"],\"5icoS1\":[\"Verze\"],\"HpK/8d\":[\"Načíst znovu\"],\"t/YqKh\":[\"Odstranit\"],\"ken+P9\":[\"Remove \",[\"workspaceMemberName\"],\"?\"],\"1O32oy\":[\"Odstranit účet\"],\"Q2u5E9\":[\"Odstranit jako výchozí\"],\"T/pF0Z\":[\"Odebrat z oblíbených\"],\"00Lxnh\":[\"Odstranit možnost\"],\"OfhWJH\":[\"Obnovit\"],\"KbS2K9\":[\"Obnovit heslo\"],\"1IWc1n\":[\"Obnovit na\"],\"yKu/3Y\":[\"Obnovit\"],\"y4Ib1n\":[\"Obnovit záznam\"],\"Vw369F\":[\"Obnovit záznamy\"],\"kx0s+n\":[\"Výsledky\"],\"5dJK4M\":[\"Role\"],\"uJc01W\":[\"Rumunština\"],\"UX0N2y\":[\"Spusťte pracovní postup a vraťte se sem pro zobrazení jeho provedení\"],\"nji0/X\":[\"Ruština\"],\"tfDRzk\":[\"Uložit\"],\"apLRCm\":[\"Uložit jako nové zobrazení\"],\"A1taO8\":[\"Hledat\"],\"8NBMeZ\":[\"Hledat '\",[\"commandMenuSearch\"],\"' s...\"],\"l1/uy2\":[\"Hledat ve sloupci...\"],\"t3n1Qy\":[\"Vyhledejte člena\"],\"lnDfeK\":[\"Hledat typ\"],\"k7kp5/\":[\"Hledat v indexu...\"],\"7taA9j\":[\"Hledání ve sloupcích\"],\"ofuw3g\":[\"Hledat objekt...\"],\"lnwW17\":[\"Hledat ikonu\"],\"IMeaSJ\":[\"Hledání záznamů\"],\"8VEDbV\":[\"Tajemství\"],\"a3LDKx\":[\"Bezpečnost\"],\"QREcJS\":[\"Zobrazit aktivní verzi\"],\"BxIUpp\":[\"Zobrazit smazané záznamy\"],\"Z+SGGW\":[\"Zobrazit smazaná spuštění\"],\"91fiCe\":[\"Zobrazit smazané verze\"],\"5jZIe5\":[\"Zobrazit smazané pracovní postupy\"],\"OpPn5Z\":[\"Zobrazit spuštění\"],\"EtyY4+\":[\"Zobrazit verze\"],\"lYhPN0\":[\"Zobrazit historii verzí\"],\"pofGCP\":[\"Vyberte výchozí hodnotu pro toto logické pole\"],\"xraglu\":[\"Vyberte události, které chcete poslat na tento koncový bod\"],\"AXTJAW\":[\"Vyberte preferovaný jazyk\"],\"mjK8F3\":[\"Pošlete pozvánku e-mailem vašemu týmu\"],\"h69WC6\":[\"Odesláno\"],\"hdVMzO\":[\"Odesláno a přijato\"],\"6oxz/y\":[\"Srbština (cyrilice)\"],\"WKimFU\":[\"Správce serveru\"],\"yy5k7a\":[\"Server Admin Panel\"],\"LUc0oL\":[\"Detaily poskytovatele služby\"],\"YZwx1e\":[\"Nastavit výchozí roli pro tento pracovní prostor\"],\"PPcets\":[\"Nastavit jako výchozí\"],\"V7fgiB\":[\"Nastavte viditelnost emailu, spravujte váš seznam blokovaných a další.\"],\"qNbuWB\":[\"Nastavte název vaší vlastní domény a nakonfigurujte záznamy DNS.\"],\"cx14rp\":[\"Set the name of your domain\"],\"tn41zE\":[\"Nastavte název vaší subdomény\"],\"Tz0i8g\":[\"Nastavení\"],\"p8fNBm\":[\"Nastavení oprávnění\"],\"Vy9kmk\":[\"Sdílením tohoto odkazu pozvete uživatele do vašeho pracovního prostoru\"],\"gWk8gY\":[\"Měla by změna popisku pole změnit také API název?\"],\"WFtdWr\":[\"Měla by změna popisku objektu změnit také API?\"],\"uVg8dY\":[\"Postranní panel\"],\"5lWFkC\":[\"Přihlásit se\"],\"e+RpCP\":[\"Zaregistrovat se\"],\"5v3IHX\":[\"Jednotné přihlášení (SSO)\"],\"maCaRp\":[\"Jednotlivý\"],\"djfBXF\":[\"Jednotné a množné označení se musí lišit\"],\"zvwLTy\":[\"Jednotné a množné názvy se musí lišit\"],\"6Uau97\":[\"Přeskočit\"],\"f6Hub0\":[\"Seřadit\"],\"65A04M\":[\"Španělština\"],\"vnS6Rf\":[\"Jednotné přihlášení\"],\"ErU1td\":[\"Etapy\"],\"uAQUqI\":[\"Stav\"],\"ku9TbG\":[\"Subdoména\"],\"omhc+7\":[\"Subdoména je již zabraná\"],\"OlC/tU\":[\"Subdoména nemůže být delší než 30 znaků\"],\"ZETwlU\":[\"Subdoména nemůže být kratší než 3 znaky\"],\"DTG2nE\":[\"Subdoména aktualizována\"],\"97eDN2\":[\"Předmět a metadata\"],\"LYbP/A\":[\"Předmět a metadata budou sdíleny s vaším týmem.\"],\"J9ylmk\":[\"Předmět, obsah a přílohy budou sdíleny s vaším týmem.\"],\"B5jRKH\":[\"Předplatné bylo změněno \",[\"to\"]],\"AxQiPW\":[\"Součet\"],\"XYLcNv\":[\"Podpora\"],\"UaISq3\":[\"Švédština\"],\"9yk9d1\":[\"Přepnout \",[\"from\"]],\"qi74XZ\":[\"Přepnout \",[\"to\"]],\"L6Fg36\":[\"Přepnout fakturaci \",[\"to\"]],\"5TRY4+\":[\"Synchronizace selhala\"],\"N2FcBE\":[\"Synchronizováno\"],\"AtzMpB\":[\"Synchronizace popisku pole a API názvu\"],\"WZ6bN9\":[\"Synchronizace popisků objektů a API názvů\"],\"D4SseJ\":[\"Systémová nastavení\"],\"E3AMmw\":[\"Systémová nastavení - \",[\"systemDateFormatLabel\"]],\"0ZgB1e\":[\"Systémová nastavení - \",[\"systemTimeFormatLabel\"]],\"4hJhzz\":[\"Tabulka\"],\"xowcRf\":[\"Podmínky služby\"],\"NnH3pK\":[\"Testovat\"],\"bU9B27\":[\"Testovat pracovní postupy\"],\"lyaiTc\":[\"Text zkopírován do schránky\"],\"1xQkU9\":[\"Výchozí kód země pro nová telefonní čísla.\"],\"PmXLtL\":[\"Výchozí země pro nové adresy\"],\"2OUtmv\":[\"Popis tohoto pole\"],\"VGZYbZ\":[\"Email spojený s vaším účtem\"],\"h8mvCd\":[\"Název a ikona tohoto pole\"],\"e/dfFe\":[\"Název vašeho připojení\"],\"8EkdZh\":[\"Název vaší domény\"],\"+C8Rdp\":[\"Název vaší organizace\"],\"L97sPr\":[\"Stránka, kterou hledáte, buď zmizela nebo nikdy neexistovala. Pojďme vás dostat zpět na správnou cestu\"],\"uWikAA\":[\"Hodnoty tohoto pole\"],\"+69KDk\":[\"Hodnoty tohoto pole musí být unikátní\"],\"MHLapp\":[\"Kompletní detaily události budou sdíleny s vaším týmem.\"],\"ynfkhb\":[\"Během aktualizace hesla došlo k chybě.\"],\"PmtLRf\":[\"Došlo k problému\"],\"hqCwGc\":[\"Tato akce nemůže být vrácena zpět. Uživatele natrvalo odstraní a odstraní ho z všech přiřazení.\"],\"gWGuHC\":[\"Tuto akci nelze vrátit zpět. Tímto dojde k trvalému odstranění celého vašeho pracovního prostoru. <0/> Prosím, zadejte váš email k potvrzení.\"],\"yHIStW\":[\"This member will be unassigned from this role.\"],\"/tr8Uy\":[\"This Role has the following permissions.\"],\"6j5nJX\":[\"This Role is assigned to these workspace member.\"],\"xPfDRx\":[\"Tuto roli mají přiřazení následující členové pracovního prostoru.\"],\"n9nSNJ\":[\"Formát času\"],\"Mz2JN2\":[\"Časové pásmo\"],\"/VwdtK\":[\"Časové razítko a účastníci budou sdíleni s vaším týmem.\"],\"aqMzDX\":[\"na měsíční\"],\"WXXiXO\":[\"na roční\"],\"vb0Q0/\":[\"Celkový počet uživatelů\"],\"PiUt3N\":[\"Typ spouštěče\"],\"IQ5pAL\":[\"Typ spouštěče by měl být ruční - když nejsou vybráni žádní záznamy\"],\"c+xCSz\":[\"Pravda\"],\"Kz91g/\":[\"Turečtina\"],\"+zy2Nq\":[\"Typ\"],\"U83IeL\":[\"Napište cokoli\"],\"V9+2pH\":[\"Ukrajinština\"],\"wSXm5S\":[\"Unikátní\"],\"29VNqC\":[\"Neznámá chyba\"],\"GQCXQS\":[\"Neomezený počet kontaktů\"],\"+b7T3G\":[\"Aktualizováno\"],\"ONWvwQ\":[\"Nahrát\"],\"2IXDgU\":[\"Nahrát soubor\"],\"akDOEO\":[\"Nahrajte XML soubor s vašimi spojovacími údaji\"],\"IagCbF\":[\"URL\"],\"6dMpmz\":[\"Použít jako koncept\"],\"oTTQsc\":[\"Používejte pouze písmena, číslice a pomlčku. Začínejte a končete písmenem nebo číslicí\"],\"c6uZUV\":[\"Použijte naše API nebo ručně přidejte první \",[\"objectLabel\"]],\"7PzzBU\":[\"Uživatel\"],\"YFciqL\":[\"E-mail uživatele\"],\"GjhOGB\":[\"ID uživatele\"],\"RNv3YS\":[\"Impersonace uživatele\"],\"tNT8wT\":[\"Informace o uživateli\"],\"IjyOjp\":[\"Uživatel není přihlášen\"],\"5ZYU8G\":[\"Jméno uživatele\"],\"Sxm8rQ\":[\"Uživatelé\"],\"fXVIZq\":[\"Hodnoty\"],\"IHIWR4\":[\"Verze aplikace\"],\"fROFIL\":[\"Vietnamština\"],\"jpctdh\":[\"Pohled\"],\"KANz0G\":[\"Zobrazit detaily fakturace\"],\"igR+P/\":[\"Zobrazit detaily provedení\"],\"qZmd6a\":[\"Nastavení zobrazení\"],\"bJAIqT\":[\"Typ pohledu\"],\"2q/Q7x\":[\"Viditelnost\"],\"oh8+os\":[\"Viditelný\"],\"JiDDG4\":[\"Viditelné skupiny\"],\"6n7jtr\":[\"Vizualizovat\"],\"id6ein\":[\"Podporujeme vaše čtvercové PNG, JPEG a GIFy menší než 10MB\"],\"ZS7vYp\":[\"Na tento koncový bod budeme zasílat POST požadavky při každé nové události\"],\"PI4LiB\":[\"Pošleme vám odkaz pro ověření vlastnictví domény\"],\"TRDppN\":[\"Webhook\"],\"v1kQyJ\":[\"Webhooky\"],\"Jt1WNL\":[\"Welcome to\"],\"ke0EDP\":[\"Vítejte ve \",[\"workspaceName\"]],\"C51ilI\":[\"Kdy bude API klíč expirovat.\"],\"leUubq\":[\"Kdy bude klíč deaktivován\"],\"wvyffT\":[\"Není možné testovat pracovní postup\"],\"GpJjC8\":[\"Průběh práce běží...\"],\"o0xBLi\":[\"Běh průběhu práce selhal\"],\"pmUArF\":[\"Pracovní prostor\"],\"VicISP\":[\"Smazání pracovního prostoru\"],\"Y0Fj4S\":[\"Logo pracovního prostoru\"],\"CozWO1\":[\"Název pracovního prostoru\"],\"6X+cfX\":[\"Název pracovního prostoru\"],\"pmt7u4\":[\"Pracovní prostory\"],\"5iSD9O\":[\"Zalomit na stránkách záznamů\"],\"Q9pNST\":[\"Napište popis\"],\"L80fMJ\":[\"Napište tajemství\"],\"3d1wCB\":[\"ano\"],\"MFDARJ\":[\"Nemáte povoleno vytvářet záznamy pro tento objekt\"],\"5eVYbs\":[\"You are not allowed to create records in this object\"],\"TBApzn\":[\"Nemáte přístup k přihlášení jako jiný uživatel.\"],\"zSkMV0\":[\"Okamžitě budete účtováni za celý rok.\"],\"XVnj6K\":[\"Váš kreditní zůstatek bude použit na uhrazení měsíčních účtů.\"],\"+5YqGH\":[\"Vaše předměty e-mailů a názvy schůzek budou sdíleny s vaším týmem.\"],\"la0RPA\":[\"Obsah vašich e-mailů a událostí bude sdílen s vaším týmem.\"],\"9ivpwk\":[\"Vaše jméno, jak bude zobrazeno\"],\"3RASGN\":[\"Vaše jméno, jak bude zobrazeno v aplikaci\"],\"YQK8fJ\":[\"Váš pracovní prostor\"],\"RhNbPE\":[\"Váš pracovní prostor bude deaktivován\"]}")as Messages;
\ No newline at end of file
+/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"ypz2+E\":[\": Prázdné\"],\"CE75IR\":[\": Budoucnost\"],\"Nk/d+Z\":[\": Ne\"],\"1ORnec\":[\": Není prázdný\"],\"11QpPG\":[\": Není null\"],\"gK4ysT\":[\": Minulost\"],\"4iJDkt\":[\": Dnes\"],\"ROdDR9\":[[\"aggregateLabel\"],\" z \",[\"fieldLabel\"]],\"uogEAL\":[[\"apiKeyName\"],\" API klíč\"],\"6j5rE1\":[[\"name\"]],\"WN9tFl\":[[\"workspaceMemberName\"],\" bude odebrán z následující role:\"],\"YT0WJ4\":[\"1 000 spuštění uzlů Workflow\"],\"vb5TwV\":[\"1. Vyberte typ pole\"],\"SLjiTq\":[\"1. Typ\"],\"4EdXYs\":[\"12h (\",[\"hour12Label\"],\")\"],\"yXvRMf\":[\"2. Nakonfigurujte\"],\"0HAF12\":[\"2. Nakonfigurujte pole\"],\"QsMprd\":[\"24h (\",[\"hour24Label\"],\")\"],\"nMTB1f\":[\"Sdílené prostředí, ve kterém budete moci spravovat vztahy se zákazníky se svým týmem.\"],\"09tRFp\":[\"Možnost interakce s každým objektem\"],\"ssjjFt\":[\"Přerušit\"],\"uyJsf6\":[\"O aplikaci\"],\"AeXO77\":[\"Účet\"],\"nD0Y+a\":[\"Smazání účtu\"],\"bPwFdf\":[\"Účty\"],\"7L01XJ\":[\"Akce\"],\"FQBaXG\":[\"Aktivovat\"],\"tu8A/k\":[\"Aktivovat Workflow\"],\"F6pfE9\":[\"Aktivní\"],\"Mue4oc\":[\"Aktivní API klíče vytvořené vámi nebo vaším týmem.\"],\"m16xKo\":[\"Přidat\"],\"MPPZ54\":[\"Přidat účet\"],\"HD0x5p\":[\"Přidat schválenou přístupovou doménu\"],\"DpV70M\":[\"Přidat pole\"],\"vCSBPD\":[\"Přidat filtr\"],\"Hkobke\":[\"Přidat nový\"],\"dEO3Zx\":[\"Přidat objekt\"],\"Dl5lVI\":[\"Přidat možnost\"],\"sgXUv+\":[\"Přidat poskytovatele identity SSO\"],\"5+ttxv\":[\"Přidat do seznamu blokovaných\"],\"yVOmgE\":[\"Přidat do oblíbených\"],\"pBsoKL\":[\"Přidat do oblíbených\"],\"q9e2Bs\":[\"Přidat zobrazení\"],\"m2qDV8\":[\"Přidejte svůj první \",[\"objectLabel\"]],\"vLO+NG\":[\"Přidáno \",[\"beautifiedCreatedAt\"]],\"jEHeq+\":[\"Přidáno \",[\"beautifyPastDateRelative\"]],\"9iIYOy\":[\"Přidáno do blokovaného seznamu\"],\"Eis4ey\":[\"Upravit nastavení související s rolí\"],\"tMFFwF\":[\"Pokročilý filtr\"],\"1Cox/a\":[\"Afrikánština\"],\"N40H+G\":[\"Vše\"],\"3saA7W\":[\"Vše (\",[\"relationRecordsCount\"],\")\"],\"9ljU00\":[\"Všechny akce\"],\"7EZqN0\":[\"Všechny e-maily a události spojené s tímto účtem budou smazány\"],\"623MHa\":[\"Všechny řádky\"],\"aFE/OW\":[\"Všechny objekty\"],\"Hm90t3\":[\"Všechny role\"],\"GMx1K0\":[\"Povolit přihlašování prostřednictvím jednotného přihlášení Google.\"],\"dea+zy\":[\"Povolit přihlašování prostřednictvím jednotného přihlášení Microsoft.\"],\"wMg43c\":[\"Umožnit pozvání nových uživatelů sdílením odkazu na pozvánku.\"],\"vHeVg5\":[\"Povolit uživatelům přihlášení pomocí e-mailu a hesla.\"],\"LG4K0m\":[\"Při aktualizaci hesla došlo k chybě\"],\"mJ6m4C\":[\"Volitelný popis\"],\"lxentK\":[\"An unexpected error occurred\"],\"HZFm5R\":[\"a\"],\"xJR+Wq\":[\"Kdokoli s e-mailovou adresou na těchto doménách se může přihlásit do tohoto pracovního prostoru.\"],\"OZtEcz\":[\"API\"],\"0RqpZr\":[\"API & Webhooks\"],\"yRnk5W\":[\"API klíč\"],\"r+NRG6\":[\"Klíč API zkopírován do schránky\"],\"5h8ooz\":[\"API klíče\"],\"kAtj+q\":[\"Název API\"],\"lwCAhN\":[\"Název API (množné číslo)\"],\"KclpRp\":[\"API název (jednotné číslo)\"],\"Z3Brb2\":[\"Hodnoty API\"],\"JR6nY7\":[\"APIs\"],\"aAIQg2\":[\"Vzhled\"],\"9tggYj\":[\"Schválené domény\"],\"1844JP\":[\"Approved Email Domain\"],\"8HV3WN\":[\"Arabština\"],\"3iX0kh\":[\"Jste si jisti, že chcete změnit interval fakturace?\"],\"3SRf5B\":[\"Are you sure you want to assign this role?\"],\"8Y3Jbl\":[\"Jste si jisti, že chcete smazat tyto záznamy? Můžete je obnovit z nabídky Příkaz (\",[\"osControlSymbol\"],\" + K).\"],\"Se0vJw\":[\"Jste si jisti, že chcete smazat tento záznam? Můžete jej obnovit z nabídky Příkaz (\",[\"osControlSymbol\"],\" + K).\"],\"nYD/Cq\":[\"Vzestupně\"],\"9ch9Mz\":[\"Přiřadit uživatele \",[\"workspaceMemberName\"],\"?\"],\"rfYmIr\":[\"Přiřaďte role pro specifikaci přístupových oprávnění každého člena\"],\"2y2quh\":[\"Přiřadit členu\"],\"OItM/o\":[\"Přiřazení členové\"],\"lxQ+5m\":[\"Přiřazeno\"],\"0dtKl9\":[\"Přiřazení\"],\"H8QGSx\":[\"Délka alespoň 8 znaků.\"],\"Y7Dx6e\":[\"Musí být povolena alespoň jedna metoda ověření\"],\"P8fBlG\":[\"Ověření\"],\"htuqBH\":[\"Ověření selhalo\"],\"yIVrHZ\":[\"Autorizovat\"],\"wTBNbL\":[\"Autorizované URI\"],\"Ovw0c6\":[\"Autorizovaná URL zkopírována do schránky\"],\"2zJkmL\":[\"Automatické vytváření\"],\"YRT7ZW\":[\"Automaticky vytvářet kontakty pro osoby, se kterými jste se zúčastnil(a) události.\"],\"lgw3U4\":[\"Automaticky vytvářet kontakty pro lidi.\"],\"RpExX0\":[\"Automaticky vytvářet záznamy lidí při přijímání nebo odesílání emailů\"],\"3uQmjD\":[\"Průměrně\"],\"Dht9W3\":[\"Zpět k obsahu\"],\"R+w/Va\":[\"Fakturace\"],\"K1172m\":[\"Blacklist\"],\"2yl5lQ\":[\"Objednat hovor\"],\"8Pfllj\":[\"Použitím Twenty souhlasíte s\"],\"PmmvzS\":[\"Spočítat\"],\"AjVXBS\":[\"Kalendář\"],\"wLtx+m\":[\"Nastavení kalendáře\"],\"EUpfsd\":[\"Kalendáře\"],\"dEgA5A\":[\"Storno\"],\"0TllC8\":[\"Kdykoliv možno zrušit\"],\"rRK/Lf\":[\"Zrušit plán\"],\"N6gPiD\":[\"Zrušit vaše předplatné\"],\"M1RLfx\":[\"Katalánština\"],\"OfzMnb\":[\"Změnit \",[\"to\"]],\"VhMDMg\":[\"Změnit heslo\"],\"SviKkE\":[\"Čínština — zjednodušená\"],\"dzb4Ep\":[\"Čínština — tradiční\"],\"JEFFOR\":[\"Vyberte objekt\"],\"Qz73jD\":[\"Vyberte mezi protokoly OIDC a SAML\"],\"YcrXB2\":[\"Vyberte výchozí měnu, která se použije\"],\"LHce7q\":[\"Vyberte pole, která budou identifikovat vaše záznamy\"],\"KT6rEB\":[\"Vyberte svého poskytovatele\"],\"9qP96p\":[\"Vyberte si Trial\"],\"xCJdfg\":[\"Vymazat\"],\"b9Y4up\":[\"ID klienta\"],\"Bdj4LI\":[\"Klientský tajný klíč\"],\"XUe4cu\":[\"Nastavení klienta\"],\"yz7wBu\":[\"Zavřít\"],\"qYsAlX\":[\"Zavřít příkazové menu\"],\"H86f9p\":[\"Sbalit\"],\"Xose0w\":[\"Barevný kód\"],\"NM9bMd\":[\"Kompaktní zobrazení\"],\"+zUMwJ\":[\"Nakonfigurujte připojení SSO\"],\"QTNsSm\":[\"Nakonfigurujte a přizpůsobte si předvolby kalendáře.\"],\"aGwm+D\":[\"Nakonfigurujte, jak se mají zobrazovat data v aplikaci\"],\"ghdb7+\":[\"Nakonfigurujte, jak by se měly zobrazovat vaše události ve vašem kalendáři\"],\"Bh4GBD\":[\"Nakonfigurujte nastavení svých e-mailů a kalendáře.\"],\"7VpPHA\":[\"Potvrdit\"],\"D8ATlr\":[\"Připojte nový účet k vašemu pracovnímu prostoru\"],\"Zgi9Fd\":[\"Připojit s Google\"],\"IOfqM8\":[\"Připojit s Microsoft\"],\"9TzudL\":[\"Připojené účty\"],\"Y2y0mC\":[\"Politika automatického vytváření kontaktů\"],\"/5mghO\":[\"Obsahuje\"],\"M73whl\":[\"Kontext\"],\"xGVfLh\":[\"Pokračovat\"],\"RvVi9c\":[\"Pokračovat s e-mailem\"],\"oZyG4C\":[\"Pokračovat s Google\"],\"ztoybH\":[\"Pokračovat s Microsoftem\"],\"u+VWhB\":[\"Zkopírováno do schránky!\"],\"CcGOj+\":[\"Kopilot\"],\"he3ygx\":[\"Kopírovat\"],\"7eVkEH\":[\"Kopírovat odkaz na pozvánku\"],\"y1eoq1\":[\"Kopírovat odkaz\"],\"Ej5euX\":[\"Zkopírujte tento klíč, nebude již znovu viditelný\"],\"SGsgDO\":[\"Core\"],\"wBMjJ2\":[\"Počet\"],\"EkZfen\":[\"Celkový počet\"],\"vQJINq\":[\"Počet prázdných\"],\"DzRsDJ\":[\"Počet neprázdných\"],\"9FZBbf\":[\"Počet unikátních hodnot\"],\"hYgDIe\":[\"Vytvořit\"],\"zNoOC2\":[\"Vytvořte workflow a vraťte se zde pro zobrazení jeho verzí\"],\"uXGLuq\":[\"Vytvořit API klíč\"],\"d0DCww\":[\"Vytvořit nový záznam\"],\"gSyzEV\":[\"Vytvořit profil\"],\"RoyYUE\":[\"Vytvořit roli\"],\"6MP9lc\":[\"Vytvořit výběrové pole\"],\"zt6Erc\":[\"Vytvořit zobrazení\"],\"dkAPxi\":[\"Vytvořit Webhook\"],\"9chYz/\":[\"Vytvořte svůj pracovní prostor\"],\"d+F6q9\":[\"Vytvořeno\"],\"XQ681Q\":[\"Vlastní doména\"],\"1GTWIA\":[\"Vlastní doména aktualizována\"],\"8skTDV\":[\"Vlastní objekty\"],\"qt+EaC\":[\"Přizpůsobit pole dostupná ve zobrazeních \",[\"objectLabelSingular\"],\".\"],\"CMhr4u\":[\"Přizpůsobit doménu\"],\"RP2we8\":[\"Přizpůsobit pole\"],\"bCJa9l\":[\"Přizpůsobit zabezpečení vašeho pracovního prostoru\"],\"w9VTXG\":[\"Čeština\"],\"Zz6Cxn\":[\"Nebezpečná zóna\"],\"Fo2vDn\":[\"Dánština\"],\"pvnfJD\":[\"Tmavý\"],\"TtG/MN\":[\"Smazání dat\"],\"5cNMFz\":[\"Datový model\"],\"r+cVRP\":[\"Datový typ\"],\"mYGY3B\":[\"Datum\"],\"Ud9zHv\":[\"Datum a čas\"],\"Lhd0oQ\":[\"Formát data\"],\"5y3O+A\":[\"Deaktivovat\"],\"qk4i22\":[\"Deaktivujte \\\"Synchronizace štítků objektů a API názvů\\\" pro nastavení vlastního API názvu\"],\"T2YbXF\":[\"Deaktivovat objekt\"],\"gexAq8\":[\"Deaktivovat toto pole\"],\"4tpC8V\":[\"Deaktivovat Workflow\"],\"yAT3be\":[\"Deaktivováno\"],\"mC21D6\":[\"Výchozí země\"],\"4zuPQL\":[\"Výchozí číselný kód země\"],\"aQ8swY\":[\"Výchozí hodnota\"],\"Y2ImVJ\":[\"Definujte název a popis vašeho objektu\"],\"bQkkFU\":[\"Definujte, co bude viditelné pro ostatní uživatele ve vaší pracovní oblasti\"],\"cnGeoo\":[\"Smazat\"],\"ZDGm40\":[\"Smazat účet\"],\"gAz0S5\":[\"Smazat účet a veškerá související data\"],\"hGfWDm\":[\"Smazat API klíč\"],\"4dpwsE\":[\"Smazat záznam\"],\"kf0A63\":[\"Smazat záznamy\"],\"T6S2Ns\":[\"Smazat tuto integraci\"],\"snMaH4\":[\"Smazat Webhook\"],\"UA2IpC\":[\"Smazat pracovní postup\"],\"ABwG9x\":[\"Smazat pracovní postupy\"],\"kYu0eF\":[\"Smazat pracovní prostor\"],\"mk2Ygs\":[\"Smazat celý pracovní prostor\"],\"vGjmyl\":[\"Smazáno\"],\"kcGoDz\":[\"Deleted \",[\"objectNamePlural\"]],\"WH/5rN\":[\"Smazané záznamy\"],\"/TC7qI\":[\"Smazané běhy\"],\"Wj5mzm\":[\"Smazané verze\"],\"gw3Tlm\":[\"Smazané pracovní postupy\"],\"Cko536\":[\"Sestupně\"],\"Nu4oKW\":[\"Popis\"],\"2xxBws\":[\"\\\"\\\"\"],\"n+SX4g\":[\"Vývojáři\"],\"zAg2B9\":[\"Zrušit koncept\"],\"Xm/s+u\":[\"Zobrazit\"],\"8Vg8H7\":[\"Zobrazit jako obyčejné číslo nebo procento\"],\"i66xz9\":[\"Zobrazit jako relativní datum\"],\"GoHpxA\":[\"Zobrazit text na více řádcích\"],\"U9q4zF\":[\"Neobsahuje\"],\"EoKe5U\":[\"Doména\"],\"yGpVSw\":[\"Doména úspěšně přidána.\"],\"7kVRe6\":[\"Domény musí být menší než 256 znaků, nesmí obsahovat mezery a nesmí obsahovat žádné speciální znaky.\"],\"KUxVkp\":[\"Nevytvářet automaticky kontakty.\"],\"cx0Ws8\":[\"Nevytvářet kontakty z/do Gmailu, Outlook e-mailů\"],\"3qDEYI\":[\"Nesynchronizovat e-maily z team@ support@ noreply@...\"],\"WcWS//\":[\"Stáhnout soubor\"],\"KIjvtr\":[\"Holandština\"],\"QVVmxi\":[\"Např. integrace backoffice\"],\"tOkc8o\":[\"Nejdříve\"],\"JTbQuO\":[\"Nejstarší datum\"],\"ePK91l\":[\"Upravit\"],\"v+uKyy\":[\"Upravit fakturační interval\"],\"9QCQIc\":[\"Upravit hodnoty polí\"],\"oKQ7ls\":[\"Upravit pole\"],\"h2KoTu\":[\"Upravit způsob platby, zobrazit faktury a další\"],\"6o1M/Q\":[\"Upravit název vaší subdomény nebo nastavit vlastní doménu.\"],\"O3oNi5\":[\"E-mail\"],\"2SWjdJ\":[\"Email can not be empty\"],\"unEEog\":[\"Email nesmí být prázdný\"],\"lfQsvW\":[\"Integrace e-mailů\"],\"QT/Wo7\":[\"E-mail nebo doména již je v seznamu blokovaných\"],\"LimKOG\":[\"Ověření e-mailu\"],\"TBv/iZ\":[\"Ověření e-mailu selhalo.\"],\"svTijF\":[\"Odkaz k ověření e-mailu byl znovu odeslán!\"],\"00icDW\":[\"Email ověřen.\"],\"VI2hiF\":[\"E-mail/Doména\"],\"BXEcos\":[\"E-maily\"],\"Ww/M6X\":[\"Nastavení e-mailů\"],\"eXoH4Q\":[\"zaměstnanci\"],\"gqv5ZL\":[\"Zaměstnanci\"],\"N2S1rs\":[\"Prázdné\"],\"T3juzf\":[\"URL koncového bodu\"],\"lYGfRP\":[\"Angličtina\"],\"/bfFKe\":[\"Užijte si \",[\"withCreditCardTrialPeriodDuration\"],\"-denní bezplatnou zkušební dobu\"],\"XJU8BD\":[\"Zadejte údaje pro nastavení připojení\"],\"rGWgcm\":[\"Zadejte informace pro nastavení připojení\"],\"rYIISB\":[\"Zadejte ID uživatele nebo e-mailovou adresu\"],\"GpB8YV\":[\"Podnik\"],\"8PrrNJ\":[\"ID entita zkopírována do schránky\"],\"7RnAWe\":[\"Proměnné prostředí\"],\"XOEl9R\":[\"Chyba při kopírování do schránky\"],\"c3qGJX\":[\"Chyba při odstraňování klíče API: \",[\"err\"]],\"QnVLjD\":[\"Chyba při mazání pozvánky\"],\"cyvTSq\":[\"Chyba při mazání poskytovatele identity SSO\"],\"WEltn2\":[\"Chyba při úpravě poskytovatele identity SSO\"],\"bj7nh3\":[\"Chyba při obnovování klíče API: \",[\"err\"]],\"clfpgU\":[\"Chyba při opětovném odeslání pozvánky\"],\"VSQxWH\":[\"Chyba při přepínání předplatného \",[\"to\"],\".\"],\"JLxMta\":[\"Vytvořte koncové body Webhook pro oznámení o asynchronních událostech.\"],\"poC90w\":[\"Viditelnost událostí\"],\"jvNRZW\":[\"Události, kterých jste se zúčastnili, jsou zobrazeny červeně.\"],\"wqF3jl\":[\"Vše\"],\"QQlMid\":[\"Vyloučit emaily skupin\"],\"+tk2yZ\":[\"Vyloučit nepracovní e-maily\"],\"cIgBjB\":[\"Exclude the following people and domains from my email sync\"],\"yhhfqh\":[\"Vyloučit následující lidi a domény z mé synchronizace emailů. Interní konverzace nebudou importovány\"],\"fV7V51\":[\"Stávající objekty\"],\"LFNXuj\":[\"Exit Full Screen\"],\"IZ4o2e\":[\"Opustit nastavení\"],\"1A3EXy\":[\"Rozbalit\"],\"tXGQvS\":[\"Expected selected node to be a create step node.\"],\"bKBhgb\":[\"Zkušenosti\"],\"LxRNPw\":[\"Platnost\"],\"SkXfL0\":[\"Datum vypršení platnosti\"],\"M1RnFv\":[\"Vypršela platnost\"],\"i9qiyR\":[\"Vyprší za\"],\"GS+Mus\":[\"Exportovat\"],\"G5DJkP\":[\"Exportovat záznam\"],\"ep2rbf\":[\"Export záznamů\"],\"vwtAUW\":[\"Exportovat spuštění\"],\"q46CjD\":[\"Exportovat do PDF\"],\"4FLUle\":[\"Exportovat verze\"],\"DaGxE0\":[\"Exportovat zobrazení\"],\"+FMXdE\":[\"Exportovat pracovní postup\"],\"XcAij/\":[\"Exportovat pracovní postupy\"],\"eWCNmu\":[\"Export Workflows\"],\"jARNNi\":[\"Failed to validate API key. Please check your API key and try again.\"],\"ocUvR+\":[\"Nepravdivé\"],\"X9kySA\":[\"Oblíbené\"],\"YXjpZx\":[\"Příznak funkce\"],\"kP/brT\":[\"Příznaky funkcí a Impersonace\"],\"nrXDdR\":[\"Název pole\"],\"zXgopL\":[\"Typ pole\"],\"vF68cg\":[\"Pole\"],\"3w/aqw\":[\"Počet polí\"],\"o7J4JM\":[\"Filtr\"],\"cSev+j\":[\"Filtry\"],\"USZ2N6\":[\"Finština\"],\"ZyIk6Y\":[\"Prvních 10 řádků\"],\"I3hko2\":[\"První 2 řádky\"],\"BDDkm3\":[\"Prvních 5 řádků\"],\"kODvZJ\":[\"Jméno\"],\"glx6on\":[\"Zapomněli jste heslo?\"],\"nLC6tu\":[\"Francouzština\"],\"aTieE0\":[\"z měsíčního na roční\"],\"K04lE5\":[\"z ročního na měsíční\"],\"scmRyR\":[\"Plný přístup\"],\"xANKBj\":[\"Funkce\"],\"Weq9zb\":[\"Obecné\"],\"DDcvSo\":[\"Němčina\"],\"NXEW3h\":[\"Získejte maximum ze svého pracovního prostoru tím, že pozvete svůj tým.\"],\"zSGbaR\":[\"Získejte své předplatné\"],\"2GT3Hf\":[\"Globální\"],\"mT57+Q\":[\"Přejít do nastavení\"],\"hWp1MY\":[\"Twenty podpoře dočasně udělit přístup do vašeho pracovního prostoru, aby bylo možné řešit problémy nebo obnovit obsah za vás. Přístup můžete kdykoli zrušit.\"],\"gBiL6J\":[\"GraphQL\"],\"/YalkJ\":[\"GraphQL API Playground\"],\"JXaffl\":[\"Větší než\"],\"CZXzs4\":[\"Řečtina\"],\"ALoP4W\":[\"Skupina podle\"],\"I1IOmb\":[\"Zdravotní stav\"],\"3oTCgM\":[\"Hebrejština\"],\"D+zLDD\":[\"Skrytý\"],\"oK+1Wj\":[\"Skrytá pole\"],\"vLyv1R\":[\"Skrýt\"],\"HS8BG/\":[\"Skrýt prázdné skupiny\"],\"B06Bgk\":[\"Jak budete identifikováni v aplikaci.\"],\"mkWad2\":[\"Maďarština\"],\"wwu18a\":[\"Ikona\"],\"XTWO+W\":[\"Ikona a název\"],\"sJGljQ\":[\"Identifikátor\"],\"06cbfQ\":[\"Poskytovatel identity\"],\"LPN8Ma\":[\"Metadata XML poskytovatele identity\"],\"j843N3\":[\"Pokud jste ztratili tento klíč, můžete jej obnovit, ale mějte na paměti, že všechny skripty používající tento klíč bude potřeba aktualizovat. Prosím, napište \\\"<b>\",[\"confirmationValue\"],\"</b>\\\" pro potvrzení.\"],\"tSVr6t\":[\"Impersonovat\"],\"l3s5ri\":[\"Importovat\"],\"eECp4f\":[\"Importovat záznamy\"],\"ZsIcZZ\":[\"Importovat pracovní postupy\"],\"RqSvT0\":[\"Importování\"],\"NoNwIX\":[\"Neaktivní\"],\"pZ/USH\":[\"Indexy\"],\"JE2tjr\":[\"Vstup musí být zapsán v camel case a nesmí začínat číslem\"],\"AwUsnG\":[\"Instance\"],\"nbfdhU\":[\"Integrace\"],\"NtFk/Z\":[\"Neplatný poskytovatel ověřování\"],\"qcXnvu\":[\"Invalid custom domain. Custom domains have to be smaller than 256 characters in length, cannot be IP addresses, cannot contain spaces, cannot contain any special characters such as _~`!@#$%^*()=+{}[]|\\\\;:'\\\",<>/? and cannot begin or end with a '-' character.\"],\"P3qQyo\":[\"Neplatná vlastní doména. Uveďte prosím alespoň jednu subdoménu (např. sub.example.com).\"],\"u3hwhx\":[\"Neplatná doména. Domény musí být kratší než 256 znaků, nesmí být IP adresy, nesmí obsahovat žádné speciální znaky jako _~`!@#$%^*()=+{}[]|\\\\;:'\\\",<>/? a nesmí začínat ani končit znakem '-'.\"],\"B2Tpo0\":[\"Neplatný e-mail\"],\"/m52AE\":[\"Neplatný e-mail nebo doména\"],\"b2B7Ze\":[\"Neplatný odkaz na ověření e-mailu.\"],\"uzxr9u\":[\"Neplatný soubor\"],\"QdoUFL\":[\"Neplatné hodnoty formuláře\"],\"K8XJhc\":[\"Neplatný pracovní prostor\"],\"MFKlMB\":[\"Pozvat\"],\"0M8+El\":[\"Pozvat e-mailem\"],\"PWIq/W\":[\"Pozvat odkazem\"],\"3athPG\":[\"Pozvat odkazem\"],\"5IfmKA\":[\"Pozvánka odeslána na e-mailové adresy\"],\"d+Y+rP\":[\"Pozvěte svůj tým\"],\"W153SA\":[\"Je\"],\"N73SBG\":[\"Je po\"],\"NgIlDJ\":[\"Je před\"],\"Hte7bc\":[\"Je prázdné\"],\"glSyvW\":[\"Je v budoucnosti\"],\"F9Vw4E\":[\"Je v minulosti\"],\"5pz6vU\":[\"Není\"],\"ldI7NO\":[\"Není prázdné\"],\"HQFVAU\":[\"Není null\"],\"jPtV7x\":[\"Je relativní\"],\"0TLhix\":[\"Je dnes\"],\"IhCN5p\":[\"Issuer URI\"],\"Lj7sBL\":[\"Italština\"],\"dFtidv\":[\"Japonština\"],\"OGXtL8\":[\"Kanban\"],\"h6S9Yz\":[\"Korejština\"],\"zrpwCd\":[\"Laboratoř\"],\"vXIe7J\":[\"Jazyk\"],\"UXBCwc\":[\"Příjmení\"],\"wL3cK8\":[\"Nejnovější\"],\"Kcjbmz\":[\"Nejnovější datum\"],\"ZEP8tT\":[\"Launch\"],\"haJ2Hb\":[\"Menší než\"],\"1njn7W\":[\"Světlý\"],\"pQjjYo\":[\"Odkaz byl zkopírován do schránky\"],\"DL2sg0\":[\"Výpisy\"],\"FgAxTj\":[\"Odhlásit se\"],\"nOhz3x\":[\"Odhlásit\"],\"PTozs8\":[\"Vyhledejte uživatele a spravujte jejich funkce ve workspace nebo je impersonujte.\"],\"GPSwzy\":[\"Vyhledejte uživatele pro impersonaci.\"],\"U8dG4j\":[\"Spravovat oblíbené\"],\"T6YjCk\":[\"Spravovat členy\"],\"4cjU2u\":[\"Zde můžete spravovat členy vašeho prostoru\"],\"FyFNsd\":[\"Spravujte své internetové účty.\"],\"36kYu0\":[\"Spravujte své předplatné\"],\"3Sdni6\":[\"Označit jako hotovo\"],\"CK1KXz\":[\"Maximální\"],\"wlQNTg\":[\"Členové\"],\"6GBt0m\":[\"Metadata\"],\"dN5YOb\":[\"Generování souboru metadat selhalo\"],\"eTUF28\":[\"Minimální\"],\"3Siwmw\":[\"Více možností\"],\"iSLA/r\":[\"Posunout doleva\"],\"Ubl2by\":[\"Posunout doprava\"],\"6YtxFj\":[\"Název\"],\"XSwyCU\":[\"Název nesmí být prázdný\"],\"zaxmAs\":[\"Název v jednotném (<b>např.</b>, 'Faktura') i množném (<b>např.</b>, 'Faktury') čísle.\"],\"z+6jaZ\":[\"Název vašeho API klíče\"],\"J7w8lI\":[\"Název vašeho pracovního prostoru\"],\"2T8KCk\":[\"Přejít na další záznam\"],\"UX6+vb\":[\"Přejít na další spuštění\"],\"veSA19\":[\"Přejít na další verzi\"],\"ZTEho+\":[\"Přejít na další workflow\"],\"2tw9bo\":[\"Přejít na předchozí záznam\"],\"HddE65\":[\"Přejít na předchozí spuštění\"],\"I+Pm5V\":[\"Přejít na předchozí verzi\"],\"QVUN3K\":[\"Přejít na předchozí workflow\"],\"isRobC\":[\"Nový\"],\"Gntx7w\":[\"Nový \",[\"capitalizedObjectNameSingular\"]],\"Kcr9Fr\":[\"Nový účet\"],\"2qr/61\":[\"Nová schválená přístupová doména\"],\"8YPqRx\":[\"Nové pole\"],\"o8MyXb\":[\"Nový klíč\"],\"j313SZ\":[\"Nový klíč\"],\"hFxdey\":[\"Nový objekt\"],\"7vhWI8\":[\"Nové heslo\"],\"BcCzLv\":[\"Nový záznam\"],\"2lmOC5\":[\"New Role\"],\"OzWuT+\":[\"Nová konfigurace SSO\"],\"C7WtCv\":[\"Nový poskytovatel SSO\"],\"U1DAok\":[\"New Webhook\"],\"OTe3RI\":[\"Žádná změna nebyla zjištěna\"],\"pwenQu\":[\"Žádný propojený účet\"],\"4BSfjK\":[\"Žádná země\"],\"hfYSED\":[\"No members assigned to this role yet\"],\"F9pWel\":[\"No members matching this search\"],\"NluSN3\":[\"No members matching your search\"],\"iMCnTm\":[\"No more members to add\"],\"DL8pzn\":[\"Žádní další členové k přiřazení\"],\"EqGTpW\":[\"Žádné záznamy nenalezeny\"],\"4bobEy\":[\"No Result\"],\"MA3x23\":[\"Žádné výsledky\"],\"Hsl+kr\":[\"Žádné výběrové pole\"],\"0uWxPM\":[\"Zatím žádné běhy workflow\"],\"AQCvCC\":[\"Zatím žádné verze workflow\"],\"EdQY6l\":[\"Žádný\"],\"1IipHp\":[\"Norština\"],\"0qBE9S\":[\"Není dostupné ve výchozím zobrazení\"],\"4wUkDk\":[\"Není prázdný\"],\"hZWthZ\":[\"Nesynchronizováno\"],\"HptUxX\":[\"Číslo\"],\"0fRFSb\":[\"Počet desetinných míst\"],\"qg5nhQ\":[\"Číselný typ\"],\"W0i24j\":[\"Objekt\"],\"Zrauom\":[\"Cíl objektu\"],\"B3toQF\":[\"Objekty\"],\"KNz3EF\":[\"Mimo ušlapané cesty\"],\"zii2Qj\":[\"Pouze datum a účastníci budou sdíleni s vaším týmem.\"],\"50ETCF\":[\"Pouze časová značka a účastníci budou sdíleni s vaším týmem.\"],\"69b7aE\":[\"Otevřít příkazové menu\"],\"C39K59\":[\"Otevřít v\"],\"OV5wZZ\":[\"Otevřený\"],\"qNELak\":[\"Volitelné: Definujte tajný řetězec, který zahrneme do každého webhooku. Použijte to pro ověření a ověření webhooku po přijetí.\"],\"0zpgxV\":[\"Možnosti\"],\"BzEFor\":[\"nebo\"],\"/IX/7x\":[\"Ostatní\"],\"boJlGf\":[\"Stránka nenalezena\"],\"8ZsakT\":[\"Heslo\"],\"BxQ79w\":[\"Heslo bylo aktualizováno\"],\"mi6Rel\":[\"Odkaz pro resetování hesla byl odeslán na email\"],\"PxBA+g\":[\"Lidé, kterým jsem poslal e-maily a od kterých jsem dostal e-maily.\"],\"U/UvMm\":[\"Lidé, kterým jsem poslal e-maily.\"],\"SrVzRe\":[\"Procento\"],\"yIK1GU\":[\"Procento prázdné\"],\"PWLd4c\":[\"Procento neprázdné\"],\"/roQKz\":[\"Procento\"],\"Bv3y5w\":[\"Trvale zničit záznam\"],\"xjWlSJ\":[\"Trvale zničit záznamy\"],\"uKWXhB\":[\"Trvale zničit workflody\"],\"9cDpsw\":[\"Oprávnění\"],\"qlqT9z\":[\"Telefonní číslo zkopírováno do schránky\"],\"N0+GsR\":[\"Obrázek\"],\"0LrFTO\":[\"Playground\"],\"jEw0Mr\":[\"Prosím zadejte platnou URL\"],\"X5x85V\":[\"Nejprve vyhledejte uživatele\"],\"6nsIo3\":[\"Pro zrušení přístupu API klíče zadejte \\\\\"],\"mFZTXr\":[\"Prosím, napište \",[\"confirmationText\"],\", abyste potvrdili, že chcete smazat tento webhook.\"],\"BPig2P\":[\"Množné číslo\"],\"trnWaw\":[\"Polština\"],\"MOERNx\":[\"Portuguese\"],\"0nsqwk\":[\"Portugalština — Brazílie\"],\"xtXHeo\":[\"Portugalština — Portugalsko\"],\"R7+D0/\":[\"Portuguese (Brazil)\"],\"512Uma\":[\"Portuguese (Portugal)\"],\"rdUucN\":[\"Náhled\"],\"LcET2C\":[\"Zásady ochrany osobních údajů\"],\"vERlcd\":[\"Profil\"],\"GVxbU6\":[\"Uveďte údaje o vašem poskytovateli OIDC\"],\"YJgRqq\":[\"Pseudo-Angličtina\"],\"ibPuCP\":[\"Přečtěte si dokumentaci\"],\"v3xM25\":[\"Obdržíte e-mail s odkazem na aktualizaci hesla\"],\"gcoiFh\":[\"Znovu připojit\"],\"mj1fkT\":[\"Záznamový obrázek\"],\"K6/7kH\":[\"Záznamový popisek\"],\"mAHjRd\":[\"Záznamová stránka\"],\"dSCufP\":[\"Výběr záznamů\"],\"LfH+Ea\":[\"Údaj přesměrování Url zkopírován do schránky\"],\"RZjynQ\":[\"URI přesměrování\"],\"vpZcGd\":[\"Znovu vygenerujte API klíč\"],\"Mwqo5m\":[\"Znovu vygenerujte klíč\"],\"D+Mv78\":[\"Znovu vygenerujte klíč\"],\"UiAJoB\":[\"Typ vztahu\"],\"5icoS1\":[\"Verze\"],\"HpK/8d\":[\"Načíst znovu\"],\"t/YqKh\":[\"Odstranit\"],\"ken+P9\":[\"Remove \",[\"workspaceMemberName\"],\"?\"],\"1O32oy\":[\"Odstranit účet\"],\"Q2u5E9\":[\"Odstranit jako výchozí\"],\"T/pF0Z\":[\"Odebrat z oblíbených\"],\"00Lxnh\":[\"Odstranit možnost\"],\"OfhWJH\":[\"Obnovit\"],\"KbS2K9\":[\"Obnovit heslo\"],\"1IWc1n\":[\"Obnovit na\"],\"WHiaOl\":[\"REST\"],\"yKu/3Y\":[\"Obnovit\"],\"y4Ib1n\":[\"Obnovit záznam\"],\"Vw369F\":[\"Obnovit záznamy\"],\"kx0s+n\":[\"Výsledky\"],\"5dJK4M\":[\"Role\"],\"uJc01W\":[\"Rumunština\"],\"UX0N2y\":[\"Spusťte pracovní postup a vraťte se sem pro zobrazení jeho provedení\"],\"nji0/X\":[\"Ruština\"],\"tfDRzk\":[\"Uložit\"],\"apLRCm\":[\"Uložit jako nové zobrazení\"],\"QJ8HBJ\":[\"Schema\"],\"A1taO8\":[\"Hledat\"],\"8NBMeZ\":[\"Hledat '\",[\"commandMenuSearch\"],\"' s...\"],\"l1/uy2\":[\"Hledat ve sloupci...\"],\"t3n1Qy\":[\"Vyhledejte člena\"],\"lnDfeK\":[\"Hledat typ\"],\"k7kp5/\":[\"Hledat v indexu...\"],\"7taA9j\":[\"Hledání ve sloupcích\"],\"ofuw3g\":[\"Hledat objekt...\"],\"lnwW17\":[\"Hledat ikonu\"],\"IMeaSJ\":[\"Hledání záznamů\"],\"8VEDbV\":[\"Tajemství\"],\"a3LDKx\":[\"Bezpečnost\"],\"QREcJS\":[\"Zobrazit aktivní verzi\"],\"BxIUpp\":[\"Zobrazit smazané záznamy\"],\"Z+SGGW\":[\"Zobrazit smazaná spuštění\"],\"91fiCe\":[\"Zobrazit smazané verze\"],\"5jZIe5\":[\"Zobrazit smazané pracovní postupy\"],\"OpPn5Z\":[\"Zobrazit spuštění\"],\"EtyY4+\":[\"Zobrazit verze\"],\"lYhPN0\":[\"Zobrazit historii verzí\"],\"pofGCP\":[\"Vyberte výchozí hodnotu pro toto logické pole\"],\"xraglu\":[\"Vyberte události, které chcete poslat na tento koncový bod\"],\"AXTJAW\":[\"Vyberte preferovaný jazyk\"],\"mjK8F3\":[\"Pošlete pozvánku e-mailem vašemu týmu\"],\"h69WC6\":[\"Odesláno\"],\"hdVMzO\":[\"Odesláno a přijato\"],\"6oxz/y\":[\"Srbština (cyrilice)\"],\"WKimFU\":[\"Správce serveru\"],\"yy5k7a\":[\"Server Admin Panel\"],\"LUc0oL\":[\"Detaily poskytovatele služby\"],\"YZwx1e\":[\"Nastavit výchozí roli pro tento pracovní prostor\"],\"PPcets\":[\"Nastavit jako výchozí\"],\"V7fgiB\":[\"Nastavte viditelnost emailu, spravujte váš seznam blokovaných a další.\"],\"qNbuWB\":[\"Nastavte název vaší vlastní domény a nakonfigurujte záznamy DNS.\"],\"cx14rp\":[\"Set the name of your domain\"],\"tn41zE\":[\"Nastavte název vaší subdomény\"],\"Tz0i8g\":[\"Nastavení\"],\"p8fNBm\":[\"Nastavení oprávnění\"],\"Vy9kmk\":[\"Sdílením tohoto odkazu pozvete uživatele do vašeho pracovního prostoru\"],\"gWk8gY\":[\"Měla by změna popisku pole změnit také API název?\"],\"WFtdWr\":[\"Měla by změna popisku objektu změnit také API?\"],\"uVg8dY\":[\"Postranní panel\"],\"5lWFkC\":[\"Přihlásit se\"],\"e+RpCP\":[\"Zaregistrovat se\"],\"5v3IHX\":[\"Jednotné přihlášení (SSO)\"],\"maCaRp\":[\"Jednotlivý\"],\"djfBXF\":[\"Jednotné a množné označení se musí lišit\"],\"zvwLTy\":[\"Jednotné a množné názvy se musí lišit\"],\"6Uau97\":[\"Přeskočit\"],\"f6Hub0\":[\"Seřadit\"],\"65A04M\":[\"Španělština\"],\"vnS6Rf\":[\"Jednotné přihlášení\"],\"ErU1td\":[\"Etapy\"],\"uAQUqI\":[\"Stav\"],\"ku9TbG\":[\"Subdoména\"],\"omhc+7\":[\"Subdoména je již zabraná\"],\"OlC/tU\":[\"Subdoména nemůže být delší než 30 znaků\"],\"ZETwlU\":[\"Subdoména nemůže být kratší než 3 znaky\"],\"DTG2nE\":[\"Subdoména aktualizována\"],\"97eDN2\":[\"Předmět a metadata\"],\"LYbP/A\":[\"Předmět a metadata budou sdíleny s vaším týmem.\"],\"J9ylmk\":[\"Předmět, obsah a přílohy budou sdíleny s vaším týmem.\"],\"B5jRKH\":[\"Předplatné bylo změněno \",[\"to\"]],\"AxQiPW\":[\"Součet\"],\"XYLcNv\":[\"Podpora\"],\"UaISq3\":[\"Švédština\"],\"9yk9d1\":[\"Přepnout \",[\"from\"]],\"qi74XZ\":[\"Přepnout \",[\"to\"]],\"L6Fg36\":[\"Přepnout fakturaci \",[\"to\"]],\"5TRY4+\":[\"Synchronizace selhala\"],\"N2FcBE\":[\"Synchronizováno\"],\"AtzMpB\":[\"Synchronizace popisku pole a API názvu\"],\"WZ6bN9\":[\"Synchronizace popisků objektů a API názvů\"],\"D4SseJ\":[\"Systémová nastavení\"],\"E3AMmw\":[\"Systémová nastavení - \",[\"systemDateFormatLabel\"]],\"0ZgB1e\":[\"Systémová nastavení - \",[\"systemTimeFormatLabel\"]],\"4hJhzz\":[\"Tabulka\"],\"xowcRf\":[\"Podmínky služby\"],\"NnH3pK\":[\"Testovat\"],\"bU9B27\":[\"Testovat pracovní postupy\"],\"lyaiTc\":[\"Text zkopírován do schránky\"],\"1xQkU9\":[\"Výchozí kód země pro nová telefonní čísla.\"],\"PmXLtL\":[\"Výchozí země pro nové adresy\"],\"2OUtmv\":[\"Popis tohoto pole\"],\"VGZYbZ\":[\"Email spojený s vaším účtem\"],\"h8mvCd\":[\"Název a ikona tohoto pole\"],\"e/dfFe\":[\"Název vašeho připojení\"],\"8EkdZh\":[\"Název vaší domény\"],\"+C8Rdp\":[\"Název vaší organizace\"],\"L97sPr\":[\"Stránka, kterou hledáte, buď zmizela nebo nikdy neexistovala. Pojďme vás dostat zpět na správnou cestu\"],\"uWikAA\":[\"Hodnoty tohoto pole\"],\"+69KDk\":[\"Hodnoty tohoto pole musí být unikátní\"],\"MHLapp\":[\"Kompletní detaily události budou sdíleny s vaším týmem.\"],\"ynfkhb\":[\"Během aktualizace hesla došlo k chybě.\"],\"PmtLRf\":[\"Došlo k problému\"],\"hqCwGc\":[\"Tato akce nemůže být vrácena zpět. Uživatele natrvalo odstraní a odstraní ho z všech přiřazení.\"],\"gWGuHC\":[\"Tuto akci nelze vrátit zpět. Tímto dojde k trvalému odstranění celého vašeho pracovního prostoru. <0/> Prosím, zadejte váš email k potvrzení.\"],\"yHIStW\":[\"This member will be unassigned from this role.\"],\"/tr8Uy\":[\"This Role has the following permissions.\"],\"6j5nJX\":[\"This Role is assigned to these workspace member.\"],\"xPfDRx\":[\"Tuto roli mají přiřazení následující členové pracovního prostoru.\"],\"n9nSNJ\":[\"Formát času\"],\"Mz2JN2\":[\"Časové pásmo\"],\"/VwdtK\":[\"Časové razítko a účastníci budou sdíleni s vaším týmem.\"],\"aqMzDX\":[\"na měsíční\"],\"WXXiXO\":[\"na roční\"],\"vb0Q0/\":[\"Celkový počet uživatelů\"],\"PiUt3N\":[\"Typ spouštěče\"],\"IQ5pAL\":[\"Typ spouštěče by měl být ruční - když nejsou vybráni žádní záznamy\"],\"c+xCSz\":[\"Pravda\"],\"haaL9N\":[\"Try our REST or GraphQL API playgrounds.\"],\"Kz91g/\":[\"Turečtina\"],\"+zy2Nq\":[\"Typ\"],\"U83IeL\":[\"Napište cokoli\"],\"V9+2pH\":[\"Ukrajinština\"],\"wSXm5S\":[\"Unikátní\"],\"29VNqC\":[\"Neznámá chyba\"],\"GQCXQS\":[\"Neomezený počet kontaktů\"],\"+b7T3G\":[\"Aktualizováno\"],\"ONWvwQ\":[\"Nahrát\"],\"2IXDgU\":[\"Nahrát soubor\"],\"akDOEO\":[\"Nahrajte XML soubor s vašimi spojovacími údaji\"],\"IagCbF\":[\"URL\"],\"6dMpmz\":[\"Použít jako koncept\"],\"oTTQsc\":[\"Používejte pouze písmena, číslice a pomlčku. Začínejte a končete písmenem nebo číslicí\"],\"c6uZUV\":[\"Použijte naše API nebo ručně přidejte první \",[\"objectLabel\"]],\"7PzzBU\":[\"Uživatel\"],\"YFciqL\":[\"E-mail uživatele\"],\"GjhOGB\":[\"ID uživatele\"],\"RNv3YS\":[\"Impersonace uživatele\"],\"tNT8wT\":[\"Informace o uživateli\"],\"IjyOjp\":[\"Uživatel není přihlášen\"],\"5ZYU8G\":[\"Jméno uživatele\"],\"Sxm8rQ\":[\"Uživatelé\"],\"fXVIZq\":[\"Hodnoty\"],\"IHIWR4\":[\"Verze aplikace\"],\"fROFIL\":[\"Vietnamština\"],\"jpctdh\":[\"Pohled\"],\"KANz0G\":[\"Zobrazit detaily fakturace\"],\"igR+P/\":[\"Zobrazit detaily provedení\"],\"qZmd6a\":[\"Nastavení zobrazení\"],\"bJAIqT\":[\"Typ pohledu\"],\"2q/Q7x\":[\"Viditelnost\"],\"oh8+os\":[\"Viditelný\"],\"JiDDG4\":[\"Viditelné skupiny\"],\"6n7jtr\":[\"Vizualizovat\"],\"id6ein\":[\"Podporujeme vaše čtvercové PNG, JPEG a GIFy menší než 10MB\"],\"ZS7vYp\":[\"Na tento koncový bod budeme zasílat POST požadavky při každé nové události\"],\"PI4LiB\":[\"Pošleme vám odkaz pro ověření vlastnictví domény\"],\"TRDppN\":[\"Webhook\"],\"v1kQyJ\":[\"Webhooky\"],\"Jt1WNL\":[\"Welcome to\"],\"ke0EDP\":[\"Vítejte ve \",[\"workspaceName\"]],\"C51ilI\":[\"Kdy bude API klíč expirovat.\"],\"leUubq\":[\"Kdy bude klíč deaktivován\"],\"wvyffT\":[\"Není možné testovat pracovní postup\"],\"GpJjC8\":[\"Průběh práce běží...\"],\"o0xBLi\":[\"Běh průběhu práce selhal\"],\"pmUArF\":[\"Pracovní prostor\"],\"VicISP\":[\"Smazání pracovního prostoru\"],\"Y0Fj4S\":[\"Logo pracovního prostoru\"],\"CozWO1\":[\"Název pracovního prostoru\"],\"6X+cfX\":[\"Název pracovního prostoru\"],\"pmt7u4\":[\"Pracovní prostory\"],\"5iSD9O\":[\"Zalomit na stránkách záznamů\"],\"Q9pNST\":[\"Napište popis\"],\"L80fMJ\":[\"Napište tajemství\"],\"3d1wCB\":[\"ano\"],\"MFDARJ\":[\"Nemáte povoleno vytvářet záznamy pro tento objekt\"],\"5eVYbs\":[\"You are not allowed to create records in this object\"],\"TBApzn\":[\"Nemáte přístup k přihlášení jako jiný uživatel.\"],\"zSkMV0\":[\"Okamžitě budete účtováni za celý rok.\"],\"XVnj6K\":[\"Váš kreditní zůstatek bude použit na uhrazení měsíčních účtů.\"],\"+5YqGH\":[\"Vaše předměty e-mailů a názvy schůzek budou sdíleny s vaším týmem.\"],\"la0RPA\":[\"Obsah vašich e-mailů a událostí bude sdílen s vaším týmem.\"],\"9ivpwk\":[\"Vaše jméno, jak bude zobrazeno\"],\"3RASGN\":[\"Vaše jméno, jak bude zobrazeno v aplikaci\"],\"YQK8fJ\":[\"Váš pracovní prostor\"],\"RhNbPE\":[\"Váš pracovní prostor bude deaktivován\"]}")as Messages;
Greptile
greptile
logic: Duplicate key 'Přidat do oblíbených' (Add to favorites) exists with keys 'yVOmgE' and 'pBsoKL'
diff block
import { useTranslations } from 'next-intl';
const TaskEstimationsInfo = () => {
- const [task] = useAtom(detailedTaskState);
- const t = useTranslations();
- // const { user } = useAuthenticateUser();
+ const [task] = useAtom(detailedTaskState);
+ const t = useTranslations();
+ // const { user } = useAuthenticateUser();
- return (
- <section className="flex flex-col gap-4 p-[0.9375rem]">
- <TaskRow
- labelTitle={t('pages.taskDetails.ESTIMATIONS')}
- // TODO
- // Commented icon temporary, will be enable it in future once dynamic implementation done
- // afterIconPath="/assets/svg/estimations.svg"
- >
- <Disclosure>
- {({ open }) => (
- <div className="flex flex-col w-full mt-[0.125rem]">
- <Disclosure.Button className="flex items-center justify-between w-full">
- <TaskEstimate
- _task={task}
- className="not-italic font-semibold text-xs leading-[140%] tracking-[-0.02em] text-[#282048] dark:text-white"
- wrapperClassName="w-4"
- />
+ return (
+ <section className="flex flex-col gap-4 p-[0.9375rem]">
+ <TaskRow
+ labelTitle={t('pages.taskDetails.ESTIMATIONS')}
+ // TODO
+ // Commented icon temporary, will be enable it in future once dynamic implementation done
+ // afterIconPath="/assets/svg/estimations.svg"
+ >
+ <Disclosure>
+ {({ open }) => (
+ <div className="flex flex-col w-full mt-[0.125rem]">
+ <Disclosure.Button className="flex items-center justify-between w-full">
+ <TaskEstimate
+ _task={task}
+ className="not-italic font-semibold text-xs leading-[140%] tracking-[-0.02em] text-[#282048] dark:text-white"
+ wrapperClassName="w-4"
+ />
- {!open ? (
- <ChevronUpIcon className="text-[#292D32] dark:text-white w-4 h-4" />
- ) : (
- <ChevronDownIcon className="text-[#292D32] dark:text-white w-4 h-4" />
- )}
- </Disclosure.Button>
- <Disclosure.Panel>
- <div className="flex flex-col gap-[0.5625rem] mt-2">
- {task?.members?.map((member) => {
- // TODO
- // Enable other users estimations in v2
- return (
- <React.Fragment key={member.id}>
- <ProfileInfoWithTime
- key={member.id}
- profilePicSrc={member.user?.imageUrl}
- names={member.fullName}
- userId={member.userId}
- //@ts-ignore
- time={
- <TaskEstimate
- _task={task}
- className="not-italic font-medium text-[0.625rem] 3xl:text-xs !text-[#938FA3] dark:text-white"
- wrapperClassName="w-4"
- />
- }
- />
- </React.Fragment>
- );
- })}
- </div>
- {/*
+ {open ? (
+ <ChevronUpIcon className="text-[#292D32] dark:text-white w-4 h-4" />
+ ) : (
+ <ChevronDownIcon className="text-[#292D32] dark:text-white w-4 h-4" />
+ )}
+ </Disclosure.Button>
+ <Disclosure.Panel>
+ <div className="flex flex-col gap-[0.5625rem] mt-2">
+ {task?.members?.map((member) => {
+ // TODO
+ // Enable other users estimations in v2
+ return (
+ <React.Fragment key={member.id}>
+ <ProfileInfoWithTime
+ key={member.id}
+ profilePicSrc={member.user?.imageUrl}
Greptile
greptile
logic: Duplicate key prop - remove key from ProfileInfoWithTime since it's already on the Fragment
suggested fix
<ProfileInfoWithTime
 													profilePicSrc={member.user?.imageUrl}
diff block
+import { Form, LocalStorage, ActionPanel, Action, showToast, Toast, useNavigation } from "@raycast/api";
+import { TRIGGER_FILTERS_KEY } from "../utils/constants";
+import { useEffect, useState } from "react";
+import { getAllTagsAPI } from "../utils/n8n-api-utils";
+import { Tag } from "../types/types"; // Assuming Tag type is defined in types.ts
+
+export default function TriggerFilterForm() {
+ const { pop } = useNavigation();
+ const [selectedTagNames, setSelectedTagNames] = useState<string[]>([]);
+ const [availableTags, setAvailableTags] = useState<Tag[]>([]);
+ const [isLoading, setIsLoading] = useState<boolean>(true);
+
+ // Helper function to validate filter data
+ function validateFilters(data: unknown): string[] {
+ // If it's not an array, return empty array
+ if (!Array.isArray(data)) {
+ console.warn("Saved filters are not in array format, resetting");
+ return [];
+ }
+
+ // Filter out non-string values
+ const validFilters = data.filter((item) => typeof item === "string");
+
+ // If we found invalid items, log a warning
+ if (validFilters.length !== data.length) {
+ console.warn(`Found ${data.length - validFilters.length} invalid filter items, cleaning up`);
+ }
+
+ return validFilters;
+ }
+
+ useEffect(() => {
+ async function loadData() {
+ setIsLoading(true);
+ try {
+ // Load saved filters
+ const storedFilters = await LocalStorage.getItem<string>(TRIGGER_FILTERS_KEY);
+ if (storedFilters) {
+ try {
+ const parsedFilters = JSON.parse(storedFilters);
+ const validFilters = validateFilters(parsedFilters);
+ setSelectedTagNames(validFilters);
+
+ // If we had to clean up filters, save the cleaned version back
+ if (Array.isArray(parsedFilters) && validFilters.length !== parsedFilters.length) {
+ await LocalStorage.setItem(TRIGGER_FILTERS_KEY, JSON.stringify(validFilters));
+ }
+ } catch (parseError) {
+ console.error("Failed to parse saved filters:", parseError);
+ // Reset filters if they're corrupted
+ await LocalStorage.removeItem(TRIGGER_FILTERS_KEY);
+ setSelectedTagNames([]);
+ }
+ }
+
+ // Fetch available tags
+ const tagsFromApi = await getAllTagsAPI();
+ setAvailableTags(tagsFromApi);
+ } catch (error) {
+ console.error("Failed to load filter data:", error);
+ await showToast({
+ style: Toast.Style.Failure,
+ title: "Failed to load filter settings",
+ message: error instanceof Error ? error.message : String(error),
+ });
+ } finally {
+ setIsLoading(false);
+ }
+ }
+ loadData();
+ }, []);
+
+ return (
+ <Form
+ isLoading={isLoading}
+ actions={
+ <ActionPanel>
+ <Action.SubmitForm
+ title="Save Filters"
+ onSubmit={async (values) => {
+ const tagsToSave = values.tags || [];
+ // Validate that all items are strings
+ const validTags = tagsToSave.filter((tag: unknown) => typeof tag === "string");
+
+ try {
+ await LocalStorage.setItem(TRIGGER_FILTERS_KEY, JSON.stringify(validTags));
+ await showToast({
+ style: Toast.Style.Success,
+ title: "Filters Saved",
+ message: `${validTags.length} filter(s) saved`,
+ });
+ pop(); // Close the form after saving
+ } catch (error) {
+ await showToast({
+ style: Toast.Style.Failure,
+ title: "Failed to save filters",
+ message: error instanceof Error ? error.message : String(error),
+ });
+ }
+ }}
+ />
+ <Action
+ title="Clear Filters"
+ style={Action.Style.Destructive}
+ onAction={async () => {
+ try {
+ await LocalStorage.removeItem(TRIGGER_FILTERS_KEY);
+ setSelectedTagNames([]); // Clear state as well
+ await showToast({ style: Toast.Style.Success, title: "Filters Cleared" });
+ pop();
+ } catch (error) {
+ await showToast({ style: Toast.Style.Failure, title: "Failed to clear filters" });
+ }
+ }}
+ shortcut={{ modifiers: ["cmd", "shift"], key: "d" }}
+ />
+ </ActionPanel>
+ }
+ >
+ <Form.TagPicker id="tags" title="Filter by Tags" value={selectedTagNames} onChange={setSelectedTagNames}>
+ {availableTags.map((tag) => (
+ <Form.TagPicker.Item key={tag.id || tag.name} value={tag.name} title={tag.name} />
+ ))}
Greptile
greptile
Using tag.id || tag.name as key could lead to duplicate keys if neither exists. Consider adding a unique identifier or index
diff block
+import { Form, ActionPanel, Action, showToast, Toast, useNavigation } from "@raycast/api";
+import { useForm, FormValidation, usePromise } from "@raycast/utils";
+import { getSavedItems, setSavedItems } from "../utilities/storage";
+import { EntryDirectReplace, RegexItemDirectReplace } from "../types";
+import { nanoid } from "nanoid";
+import { Fragment, PropsWithChildren, useState } from "react";
+
+export interface FormDirectReplaceProps extends PropsWithChildren {
+ initialValues: EntryDirectReplace;
+ isNew?: boolean;
+}
+
+export default function FormDirectReplace({ initialValues, isNew, children }: FormDirectReplaceProps) {
+ const { pop } = useNavigation();
+
+ const emptyRegexItem: RegexItemDirectReplace = {
+ id: nanoid(),
+ regex: "",
+ replacement: "",
+ matchCaseInsensitive: false,
+ matchGlobally: true,
+ matchMultiline: true,
+ };
+ const { data: replacementEntries, isLoading } = usePromise(getSavedItems);
+
+ const [regexItems, setRegexItems] = useState<RegexItemDirectReplace[]>(initialValues?.regexItems || [emptyRegexItem]);
+
+ function addRegexItem() {
+ setRegexItems((prev) => [...prev, emptyRegexItem]);
Greptile
greptile
logic: Each call to addRegexItem creates a new emptyRegexItem with the same default values but doesn't generate a new ID, which could lead to duplicate keys.
suggested fix
+ setRegexItems((prev) => [...prev, { ...emptyRegexItem, id: nanoid() }]);
diff block
-/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"gdf0h7\":[\" Aquests són només els valors del servidor. Assegureu-vos que el vostre entorn de treball tingui les\\n mateixes variables i valors, això és necessari per a tasques asincròniques com la\\n sincronització de correu electrònic.\"],\"ypz2+E\":[\": Buit\"],\"CE75IR\":[\": Futur\"],\"Nk/d+Z\":[\": No\"],\"1ORnec\":[\": NoBuit\"],\"11QpPG\":[\": NoNul\"],\"gK4ysT\":[\": Passat\"],\"4iJDkt\":[\": Avui\"],\"ROdDR9\":[[\"aggregateLabel\"],\" de \",[\"fieldLabel\"]],\"uogEAL\":[\"Clau d'API de \",[\"apiKeyName\"]],\"6j5rE1\":[[\"name\"]],\"WN9tFl\":[[\"workspaceMemberName\"],\" serà desassignat del següent rol:\"],\"YT0WJ4\":[\"1 000 execucions de nusos de flujos de treball\"],\"vb5TwV\":[\"1. Selecciona un tipus de camp\"],\"SLjiTq\":[\"1. Tipus\"],\"4EdXYs\":[\"12h (\",[\"hour12Label\"],\")\"],\"yXvRMf\":[\"2. Configura\"],\"0HAF12\":[\"2. Configura el camp\"],\"QsMprd\":[\"24h (\",[\"hour24Label\"],\")\"],\"nMTB1f\":[\"Un entorn compartit on podreu gestionar les vostres relacions amb els clients amb el vostre equip.\"],\"09tRFp\":[\"Capacitat per interactuar amb cada objecte\"],\"ssjjFt\":[\"Avorta\"],\"uyJsf6\":[\"Sobre\"],\"AeXO77\":[\"Compte\"],\"nD0Y+a\":[\"Eliminació de compte\"],\"bPwFdf\":[\"Comptes\"],\"7L01XJ\":[\"Accions\"],\"FQBaXG\":[\"Activa\"],\"tu8A/k\":[\"Activa el flux de treball\"],\"F6pfE9\":[\"Actiu\"],\"Mue4oc\":[\"Claus d'API actives creades per tu o pel teu equip.\"],\"m16xKo\":[\"Add\"],\"MPPZ54\":[\"Afegeix compte\"],\"HD0x5p\":[\"Afegeix un domini d'accés aprovat\"],\"DpV70M\":[\"Afegeix camp\"],\"vCSBPD\":[\"Afegeix filtre\"],\"Hkobke\":[\"Afegeix nou\"],\"dEO3Zx\":[\"Afegeix objecte\"],\"Dl5lVI\":[\"Afegeix opció\"],\"sgXUv+\":[\"Afegeix un proveïdor d'identitats SSO\"],\"5+ttxv\":[\"Afegeix a la llista de bloqueig\"],\"yVOmgE\":[\"Afegeix a les preferides\"],\"pBsoKL\":[\"Afegeix a les preferides\"],\"q9e2Bs\":[\"Afegeix vista\"],\"m2qDV8\":[\"Afegeix el teu primer \",[\"objectLabel\"]],\"vLO+NG\":[\"Afegit \",[\"beautifiedCreatedAt\"]],\"jEHeq+\":[\"Afegit \",[\"beautifyPastDateRelative\"]],\"9iIYOy\":[\"Afegit a la llista de bloqueig\"],\"Eis4ey\":[\"Ajusta els paràmetres relacionats amb el rol\"],\"g1in8j\":[\"Panel d'Administració\"],\"tMFFwF\":[\"Filtre avançat\"],\"1Cox/a\":[\"Afrikaans\"],\"N40H+G\":[\"Tots\"],\"3saA7W\":[\"Tots (\",[\"relationRecordsCount\"],\")\"],\"9ljU00\":[\"Totes les accions\"],\"7EZqN0\":[\"Tots els correus electrònics i esdeveniments vinculats a aquest compte seran eliminats\"],\"623MHa\":[\"Totes les línies\"],\"aFE/OW\":[\"Tots els objectes\"],\"Hm90t3\":[\"Tots els rols\"],\"GMx1K0\":[\"Permetre l'inici de sessió a través de la funció d'inici de sessió únic de Google.\"],\"dea+zy\":[\"Permetre l'inici de sessió a través de la funció d'inici de sessió únic de Microsoft.\"],\"wMg43c\":[\"Permet que es pugui convidar a usuaris nous compartint un enllaç d'invitació.\"],\"vHeVg5\":[\"Permetre als usuaris iniciar sessió amb un correu electrònic i contrasenya.\"],\"LG4K0m\":[\"S'ha produït un error en actualitzar la contrasenya\"],\"mJ6m4C\":[\"Una descripció opcional\"],\"lxentK\":[\"S'ha produït un error inesperat\"],\"HZFm5R\":[\"i\"],\"xJR+Wq\":[\"Qualsevol persona amb una adreça de correu en aquests dominis pot registrar-se en aquest espai de treball.\"],\"OZtEcz\":[\"API\"],\"0RqpZr\":[\"API i Webhooks\"],\"yRnk5W\":[\"Clau d'API\"],\"r+NRG6\":[\"La clau API s'ha copiat al porta-retalls\"],\"5h8ooz\":[\"Claus d'API\"],\"kAtj+q\":[\"Nom de l'API\"],\"lwCAhN\":[\"Nom de l'API (Plural)\"],\"KclpRp\":[\"Nom de l'API (Singular)\"],\"Z3Brb2\":[\"Valors de l'API\"],\"JR6nY7\":[\"API\"],\"aAIQg2\":[\"Aparença\"],\"9tggYj\":[\"Dominis Aprovats\"],\"1844JP\":[\"Approved Email Domain\"],\"8HV3WN\":[\"Àrab\"],\"3iX0kh\":[\"Esteu segurs que voleu canviar el vostre interval de facturació?\"],\"3SRf5B\":[\"Are you sure you want to assign this role?\"],\"8Y3Jbl\":[\"Esteu segur que voleu suprimir aquests registres? Es poden recuperar des del menú d'ordres (\",[\"osControlSymbol\"],\" + K).\"],\"Se0vJw\":[\"Esteu segur que voleu suprimir aquest registre? Es pot recuperar des del menú d'ordres (\",[\"osControlSymbol\"],\" + K).\"],\"nYD/Cq\":[\"Ascendent\"],\"9ch9Mz\":[\"Assignar \",[\"workspaceMemberName\"],\"?\"],\"rfYmIr\":[\"Assigneu rols per especificar els permisos d'accés de cada membre\"],\"2y2quh\":[\"Assignar al membre\"],\"OItM/o\":[\"Membres assignats\"],\"lxQ+5m\":[\"Assignat a\"],\"0dtKl9\":[\"Assignació\"],\"H8QGSx\":[\"Com a mínim 8 caràcters de llargada.\"],\"Y7Dx6e\":[\"S'ha d'habilitar com a mínim un mètode d'autenticació\"],\"P8fBlG\":[\"Autenticació\"],\"htuqBH\":[\"Error en l'autenticació\"],\"yIVrHZ\":[\"Autoritzar\"],\"wTBNbL\":[\"URI autoritzat\"],\"Ovw0c6\":[\"URL autoritzat copiat al porta-retalls\"],\"2zJkmL\":[\"Creació automàtica\"],\"YRT7ZW\":[\"Crea automàticament contactes per a persones amb qui has participat en un esdeveniment.\"],\"lgw3U4\":[\"Crea automàticament contactes per a persones.\"],\"RpExX0\":[\"Crear automàticament registres de Persones quan es reben o s'envien correus electrònics\"],\"3uQmjD\":[\"Mitjana\"],\"Dht9W3\":[\"Tornar al contingut\"],\"R+w/Va\":[\"Facturació\"],\"K1172m\":[\"Llista de blocatges\"],\"2yl5lQ\":[\"Reserva una trucada\"],\"8Pfllj\":[\"En utilitzar Twenty, accepteu les\"],\"PmmvzS\":[\"Calcula\"],\"AjVXBS\":[\"Calendari\"],\"wLtx+m\":[\"Configuració del calendari\"],\"HlJKLT\":[\"Estat de sincronització del calendari\"],\"EUpfsd\":[\"Calendaris\"],\"dEgA5A\":[\"Cancel·la\"],\"0TllC8\":[\"Cancel·la en qualsevol moment\"],\"rRK/Lf\":[\"Cancel·la el pla\"],\"N6gPiD\":[\"Cancel·la la subscripció\"],\"M1RLfx\":[\"Català\"],\"OfzMnb\":[\"Canvia \",[\"to\"]],\"VhMDMg\":[\"Canvia la contrasenya\"],\"SviKkE\":[\"Xinès — Simplificat\"],\"dzb4Ep\":[\"Xinès — Tradicional\"],\"JEFFOR\":[\"Trieu un objecte\"],\"Qz73jD\":[\"Tria entre protocols OIDC i SAML\"],\"YcrXB2\":[\"Tria la moneda predeterminada que s'aplicarà\"],\"LHce7q\":[\"Trieu els camps que identificaran els vostres registres\"],\"KT6rEB\":[\"Trieu el vostre proveïdor\"],\"9qP96p\":[\"Trieu la vostra prova\"],\"xCJdfg\":[\"Esborra\"],\"b9Y4up\":[\"ID del client\"],\"Bdj4LI\":[\"Secret del client\"],\"XUe4cu\":[\"Configuració del client\"],\"yz7wBu\":[\"Tanca\"],\"qYsAlX\":[\"Tanca el menú de comandament\"],\"H86f9p\":[\"Contraure\"],\"Xose0w\":[\"Codi de colors\"],\"NM9bMd\":[\"Vista compacta\"],\"+zUMwJ\":[\"Configureu una connexió SSO\"],\"QTNsSm\":[\"Configureu i personalitzeu les vostres preferències del calendari.\"],\"aGwm+D\":[\"Configureu com es mostren les dates a tota l'aplicació\"],\"ghdb7+\":[\"Configura com hauríem de mostrar els teus esdeveniments al teu calendari\"],\"Bh4GBD\":[\"Configureu els vostres correus electrònics i les preferències del calendari.\"],\"7VpPHA\":[\"Confirmar\"],\"D8ATlr\":[\"Connecteu un nou compte al vostre espai de treball\"],\"Zgi9Fd\":[\"Connecta amb Google\"],\"IOfqM8\":[\"Connecta amb Microsoft\"],\"9TzudL\":[\"Comptes connectats\"],\"Y2y0mC\":[\"Auto-creació de contactes\"],\"/5mghO\":[\"Conté\"],\"M73whl\":[\"Context\"],\"xGVfLh\":[\"Continua\"],\"RvVi9c\":[\"Continua amb el correu electrònic\"],\"oZyG4C\":[\"Continua amb Google\"],\"ztoybH\":[\"Continua amb Microsoft\"],\"u+VWhB\":[\"Copiat al porta-retalls!\"],\"CcGOj+\":[\"Copilot\"],\"he3ygx\":[\"Copia\"],\"7eVkEH\":[\"Copia l'enllaç d'invitació\"],\"y1eoq1\":[\"Copia l'enllaç\"],\"eZ5HO9\":[\"Copia l'enllaç per veure\"],\"Ej5euX\":[\"Copia aquesta clau ja que no serà visible de nou\"],\"SGsgDO\":[\"Nucli\"],\"wBMjJ2\":[\"Compte\"],\"EkZfen\":[\"Compta'ls tots\"],\"vQJINq\":[\"Compta buits\"],\"DzRsDJ\":[\"Compta no buits\"],\"9FZBbf\":[\"Compta valors únics\"],\"hYgDIe\":[\"Crea\"],\"zNoOC2\":[\"Crea un flux de treball i torna aquí per veure les seves versions\"],\"uXGLuq\":[\"Crea clau d'API\"],\"d0DCww\":[\"Crea un nou registre\"],\"gSyzEV\":[\"Crea perfil\"],\"RoyYUE\":[\"Crea Rol\"],\"6MP9lc\":[\"Crea camp de selecció\"],\"zt6Erc\":[\"Crea vista\"],\"dkAPxi\":[\"Crea Webhook\"],\"9chYz/\":[\"Crea el teu espai de treball\"],\"d+F6q9\":[\"Creat\"],\"p76aoR\":[\"Versió actual:\"],\"XQ681Q\":[\"Domini Personalitzat\"],\"1GTWIA\":[\"Domini personalitzat actualitzat\"],\"8skTDV\":[\"Objectes personalitzats\"],\"qt+EaC\":[\"Personalitza els camps disponibles a les vistes de \",[\"objectLabelSingular\"],\".\"],\"CMhr4u\":[\"Personalitza el Domini\"],\"RP2we8\":[\"Personalitza camps\"],\"bCJa9l\":[\"Personalitza la seguretat del teu espai de treball\"],\"w9VTXG\":[\"Txec\"],\"Zz6Cxn\":[\"Zona de perill\"],\"Fo2vDn\":[\"Danès\"],\"pvnfJD\":[\"Fosc\"],\"TtG/MN\":[\"Eliminació de dades\"],\"5cNMFz\":[\"Model de dades\"],\"r+cVRP\":[\"Tipus de dades\"],\"mYGY3B\":[\"Data\"],\"Ud9zHv\":[\"Data i hora\"],\"Lhd0oQ\":[\"Format de data\"],\"5y3O+A\":[\"Desactiva\"],\"qk4i22\":[\"Desactiva \\\"Sincronitza Etiquetes d'Objectes i Noms d'API\\\" per establir un nom d'API personalitzat\"],\"T2YbXF\":[\"Desactiva l'objecte\"],\"gexAq8\":[\"Desactiva aquest camp\"],\"4tpC8V\":[\"Desactiva el Flux de treball\"],\"yAT3be\":[\"Desactivat\"],\"mC21D6\":[\"País predeterminat\"],\"4zuPQL\":[\"Codi de país predeterminat\"],\"aQ8swY\":[\"Valor predeterminat\"],\"Y2ImVJ\":[\"Defineix el nom i la descripció del teu objecte\"],\"bQkkFU\":[\"Defineix què serà visible per a altres usuaris al teu espai de treball\"],\"cnGeoo\":[\"Elimina\"],\"ZDGm40\":[\"Suprimeix el compte\"],\"gAz0S5\":[\"Suprimeix el compte i totes les dades associades\"],\"hGfWDm\":[\"Suprimeix la clau d'API\"],\"4dpwsE\":[\"Elimina el registre\"],\"kf0A63\":[\"Esborrar registres\"],\"T6S2Ns\":[\"Esborrar aquesta integració\"],\"aRG49z\":[\"Esborra vista\"],\"snMaH4\":[\"Esborrar webhook\"],\"UA2IpC\":[\"Esborrar procés de treball\"],\"ABwG9x\":[\"Esborrar processos de treball\"],\"kYu0eF\":[\"Esborrar espai de treball\"],\"mk2Ygs\":[\"Esborrar tot l'espai de treball\"],\"vGjmyl\":[\"Eliminat\"],\"kcGoDz\":[\"Deleted \",[\"objectNamePlural\"]],\"WH/5rN\":[\"Registres suprimits\"],\"/TC7qI\":[\"Execucions eliminades\"],\"Wj5mzm\":[\"Versions eliminades\"],\"gw3Tlm\":[\"Fluxos de treball eliminats\"],\"Cko536\":[\"Descendent\"],\"Nu4oKW\":[\"Descripció\"],\"2xxBws\":[\"Destruir\"],\"n+SX4g\":[\"Desenvolupadors\"],\"zAg2B9\":[\"Descartar esborrany\"],\"Xm/s+u\":[\"Mostra\"],\"8Vg8H7\":[\"Mostra com un nombre simple o un percentatge\"],\"i66xz9\":[\"Mostrar com a data relativa\"],\"GoHpxA\":[\"Mostra text en múltiples línies\"],\"U9q4zF\":[\"No conté\"],\"EoKe5U\":[\"Domini\"],\"yGpVSw\":[\"Domini afegit correctament.\"],\"7kVRe6\":[\"Els dominis han de ser més petits de 256 caràcters, no poden contenir espais i no poden contenir cap caràcter especial.\"],\"KUxVkp\":[\"No auto-crear contactes.\"],\"cx0Ws8\":[\"No crear contactes de/cap a correus electrònics de Gmail, Outlook\"],\"3qDEYI\":[\"No sincronitzar correus de team@ support@ noreply@...\"],\"WcWS//\":[\"Descarrega fitxer\"],\"KIjvtr\":[\"Holandès\"],\"QVVmxi\":[\"Ex. integració de gestió\"],\"tOkc8o\":[\"El més aviat possible\"],\"JTbQuO\":[\"Data més aviat possible\"],\"ePK91l\":[\"Edita\"],\"v+uKyy\":[\"Editar interval de facturació\"],\"9QCQIc\":[\"Edita valors dels camps\"],\"oKQ7ls\":[\"Edita camps\"],\"h2KoTu\":[\"Edita el mètode de pagament, veure les factures i més\"],\"6o1M/Q\":[\"Edita el nom del teu subdomini o estableix un domini personalitzat.\"],\"O3oNi5\":[\"Correu electrònic\"],\"2SWjdJ\":[\"Email can not be empty\"],\"unEEog\":[\"El correu electrònic no pot estar buit\"],\"lfQsvW\":[\"Integració de correu electrònic\"],\"QT/Wo7\":[\"El correu electrònic o domini ja està en la llista de bloqueig\"],\"LimKOG\":[\"Verificació de correu electrònic\"],\"TBv/iZ\":[\"Error en la verificació del correu electrònic.\"],\"svTijF\":[\"Enllaç de verificació del correu electrònic reenviat!\"],\"00icDW\":[\"Correu electrònic verificat.\"],\"VI2hiF\":[\"Correu electrònic/Domini\"],\"BXEcos\":[\"Correus electrònics\"],\"Ww/M6X\":[\"Configuració de correus electrònics\"],\"eXoH4Q\":[\"empleats\"],\"gqv5ZL\":[\"Empleats\"],\"N2S1rs\":[\"Buit\"],\"OMbipf\":[\"Array Buida\"],\"3hSGoJ\":[\"Objecte Buit\"],\"T3juzf\":[\"URL de l'endpoint\"],\"lYGfRP\":[\"Anglès\"],\"/bfFKe\":[\"Gaudeix d'un període de prova gratuït de \",[\"withCreditCardTrialPeriodDuration\"],\" dies\"],\"XJU8BD\":[\"Introdueix les credencials per establir la connexió\"],\"rGWgcm\":[\"Introdueix la informació per establir la connexió\"],\"rYIISB\":[\"Introdueix ID d'usuari o adreça de correu electrònic\"],\"GpB8YV\":[\"Empresa\"],\"8PrrNJ\":[\"Identificador d'entitat copiat al porta-retalls\"],\"7RnAWe\":[\"Variables d'entorn\"],\"XOEl9R\":[\"Error en copiar al porta-retalls\"],\"c3qGJX\":[\"Error en eliminar la clau d'API: \",[\"err\"]],\"QnVLjD\":[\"Error en eliminar la invitació\"],\"cyvTSq\":[\"Error en eliminar el Proveïdor d'Identitats SSO\"],\"WEltn2\":[\"Error en editar el Proveïdor d'Identitats SSO\"],\"bj7nh3\":[\"Error en regenerar la clau d'API: \",[\"err\"]],\"clfpgU\":[\"Error en reenviar la invitació\"],\"VSQxWH\":[\"Error en canviar la subscripció \",[\"to\"],\".\"],\"JLxMta\":[\"Estableix els endpoints de webhook per a les notificacions sobre esdeveniments asincrònics.\"],\"poC90w\":[\"Visibilitat de l'esdeveniment\"],\"jvNRZW\":[\"Els esdeveniments en què has participat es mostren en vermell.\"],\"wqF3jl\":[\"Tot\"],\"QQlMid\":[\"Excloure els correus electrònics de grup\"],\"+tk2yZ\":[\"Excloure els correus electrònics no professionals\"],\"cIgBjB\":[\"Exclude the following people and domains from my email sync\"],\"yhhfqh\":[\"Exclou les persones i dominis següents de la meva sincronització del correu electrònic. Les converses internes no s'importaran\"],\"fV7V51\":[\"Objectes existents\"],\"LFNXuj\":[\"Sortir de la pantalla completa\"],\"IZ4o2e\":[\"Sortir de la configuració\"],\"1A3EXy\":[\"Ampliar\"],\"tXGQvS\":[\"Expected selected node to be a create step node.\"],\"bKBhgb\":[\"Experiència\"],\"LxRNPw\":[\"Caducitat\"],\"SkXfL0\":[\"Data de caducitat\"],\"M1RnFv\":[\"Caducat\"],\"i9qiyR\":[\"Caduca en\"],\"GS+Mus\":[\"Exportar\"],\"G5DJkP\":[\"Exportar registre\"],\"ep2rbf\":[\"Exportar registres\"],\"vwtAUW\":[\"Exportar execucions\"],\"q46CjD\":[\"Exportar a PDF\"],\"4FLUle\":[\"Exportar versions\"],\"DaGxE0\":[\"Exportar vista\"],\"+FMXdE\":[\"Exportar el flux de treball\"],\"XcAij/\":[\"Exportar fluxos de treball\"],\"eWCNmu\":[\"Export Workflows\"],\"jARNNi\":[\"No s'ha pogut validar la clau API. Comproveu la vostra clau API i torneu-ho a intentar.\"],\"ocUvR+\":[\"Fals\"],\"X9kySA\":[\"Preferits\"],\"YXjpZx\":[\"Funcionalitat de bandera\"],\"kP/brT\":[\"Funcionalitats i usurpació d'identitat\"],\"nrXDdR\":[\"Nom del camp\"],\"zXgopL\":[\"Tipus de camp\"],\"vF68cg\":[\"Camps\"],\"3w/aqw\":[\"Compte dels camps\"],\"o7J4JM\":[\"Filtrar\"],\"cSev+j\":[\"Filtres\"],\"USZ2N6\":[\"Finès\"],\"ZyIk6Y\":[\"Primeres 10 línies\"],\"I3hko2\":[\"Primeres 2 línies\"],\"BDDkm3\":[\"Primeres 5 línies\"],\"kODvZJ\":[\"Nom\"],\"glx6on\":[\"Has oblidat la teva contrasenya?\"],\"nLC6tu\":[\"Francès\"],\"aTieE0\":[\"de mensual a anual\"],\"K04lE5\":[\"d'anual a mensual\"],\"scmRyR\":[\"Accés complet\"],\"xANKBj\":[\"Funcions\"],\"Weq9zb\":[\"General\"],\"DDcvSo\":[\"Alemany\"],\"NXEW3h\":[\"Treu el màxim partit al teu espai de treball convidant al teu equip.\"],\"zSGbaR\":[\"Obteniu la vostra subscripció\"],\"2GT3Hf\":[\"Global\"],\"mT57+Q\":[\"Anar a Configuració\"],\"hWp1MY\":[\"Concedeix a l'equip de suport de Twenty accés temporal al teu espai de treball per poder solucionar problemes o recuperar contingut en el teu nom. Pots revocar l'accés en qualsevol moment.\"],\"gBiL6J\":[\"GraphQL\"],\"/YalkJ\":[\"Entorn de proves de l'API GraphQL\"],\"JXaffl\":[\"Major que\"],\"CZXzs4\":[\"Grec\"],\"ALoP4W\":[\"Agrupa per\"],\"I1IOmb\":[\"Estat de salut\"],\"3oTCgM\":[\"Hebreu\"],\"D+zLDD\":[\"Ocult\"],\"oK+1Wj\":[\"Camps ocults\"],\"vLyv1R\":[\"Amagar\"],\"HS8BG/\":[\"Amaga grups buits\"],\"B06Bgk\":[\"Com seràs identificat a l'aplicació.\"],\"k7iMla\":[\"Com funciona el vostre sistema\"],\"mkWad2\":[\"Hongarès\"],\"wwu18a\":[\"Icona\"],\"XTWO+W\":[\"Icona i nom\"],\"sJGljQ\":[\"Identificador\"],\"06cbfQ\":[\"Proveïdor d'identitat\"],\"LPN8Ma\":[\"Metadades XML del Proveïdor d'Identitat\"],\"j843N3\":[\"Si has perdut aquesta clau, pots regenerar-la, però tingues en compte que qualsevol script que utilitzi aquesta clau haurà de ser actualitzat. Si us plau, escriu \\\"\",[\"confirmationValue\"],\"\\\" per confirmar.\"],\"tSVr6t\":[\"Usurpa\"],\"l3s5ri\":[\"Importa\"],\"eECp4f\":[\"Importar registres\"],\"ZsIcZZ\":[\"Importar fluxos de treball\"],\"RqSvT0\":[\"Important\"],\"NoNwIX\":[\"Inactiu\"],\"pZ/USH\":[\"Índexs\"],\"JE2tjr\":[\"L'entrada ha de ser en camel case i no pot començar amb un número\"],\"AwUsnG\":[\"Instàncies\"],\"nbfdhU\":[\"Integracions\"],\"NtFk/Z\":[\"Proveïdor d'autenticació no vàlid\"],\"qcXnvu\":[\"Invalid custom domain. Custom domains have to be smaller than 256 characters in length, cannot be IP addresses, cannot contain spaces, cannot contain any special characters such as _~`!@#$%^*()=+{}[]|\\\\;:'\\\",<>/? and cannot begin or end with a '-' character.\"],\"P3qQyo\":[\"Domini personalitzat no vàlid. Si us plau, inclogueu almenys un subdomini (p. ex., sub.example.com).\"],\"u3hwhx\":[\"Domini invàlid. Els dominis han de ser més curts de 256 caràcters, no poden ser adreces IP, no poden contenir espais, ni cap caràcter especial com _~`!@#$%^*()=+{}[]|\\\\;:'\\\",<>/? i no poden començar o acabar amb el caràcter '-'.\"],\"B2Tpo0\":[\"Correu electrònic no vàlid\"],\"/m52AE\":[\"Correu electrònic o domini no vàlids\"],\"b2B7Ze\":[\"Enllaç de verificació del correu electrònic invàlid.\"],\"uzxr9u\":[\"Fitxer invàlid\"],\"QdoUFL\":[\"Valors del formulari no vàlids\"],\"K8XJhc\":[\"Espai de treball no vàlid\"],\"MFKlMB\":[\"Convida\"],\"0M8+El\":[\"Convidar per correu electrònic\"],\"PWIq/W\":[\"Convidar amb enllaç\"],\"3athPG\":[\"Convidar amb Enllaç\"],\"5IfmKA\":[\"Enllaç d'invitació enviat a les adreces de correu electrònic\"],\"d+Y+rP\":[\"Convida al teu equip\"],\"W153SA\":[\"És\"],\"N73SBG\":[\"És posterior\"],\"NgIlDJ\":[\"És anterior\"],\"Hte7bc\":[\"És buit\"],\"glSyvW\":[\"És en futur\"],\"F9Vw4E\":[\"És en passat\"],\"5pz6vU\":[\"No és\"],\"ldI7NO\":[\"No és buit\"],\"HQFVAU\":[\"No és nul\"],\"jPtV7x\":[\"És relatiu\"],\"0TLhix\":[\"És avui\"],\"IhCN5p\":[\"URI d'emissor\"],\"Lj7sBL\":[\"Italià\"],\"dFtidv\":[\"Japonès\"],\"OGXtL8\":[\"Kanban\"],\"h6S9Yz\":[\"Coreà\"],\"zrpwCd\":[\"Laboratori\"],\"vXIe7J\":[\"Idioma\"],\"DU27lO\":[\"Última 1 hora\"],\"0LzSIl\":[\"Darrera 1 Hora (més antic → més nou)\"],\"XUlP/Y\":[\"Últimes 12 hores\"],\"n7EOpf\":[\"Darreres 12 Hores (més antic → més nou)\"],\"j5nqnO\":[\"Darreres 24 Hores (més antic → més nou)\"],\"gdAJ4I\":[\"Últimes 4 hores\"],\"MjAVB0\":[\"Darreres 4 Hores (més antic → més nou)\"],\"GQgBSj\":[\"Darrers 7 Dies (més antic → més nou)\"],\"UXBCwc\":[\"Cognom\"],\"wL3cK8\":[\"Darrera\"],\"Kcjbmz\":[\"Data més recent\"],\"7dWjtB\":[\"Última versió:\"],\"ZEP8tT\":[\"Iniciar\"],\"rdU729\":[\"Disseny\"],\"haJ2Hb\":[\"Menor que\"],\"1njn7W\":[\"Clar\"],\"pQjjYo\":[\"Enllaç copiat al porta-retalls\"],\"DL2sg0\":[\"Llistats\"],\"s1MstR\":[\"S'estan carregant les dades de mètriques...\"],\"FgAxTj\":[\"Tancar sessió\"],\"nOhz3x\":[\"Tancar sessió\"],\"PTozs8\":[\"Cerqueu usuaris i gestioneu les seves funcionalitats d'espai de treball o usurpeu-los.\"],\"GPSwzy\":[\"Cerqueu usuaris per usurpar-los.\"],\"U8dG4j\":[\"Gestiona preferides\"],\"T6YjCk\":[\"Gestionar Membres\"],\"4cjU2u\":[\"Gestioneu els membres del vostre espai aquí\"],\"FyFNsd\":[\"Gestiona els teus comptes d'Internet.\"],\"36kYu0\":[\"Gestiona la teva subscripció\"],\"3Sdni6\":[\"Marcar com a fet\"],\"CK1KXz\":[\"Màxim\"],\"wlQNTg\":[\"Membres\"],\"Lt5rXo\":[\"Estat de sincronització dels missatges\"],\"6GBt0m\":[\"Metadades\"],\"dN5YOb\":[\"Error en la generació del fitxer de metadades\"],\"eTUF28\":[\"Mínim\"],\"3Siwmw\":[\"Més opcions\"],\"iSLA/r\":[\"Moure a l'esquerra\"],\"Ubl2by\":[\"Moure a la dreta\"],\"6YtxFj\":[\"Nom\"],\"XSwyCU\":[\"El nom no pot estar buit\"],\"zaxmAs\":[\"Nom tant en singular (p. ex., 'Factura') com en plural (p. ex., 'Factures').\"],\"z+6jaZ\":[\"Nom de la teva clau API\"],\"J7w8lI\":[\"Nom del teu espai de treball\"],\"2T8KCk\":[\"Navegar al següent registre\"],\"UX6+vb\":[\"Navega a l'execució següent\"],\"veSA19\":[\"Navega a la versió següent\"],\"ZTEho+\":[\"Navega al següent workflow\"],\"2tw9bo\":[\"Navega al registre anterior\"],\"HddE65\":[\"Navega a l'execució anterior\"],\"I+Pm5V\":[\"Navega a la versió anterior\"],\"QVUN3K\":[\"Navega al workflow anterior\"],\"isRobC\":[\"Nou\"],\"Gntx7w\":[\"Nou \",[\"capitalizedObjectNameSingular\"]],\"Kcr9Fr\":[\"Nou compte\"],\"2qr/61\":[\"Nou domini d'accés aprovat\"],\"8YPqRx\":[\"Nou camp\"],\"o8MyXb\":[\"Nova clau\"],\"j313SZ\":[\"Nova Clau\"],\"hFxdey\":[\"Nou Objecte\"],\"7vhWI8\":[\"Nova contrasenya\"],\"BcCzLv\":[\"Nou registre\"],\"2lmOC5\":[\"New Role\"],\"OzWuT+\":[\"Nova configuració SSO\"],\"C7WtCv\":[\"Nou proveïdor SSO\"],\"U1DAok\":[\"New Webhook\"],\"OTe3RI\":[\"No s'ha detectat cap canvi\"],\"pwenQu\":[\"Cap compte connectat\"],\"4BSfjK\":[\"Sense país\"],\"hfYSED\":[\"No members assigned to this role yet\"],\"F9pWel\":[\"No members matching this search\"],\"NluSN3\":[\"No members matching your search\"],\"0NudpV\":[\"No hi ha dades de mètriques disponibles\"],\"iMCnTm\":[\"No more members to add\"],\"DL8pzn\":[\"No hi ha més membres per assignar\"],\"EqGTpW\":[\"No s'han trobat registres\"],\"4bobEy\":[\"No Result\"],\"MA3x23\":[\"Cap resultat\"],\"Hsl+kr\":[\"Sense camp de selecció\"],\"0uWxPM\":[\"Encara no hi ha execucions de workflows\"],\"AQCvCC\":[\"Encara no hi ha versions de workflows\"],\"EdQY6l\":[\"Cap\"],\"1IipHp\":[\"Noruec\"],\"0qBE9S\":[\"No disponible a la vista predeterminada\"],\"4wUkDk\":[\"No buit\"],\"pAtylB\":[\"No Trobat\"],\"hZWthZ\":[\"No sincronitzat\"],\"HptUxX\":[\"Número\"],\"0fRFSb\":[\"Número de decimals\"],\"qg5nhQ\":[\"Tipus de número\"],\"W0i24j\":[\"Objecte\"],\"Zrauom\":[\"Destinació de l'objecte\"],\"B3toQF\":[\"Objectes\"],\"KNz3EF\":[\"Fora del camí conegut\"],\"zii2Qj\":[\"Només la data i els participants seran compartits amb el teu equip.\"],\"50ETCF\":[\"Només la marca de temps i els participants seran compartits amb el teu equip.\"],\"69b7aE\":[\"Obre el menú de comandament\"],\"C39K59\":[\"Obrir en\"],\"OV5wZZ\":[\"Obert\"],\"qNELak\":[\"Opcional: Defineix una cadena secreta que inclourem en cada webhook. Utilitza això per autenticar i verificar el webhook un cop rebut.\"],\"0zpgxV\":[\"Opcions\"],\"BzEFor\":[\"o\"],\"/IX/7x\":[\"Altres\"],\"3V8SRM\":[\"Altres Variables d'Entorn\"],\"P7KMWx\":[\"Altres Variables\"],\"boJlGf\":[\"Pàgina No Trobada\"],\"8ZsakT\":[\"Contrasenya\"],\"BxQ79w\":[\"La contrasenya s'ha actualitzat\"],\"mi6Rel\":[\"S'ha enviat l'enllaç de restabliment de la contrasenya al correu electrònic\"],\"PxBA+g\":[\"Persones a qui he enviat correus electrònics i de qui n'he rebut.\"],\"U/UvMm\":[\"Persones a qui he enviat correus electrònics.\"],\"SrVzRe\":[\"Percentatge\"],\"yIK1GU\":[\"Percentatge buit\"],\"PWLd4c\":[\"Percentatge no buit\"],\"/roQKz\":[\"Percentatge\"],\"Bv3y5w\":[\"Destruir permanentment el registre\"],\"xjWlSJ\":[\"Destruir permanentment els registres\"],\"uKWXhB\":[\"Destruir permanentment els workflows\"],\"9cDpsw\":[\"Permisos\"],\"qlqT9z\":[\"Número de telèfon copiat al porta-retalls\"],\"N0+GsR\":[\"Fotografia\"],\"0LrFTO\":[\"Àrea de proves\"],\"jEw0Mr\":[\"Si us plau, introdueix una URL vàlida\"],\"X5x85V\":[\"Si us plau, cerca un usuari primer\"],\"6nsIo3\":[\"Si us plau, escriu \\\"\",[\"confirmationValue\"],\"\\\" per confirmar que vols eliminar aquesta clau d'API. Tingues en compte que qualsevol script que utilitzi aquesta clau deixarà de funcionar.\"],\"mFZTXr\":[\"Si us plau, escriu \",[\"confirmationText\"],\" per confirmar que vols eliminar aquest webhook.\"],\"BPig2P\":[\"Plural\"],\"trnWaw\":[\"Polonès\"],\"MOERNx\":[\"Portuguese\"],\"0nsqwk\":[\"Portuguès — Brasil\"],\"xtXHeo\":[\"Portuguès — Portugal\"],\"R7+D0/\":[\"Portuguese (Brazil)\"],\"512Uma\":[\"Portuguese (Portugal)\"],\"rdUucN\":[\"Previsualització\"],\"LcET2C\":[\"Política de Privacitat\"],\"vERlcd\":[\"Perfil\"],\"GVxbU6\":[\"Proporciona els detalls del teu proveïdor OIDC\"],\"YJgRqq\":[\"Pseudo-Anglès\"],\"/IUt/5\":[\"La informació de la cua no està disponible perquè el treballador està inactiu\"],\"e9OqcR\":[\"Rendiment de la cua\"],\"ibPuCP\":[\"Read documentation\"],\"v3xM25\":[\"Rep un correu que conté l'enllaç per actualitzar la contrasenya\"],\"ZVr1+K\":[\"Esdeveniments recents (més antic → més nou)\"],\"gcoiFh\":[\"Reconnecta\"],\"mj1fkT\":[\"Imatge de registre\"],\"K6/7kH\":[\"Etiqueta de registre\"],\"mAHjRd\":[\"Pàgina de registre\"],\"dSCufP\":[\"Selecció d'enregistrament\"],\"LfH+Ea\":[\"URL de redirecció copiat al porta-retalls\"],\"RZjynQ\":[\"URI de redirecció\"],\"vpZcGd\":[\"Regenera una clau API\"],\"Mwqo5m\":[\"Regenera la clau\"],\"D+Mv78\":[\"Regenera la clau\"],\"UiAJoB\":[\"Tipus de relació\"],\"5icoS1\":[\"Versions\"],\"HpK/8d\":[\"Tornar a carregar\"],\"t/YqKh\":[\"Elimina\"],\"ken+P9\":[\"Remove \",[\"workspaceMemberName\"],\"?\"],\"1O32oy\":[\"Elimina compte\"],\"Q2u5E9\":[\"Elimina com a predeterminat\"],\"T/pF0Z\":[\"Elimina dels preferits\"],\"00Lxnh\":[\"Elimina opció\"],\"OfhWJH\":[\"Restableix\"],\"KbS2K9\":[\"Restableix la contrasenya\"],\"1IWc1n\":[\"Reinicia a\"],\"WHiaOl\":[\"DESCANS\"],\"yKu/3Y\":[\"Restaura\"],\"y4Ib1n\":[\"Restaura el registre\"],\"Vw369F\":[\"Restaurar registres\"],\"kx0s+n\":[\"Resultats\"],\"5dJK4M\":[\"Rols\"],\"uJc01W\":[\"Romanès\"],\"UX0N2y\":[\"Executa un workflow i torna aquí per veure les seves execucions\"],\"nji0/X\":[\"Rus\"],\"tfDRzk\":[\"Desa\"],\"apLRCm\":[\"Desa com a nova vista\"],\"QJ8HBJ\":[\"Esquema\"],\"A1taO8\":[\"Cerca\"],\"8NBMeZ\":[\"Cerca '\",[\"commandMenuSearch\"],\"' amb...\"],\"l1/uy2\":[\"Cerca un camp...\"],\"t3n1Qy\":[\"Buscar un membre\"],\"lnDfeK\":[\"Cerca un tipus\"],\"k7kp5/\":[\"Cerca un índex...\"],\"7taA9j\":[\"Cerca camps\"],\"ofuw3g\":[\"Cerca un objecte...\"],\"lnwW17\":[\"Icona de cerca\"],\"IMeaSJ\":[\"Cerca enregistraments\"],\"8VEDbV\":[\"Secret\"],\"a3LDKx\":[\"Seguretat\"],\"QREcJS\":[\"Veure la versió activa\"],\"BxIUpp\":[\"Veure els registres suprimits\"],\"Z+SGGW\":[\"Veure execucions eliminades\"],\"91fiCe\":[\"Veure versions eliminades\"],\"5jZIe5\":[\"Veure fluxos de treball eliminats\"],\"OpPn5Z\":[\"Veure les execucions\"],\"EtyY4+\":[\"Veure les versions\"],\"lYhPN0\":[\"Veure l'historial de versions\"],\"WZvt/6\":[\"Selecciona Acció\"],\"pofGCP\":[\"Selecciona el valor predeterminat per a aquest camp booleà\"],\"xraglu\":[\"Selecciona els esdeveniments que vols enviar a aquest endpoint\"],\"AXTJAW\":[\"Tria la teva llengua preferida\"],\"mjK8F3\":[\"Envia un correu d'invitació al teu equip\"],\"h69WC6\":[\"Enviat\"],\"hdVMzO\":[\"Enviat i rebut\"],\"6oxz/y\":[\"Serbi (ciríl·lic)\"],\"WKimFU\":[\"Server Admin\"],\"yy5k7a\":[\"Server Admin Panel\"],\"LUc0oL\":[\"Detalls del Proveïdor de Serveis\"],\"YZwx1e\":[\"Defineix un rol predeterminat per a aquest espai de treball\"],\"PPcets\":[\"Estableix com a predeterminat\"],\"V7fgiB\":[\"Configura la visibilitat del correu, gestiona la teva llista de bloqueig i més.\"],\"qNbuWB\":[\"Estableix el nom del teu domini personalitzat i configura els teus registres DNS.\"],\"cx14rp\":[\"Set the name of your domain\"],\"tn41zE\":[\"Estableix el nom del teu subdomini\"],\"Tz0i8g\":[\"Configuració\"],\"p8fNBm\":[\"Permisos de configuració\"],\"Vy9kmk\":[\"Compartiu aquest enllaç per convidar usuaris a unir-se al vostre espai de treball\"],\"gWk8gY\":[\"¿Canviar l'etiqueta d'un camp hauria de canviar també el nom de l'API?\"],\"WFtdWr\":[\"¿Canviar l'etiqueta d'un objecte hauria de canviar també l'API?\"],\"uVg8dY\":[\"Panell lateral\"],\"5lWFkC\":[\"Iniciar sessió\"],\"e+RpCP\":[\"Registrar-se\"],\"5v3IHX\":[\"Autenticació única (SSO)\"],\"maCaRp\":[\"Singular\"],\"djfBXF\":[\"Les etiquetes en singular i plural han de ser diferents\"],\"zvwLTy\":[\"Els noms en singular i plural han de ser diferents\"],\"6Uau97\":[\"Omitir\"],\"f6Hub0\":[\"Ordenar\"],\"65A04M\":[\"Espanyol\"],\"vnS6Rf\":[\"SSO\"],\"ErU1td\":[\"Etapes\"],\"uAQUqI\":[\"Estat\"],\"ku9TbG\":[\"Subdomini\"],\"omhc+7\":[\"Subdomini ja ocupat\"],\"OlC/tU\":[\"El subdomini no pot tenir més de 30 caràcters\"],\"ZETwlU\":[\"El subdomini no pot tenir menys de 3 caràcters\"],\"DTG2nE\":[\"Subdomini actualitzat\"],\"97eDN2\":[\"Assignatura i metadades\"],\"LYbP/A\":[\"Assignatura i metadades seran compartides amb el teu equip.\"],\"J9ylmk\":[\"Assignatura, cos i adjunts seran compartits amb el teu equip.\"],\"B5jRKH\":[\"La subscripció ha canviat \",[\"to\"]],\"AxQiPW\":[\"Suma\"],\"XYLcNv\":[\"Suport\"],\"UaISq3\":[\"Suec\"],\"9yk9d1\":[\"Canviar \",[\"from\"]],\"qi74XZ\":[\"Canviar \",[\"to\"]],\"L6Fg36\":[\"Canviar facturació \",[\"to\"]],\"5TRY4+\":[\"Error de sincronització\"],\"N2FcBE\":[\"Sincronitzat\"],\"AtzMpB\":[\"Sincronitzar Etiqueta de Camp i Nom de l'API\"],\"WZ6bN9\":[\"Sincronitzar Etiquetes d'Objectes i Noms d'API\"],\"D4SseJ\":[\"Configuració del sistema\"],\"E3AMmw\":[\"Configuració del sistema - \",[\"systemDateFormatLabel\"]],\"0ZgB1e\":[\"Configuració del Sistema - \",[\"systemTimeFormatLabel\"]],\"4hJhzz\":[\"Taula\"],\"xowcRf\":[\"Condicions de Servei\"],\"NnH3pK\":[\"Provar\"],\"bU9B27\":[\"Provar Workflow\"],\"lyaiTc\":[\"Text copiat al porta-retalls\"],\"1xQkU9\":[\"El codi de país predeterminat per a nous números de telèfon.\"],\"PmXLtL\":[\"El país predeterminat per a noves adreces\"],\"2OUtmv\":[\"La descripció d'aquest camp\"],\"VGZYbZ\":[\"El correu electrònic associat al vostre compte\"],\"h8mvCd\":[\"El nom i la icona d'aquest camp\"],\"e/dfFe\":[\"El nom de la teva connexió\"],\"8EkdZh\":[\"El nom del teu domini\"],\"+C8Rdp\":[\"El nom de la vostra organització\"],\"L97sPr\":[\"La pàgina que esteu buscant ja no existeix o mai va existir. Anem a redirigir-vos al camí correcte\"],\"uWikAA\":[\"Els valors d'aquest camp\"],\"+69KDk\":[\"Els valors d'aquest camp han de ser únics\"],\"MHLapp\":[\"Els detalls complets de l'esdeveniment seran compartits amb el teu equip.\"],\"ynfkhb\":[\"S'ha produït un error en actualitzar la contrasenya.\"],\"PmtLRf\":[\"S'ha produït un problema\"],\"hqCwGc\":[\"Aquesta acció no es pot desfer. Això esborrarà permanentment aquest usuari i el traurà de totes les seves assignacions.\"],\"gWGuHC\":[\"Aquesta acció no es pot desfer. Això esborrarà permanentment tot el vostre espai de treball. <0/> Si us plau, escriviu el vostre correu electrònic per confirmar.\"],\"yHIStW\":[\"This member will be unassigned from this role.\"],\"/tr8Uy\":[\"This Role has the following permissions.\"],\"6j5nJX\":[\"This Role is assigned to these workspace member.\"],\"xPfDRx\":[\"Aquest rol està assignat a aquests membres de l'espai de treball.\"],\"yByRxz\":[\"Aquesta setmana\"],\"n9nSNJ\":[\"Format d'hora\"],\"Mz2JN2\":[\"Zona horària\"],\"/VwdtK\":[\"La marca de temps i els participants seran compartits amb el teu equip.\"],\"aqMzDX\":[\"a mensual\"],\"WXXiXO\":[\"a anual\"],\"ecUA8p\":[\"Avui\"],\"vb0Q0/\":[\"Usuaris totals\"],\"PiUt3N\":[\"Tipus de desencadenador\"],\"IQ5pAL\":[\"Trigger type should be Manual - when no record(s) are selected\"],\"c+xCSz\":[\"Cert\"],\"haaL9N\":[\"Proveu les nostres àrees de prova de l'API REST o GraphQL.\"],\"Kz91g/\":[\"Turc\"],\"+zy2Nq\":[\"Tipus\"],\"U83IeL\":[\"Teclegeu qualsevol cosa\"],\"V9+2pH\":[\"Ucraïnès\"],\"wSXm5S\":[\"\\\\'Únic\\\\'\"],\"29VNqC\":[\"Error desconegut\"],\"GQCXQS\":[\"Contactes il·limitats\"],\"+b7T3G\":[\"Actualitzat\"],\"ONWvwQ\":[\"Pujada\"],\"2IXDgU\":[\"Carrega fitxer\"],\"akDOEO\":[\"Carrega el fitxer XML amb la teva informació de connexió\"],\"IagCbF\":[\"URL\"],\"6dMpmz\":[\"Utilitzar com a esborrany\"],\"oTTQsc\":[\"Utilitzeu només lletres, números i guions. Comenceu i acabeu amb una lletra o un número\"],\"c6uZUV\":[\"Utilitzeu la nostra API o afegiu el vostre primer \",[\"objectLabel\"],\" manualment\"],\"7PzzBU\":[\"Usuari\"],\"YFciqL\":[\"Correu electrònic de l'usuari\"],\"GjhOGB\":[\"ID d'usuari\"],\"RNv3YS\":[\"Usurpació d'identitat d'usuari\"],\"tNT8wT\":[\"Informació de l'usuari\"],\"IjyOjp\":[\"L'usuari no està logat\"],\"5ZYU8G\":[\"Nom d'usuari\"],\"Sxm8rQ\":[\"Usuaris\"],\"fXVIZq\":[\"Valors\"],\"dY/1ir\":[\"Variable no trobada\"],\"IHIWR4\":[\"Versió de l'aplicació\"],\"fROFIL\":[\"Vietnamita\"],\"jpctdh\":[\"Vista\"],\"KANz0G\":[\"Veure els detalls de facturació\"],\"igR+P/\":[\"Veure detall d'execució\"],\"qZmd6a\":[\"View settings\"],\"bJAIqT\":[\"Tipus de vista\"],\"2q/Q7x\":[\"Visibilitat\"],\"oh8+os\":[\"Visible\"],\"JiDDG4\":[\"Grups visibles\"],\"6n7jtr\":[\"Visualitzar\"],\"id6ein\":[\"Donem suport als vostres PNGs quadrats, JPEGs i GIFs de menys de 10MB\"],\"ZS7vYp\":[\"Enviarem sol·licituds POST a aquest endpoint per a cada nou esdeveniment\"],\"PI4LiB\":[\"Et enviarem un enllaç per verificar la propietat del domini\"],\"TRDppN\":[\"Webhook\"],\"v1kQyJ\":[\"Webhooks\"],\"Jt1WNL\":[\"Welcome to\"],\"ke0EDP\":[\"Benvingut a \",[\"workspaceName\"]],\"C51ilI\":[\"Quan caducarà la clau de l'API.\"],\"leUubq\":[\"Quan serà desactivada la clau\"],\"wvyffT\":[\"Workflow cannot be tested\"],\"GpJjC8\":[\"Execució de flux de treball en marxa...\"],\"o0xBLi\":[\"Error en l'execució del flux de treball\"],\"pmUArF\":[\"Espai de treball\"],\"VicISP\":[\"Eliminació de l'espai de treball\"],\"Y0Fj4S\":[\"Logotip de l'espai de treball\"],\"CozWO1\":[\"Nom de l'espai de treball\"],\"6X+cfX\":[\"Nom de l'espai de treball\"],\"pmt7u4\":[\"Espais de treball\"],\"5iSD9O\":[\"Embolcalla a les pàgines de registre\"],\"Q9pNST\":[\"Escriviu una descripció\"],\"L80fMJ\":[\"Escriu un secret\"],\"3d1wCB\":[\"sí\"],\"MFDARJ\":[\"No tens permís per crear registres en aquest objecte\"],\"5eVYbs\":[\"You are not allowed to create records in this object\"],\"TBApzn\":[\"You do not have access to impersonate users.\"],\"zSkMV0\":[\"Se us carregarà immediatament per l'any sencer.\"],\"XVnj6K\":[\"El vostre saldo de crèdit serà utilitzat per pagar les factures mensuals.\"],\"+5YqGH\":[\"Els teus assumptes de correus electrònics i títols de reunions seran compartits amb el teu equip.\"],\"la0RPA\":[\"El contingut dels teus correus electrònics i esdeveniments seran compartits amb el teu equip.\"],\"9ivpwk\":[\"El vostre nom tal com serà mostrat\"],\"3RASGN\":[\"El vostre nom tal com serà mostrat a l'aplicació\"],\"YQK8fJ\":[\"El vostre Espai de Treball\"],\"RhNbPE\":[\"El vostre espai de treball serà desactivat\"]}")as Messages;
\ No newline at end of file
+/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"gdf0h7\":[\" Aquests són només els valors del servidor. Assegureu-vos que el vostre entorn de treball tingui les\\n mateixes variables i valors, això és necessari per a tasques asincròniques com la\\n sincronització de correu electrònic.\"],\"ypz2+E\":[\": Buit\"],\"CE75IR\":[\": Futur\"],\"Nk/d+Z\":[\": No\"],\"1ORnec\":[\": NoBuit\"],\"11QpPG\":[\": NoNul\"],\"gK4ysT\":[\": Passat\"],\"4iJDkt\":[\": Avui\"],\"ROdDR9\":[[\"aggregateLabel\"],\" de \",[\"fieldLabel\"]],\"uogEAL\":[\"Clau d'API de \",[\"apiKeyName\"]],\"6j5rE1\":[[\"name\"]],\"WN9tFl\":[[\"workspaceMemberName\"],\" serà desassignat del següent rol:\"],\"YT0WJ4\":[\"1 000 execucions de nusos de flujos de treball\"],\"vb5TwV\":[\"1. Selecciona un tipus de camp\"],\"SLjiTq\":[\"1. Tipus\"],\"4EdXYs\":[\"12h (\",[\"hour12Label\"],\")\"],\"yXvRMf\":[\"2. Configura\"],\"0HAF12\":[\"2. Configura el camp\"],\"QsMprd\":[\"24h (\",[\"hour24Label\"],\")\"],\"nMTB1f\":[\"Un entorn compartit on podreu gestionar les vostres relacions amb els clients amb el vostre equip.\"],\"09tRFp\":[\"Capacitat per interactuar amb cada objecte\"],\"ssjjFt\":[\"Avorta\"],\"uyJsf6\":[\"Sobre\"],\"DhgC7B\":[\"About this user\"],\"PtK3Kn\":[\"About this workspace\"],\"AeXO77\":[\"Compte\"],\"nD0Y+a\":[\"Eliminació de compte\"],\"bPwFdf\":[\"Comptes\"],\"7L01XJ\":[\"Accions\"],\"FQBaXG\":[\"Activa\"],\"tu8A/k\":[\"Activa el flux de treball\"],\"F6pfE9\":[\"Actiu\"],\"Mue4oc\":[\"Claus d'API actives creades per tu o pel teu equip.\"],\"m16xKo\":[\"Add\"],\"MPPZ54\":[\"Afegeix compte\"],\"HD0x5p\":[\"Afegeix un domini d'accés aprovat\"],\"DpV70M\":[\"Afegeix camp\"],\"vCSBPD\":[\"Afegeix filtre\"],\"Hkobke\":[\"Afegeix nou\"],\"dEO3Zx\":[\"Afegeix objecte\"],\"Dl5lVI\":[\"Afegeix opció\"],\"sgXUv+\":[\"Afegeix un proveïdor d'identitats SSO\"],\"5+ttxv\":[\"Afegeix a la llista de bloqueig\"],\"yVOmgE\":[\"Afegeix a les preferides\"],\"pBsoKL\":[\"Afegeix a les preferides\"],\"q9e2Bs\":[\"Afegeix vista\"],\"m2qDV8\":[\"Afegeix el teu primer \",[\"objectLabel\"]],\"vLO+NG\":[\"Afegit \",[\"beautifiedCreatedAt\"]],\"jEHeq+\":[\"Afegit \",[\"beautifyPastDateRelative\"]],\"9iIYOy\":[\"Afegit a la llista de bloqueig\"],\"Eis4ey\":[\"Ajusta els paràmetres relacionats amb el rol\"],\"g1in8j\":[\"Panel d'Administració\"],\"tMFFwF\":[\"Filtre avançat\"],\"1Cox/a\":[\"Afrikaans\"],\"N40H+G\":[\"Tots\"],\"3saA7W\":[\"Tots (\",[\"relationRecordsCount\"],\")\"],\"9ljU00\":[\"Totes les accions\"],\"7EZqN0\":[\"Tots els correus electrònics i esdeveniments vinculats a aquest compte seran eliminats\"],\"623MHa\":[\"Totes les línies\"],\"aFE/OW\":[\"Tots els objectes\"],\"Hm90t3\":[\"Tots els rols\"],\"MLmnB2\":[\"All workspaces this user is a member of\"],\"GMx1K0\":[\"Permetre l'inici de sessió a través de la funció d'inici de sessió únic de Google.\"],\"dea+zy\":[\"Permetre l'inici de sessió a través de la funció d'inici de sessió únic de Microsoft.\"],\"wMg43c\":[\"Permet que es pugui convidar a usuaris nous compartint un enllaç d'invitació.\"],\"vHeVg5\":[\"Permetre als usuaris iniciar sessió amb un correu electrònic i contrasenya.\"],\"LG4K0m\":[\"S'ha produït un error en actualitzar la contrasenya\"],\"mJ6m4C\":[\"Una descripció opcional\"],\"lxentK\":[\"S'ha produït un error inesperat\"],\"HZFm5R\":[\"i\"],\"xJR+Wq\":[\"Qualsevol persona amb una adreça de correu en aquests dominis pot registrar-se en aquest espai de treball.\"],\"OZtEcz\":[\"API\"],\"0RqpZr\":[\"API i Webhooks\"],\"yRnk5W\":[\"Clau d'API\"],\"r+NRG6\":[\"La clau API s'ha copiat al porta-retalls\"],\"5h8ooz\":[\"Claus d'API\"],\"kAtj+q\":[\"Nom de l'API\"],\"lwCAhN\":[\"Nom de l'API (Plural)\"],\"KclpRp\":[\"Nom de l'API (Singular)\"],\"Z3Brb2\":[\"Valors de l'API\"],\"JR6nY7\":[\"API\"],\"aAIQg2\":[\"Aparença\"],\"9tggYj\":[\"Dominis Aprovats\"],\"1844JP\":[\"Approved Email Domain\"],\"8HV3WN\":[\"Àrab\"],\"3iX0kh\":[\"Esteu segurs que voleu canviar el vostre interval de facturació?\"],\"3SRf5B\":[\"Are you sure you want to assign this role?\"],\"8Y3Jbl\":[\"Esteu segur que voleu suprimir aquests registres? Es poden recuperar des del menú d'ordres (\",[\"osControlSymbol\"],\" + K).\"],\"Se0vJw\":[\"Esteu segur que voleu suprimir aquest registre? Es pot recuperar des del menú d'ordres (\",[\"osControlSymbol\"],\" + K).\"],\"nYD/Cq\":[\"Ascendent\"],\"9ch9Mz\":[\"Assignar \",[\"workspaceMemberName\"],\"?\"],\"rfYmIr\":[\"Assigneu rols per especificar els permisos d'accés de cada membre\"],\"2y2quh\":[\"Assignar al membre\"],\"OItM/o\":[\"Membres assignats\"],\"lxQ+5m\":[\"Assignat a\"],\"0dtKl9\":[\"Assignació\"],\"H8QGSx\":[\"Com a mínim 8 caràcters de llargada.\"],\"Y7Dx6e\":[\"S'ha d'habilitar com a mínim un mètode d'autenticació\"],\"P8fBlG\":[\"Autenticació\"],\"htuqBH\":[\"Error en l'autenticació\"],\"yIVrHZ\":[\"Autoritzar\"],\"wTBNbL\":[\"URI autoritzat\"],\"Ovw0c6\":[\"URL autoritzat copiat al porta-retalls\"],\"2zJkmL\":[\"Creació automàtica\"],\"YRT7ZW\":[\"Crea automàticament contactes per a persones amb qui has participat en un esdeveniment.\"],\"lgw3U4\":[\"Crea automàticament contactes per a persones.\"],\"RpExX0\":[\"Crear automàticament registres de Persones quan es reben o s'envien correus electrònics\"],\"3uQmjD\":[\"Mitjana\"],\"Dht9W3\":[\"Tornar al contingut\"],\"R+w/Va\":[\"Facturació\"],\"K1172m\":[\"Llista de blocatges\"],\"2yl5lQ\":[\"Reserva una trucada\"],\"8Pfllj\":[\"En utilitzar Twenty, accepteu les\"],\"PmmvzS\":[\"Calcula\"],\"AjVXBS\":[\"Calendari\"],\"wLtx+m\":[\"Configuració del calendari\"],\"HlJKLT\":[\"Estat de sincronització del calendari\"],\"EUpfsd\":[\"Calendaris\"],\"dEgA5A\":[\"Cancel·la\"],\"0TllC8\":[\"Cancel·la en qualsevol moment\"],\"rRK/Lf\":[\"Cancel·la el pla\"],\"N6gPiD\":[\"Cancel·la la subscripció\"],\"M1RLfx\":[\"Català\"],\"OfzMnb\":[\"Canvia \",[\"to\"]],\"VhMDMg\":[\"Canvia la contrasenya\"],\"SviKkE\":[\"Xinès — Simplificat\"],\"dzb4Ep\":[\"Xinès — Tradicional\"],\"JEFFOR\":[\"Trieu un objecte\"],\"Qz73jD\":[\"Tria entre protocols OIDC i SAML\"],\"YcrXB2\":[\"Tria la moneda predeterminada que s'aplicarà\"],\"LHce7q\":[\"Trieu els camps que identificaran els vostres registres\"],\"KT6rEB\":[\"Trieu el vostre proveïdor\"],\"9qP96p\":[\"Trieu la vostra prova\"],\"xCJdfg\":[\"Esborra\"],\"b9Y4up\":[\"ID del client\"],\"Bdj4LI\":[\"Secret del client\"],\"XUe4cu\":[\"Configuració del client\"],\"yz7wBu\":[\"Tanca\"],\"qYsAlX\":[\"Tanca el menú de comandament\"],\"H86f9p\":[\"Contraure\"],\"Xose0w\":[\"Codi de colors\"],\"NM9bMd\":[\"Vista compacta\"],\"+zUMwJ\":[\"Configureu una connexió SSO\"],\"QTNsSm\":[\"Configureu i personalitzeu les vostres preferències del calendari.\"],\"aGwm+D\":[\"Configureu com es mostren les dates a tota l'aplicació\"],\"ghdb7+\":[\"Configura com hauríem de mostrar els teus esdeveniments al teu calendari\"],\"Bh4GBD\":[\"Configureu els vostres correus electrònics i les preferències del calendari.\"],\"7VpPHA\":[\"Confirmar\"],\"D8ATlr\":[\"Connecteu un nou compte al vostre espai de treball\"],\"Zgi9Fd\":[\"Connecta amb Google\"],\"IOfqM8\":[\"Connecta amb Microsoft\"],\"9TzudL\":[\"Comptes connectats\"],\"Y2y0mC\":[\"Auto-creació de contactes\"],\"/5mghO\":[\"Conté\"],\"M73whl\":[\"Context\"],\"xGVfLh\":[\"Continua\"],\"RvVi9c\":[\"Continua amb el correu electrònic\"],\"oZyG4C\":[\"Continua amb Google\"],\"ztoybH\":[\"Continua amb Microsoft\"],\"u+VWhB\":[\"Copiat al porta-retalls!\"],\"CcGOj+\":[\"Copilot\"],\"he3ygx\":[\"Copia\"],\"7eVkEH\":[\"Copia l'enllaç d'invitació\"],\"y1eoq1\":[\"Copia l'enllaç\"],\"eZ5HO9\":[\"Copia l'enllaç per veure\"],\"Ej5euX\":[\"Copia aquesta clau ja que no serà visible de nou\"],\"SGsgDO\":[\"Nucli\"],\"wBMjJ2\":[\"Compte\"],\"EkZfen\":[\"Compta'ls tots\"],\"vQJINq\":[\"Compta buits\"],\"DzRsDJ\":[\"Compta no buits\"],\"9FZBbf\":[\"Compta valors únics\"],\"hYgDIe\":[\"Crea\"],\"zNoOC2\":[\"Crea un flux de treball i torna aquí per veure les seves versions\"],\"uXGLuq\":[\"Crea clau d'API\"],\"d0DCww\":[\"Crea un nou registre\"],\"gSyzEV\":[\"Crea perfil\"],\"RoyYUE\":[\"Crea Rol\"],\"6MP9lc\":[\"Crea camp de selecció\"],\"zt6Erc\":[\"Crea vista\"],\"dkAPxi\":[\"Crea Webhook\"],\"9chYz/\":[\"Crea el teu espai de treball\"],\"d+F6q9\":[\"Creat\"],\"Hd06oy\":[\"Current version\"],\"p76aoR\":[\"Versió actual:\"],\"XQ681Q\":[\"Domini Personalitzat\"],\"1GTWIA\":[\"Domini personalitzat actualitzat\"],\"8skTDV\":[\"Objectes personalitzats\"],\"qt+EaC\":[\"Personalitza els camps disponibles a les vistes de \",[\"objectLabelSingular\"],\".\"],\"CMhr4u\":[\"Personalitza el Domini\"],\"RP2we8\":[\"Personalitza camps\"],\"bCJa9l\":[\"Personalitza la seguretat del teu espai de treball\"],\"w9VTXG\":[\"Txec\"],\"Zz6Cxn\":[\"Zona de perill\"],\"Fo2vDn\":[\"Danès\"],\"pvnfJD\":[\"Fosc\"],\"TtG/MN\":[\"Eliminació de dades\"],\"5cNMFz\":[\"Model de dades\"],\"r+cVRP\":[\"Tipus de dades\"],\"mYGY3B\":[\"Data\"],\"Ud9zHv\":[\"Data i hora\"],\"Lhd0oQ\":[\"Format de data\"],\"5y3O+A\":[\"Desactiva\"],\"qk4i22\":[\"Desactiva \\\"Sincronitza Etiquetes d'Objectes i Noms d'API\\\" per establir un nom d'API personalitzat\"],\"T2YbXF\":[\"Desactiva l'objecte\"],\"gexAq8\":[\"Desactiva aquest camp\"],\"4tpC8V\":[\"Desactiva el Flux de treball\"],\"yAT3be\":[\"Desactivat\"],\"mC21D6\":[\"País predeterminat\"],\"4zuPQL\":[\"Codi de país predeterminat\"],\"aQ8swY\":[\"Valor predeterminat\"],\"Y2ImVJ\":[\"Defineix el nom i la descripció del teu objecte\"],\"bQkkFU\":[\"Defineix què serà visible per a altres usuaris al teu espai de treball\"],\"cnGeoo\":[\"Elimina\"],\"ZDGm40\":[\"Suprimeix el compte\"],\"gAz0S5\":[\"Suprimeix el compte i totes les dades associades\"],\"hGfWDm\":[\"Suprimeix la clau d'API\"],\"4dpwsE\":[\"Elimina el registre\"],\"kf0A63\":[\"Esborrar registres\"],\"T6S2Ns\":[\"Esborrar aquesta integració\"],\"aRG49z\":[\"Esborra vista\"],\"snMaH4\":[\"Esborrar webhook\"],\"UA2IpC\":[\"Esborrar procés de treball\"],\"ABwG9x\":[\"Esborrar processos de treball\"],\"kYu0eF\":[\"Esborrar espai de treball\"],\"mk2Ygs\":[\"Esborrar tot l'espai de treball\"],\"vGjmyl\":[\"Eliminat\"],\"kcGoDz\":[\"Deleted \",[\"objectNamePlural\"]],\"WH/5rN\":[\"Registres suprimits\"],\"/TC7qI\":[\"Execucions eliminades\"],\"Wj5mzm\":[\"Versions eliminades\"],\"gw3Tlm\":[\"Fluxos de treball eliminats\"],\"Cko536\":[\"Descendent\"],\"Nu4oKW\":[\"Descripció\"],\"2xxBws\":[\"Destruir\"],\"n+SX4g\":[\"Desenvolupadors\"],\"zAg2B9\":[\"Descartar esborrany\"],\"Xm/s+u\":[\"Mostra\"],\"8Vg8H7\":[\"Mostra com un nombre simple o un percentatge\"],\"i66xz9\":[\"Mostrar com a data relativa\"],\"GoHpxA\":[\"Mostra text en múltiples línies\"],\"U9q4zF\":[\"No conté\"],\"EoKe5U\":[\"Domini\"],\"yGpVSw\":[\"Domini afegit correctament.\"],\"7kVRe6\":[\"Els dominis han de ser més petits de 256 caràcters, no poden contenir espais i no poden contenir cap caràcter especial.\"],\"KUxVkp\":[\"No auto-crear contactes.\"],\"cx0Ws8\":[\"No crear contactes de/cap a correus electrònics de Gmail, Outlook\"],\"3qDEYI\":[\"No sincronitzar correus de team@ support@ noreply@...\"],\"WcWS//\":[\"Descarrega fitxer\"],\"KIjvtr\":[\"Holandès\"],\"QVVmxi\":[\"Ex. integració de gestió\"],\"tOkc8o\":[\"El més aviat possible\"],\"JTbQuO\":[\"Data més aviat possible\"],\"ePK91l\":[\"Edita\"],\"v+uKyy\":[\"Editar interval de facturació\"],\"9QCQIc\":[\"Edita valors dels camps\"],\"oKQ7ls\":[\"Edita camps\"],\"h2KoTu\":[\"Edita el mètode de pagament, veure les factures i més\"],\"6o1M/Q\":[\"Edita el nom del teu subdomini o estableix un domini personalitzat.\"],\"O3oNi5\":[\"Correu electrònic\"],\"2SWjdJ\":[\"Email can not be empty\"],\"unEEog\":[\"El correu electrònic no pot estar buit\"],\"lfQsvW\":[\"Integració de correu electrònic\"],\"QT/Wo7\":[\"El correu electrònic o domini ja està en la llista de bloqueig\"],\"LimKOG\":[\"Verificació de correu electrònic\"],\"TBv/iZ\":[\"Error en la verificació del correu electrònic.\"],\"svTijF\":[\"Enllaç de verificació del correu electrònic reenviat!\"],\"00icDW\":[\"Correu electrònic verificat.\"],\"VI2hiF\":[\"Correu electrònic/Domini\"],\"BXEcos\":[\"Correus electrònics\"],\"Ww/M6X\":[\"Configuració de correus electrònics\"],\"eXoH4Q\":[\"empleats\"],\"gqv5ZL\":[\"Empleats\"],\"N2S1rs\":[\"Buit\"],\"OMbipf\":[\"Array Buida\"],\"3hSGoJ\":[\"Objecte Buit\"],\"T3juzf\":[\"URL de l'endpoint\"],\"lYGfRP\":[\"Anglès\"],\"/bfFKe\":[\"Gaudeix d'un període de prova gratuït de \",[\"withCreditCardTrialPeriodDuration\"],\" dies\"],\"XJU8BD\":[\"Introdueix les credencials per establir la connexió\"],\"rGWgcm\":[\"Introdueix la informació per establir la connexió\"],\"rYIISB\":[\"Introdueix ID d'usuari o adreça de correu electrònic\"],\"GpB8YV\":[\"Empresa\"],\"8PrrNJ\":[\"Identificador d'entitat copiat al porta-retalls\"],\"7RnAWe\":[\"Variables d'entorn\"],\"XOEl9R\":[\"Error en copiar al porta-retalls\"],\"c3qGJX\":[\"Error en eliminar la clau d'API: \",[\"err\"]],\"QnVLjD\":[\"Error en eliminar la invitació\"],\"cyvTSq\":[\"Error en eliminar el Proveïdor d'Identitats SSO\"],\"WEltn2\":[\"Error en editar el Proveïdor d'Identitats SSO\"],\"bj7nh3\":[\"Error en regenerar la clau d'API: \",[\"err\"]],\"clfpgU\":[\"Error en reenviar la invitació\"],\"VSQxWH\":[\"Error en canviar la subscripció \",[\"to\"],\".\"],\"JLxMta\":[\"Estableix els endpoints de webhook per a les notificacions sobre esdeveniments asincrònics.\"],\"poC90w\":[\"Visibilitat de l'esdeveniment\"],\"jvNRZW\":[\"Els esdeveniments en què has participat es mostren en vermell.\"],\"wqF3jl\":[\"Tot\"],\"QQlMid\":[\"Excloure els correus electrònics de grup\"],\"+tk2yZ\":[\"Excloure els correus electrònics no professionals\"],\"cIgBjB\":[\"Exclude the following people and domains from my email sync\"],\"yhhfqh\":[\"Exclou les persones i dominis següents de la meva sincronització del correu electrònic. Les converses internes no s'importaran\"],\"fV7V51\":[\"Objectes existents\"],\"LFNXuj\":[\"Sortir de la pantalla completa\"],\"IZ4o2e\":[\"Sortir de la configuració\"],\"1A3EXy\":[\"Ampliar\"],\"tXGQvS\":[\"Expected selected node to be a create step node.\"],\"bKBhgb\":[\"Experiència\"],\"LxRNPw\":[\"Caducitat\"],\"SkXfL0\":[\"Data de caducitat\"],\"M1RnFv\":[\"Caducat\"],\"i9qiyR\":[\"Caduca en\"],\"GS+Mus\":[\"Exportar\"],\"G5DJkP\":[\"Exportar registre\"],\"ep2rbf\":[\"Exportar registres\"],\"vwtAUW\":[\"Exportar execucions\"],\"q46CjD\":[\"Exportar a PDF\"],\"4FLUle\":[\"Exportar versions\"],\"DaGxE0\":[\"Exportar vista\"],\"+FMXdE\":[\"Exportar el flux de treball\"],\"XcAij/\":[\"Exportar fluxos de treball\"],\"eWCNmu\":[\"Export Workflows\"],\"jARNNi\":[\"No s'ha pogut validar la clau API. Comproveu la vostra clau API i torneu-ho a intentar.\"],\"ocUvR+\":[\"Fals\"],\"X9kySA\":[\"Preferits\"],\"YXjpZx\":[\"Funcionalitat de bandera\"],\"kP/brT\":[\"Funcionalitats i usurpació d'identitat\"],\"nrXDdR\":[\"Nom del camp\"],\"zXgopL\":[\"Tipus de camp\"],\"vF68cg\":[\"Camps\"],\"3w/aqw\":[\"Compte dels camps\"],\"o7J4JM\":[\"Filtrar\"],\"cSev+j\":[\"Filtres\"],\"USZ2N6\":[\"Finès\"],\"ZyIk6Y\":[\"Primeres 10 línies\"],\"I3hko2\":[\"Primeres 2 línies\"],\"BDDkm3\":[\"Primeres 5 línies\"],\"kODvZJ\":[\"Nom\"],\"glx6on\":[\"Has oblidat la teva contrasenya?\"],\"nLC6tu\":[\"Francès\"],\"aTieE0\":[\"de mensual a anual\"],\"K04lE5\":[\"d'anual a mensual\"],\"scmRyR\":[\"Accés complet\"],\"xANKBj\":[\"Funcions\"],\"Weq9zb\":[\"General\"],\"DDcvSo\":[\"Alemany\"],\"NXEW3h\":[\"Treu el màxim partit al teu espai de treball convidant al teu equip.\"],\"zSGbaR\":[\"Obteniu la vostra subscripció\"],\"2GT3Hf\":[\"Global\"],\"mT57+Q\":[\"Anar a Configuració\"],\"hWp1MY\":[\"Concedeix a l'equip de suport de Twenty accés temporal al teu espai de treball per poder solucionar problemes o recuperar contingut en el teu nom. Pots revocar l'accés en qualsevol moment.\"],\"gBiL6J\":[\"GraphQL\"],\"/YalkJ\":[\"Entorn de proves de l'API GraphQL\"],\"JXaffl\":[\"Major que\"],\"CZXzs4\":[\"Grec\"],\"ALoP4W\":[\"Agrupa per\"],\"I1IOmb\":[\"Estat de salut\"],\"3oTCgM\":[\"Hebreu\"],\"D+zLDD\":[\"Ocult\"],\"oK+1Wj\":[\"Camps ocults\"],\"vLyv1R\":[\"Amagar\"],\"HS8BG/\":[\"Amaga grups buits\"],\"B06Bgk\":[\"Com seràs identificat a l'aplicació.\"],\"k7iMla\":[\"Com funciona el vostre sistema\"],\"mkWad2\":[\"Hongarès\"],\"wwu18a\":[\"Icona\"],\"XTWO+W\":[\"Icona i nom\"],\"S0kLOH\":[\"ID\"],\"sJGljQ\":[\"Identificador\"],\"06cbfQ\":[\"Proveïdor d'identitat\"],\"LPN8Ma\":[\"Metadades XML del Proveïdor d'Identitat\"],\"j843N3\":[\"Si has perdut aquesta clau, pots regenerar-la, però tingues en compte que qualsevol script que utilitzi aquesta clau haurà de ser actualitzat. Si us plau, escriu \\\"\",[\"confirmationValue\"],\"\\\" per confirmar.\"],\"tSVr6t\":[\"Usurpa\"],\"l3s5ri\":[\"Importa\"],\"eECp4f\":[\"Importar registres\"],\"ZsIcZZ\":[\"Importar fluxos de treball\"],\"RqSvT0\":[\"Important\"],\"NoNwIX\":[\"Inactiu\"],\"pZ/USH\":[\"Índexs\"],\"JE2tjr\":[\"L'entrada ha de ser en camel case i no pot començar amb un número\"],\"AwUsnG\":[\"Instàncies\"],\"nbfdhU\":[\"Integracions\"],\"NtFk/Z\":[\"Proveïdor d'autenticació no vàlid\"],\"qcXnvu\":[\"Invalid custom domain. Custom domains have to be smaller than 256 characters in length, cannot be IP addresses, cannot contain spaces, cannot contain any special characters such as _~`!@#$%^*()=+{}[]|\\\\;:'\\\",<>/? and cannot begin or end with a '-' character.\"],\"P3qQyo\":[\"Domini personalitzat no vàlid. Si us plau, inclogueu almenys un subdomini (p. ex., sub.example.com).\"],\"u3hwhx\":[\"Domini invàlid. Els dominis han de ser més curts de 256 caràcters, no poden ser adreces IP, no poden contenir espais, ni cap caràcter especial com _~`!@#$%^*()=+{}[]|\\\\;:'\\\",<>/? i no poden començar o acabar amb el caràcter '-'.\"],\"B2Tpo0\":[\"Correu electrònic no vàlid\"],\"/m52AE\":[\"Correu electrònic o domini no vàlids\"],\"b2B7Ze\":[\"Enllaç de verificació del correu electrònic invàlid.\"],\"uzxr9u\":[\"Fitxer invàlid\"],\"QdoUFL\":[\"Valors del formulari no vàlids\"],\"K8XJhc\":[\"Espai de treball no vàlid\"],\"MFKlMB\":[\"Convida\"],\"0M8+El\":[\"Convidar per correu electrònic\"],\"PWIq/W\":[\"Convidar amb enllaç\"],\"3athPG\":[\"Convidar amb Enllaç\"],\"5IfmKA\":[\"Enllaç d'invitació enviat a les adreces de correu electrònic\"],\"d+Y+rP\":[\"Convida al teu equip\"],\"W153SA\":[\"És\"],\"N73SBG\":[\"És posterior\"],\"NgIlDJ\":[\"És anterior\"],\"Hte7bc\":[\"És buit\"],\"glSyvW\":[\"És en futur\"],\"F9Vw4E\":[\"És en passat\"],\"5pz6vU\":[\"No és\"],\"ldI7NO\":[\"No és buit\"],\"HQFVAU\":[\"No és nul\"],\"jPtV7x\":[\"És relatiu\"],\"0TLhix\":[\"És avui\"],\"IhCN5p\":[\"URI d'emissor\"],\"Lj7sBL\":[\"Italià\"],\"dFtidv\":[\"Japonès\"],\"OGXtL8\":[\"Kanban\"],\"h6S9Yz\":[\"Coreà\"],\"zrpwCd\":[\"Laboratori\"],\"vXIe7J\":[\"Idioma\"],\"DU27lO\":[\"Última 1 hora\"],\"0LzSIl\":[\"Darrera 1 Hora (més antic → més nou)\"],\"XUlP/Y\":[\"Últimes 12 hores\"],\"n7EOpf\":[\"Darreres 12 Hores (més antic → més nou)\"],\"j5nqnO\":[\"Darreres 24 Hores (més antic → més nou)\"],\"gdAJ4I\":[\"Últimes 4 hores\"],\"MjAVB0\":[\"Darreres 4 Hores (més antic → més nou)\"],\"GQgBSj\":[\"Darrers 7 Dies (més antic → més nou)\"],\"UXBCwc\":[\"Cognom\"],\"wL3cK8\":[\"Darrera\"],\"Kcjbmz\":[\"Data més recent\"],\"zUzYWu\":[\"Latest version\"],\"7dWjtB\":[\"Última versió:\"],\"ZEP8tT\":[\"Iniciar\"],\"rdU729\":[\"Disseny\"],\"haJ2Hb\":[\"Menor que\"],\"1njn7W\":[\"Clar\"],\"pQjjYo\":[\"Enllaç copiat al porta-retalls\"],\"DL2sg0\":[\"Llistats\"],\"s1MstR\":[\"S'estan carregant les dades de mètriques...\"],\"FgAxTj\":[\"Tancar sessió\"],\"nOhz3x\":[\"Tancar sessió\"],\"PTozs8\":[\"Cerqueu usuaris i gestioneu les seves funcionalitats d'espai de treball o usurpeu-los.\"],\"GPSwzy\":[\"Cerqueu usuaris per usurpar-los.\"],\"U8dG4j\":[\"Gestiona preferides\"],\"T6YjCk\":[\"Gestionar Membres\"],\"4cjU2u\":[\"Gestioneu els membres del vostre espai aquí\"],\"FyFNsd\":[\"Gestiona els teus comptes d'Internet.\"],\"36kYu0\":[\"Gestiona la teva subscripció\"],\"3Sdni6\":[\"Marcar com a fet\"],\"CK1KXz\":[\"Màxim\"],\"wlQNTg\":[\"Membres\"],\"Lt5rXo\":[\"Estat de sincronització dels missatges\"],\"6GBt0m\":[\"Metadades\"],\"dN5YOb\":[\"Error en la generació del fitxer de metadades\"],\"eTUF28\":[\"Mínim\"],\"3Siwmw\":[\"Més opcions\"],\"iSLA/r\":[\"Moure a l'esquerra\"],\"Ubl2by\":[\"Moure a la dreta\"],\"6YtxFj\":[\"Nom\"],\"XSwyCU\":[\"El nom no pot estar buit\"],\"zaxmAs\":[\"Nom tant en singular (p. ex., 'Factura') com en plural (p. ex., 'Factures').\"],\"z+6jaZ\":[\"Nom de la teva clau API\"],\"J7w8lI\":[\"Nom del teu espai de treball\"],\"2T8KCk\":[\"Navegar al següent registre\"],\"UX6+vb\":[\"Navega a l'execució següent\"],\"veSA19\":[\"Navega a la versió següent\"],\"ZTEho+\":[\"Navega al següent workflow\"],\"2tw9bo\":[\"Navega al registre anterior\"],\"HddE65\":[\"Navega a l'execució anterior\"],\"I+Pm5V\":[\"Navega a la versió anterior\"],\"QVUN3K\":[\"Navega al workflow anterior\"],\"isRobC\":[\"Nou\"],\"Gntx7w\":[\"Nou \",[\"capitalizedObjectNameSingular\"]],\"Kcr9Fr\":[\"Nou compte\"],\"2qr/61\":[\"Nou domini d'accés aprovat\"],\"8YPqRx\":[\"Nou camp\"],\"o8MyXb\":[\"Nova clau\"],\"j313SZ\":[\"Nova Clau\"],\"hFxdey\":[\"Nou Objecte\"],\"7vhWI8\":[\"Nova contrasenya\"],\"BcCzLv\":[\"Nou registre\"],\"2lmOC5\":[\"New Role\"],\"OzWuT+\":[\"Nova configuració SSO\"],\"C7WtCv\":[\"Nou proveïdor SSO\"],\"U1DAok\":[\"New Webhook\"],\"OTe3RI\":[\"No s'ha detectat cap canvi\"],\"pwenQu\":[\"Cap compte connectat\"],\"4BSfjK\":[\"Sense país\"],\"hfYSED\":[\"No members assigned to this role yet\"],\"F9pWel\":[\"No members matching this search\"],\"NluSN3\":[\"No members matching your search\"],\"0NudpV\":[\"No hi ha dades de mètriques disponibles\"],\"iMCnTm\":[\"No more members to add\"],\"DL8pzn\":[\"No hi ha més membres per assignar\"],\"EqGTpW\":[\"No s'han trobat registres\"],\"4bobEy\":[\"No Result\"],\"MA3x23\":[\"Cap resultat\"],\"Hsl+kr\":[\"Sense camp de selecció\"],\"0uWxPM\":[\"Encara no hi ha execucions de workflows\"],\"AQCvCC\":[\"Encara no hi ha versions de workflows\"],\"EdQY6l\":[\"Cap\"],\"1IipHp\":[\"Noruec\"],\"0qBE9S\":[\"No disponible a la vista predeterminada\"],\"4wUkDk\":[\"No buit\"],\"pAtylB\":[\"No Trobat\"],\"hZWthZ\":[\"No sincronitzat\"],\"HptUxX\":[\"Número\"],\"0fRFSb\":[\"Número de decimals\"],\"qg5nhQ\":[\"Tipus de número\"],\"W0i24j\":[\"Objecte\"],\"Zrauom\":[\"Destinació de l'objecte\"],\"B3toQF\":[\"Objectes\"],\"KNz3EF\":[\"Fora del camí conegut\"],\"zii2Qj\":[\"Només la data i els participants seran compartits amb el teu equip.\"],\"50ETCF\":[\"Només la marca de temps i els participants seran compartits amb el teu equip.\"],\"69b7aE\":[\"Obre el menú de comandament\"],\"C39K59\":[\"Obrir en\"],\"OV5wZZ\":[\"Obert\"],\"qNELak\":[\"Opcional: Defineix una cadena secreta que inclourem en cada webhook. Utilitza això per autenticar i verificar el webhook un cop rebut.\"],\"0zpgxV\":[\"Opcions\"],\"BzEFor\":[\"o\"],\"/IX/7x\":[\"Altres\"],\"3V8SRM\":[\"Altres Variables d'Entorn\"],\"P7KMWx\":[\"Altres Variables\"],\"boJlGf\":[\"Pàgina No Trobada\"],\"8ZsakT\":[\"Contrasenya\"],\"BxQ79w\":[\"La contrasenya s'ha actualitzat\"],\"mi6Rel\":[\"S'ha enviat l'enllaç de restabliment de la contrasenya al correu electrònic\"],\"PxBA+g\":[\"Persones a qui he enviat correus electrònics i de qui n'he rebut.\"],\"U/UvMm\":[\"Persones a qui he enviat correus electrònics.\"],\"SrVzRe\":[\"Percentatge\"],\"yIK1GU\":[\"Percentatge buit\"],\"PWLd4c\":[\"Percentatge no buit\"],\"/roQKz\":[\"Percentatge\"],\"Bv3y5w\":[\"Destruir permanentment el registre\"],\"xjWlSJ\":[\"Destruir permanentment els registres\"],\"uKWXhB\":[\"Destruir permanentment els workflows\"],\"9cDpsw\":[\"Permisos\"],\"qlqT9z\":[\"Número de telèfon copiat al porta-retalls\"],\"N0+GsR\":[\"Fotografia\"],\"0LrFTO\":[\"Àrea de proves\"],\"jEw0Mr\":[\"Si us plau, introdueix una URL vàlida\"],\"X5x85V\":[\"Si us plau, cerca un usuari primer\"],\"6nsIo3\":[\"Si us plau, escriu \\\"\",[\"confirmationValue\"],\"\\\" per confirmar que vols eliminar aquesta clau d'API. Tingues en compte que qualsevol script que utilitzi aquesta clau deixarà de funcionar.\"],\"mFZTXr\":[\"Si us plau, escriu \",[\"confirmationText\"],\" per confirmar que vols eliminar aquest webhook.\"],\"BPig2P\":[\"Plural\"],\"trnWaw\":[\"Polonès\"],\"MOERNx\":[\"Portuguese\"],\"0nsqwk\":[\"Portuguès — Brasil\"],\"xtXHeo\":[\"Portuguès — Portugal\"],\"R7+D0/\":[\"Portuguese (Brazil)\"],\"512Uma\":[\"Portuguese (Portugal)\"],\"rdUucN\":[\"Previsualització\"],\"LcET2C\":[\"Política de Privacitat\"],\"vERlcd\":[\"Perfil\"],\"GVxbU6\":[\"Proporciona els detalls del teu proveïdor OIDC\"],\"YJgRqq\":[\"Pseudo-Anglès\"],\"/IUt/5\":[\"La informació de la cua no està disponible perquè el treballador està inactiu\"],\"e9OqcR\":[\"Rendiment de la cua\"],\"ibPuCP\":[\"Read documentation\"],\"v3xM25\":[\"Rep un correu que conté l'enllaç per actualitzar la contrasenya\"],\"ZVr1+K\":[\"Esdeveniments recents (més antic → més nou)\"],\"gcoiFh\":[\"Reconnecta\"],\"mj1fkT\":[\"Imatge de registre\"],\"K6/7kH\":[\"Etiqueta de registre\"],\"mAHjRd\":[\"Pàgina de registre\"],\"dSCufP\":[\"Selecció d'enregistrament\"],\"LfH+Ea\":[\"URL de redirecció copiat al porta-retalls\"],\"RZjynQ\":[\"URI de redirecció\"],\"vpZcGd\":[\"Regenera una clau API\"],\"Mwqo5m\":[\"Regenera la clau\"],\"D+Mv78\":[\"Regenera la clau\"],\"UiAJoB\":[\"Tipus de relació\"],\"5icoS1\":[\"Versions\"],\"HpK/8d\":[\"Tornar a carregar\"],\"t/YqKh\":[\"Elimina\"],\"ken+P9\":[\"Remove \",[\"workspaceMemberName\"],\"?\"],\"1O32oy\":[\"Elimina compte\"],\"Q2u5E9\":[\"Elimina com a predeterminat\"],\"T/pF0Z\":[\"Elimina dels preferits\"],\"00Lxnh\":[\"Elimina opció\"],\"OfhWJH\":[\"Restableix\"],\"KbS2K9\":[\"Restableix la contrasenya\"],\"1IWc1n\":[\"Reinicia a\"],\"WHiaOl\":[\"DESCANS\"],\"yKu/3Y\":[\"Restaura\"],\"y4Ib1n\":[\"Restaura el registre\"],\"Vw369F\":[\"Restaurar registres\"],\"kx0s+n\":[\"Resultats\"],\"5dJK4M\":[\"Rols\"],\"uJc01W\":[\"Romanès\"],\"UX0N2y\":[\"Executa un workflow i torna aquí per veure les seves execucions\"],\"nji0/X\":[\"Rus\"],\"tfDRzk\":[\"Desa\"],\"apLRCm\":[\"Desa com a nova vista\"],\"QJ8HBJ\":[\"Esquema\"],\"A1taO8\":[\"Cerca\"],\"8NBMeZ\":[\"Cerca '\",[\"commandMenuSearch\"],\"' amb...\"],\"l1/uy2\":[\"Cerca un camp...\"],\"t3n1Qy\":[\"Buscar un membre\"],\"lnDfeK\":[\"Cerca un tipus\"],\"k7kp5/\":[\"Cerca un índex...\"],\"7taA9j\":[\"Cerca camps\"],\"ofuw3g\":[\"Cerca un objecte...\"],\"lnwW17\":[\"Icona de cerca\"],\"IMeaSJ\":[\"Cerca enregistraments\"],\"8VEDbV\":[\"Secret\"],\"a3LDKx\":[\"Seguretat\"],\"QREcJS\":[\"Veure la versió activa\"],\"BxIUpp\":[\"Veure els registres suprimits\"],\"Z+SGGW\":[\"Veure execucions eliminades\"],\"91fiCe\":[\"Veure versions eliminades\"],\"5jZIe5\":[\"Veure fluxos de treball eliminats\"],\"OpPn5Z\":[\"Veure les execucions\"],\"EtyY4+\":[\"Veure les versions\"],\"lYhPN0\":[\"Veure l'historial de versions\"],\"WZvt/6\":[\"Selecciona Acció\"],\"pofGCP\":[\"Selecciona el valor predeterminat per a aquest camp booleà\"],\"xraglu\":[\"Selecciona els esdeveniments que vols enviar a aquest endpoint\"],\"AXTJAW\":[\"Tria la teva llengua preferida\"],\"mjK8F3\":[\"Envia un correu d'invitació al teu equip\"],\"h69WC6\":[\"Enviat\"],\"hdVMzO\":[\"Enviat i rebut\"],\"6oxz/y\":[\"Serbi (ciríl·lic)\"],\"WKimFU\":[\"Server Admin\"],\"yy5k7a\":[\"Server Admin Panel\"],\"LUc0oL\":[\"Detalls del Proveïdor de Serveis\"],\"YZwx1e\":[\"Defineix un rol predeterminat per a aquest espai de treball\"],\"PPcets\":[\"Estableix com a predeterminat\"],\"V7fgiB\":[\"Configura la visibilitat del correu, gestiona la teva llista de bloqueig i més.\"],\"qNbuWB\":[\"Estableix el nom del teu domini personalitzat i configura els teus registres DNS.\"],\"cx14rp\":[\"Set the name of your domain\"],\"tn41zE\":[\"Estableix el nom del teu subdomini\"],\"Tz0i8g\":[\"Configuració\"],\"p8fNBm\":[\"Permisos de configuració\"],\"Vy9kmk\":[\"Compartiu aquest enllaç per convidar usuaris a unir-se al vostre espai de treball\"],\"gWk8gY\":[\"¿Canviar l'etiqueta d'un camp hauria de canviar també el nom de l'API?\"],\"WFtdWr\":[\"¿Canviar l'etiqueta d'un objecte hauria de canviar també l'API?\"],\"uVg8dY\":[\"Panell lateral\"],\"5lWFkC\":[\"Iniciar sessió\"],\"e+RpCP\":[\"Registrar-se\"],\"5v3IHX\":[\"Autenticació única (SSO)\"],\"maCaRp\":[\"Singular\"],\"djfBXF\":[\"Les etiquetes en singular i plural han de ser diferents\"],\"zvwLTy\":[\"Els noms en singular i plural han de ser diferents\"],\"6Uau97\":[\"Omitir\"],\"f6Hub0\":[\"Ordenar\"],\"65A04M\":[\"Espanyol\"],\"vnS6Rf\":[\"SSO\"],\"ErU1td\":[\"Etapes\"],\"uAQUqI\":[\"Estat\"],\"ku9TbG\":[\"Subdomini\"],\"omhc+7\":[\"Subdomini ja ocupat\"],\"OlC/tU\":[\"El subdomini no pot tenir més de 30 caràcters\"],\"ZETwlU\":[\"El subdomini no pot tenir menys de 3 caràcters\"],\"DTG2nE\":[\"Subdomini actualitzat\"],\"97eDN2\":[\"Assignatura i metadades\"],\"LYbP/A\":[\"Assignatura i metadades seran compartides amb el teu equip.\"],\"J9ylmk\":[\"Assignatura, cos i adjunts seran compartits amb el teu equip.\"],\"B5jRKH\":[\"La subscripció ha canviat \",[\"to\"]],\"AxQiPW\":[\"Suma\"],\"XYLcNv\":[\"Suport\"],\"UaISq3\":[\"Suec\"],\"9yk9d1\":[\"Canviar \",[\"from\"]],\"qi74XZ\":[\"Canviar \",[\"to\"]],\"L6Fg36\":[\"Canviar facturació \",[\"to\"]],\"5TRY4+\":[\"Error de sincronització\"],\"N2FcBE\":[\"Sincronitzat\"],\"AtzMpB\":[\"Sincronitzar Etiqueta de Camp i Nom de l'API\"],\"WZ6bN9\":[\"Sincronitzar Etiquetes d'Objectes i Noms d'API\"],\"D4SseJ\":[\"Configuració del sistema\"],\"E3AMmw\":[\"Configuració del sistema - \",[\"systemDateFormatLabel\"]],\"0ZgB1e\":[\"Configuració del Sistema - \",[\"systemTimeFormatLabel\"]],\"4hJhzz\":[\"Taula\"],\"xowcRf\":[\"Condicions de Servei\"],\"NnH3pK\":[\"Provar\"],\"bU9B27\":[\"Provar Workflow\"],\"lyaiTc\":[\"Text copiat al porta-retalls\"],\"1xQkU9\":[\"El codi de país predeterminat per a nous números de telèfon.\"],\"PmXLtL\":[\"El país predeterminat per a noves adreces\"],\"2OUtmv\":[\"La descripció d'aquest camp\"],\"VGZYbZ\":[\"El correu electrònic associat al vostre compte\"],\"h8mvCd\":[\"El nom i la icona d'aquest camp\"],\"e/dfFe\":[\"El nom de la teva connexió\"],\"8EkdZh\":[\"El nom del teu domini\"],\"+C8Rdp\":[\"El nom de la vostra organització\"],\"L97sPr\":[\"La pàgina que esteu buscant ja no existeix o mai va existir. Anem a redirigir-vos al camí correcte\"],\"uWikAA\":[\"Els valors d'aquest camp\"],\"+69KDk\":[\"Els valors d'aquest camp han de ser únics\"],\"MHLapp\":[\"Els detalls complets de l'esdeveniment seran compartits amb el teu equip.\"],\"ynfkhb\":[\"S'ha produït un error en actualitzar la contrasenya.\"],\"PmtLRf\":[\"S'ha produït un problema\"],\"DHjmMm\":[\"These are only the server values. Ensure your worker environment has the same variables and values, this is required for asynchronous tasks like email sync.\"],\"hqCwGc\":[\"Aquesta acció no es pot desfer. Això esborrarà permanentment aquest usuari i el traurà de totes les seves assignacions.\"],\"gWGuHC\":[\"Aquesta acció no es pot desfer. Això esborrarà permanentment tot el vostre espai de treball. <0/> Si us plau, escriviu el vostre correu electrònic per confirmar.\"],\"yHIStW\":[\"This member will be unassigned from this role.\"],\"/tr8Uy\":[\"This Role has the following permissions.\"],\"6j5nJX\":[\"This Role is assigned to these workspace member.\"],\"xPfDRx\":[\"Aquest rol està assignat a aquests membres de l'espai de treball.\"],\"yByRxz\":[\"Aquesta setmana\"],\"n9nSNJ\":[\"Format d'hora\"],\"Mz2JN2\":[\"Zona horària\"],\"/VwdtK\":[\"La marca de temps i els participants seran compartits amb el teu equip.\"],\"aqMzDX\":[\"a mensual\"],\"WXXiXO\":[\"a anual\"],\"ecUA8p\":[\"Avui\"],\"vb0Q0/\":[\"Usuaris totals\"],\"PiUt3N\":[\"Tipus de desencadenador\"],\"IQ5pAL\":[\"Trigger type should be Manual - when no record(s) are selected\"],\"c+xCSz\":[\"Cert\"],\"haaL9N\":[\"Proveu les nostres àrees de prova de l'API REST o GraphQL.\"],\"Kz91g/\":[\"Turc\"],\"+zy2Nq\":[\"Tipus\"],\"U83IeL\":[\"Teclegeu qualsevol cosa\"],\"V9+2pH\":[\"Ucraïnès\"],\"wSXm5S\":[\"\\\\'Únic\\\\'\"],\"29VNqC\":[\"Error desconegut\"],\"GQCXQS\":[\"Contactes il·limitats\"],\"+b7T3G\":[\"Actualitzat\"],\"ONWvwQ\":[\"Pujada\"],\"2IXDgU\":[\"Carrega fitxer\"],\"akDOEO\":[\"Carrega el fitxer XML amb la teva informació de connexió\"],\"IagCbF\":[\"URL\"],\"6dMpmz\":[\"Utilitzar com a esborrany\"],\"oTTQsc\":[\"Utilitzeu només lletres, números i guions. Comenceu i acabeu amb una lletra o un número\"],\"c6uZUV\":[\"Utilitzeu la nostra API o afegiu el vostre primer \",[\"objectLabel\"],\" manualment\"],\"7PzzBU\":[\"Usuari\"],\"YFciqL\":[\"Correu electrònic de l'usuari\"],\"GjhOGB\":[\"ID d'usuari\"],\"RNv3YS\":[\"Usurpació d'identitat d'usuari\"],\"tNT8wT\":[\"Informació de l'usuari\"],\"IjyOjp\":[\"L'usuari no està logat\"],\"5ZYU8G\":[\"Nom d'usuari\"],\"Sxm8rQ\":[\"Usuaris\"],\"fXVIZq\":[\"Valors\"],\"dY/1ir\":[\"Variable no trobada\"],\"IHIWR4\":[\"Versió de l'aplicació\"],\"fROFIL\":[\"Vietnamita\"],\"jpctdh\":[\"Vista\"],\"KANz0G\":[\"Veure els detalls de facturació\"],\"igR+P/\":[\"Veure detall d'execució\"],\"qZmd6a\":[\"View settings\"],\"bJAIqT\":[\"Tipus de vista\"],\"2q/Q7x\":[\"Visibilitat\"],\"oh8+os\":[\"Visible\"],\"JiDDG4\":[\"Grups visibles\"],\"6n7jtr\":[\"Visualitzar\"],\"id6ein\":[\"Donem suport als vostres PNGs quadrats, JPEGs i GIFs de menys de 10MB\"],\"ZS7vYp\":[\"Enviarem sol·licituds POST a aquest endpoint per a cada nou esdeveniment\"],\"PI4LiB\":[\"Et enviarem un enllaç per verificar la propietat del domini\"],\"TRDppN\":[\"Webhook\"],\"v1kQyJ\":[\"Webhooks\"],\"Jt1WNL\":[\"Welcome to\"],\"ke0EDP\":[\"Benvingut a \",[\"workspaceName\"]],\"C51ilI\":[\"Quan caducarà la clau de l'API.\"],\"leUubq\":[\"Quan serà desactivada la clau\"],\"wvyffT\":[\"Workflow cannot be tested\"],\"GpJjC8\":[\"Execució de flux de treball en marxa...\"],\"o0xBLi\":[\"Error en l'execució del flux de treball\"],\"pmUArF\":[\"Espai de treball\"],\"VicISP\":[\"Eliminació de l'espai de treball\"],\"J22jAC\":[\"Workspace Info\"],\"Y0Fj4S\":[\"Logotip de l'espai de treball\"],\"CozWO1\":[\"Nom de l'espai de treball\"],\"6X+cfX\":[\"Nom de l'espai de treball\"],\"pmt7u4\":[\"Espais de treball\"],\"5iSD9O\":[\"Embolcalla a les pàgines de registre\"],\"Q9pNST\":[\"Escriviu una descripció\"],\"L80fMJ\":[\"Escriu un secret\"],\"3d1wCB\":[\"sí\"],\"MFDARJ\":[\"No tens permís per crear registres en aquest objecte\"],\"5eVYbs\":[\"You are not allowed to create records in this object\"],\"TBApzn\":[\"You do not have access to impersonate users.\"],\"zSkMV0\":[\"Se us carregarà immediatament per l'any sencer.\"],\"XVnj6K\":[\"El vostre saldo de crèdit serà utilitzat per pagar les factures mensuals.\"],\"+5YqGH\":[\"Els teus assumptes de correus electrònics i títols de reunions seran compartits amb el teu equip.\"],\"la0RPA\":[\"El contingut dels teus correus electrònics i esdeveniments seran compartits amb el teu equip.\"],\"9ivpwk\":[\"El vostre nom tal com serà mostrat\"],\"3RASGN\":[\"El vostre nom tal com serà mostrat a l'aplicació\"],\"YQK8fJ\":[\"El vostre Espai de Treball\"],\"RhNbPE\":[\"El vostre espai de treball serà desactivat\"]}")as Messages;
Greptile
greptile
logic: Duplicate key 'Portuguese' appears in both English ('MOERNx') and translated form ('R7+D0/', '512Uma')
diff block
},
"inbounds-page-header": {
"widget": {
- "list-of-all-inbounds": "List of all inbounds",
- "inbounds": "Inbounds",
- "impotant-note": "Impotant note",
- "important-note-description-line-1": "All bulk operations require a complete restart of all nodes.",
- "important-note-description-line-2": "Please avoid making too many requests in a short period of time.",
- "important-note-description-line-3": "After saving changes, it may take up to 30 seconds for them to be applied across all nodes."
+ "list-of-all-inbounds": "لیست همه اینباندها",
+ "inbounds": "اینباندها",
+ "important-note": "نکته مهم",
+ "important-note-description-line-1": "همه عملیات‌های گروهی نیاز به ریستارت کامل همه نودها دارند",
+ "important-note-description-line-2": "لطفاً از ارسال درخواست‌های متعدد در مدت زمان کوتاه خودداری کنید",
+ "important-note-description-line-3": "پس از ذخیره تغییرات، ممکن است تا ۳۰ ثانیه طول بکشد تا تغییرات در همه نودها اعمال شوند"
}
},
"inbounds-card": {
"widget": {
- "nodes": "Nodes",
- "enabled-nodes": "Nodes with this inbound enabled",
- "disabled-nodes": "Nodes with this inbound disabled",
- "remove": "Remove",
- "add": "Add",
- "cancel": "Cancel",
- "users": "Users",
- "enabled-users": "Users with this inbound enabled",
- "disabled-users": "Users with this inbound disabled",
- "show-raw-inbound": "Show raw inbound",
- "raw-inbound": "Raw inbound",
- "are-you-sure": "Are you sure?",
- "add-users-to-inbound-line-1": "Are you sure you want to add this inbound to users?",
- "add-users-to-inbound-line-2": "This action will add the inbound to all users.",
- "remove-users-from-inbound-line-1": "Are you sure you want to remove this inbound from users?",
- "remove-users-from-inbound-line-2": "This action will remove the inbound from all users.",
- "add-nodes-to-inbound-line-1": "Are you sure you want to add this inbound to nodes?",
- "add-nodes-to-inbound-line-2": "This action will add the inbound to all nodes.",
- "remove-nodes-from-inbound-line-1": "Are you sure you want to remove this inbound from nodes?",
- "remove-nodes-from-inbound-line-2": "This action will remove the inbound from all nodes."
+ "nodes": "نودها",
+ "enabled-nodes": "نودهایی که این اینباند در آن‌ها فعال است",
+ "disabled-nodes": "نودهایی که این اینباند در آن‌ها غیرفعال است",
+ "remove": "حذف",
+ "add": "افزودن",
+ "cancel": "لغو",
+ "users": "کاربرها",
+ "enabled-users": "کاربرانی که این اینباند برای آن‌ها فعال است",
+ "disabled-users": "کاربرانی که این اینباند برای آن‌ها غیرفعال است",
+ "show-raw-inbound": "نمایش اینباند خام",
+ "raw-inbound": "اینباند خام",
+ "are-you-sure": "آیا مطمئن هستید؟",
+ "add-users-to-inbound-line-1": "آیا مطمئن هستید که می‌خواهید این اینباند را به کاربران اضافه کنید؟",
+ "add-users-to-inbound-line-2": "این اقدام اینباند را به همه کاربران اضافه خواهد کرد",
+ "remove-users-from-inbound-line-1": "آیا مطمئن هستید که می‌خواهید این اینباند را برای کاربران حذف کنید؟",
+ "remove-users-from-inbound-line-2": "این اقدام اینباند را برای همه کاربران حذف خواهد کرد.",
+ "add-nodes-to-inbound-line-1": "آیا مطمئن هستید که می‌خواهید این اینباند را به نودها اضافه کنید؟",
+ "add-nodes-to-inbound-line-2": "این اقدام اینباند را به همه نودها اضافه خواهد کرد.",
+ "remove-nodes-from-inbound-line-1": "آیا مطمئن هستید که می‌خواهید این اینباند را از نودها حذف کنید؟",
+ "remove-nodes-from-inbound-line-2": "این اقدام اینباند را از همه نودها حذف خواهد کرد."
}
},
"multi-select-hosts": {
"feature": {
- "delete-hosts": "Delete hosts",
- "are-you-sure-you-want-to-delete-these-hosts": "Are you sure you want to delete these hosts?",
- "delete": "Delete",
- "cancel": "Cancel",
- "set-inbound": "Set inbound",
- "inbound": "Inbound",
- "set-port": "Set Port",
- "port": "Port",
- "clear-selection": "Clear selection",
- "select-all": "Select all",
- "enable": "Enable",
- "disable": "Disable",
- "set-port-0": "Set port"
+ "delete-hosts": "حذف هاست‌ها",
+ "are-you-sure-you-want-to-delete-these-hosts": "آیا مطمئن هستید که می‌خواهید این هاست‌ها را حذف کنید؟",
+ "delete": "حذف",
+ "cancel": "لغو",
+ "set-inbound": "تنظیم اینباند",
+ "inbound": "اینباند",
+ "set-port": "تنظیم پورت",
+ "port": "پورت",
+ "clear-selection": "پاک کردن انتخاب",
+ "select-all": "انتخاب همه",
+ "enable": "فعال کردن",
+ "disable": "غیرفعال کردن",
+ "set-port-0": "تنظیم پورت"
Greptile
greptile
style: Duplicate key 'set-port' appears as both 'set-port' and 'set-port-0', consider consolidating
diff block
}
}, [focusedFeatureFlagKey, earlyAccessFeatures])
+ const conceptFeatures = earlyAccessFeatures.filter((f) => f.stage === 'concept')
+ const betaFeatures = earlyAccessFeatures.filter((f) => f.stage === 'beta')
+
return (
<div
className={clsx(
'flex flex-col relative min-h-24',
earlyAccessFeatures.length === 0 && 'items-center justify-center'
)}
>
- {earlyAccessFeatures.map((feature, i) => {
- if (!feature.flagKey) {
- return false
- }
- return (
- <div key={feature.flagKey} id={`feature-preview-${feature.flagKey}`}>
- {i > 0 && <LemonDivider className="my-4" />}
- <FeaturePreview key={feature.flagKey} feature={feature} />
- </div>
- )
- })}
+ <LemonTabs
+ activeKey={activeKey}
+ onChange={setActiveKey}
+ tabs={[
+ {
+ key: 'beta',
+ label: 'Previews',
+ content: (
+ <div className="flex flex-col flex-1 px-3 overflow-y-auto gap-4">
+ <LemonBanner type="info">
+ Get early access to these upcoming features. Let us know what you think!
+ </LemonBanner>
+ {betaFeatures.map((feature, i) => (
+ <div key={feature.flagKey} id={`feature-preview-${feature.flagKey}`}>
+ {i > 0 && <LemonDivider className="my-4" />}
+ <FeaturePreview key={feature.flagKey} feature={feature} />
+ </div>
+ ))}
Greptile
greptile
style: Duplicate key prop on both div and FeaturePreview elements ```suggestion {betaFeatures.map((feature, i) => ( <div key={feature.flagKey} id={`feature-preview-${feature.flagKey}`}> {i > 0 && <LemonDivider className="my-4" />} + <FeaturePreview feature={feature} /> </div> ))} ```
diff block
}
}, [focusedFeatureFlagKey, earlyAccessFeatures])
+ const conceptFeatures = earlyAccessFeatures.filter((f) => f.stage === 'concept')
+ const betaFeatures = earlyAccessFeatures.filter((f) => f.stage === 'beta')
+
return (
<div
className={clsx(
'flex flex-col relative min-h-24',
earlyAccessFeatures.length === 0 && 'items-center justify-center'
)}
>
- {earlyAccessFeatures.map((feature, i) => {
- if (!feature.flagKey) {
- return false
- }
- return (
- <div key={feature.flagKey} id={`feature-preview-${feature.flagKey}`}>
- {i > 0 && <LemonDivider className="my-4" />}
- <FeaturePreview key={feature.flagKey} feature={feature} />
- </div>
- )
- })}
+ <LemonTabs
+ activeKey={activeKey}
+ onChange={setActiveKey}
+ tabs={[
+ {
+ key: 'beta',
+ label: 'Previews',
+ content: (
+ <div className="flex flex-col flex-1 px-3 overflow-y-auto gap-4">
+ <LemonBanner type="info">
+ Get early access to these upcoming features. Let us know what you think!
+ </LemonBanner>
+ {betaFeatures.map((feature, i) => (
+ <div key={feature.flagKey} id={`feature-preview-${feature.flagKey}`}>
+ {i > 0 && <LemonDivider className="my-4" />}
+ <FeaturePreview key={feature.flagKey} feature={feature} />
+ </div>
+ ))}
+ </div>
+ ),
+ },
+ {
+ key: 'concept',
+ label: `Coming soon (${conceptFeatures.length})`,
+ content: (
+ <div className="flex flex-col flex-1 px-3 overflow-y-auto gap-4">
+ <LemonBanner type="info">
+ Get notified about features we're going to work on soon!
+ </LemonBanner>
+ {conceptFeatures.map((feature, i) => (
+ <div key={feature.flagKey} id={`feature-preview-${feature.flagKey}`}>
+ {i > 0 && <LemonDivider className="my-4" />}
+ <ConceptPreview key={feature.flagKey} feature={feature} />
+ </div>
+ ))}
Greptile
greptile
style: Duplicate key prop on both div and ConceptPreview elements ```suggestion {conceptFeatures.map((feature, i) => ( <div key={feature.flagKey} id={`feature-preview-${feature.flagKey}`}> {i > 0 && <LemonDivider className="my-4" />} + <ConceptPreview feature={feature} /> </div> ))} ```
diff block
require.NotNil(t, funcContractsMap)
- actualNameToContracts := map[*types.Func][]*FunctionContract{}
- for funcObj, contracts := range funcContractsMap {
- actualNameToContracts[funcObj] = contracts
+ actualNameToContracts := map[string][]*FunctionContract{}
+ for funcID, contracts := range funcContractsMap {
+ actualNameToContracts[funcID] = contracts
}
- var getFuncObj = func(name string) *types.Func {
- return pass.Pkg.Scope().Lookup(name).(*types.Func)
- }
- expectedNameToContracts := map[*types.Func][]*FunctionContract{
- getFuncObj("f1"): {
+ expectedNameToContracts := map[string][]*FunctionContract{
+ getFuncID(pass, "f1"): {
&FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{NonNil}},
},
- getFuncObj("f2"): {
+ getFuncID(pass, "f2"): {
&FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{True}},
},
- getFuncObj("f3"): {
+ getFuncID(pass, "f3"): {
&FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{False}},
},
- getFuncObj("multipleValues"): {
+ getFuncID(pass, "multipleValues"): {
&FunctionContract{Ins: []ContractVal{Any, NonNil}, Outs: []ContractVal{NonNil, True}},
},
- getFuncObj("multipleContracts"): {
+ getFuncID(pass, "multipleContracts"): {
&FunctionContract{Ins: []ContractVal{Any, NonNil}, Outs: []ContractVal{NonNil, True}},
&FunctionContract{Ins: []ContractVal{NonNil, Any}, Outs: []ContractVal{NonNil, True}},
},
+ getFuncID(pass, "ExportedFromParse"): {
+ &FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{NonNil}},
+ },
// function contractCommentInOtherLine should not exist in the map as it has no contract.
}
if diff := cmp.Diff(expectedNameToContracts, actualNameToContracts); diff != "" {
require.Fail(t, fmt.Sprintf("parsed contracts mismatch (-want +got):\n%s", diff))
}
}
+func TestInfer(t *testing.T) {
+ t.Parallel()
+
+ testdata := analysistest.TestData()
+ r := analysistest.Run(t, testdata, Analyzer, "go.uber.org/functioncontracts/infer")
+
+ require.Equal(t, 1, len(r))
+ require.NotNil(t, r[0])
+
+ pass, result := r[0].Pass, r[0].Result
+ require.IsType(t, Result{}, result)
+ funcContractsMap := result.(Result).FunctionContracts
+
+ require.NotNil(t, funcContractsMap)
+
+ actualNameToContracts := map[string][]*FunctionContract{}
+ for funcObj, contracts := range funcContractsMap {
+ actualNameToContracts[funcObj] = contracts
+ }
+
+ expectedNameToContracts := map[string][]*FunctionContract{
+ getFuncID(pass, "onlyLocalVar"): {
+ &FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{NonNil}},
+ },
+ getFuncID(pass, "unknownCondition"): {
+ &FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{NonNil}},
+ },
+ getFuncID(pass, "noLocalVar"): {
+ &FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{NonNil}},
+ },
+ getFuncID(pass, "learnUnderlyingFromOuterMakeInterface"): {
+ &FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{NonNil}},
+ },
+ getFuncID(pass, "ExportedFromInfer"): {
+ &FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{NonNil}},
+ },
+ getFuncID(pass, "twoCondsMerge"): {
Greptile
greptile
logic: Duplicate key 'ExportedFromInfer' in expected map; previous entry will be overwritten. Merge into one entry.
suggested fix
+
suggestion getFuncID(pass, "learnUnderlyingFromOuterMakeInterface"): { &FunctionContract{Ins: []ContractVal{NonNil}, Outs: []ContractVal{NonNil}}, }, getFuncID(pass, "twoCondsMerge"): { ```
diff block
<CommandMenuDefaultSelectionEffect
selectableItemIds={selectableItemIds}
/>
- <StyledList>
- <ScrollWrapper
- contextProviderName="commandMenu"
- componentInstanceId={`scroll-wrapper-command-menu`}
- >
- <StyledInnerList>
- <SelectableList
- selectableListId="command-menu-list"
- hotkeyScope={AppHotkeyScope.CommandMenuOpen}
- selectableItemIdArray={selectableItemIds}
- onEnter={(itemId) => {
- if (itemId === RESET_CONTEXT_TO_SELECTION) {
- resetPreviousCommandMenuContext();
- return;
- }
+ <ScrollWrapper
+ contextProviderName="commandMenu"
+ componentInstanceId={`scroll-wrapper-command-menu`}
+ >
+ <StyledInnerList>
+ <SelectableList
+ selectableListId="command-menu-list"
+ hotkeyScope={AppHotkeyScope.CommandMenuOpen}
+ selectableItemIdArray={selectableItemIds}
+ onEnter={(itemId) => {
+ if (itemId === RESET_CONTEXT_TO_SELECTION) {
+ resetPreviousCommandMenuContext();
+ return;
+ }
- const command = commands.find((item) => item.id === itemId);
+ const command = commands.find((item) => item.id === itemId);
- if (isDefined(command)) {
- const { to, onCommandClick, shouldCloseCommandMenuOnClick } =
- command;
+ if (isDefined(command)) {
+ const { to, onCommandClick, shouldCloseCommandMenuOnClick } =
+ command;
- onItemClick({
- shouldCloseCommandMenuOnClick,
- onClick: onCommandClick,
- to,
- });
- }
- }}
- onSelect={() => {
- setHasUserSelectedCommand(true);
- }}
- >
- {children}
- {commandGroups.map(({ heading, items }) =>
- items?.length ? (
- <CommandGroup heading={heading} key={heading}>
- {items.map((item) => {
- return (
- <SelectableItem itemId={item.id} key={item.id}>
- <CommandMenuItem
- key={item.id}
- id={item.id}
- Icon={item.Icon}
- label={item.label}
- description={item.description}
- to={item.to}
- onClick={item.onCommandClick}
- hotKeys={item.hotKeys}
- shouldCloseCommandMenuOnClick={
- item.shouldCloseCommandMenuOnClick
- }
- />
- </SelectableItem>
- );
- })}
- </CommandGroup>
- ) : null,
- )}
- {noResults && !loading && (
- <StyledEmpty>No results found</StyledEmpty>
- )}
- </SelectableList>
- </StyledInnerList>
- </ScrollWrapper>
- </StyledList>
+ onItemClick({
+ shouldCloseCommandMenuOnClick,
+ onClick: onCommandClick,
+ to,
+ });
+ }
+ }}
+ onSelect={() => {
+ setHasUserSelectedCommand(true);
+ }}
+ >
+ {children}
+ {commandGroups.map(({ heading, items }) =>
+ items?.length ? (
+ <CommandGroup heading={heading} key={heading}>
+ {items.map((item) => {
+ return (
+ <SelectableItem itemId={item.id} key={item.id}>
+ <CommandMenuItem
+ key={item.id}
Greptile
greptile
logic: Duplicate key prop on CommandMenuItem - already present on SelectableItem parent
suggested fix
+ id={item.id}
diff block
renderer: true,
});
+ const {
+ fatalError,
+ currentRun: { unhandledErrors },
+ } = storeState;
+
+ const content = fatalError ? (
+ <>
+ <p>{fatalError.error.name || 'Error'}</p>
+ {fatalError.message && <p>{fatalError.message}</p>}
+ {fatalError.error.message && <p>{fatalError.error.message}</p>}
+ {fatalError.error.stack && <p>{fatalError.error.stack}</p>}
+ {fatalError.error.cause && <ErrorCause error={fatalError.error.cause} />}
+ </>
+ ) : unhandledErrors.length > 0 ? (
+ <ol>
+ {unhandledErrors.map((error) => (
+ <li key={error.name + error.message}>
+ <p>
+ {error.name}: {error.message}
+ </p>
+ {error.VITEST_TEST_PATH && (
+ <p>
+ This error originated in "<b>{error.VITEST_TEST_PATH}</b>". It doesn't mean the error
+ was thrown inside the file itself, but while it was running.
+ </p>
+ )}
+ {error.VITEST_TEST_NAME && (
+ <>
+ <p>
+ The latest test that might've caused the error is "<b>{error.VITEST_TEST_NAME}</b>".
+ It might mean one of the following:
+ </p>
+ <ul>
+ <li>The error was thrown, while Vitest was running this test.</li>
+ <li>
+ If the error occurred after the test had been completed, this was the last
+ documented test before it was thrown.
+ </li>
+ </ul>
+ </>
+ )}
+ {error.stacks && (
+ <>
+ <p>
+ <b>Stacks:</b>
+ </p>
+ <ul>
+ {error.stacks.map((stack) => (
+ <li key={stack.file + stack.line + stack.column}>
Greptile
greptile
logic: key={stack.file + stack.line + stack.column} could produce duplicate keys if multiple stack frames have identical values
diff block
renderer: true,
});
+ const {
+ fatalError,
+ currentRun: { unhandledErrors },
+ } = storeState;
+
+ const content = fatalError ? (
+ <>
+ <p>{fatalError.error.name || 'Error'}</p>
+ {fatalError.message && <p>{fatalError.message}</p>}
+ {fatalError.error.message && <p>{fatalError.error.message}</p>}
+ {fatalError.error.stack && <p>{fatalError.error.stack}</p>}
+ {fatalError.error.cause && <ErrorCause error={fatalError.error.cause} />}
+ </>
+ ) : unhandledErrors.length > 0 ? (
+ <ol>
+ {unhandledErrors.map((error) => (
+ <li key={error.name + error.message}>
Greptile
greptile
logic: key={error.name + error.message} could cause duplicate keys if two errors have the same name and message
diff block
+import React, {
+ type ReactNode,
+ useCallback,
+ useEffect,
+ useMemo,
+ useState,
+} from "react";
+import { Box, render, Text, useApp } from "ink";
+import Spinner from "ink-spinner";
+import { Command } from "@commander-js/extra-typings";
+
+import { apiClient } from "../../apiClient.ts";
+import { logAndQuit } from ".././../helpers/errors.ts";
+import ConfirmInput from "../ConfirmInput.tsx";
+import ProcurementDisplay, {
+ ProcurementHeader,
+} from "./ProcurementDisplay.tsx";
+import ConfirmationMessage from "./ConfirmationMessage.tsx";
+import {
+ acceleratorsToNodes,
+ getProcurement,
+ parseAccelerators,
+ parseHorizonArg,
+ parseIds,
+ parsePriceArg,
+ type Procurement,
+} from "./utils.ts";
+
+async function updateProcurement({
+ procurementId,
+ horizonMinutes,
+ nodesRequired,
+ pricePerGpuHourInCents,
+}: {
+ procurementId: string;
+ horizonMinutes?: number;
+ nodesRequired?: number;
+ pricePerGpuHourInCents?: number;
+}) {
+ const client = await apiClient();
+ const { data, response, error } = await client.PATCH(
+ "/v0/procurements/{id}",
+ {
+ params: { path: { id: procurementId } },
+ body: {
+ desired_quantity: nodesRequired,
+ buy_limit_price_per_gpu_hour: pricePerGpuHourInCents,
+ horizon: horizonMinutes,
+ },
+ },
+ );
+ if (!response.ok) {
+ throw new Error(
+ error?.message
+ ? `${error.message} (${response.status})`
+ : "Failed to update procurement",
+ );
+ }
+ return data;
+}
+
+function useUpdateProcurements() {
+ const [isLoading, setIsLoading] = useState(false);
+ const [error, setError] = useState<string>();
+ const [results, setResults] = useState<
+ PromiseSettledResult<Procurement | undefined>[]
+ >();
+
+ const updateProcurements = useCallback(async (ids: string[], params: {
+ horizonMinutes?: number;
+ nodesRequired?: number;
+ pricePerGpuHourInCents?: number;
+ }) => {
+ try {
+ setIsLoading(true);
+ setError(undefined);
+
+ const updatePromises = ids.map((id) =>
+ updateProcurement({
+ procurementId: id,
+ ...params,
+ })
+ );
+
+ const results = await Promise.allSettled(
+ updatePromises,
+ );
+ setResults(results);
+
+ const failures = results.filter((r) => r.status === "rejected");
+ if (failures.length > 0) {
+ setError(`Failed to update ${failures.length} procurement(s)`);
+ }
+ } catch (err: unknown) {
+ setError(
+ err instanceof Error ? err.message : "An unknown error occurred",
+ );
+ } finally {
+ setIsLoading(false);
+ }
+ }, []);
+
+ return {
+ isLoading,
+ error,
+ results,
+ updateProcurements,
+ };
+}
+
+type UpdateProcurementCommandProps = {
+ ids: string[];
+ accelerators: number;
+ horizon?: number;
+ price?: number;
+ yes?: boolean;
+};
+
+function UpdateProcurementCommand(props: UpdateProcurementCommandProps) {
+ const { exit } = useApp();
+ const [procurements, setProcurements] = useState<
+ PromiseSettledResult<Procurement | null>[]
+ >();
+ const { successfulProcurements } = useMemo(() => {
+ const successfulProcurements = procurements
+ ?.filter?.((p): p is PromiseFulfilledResult<Procurement> =>
+ p.status === "fulfilled" && p.value != null
+ )
+ ?.map?.((p) => p.value);
+ return { successfulProcurements };
+ }, [procurements]);
+ const [confirmationMessage, setConfirmationMessage] = useState<ReactNode>();
+ const nodesRequired = useMemo(() => acceleratorsToNodes(props.accelerators), [
+ props.accelerators,
+ ]);
+
+ const [displayedPricePerGpuHourInCents, setDisplayedPricePerGpuHourInCents] =
+ useState<number>();
+ useEffect(() => {
+ (async function init() {
+ try {
+ const settledResults = await Promise.allSettled(
+ props.ids.map((id) => getProcurement({ id })),
+ );
+
+ const successfullyFetched = settledResults
+ .filter((r): r is PromiseFulfilledResult<Procurement> =>
+ r.status === "fulfilled" && r.value != null
+ )
+ .map((r) => r.value);
+
+ const failedToFetch = settledResults
+ .map((r, i) => [r, props.ids[i]] as const)
+ .filter((r): r is [PromiseRejectedResult, string] =>
+ r[0].status === "rejected"
+ ).map((r) =>
+ [
+ r[0].reason instanceof Error
+ ? r[0].reason.message
+ : "Unknown error",
+ r[1],
+ ] as const
+ );
+
+ if (successfullyFetched.length === 0) {
+ logAndQuit("No procurements could be fetched");
+ }
+
+ setProcurements(settledResults);
+ setDisplayedPricePerGpuHourInCents(props.price);
+
+ if (props.yes) {
+ await updateProcurements(
+ successfullyFetched.map((p) => p.id),
+ {
+ horizonMinutes: props.horizon,
+ nodesRequired,
+ pricePerGpuHourInCents: props.price,
+ },
+ );
+ } else {
+ setConfirmationMessage(
+ <Box flexDirection="column">
+ {successfullyFetched?.length > 0 &&
+ successfullyFetched.map((p) => (
+ <Box key={p.id} flexDirection="column">
+ <ProcurementHeader
+ id={p.id}
+ quantity={p.desired_quantity}
+ />
+ <ConfirmationMessage
+ key={p.id}
Greptile
greptile
logic: Duplicate key prop - already using key on parent Box element
suggested fix
+ quote={false}
diff block
+export const SITE_NAME = "Ever Teams";
+export const SITE_TITLE = "Open Work and Project Management Platform";
+export const SITE_DESCRIPTION =
+ "All-In-One Work & Workforce Management, Time Management, Time Tracking, Activity Tracking, Productivity Tracking & Metrics, Projects / Tasks & Issues Management, Organizations & Teams, Integrations (GitHub, JIRA, ...) and More!";
+export const SITE_KEYWORDS =
+ "time tracking, open-work, project management, software development, task management, team collaboration, agile, kanban, scrum, gantt chart, resource management, project management, work items tracking, agile, scrum, collaboration";
Greptile
greptile
style: Duplicate keywords 'project management', 'agile', and 'scrum' in SITE_KEYWORDS. Remove duplicates to improve SEO effectiveness.
diff block
{tabFiltered.tab !== 'dailyplan' && (
<ul className="flex flex-col gap-4">
-
- {slicedItems.length>0 ?slicedItems.map((task) => {
- return (
- <li key={task.id}>
- <TaskCard
- key={task.id}
- task={task}
- isAuthUser={profile.isAuthUser}
- activeAuthTask={false}
- viewType={tabFiltered.tab === 'unassigned' ? 'unassign' : 'default'}
- profile={profile}
- taskBadgeClassName={cn(
- task.issueType === 'Bug'
- ? '!px-[0.3312rem] py-[0.2875rem]'
- : '!px-[0.375rem] py-[0.375rem]',
- 'rounded-sm'
- )}
- taskTitleClassName="mt-[0.0625rem]"
- />
- </li>
- );
- }) :tabFiltered.tab !== 'stats' && (<EmptyPlans planMode='Today Tasks' />)}
+ {slicedItems.length > 0
+ ? slicedItems.map((task) => {
+ return (
+ <li key={task.id}>
+ <TaskCard
+ key={task.id}
Greptile
greptile
logic: duplicate key prop (already specified on li element)
suggested fix
diff block
return (
<div className="h-full w-full flex flex-col">
- <div className="flex items-center justify-between mb-3">
- <h3 className="text-sm font-semibold text-neutral-800 dark:text-neutral-100">
- Selected Items
- </h3>
- </div>
-
- <ScrollArea className="h-[200px] flex-grow pr-1">
- <div className="space-y-2.5">
- {folders.length > 0 && (
- <div className="space-y-2.5">
- {folders.map((folder: FolderResponse) => (
- <div key={folder.id} className="group flex items-center gap-2">
- <div
- className={cn(
- "group flex-1 flex items-center rounded-md border p-2.5",
- "bg-neutral-100/80 border-neutral-200 hover:bg-neutral-200/60",
- "dark:bg-neutral-800/80 dark:border-neutral-700 dark:hover:bg-neutral-750",
- "dark:focus:ring-1 dark:focus:ring-neutral-500 dark:focus:border-neutral-600",
- "dark:active:bg-neutral-700 dark:active:border-neutral-600",
- "transition-colors duration-150"
- )}
- >
- <div className="flex items-center min-w-0 flex-1">
- <FolderIcon className="h-5 w-5 mr-2 text-black dark:text-black shrink-0 fill-black dark:fill-black" />
+ <div className="space-y-2.5 pb-2">
+ {folders.length > 0 && (
+ <div className="space-y-2.5">
+ {folders.map((folder: FolderResponse) => (
+ <div key={folder.id} className="group flex items-center gap-2">
+ <div
+ className={cn(
+ "group flex-1 flex items-center rounded-md border p-2.5",
+ "bg-neutral-100/80 border-neutral-200 hover:bg-neutral-200/60",
+ "dark:bg-neutral-800/80 dark:border-neutral-700 dark:hover:bg-neutral-750",
+ "dark:focus:ring-1 dark:focus:ring-neutral-500 dark:focus:border-neutral-600",
+ "dark:active:bg-neutral-700 dark:active:border-neutral-600",
+ "transition-colors duration-150"
+ )}
+ >
+ <div className="flex items-center min-w-0 flex-1">
+ <FolderIcon className="h-5 w-5 mr-2 text-black dark:text-black shrink-0 fill-black dark:fill-black" />
- <span className="text-sm font-medium truncate text-neutral-800 dark:text-neutral-100">
- {truncateString(folder.name, 34)}
- </span>
- </div>
+ <span className="text-sm font-medium truncate text-neutral-800 dark:text-neutral-100">
+ {truncateString(folder.name, 34)}
+ </span>
</div>
-
- <Button
- variant="ghost"
- size="sm"
- onClick={() => onRemoveFolder(folder)}
- className={cn(
- "bg-transparent hover:bg-transparent opacity-0 group-hover:opacity-100",
- "h-6 w-6 p-0 rounded-full shrink-0",
- "hover:text-neutral-700",
- "dark:text-neutral-300 dark:hover:text-neutral-100",
- "dark:focus:ring-1 dark:focus:ring-neutral-500",
- "dark:active:bg-neutral-500 dark:active:text-white",
- "transition-all duration-150 ease-in-out"
- )}
- aria-label={`Remove folder ${folder.name}`}
- >
- <X className="h-3 w-3 dark:text-neutral-200" />
- </Button>
</div>
- ))}
- </div>
- )}
- {files.length > 0 && (
- <div className="space-y-2.5 ">
- {files.map((file: FileResponse) => (
+ <Button
+ variant="ghost"
+ size="sm"
+ onClick={() => onRemoveFolder(folder)}
+ className={cn(
+ "bg-transparent hover:bg-transparent opacity-0 group-hover:opacity-100",
+ "h-6 w-6 p-0 rounded-full shrink-0",
+ "hover:text-neutral-700",
+ "dark:text-neutral-300 dark:hover:text-neutral-100",
+ "dark:focus:ring-1 dark:focus:ring-neutral-500",
+ "dark:active:bg-neutral-500 dark:active:text-white",
+ "transition-all duration-150 ease-in-out"
+ )}
+ aria-label={`Remove folder ${folder.name}`}
+ >
+ <X className="h-3 w-3 dark:text-neutral-200" />
+ </Button>
+ </div>
+ ))}
+ </div>
+ )}
+
+ {files.length > 0 && (
+ <div className="space-y-2.5 ">
+ {files.map((file: FileResponse) => (
+ <div
+ key={file.id}
+ className="group w-full flex items-center gap-2"
+ >
<div
- key={file.id}
- className="group w-full flex items-center gap-2"
+ className={cn(
+ "group flex-1 flex items-center rounded-md border p-2.5",
+ "bg-neutral-50 border-neutral-200 hover:bg-neutral-100",
+ "dark:bg-neutral-800/70 dark:border-neutral-700 dark:hover:bg-neutral-750",
+ "dark:focus:ring-1 dark:focus:ring-neutral-500 dark:focus:border-neutral-600",
+ "dark:active:bg-neutral-700 dark:active:border-neutral-600",
+ "transition-colors duration-150",
+ "cursor-pointer"
+ )}
+ onClick={() => openFile(file)}
>
- <div
- className={cn(
- "group flex-1 flex items-center rounded-md border p-2.5",
- "bg-neutral-50 border-neutral-200 hover:bg-neutral-100",
- "dark:bg-neutral-800/70 dark:border-neutral-700 dark:hover:bg-neutral-750",
- "dark:focus:ring-1 dark:focus:ring-neutral-500 dark:focus:border-neutral-600",
- "dark:active:bg-neutral-700 dark:active:border-neutral-600",
- "transition-colors duration-150",
- "cursor-pointer"
- )}
- onClick={() => openFile(file)}
- >
- <div className="flex items-center min-w-0 flex-1">
- {getFileIconFromFileNameAndLink(file.name, file.link_url)}
- <span className="text-sm truncate text-neutral-700 dark:text-neutral-200 ml-2.5">
- {truncateString(file.name, 34)}
+ <div className="flex items-center min-w-0 flex-1">
+ {getFileIconFromFileNameAndLink(file.name, file.link_url)}
+ <span className="text-sm truncate text-neutral-700 dark:text-neutral-200 ml-2.5">
+ {truncateString(file.name, 34)}
+ </span>
+ </div>
+ </div>
+ <Button
+ variant="ghost"
+ size="sm"
+ onClick={() => onRemoveFile(file)}
+ className={cn(
+ "bg-transparent hover:bg-transparent opacity-0 group-hover:opacity-100",
+ "h-6 w-6 p-0 rounded-full shrink-0",
+ "hover:text-neutral-700",
+ "dark:text-neutral-300 dark:hover:text-neutral-100",
+ "dark:focus:ring-1 dark:focus:ring-neutral-500",
+ "dark:active:bg-neutral-500 dark:active:text-white",
+ "transition-all duration-150 ease-in-out"
+ )}
+ aria-label={`Remove file ${file.name}`}
+ >
+ <X className="h-3 w-3 dark:text-neutral-200" />
+ </Button>
+ </div>
+ ))}
+ </div>
+ )}
+ <div className="max-w-full space-y-2.5">
+ {uploadingFiles
+ .filter(
+ (uploadingFile) =>
+ !files.map((file) => file.name).includes(uploadingFile.name)
+ )
+ .map((uploadingFile, index) => (
+ <div key={index} className="mr-8 flex items-center gap-2">
+ <div
+ key={`uploading-${index}`}
+ className={cn(
Greptile
greptile
logic: Duplicate key prop on nested div elements could cause React rendering issues
suggested fix
<div key={index} className="mr-8 flex items-center gap-2">
<div
className={cn(
diff block
+import { useCatalogueData } from "../hooks/use-catalogue-data";
+import { useSearchGames } from "../hooks/use-search-games";
+import { Input } from "@/components/common";
+import { useState, useEffect } from "react";
+import { Checkbox } from "@/components/common/checkbox/checkbox";
+
+const styles = {
+ container: {
+ display: "flex",
+ flexDirection: "row" as const,
+ gap: "1rem",
+ overflowY: "scroll" as const,
+ width: "100%",
+ },
+ filtersContainer: {
+ display: "flex",
+ flexDirection: "column" as const,
+ justifyContent: "space-between",
+ padding: "3rem",
+ gap: "1rem",
+ },
+ filterColumn: {
+ display: "flex",
+ flexDirection: "column" as const,
+ gap: "1rem",
+ },
+ filterList: {
+ listStyle: "none",
+ padding: 0,
+ border: "1px solid #fff",
+ },
+ filterItem: {
+ display: "flex",
+ alignItems: "center",
+ marginBottom: "8px",
+ },
+ searchContainer: {
+ display: "flex",
+ flexDirection: "column" as const,
+ gap: "1rem",
+ padding: "3rem",
+ width: "100%",
+ },
+ resultsContainer: {
+ display: "flex",
+ flexDirection: "column" as const,
+ gap: "1rem",
+ },
+};
+
+function useFilterDebounce<T>(
+ initialValue: T[]
+): [T[], T[], (value: T, checked: boolean) => void] {
+ const [selectedValues, setSelectedValues] = useState<T[]>(initialValue);
+ const [debouncedValues, setDebouncedValues] = useState<T[]>(initialValue);
+
+ useEffect(() => {
+ const timer = setTimeout(() => {
+ setDebouncedValues(selectedValues);
+ }, 500);
+
+ return () => clearTimeout(timer);
+ }, [selectedValues]);
+
+ const handleToggle = (value: T, checked: boolean) => {
+ if (checked) {
+ setSelectedValues([...selectedValues, value]);
+ } else {
+ setSelectedValues(selectedValues.filter((v) => v !== value));
+ }
+ };
+
+ return [selectedValues, debouncedValues, handleToggle];
+}
+
+interface FilterItem<T> {
+ id: T;
+ name: string;
+}
+
+export function Catalogue() {
+ const { data, isLoading, isError } = useCatalogueData();
+ const [searchInput, setSearchInput] = useState("");
+ const [debouncedSearch, setDebouncedSearch] = useState("");
+
+ const [selectedGenres, debouncedGenres, handleGenreToggle] =
+ useFilterDebounce<string>([]);
+ const [selectedTags, debouncedTags, handleTagToggle] =
+ useFilterDebounce<number>([]);
+ const [selectedPublishers, debouncedPublishers, handlePublisherToggle] =
+ useFilterDebounce<string>([]);
+ const [selectedDevelopers, debouncedDevelopers, handleDeveloperToggle] =
+ useFilterDebounce<string>([]);
+
+ useEffect(() => {
+ const timer = setTimeout(() => {
+ setDebouncedSearch(searchInput);
+ }, 500);
+
+ return () => clearTimeout(timer);
+ }, [searchInput]);
+
+ const { searchData } = useSearchGames({
+ title: debouncedSearch,
+ take: 32,
+ skip: 0,
+ genres: debouncedGenres.length > 0 ? debouncedGenres : undefined,
+ tags: debouncedTags.length > 0 ? debouncedTags : undefined,
+ publishers:
+ debouncedPublishers.length > 0 ? debouncedPublishers : undefined,
+ developers:
+ debouncedDevelopers.length > 0 ? debouncedDevelopers : undefined,
+ });
+
+ function FilterSection<T extends string | number>({
+ title,
+ items,
+ selectedItems,
+ onToggle,
+ }: {
+ title: string;
+ items: FilterItem<T>[];
+ selectedItems: T[];
+ onToggle: (id: T, checked: boolean) => void;
+ }) {
+ return (
+ <div style={styles.filterColumn}>
+ <h2>{title}:</h2>
+ <ul style={styles.filterList}>
+ {items.map((item) => (
+ <li key={`${item.id}`} style={styles.filterItem}>
+ <Checkbox
+ checked={selectedItems.includes(item.id)}
+ onChange={(checked) => onToggle(item.id, checked)}
+ label={item.name}
+ />
+ </li>
+ ))}
+ </ul>
+ </div>
+ );
+ }
+
+ if (isLoading) return <p>loading...</p>;
+ if (isError) return <p>error fetching data</p>;
+
+ const genreItems: FilterItem<string>[] =
+ data?.genres.en.slice(0, 20).map((genre) => ({ id: genre, name: genre })) ||
+ [];
+ const tagItems: FilterItem<number>[] = Object.entries(data?.userTags.en || {})
+ .slice(0, 20)
+ .map(([name, id]) => ({ id, name }));
+ const publisherItems: FilterItem<string>[] =
+ data?.publishers.slice(0, 20).map((pub) => ({ id: pub, name: pub })) || [];
+ const developerItems: FilterItem<string>[] =
+ data?.developers.slice(0, 20).map((dev) => ({ id: dev, name: dev })) || [];
+
+ return (
+ <div style={styles.container}>
+ <div style={styles.searchContainer}>
+ <h2>game search:</h2>
+ <Input
+ value={searchInput}
+ onChange={(e) => setSearchInput(e.target.value)}
+ />
+
+ <div style={styles.resultsContainer}>
+ <h2>search results:</h2>
+ {searchData.isLoading && <p>Buscando...</p>}
+ {searchData.isError && <p>Erro ao buscar jogos</p>}
+ {searchData.isEmpty && !searchData.isLoading && (
+ <p>Nenhum jogo encontrado</p>
+ )}
+
+ {!searchData.isEmpty && !searchData.isLoading && (
+ <ol>
+ {searchData.data?.edges.map((game) => (
+ <li key={`${game.id || game.title}`}>{game.title}</li>
+ ))}
Greptile
greptile
logic: Using game.id || game.title as key could lead to duplicate keys if titles are the same. Should use a guaranteed unique identifier.
diff block
);
return (
- <StyledSelectableItem itemId={record.id} key={record.id}>
+ <StyledSelectableItem
+ itemId={record.id}
+ key={record.id}
+ onEnter={() => {
+ onRecordSelected(record);
+ }}
+ >
<MenuItemSelectAvatar
key={record.id}
testId="menu-item"
Greptile
greptile
logic: duplicate key prop - already set on parent StyledSelectableItem
suggested fix
+ <MenuItemSelectAvatar
+ testId="menu-item"
diff block
return (
<>
{employeesArray.length > 0 ? (
- <div className="flex w-full flex-wrap items-start justify-center">{
- employeesArray.map((employee) =>
+ <div className="flex w-full flex-wrap items-start justify-center">
+ {employeesArray.map((employee) => (
<div className="px-2" key={employee.id}>
<UserTeamBlockCard key={employee.id} member={employee} />
Greptile
greptile
logic: Duplicate key prop on nested elements - 'key' already defined on parent div
suggested fix
+ <UserTeamBlockCard member={employee} />
diff block
<div className={cn('min-h-0 flex-1 overflow-y-auto p-6')}>
<div className={cn('grid grid-cols-1 gap-4 2xl:grid-cols-2')}>
{filteredConnectors.map((connector, index) => (
- <ConnectorCard
+ <ConnectorDisplay
connector={connector}
key={`${connector.name}-${index}`}
Greptile
greptile
logic: Using connector name and index as key could lead to duplicate keys if multiple connectors have the same name. Consider using a unique identifier from the connector object.
diff block
+import { Box, Group, Text, Collapse, ActionIcon, UnstyledButton, Badge, Flex, Tooltip, Modal } from '@mantine/core';
+import { useDisclosure } from '@mantine/hooks';
+import { Goal, Patient, Resource } from '@medplum/fhirtypes';
+import { useMedplum } from '@medplum/react-hooks';
+import { useState, useRef, useEffect, useCallback } from 'react';
+import { formatDate } from '@medplum/core';
+import { IconChevronDown, IconChevronRight, IconPlus } from '@tabler/icons-react';
+import { killEvent } from '../utils/dom';
+import styles from './PatientSummary.module.css';
+import { GoalDialog } from './GoalDialog';
+
+export interface GoalsProps {
+ readonly patient: Patient;
+ readonly goals: Goal[];
+ readonly onClickResource?: (resource: Resource) => void;
+}
+
+function getStatusColor(status?: string): string {
+ switch (status) {
+ case 'active':
+ return 'green';
+ case 'on-hold':
+ return 'yellow';
+ case 'completed':
+ return 'blue';
+ case 'cancelled':
+ return 'red';
+ case 'entered-in-error':
+ return 'gray';
+ default:
+ return 'gray';
+ }
+}
+
+export function Goals(props: GoalsProps): JSX.Element {
+ const medplum = useMedplum();
+ const { goals: propsGoals, patient } = props;
+ const [goals, setGoals] = useState<Goal[]>(propsGoals);
+ const [editGoal, setEditGoal] = useState<Goal>();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [collapsed, setCollapsed] = useState(false);
+ const [overflowedGoals, setOverflowedGoals] = useState<Record<string, boolean>>({});
+ const textRefs = useRef<Record<string, HTMLSpanElement | null>>({});
+
+ // Sort by start date descending
+ const sortedGoals = [...goals].sort((a, b) => {
+ const dateA = a.startDate ? new Date(a.startDate).getTime() : 0;
+ const dateB = b.startDate ? new Date(b.startDate).getTime() : 0;
+ return dateB - dateA;
+ });
+
+ useEffect(() => {
+ // Check for overflow on all goals
+ Object.entries(textRefs.current).forEach(([id, el]) => {
+ if (el) {
+ setOverflowedGoals(prev => ({
+ ...prev,
+ [id]: el.scrollWidth > el.clientWidth
+ }));
+ }
+ });
+ }, [goals]);
+
+ const handleSubmit = useCallback(
+ async (goal: Goal) => {
+ try {
+ if (goal.id) {
+ const updatedGoal = await medplum.updateResource(goal);
+ setGoals(goals.map((g) => (g.id === updatedGoal.id ? updatedGoal : g)));
+ } else {
+ const newGoal = await medplum.createResource(goal);
+ setGoals([newGoal, ...goals]);
+ }
+ setEditGoal(undefined);
+ close();
+ } catch (error) {
+ console.error('Error saving goal:', error);
+ }
+ },
+ [medplum, goals, close]
+ );
+
+ // Helper function to handle click on a goal
+ const handleGoalClick = useCallback(
+ (goal: Goal, e?: React.MouseEvent) => {
+ if (e) {
+ killEvent(e);
+ }
+
+ // Always open the edit modal
+ setEditGoal(goal);
+ open();
+ },
+ [open]
+ );
+
+ return (
+ <>
+ <Box style={{ position: 'relative' }}>
+ <UnstyledButton className={styles.patientSummaryHeader}>
+ <Group justify="space-between">
+ <Group gap={8}>
+ <ActionIcon
+ variant="subtle"
+ onClick={() => setCollapsed((c) => !c)}
+ aria-label={collapsed ? 'Show goals' : 'Hide goals'}
+ className={`${styles.patientSummaryCollapseIcon} ${collapsed ? styles.collapsed : ''}`}
+ size="md"
+ >
+ <IconChevronDown size={20} />
+ </ActionIcon>
+ <Text fz="md" fw={800} onClick={() => setCollapsed((c) => !c)}>
+ Goals
+ </Text>
+ </Group>
+ <ActionIcon
+ className={`${styles.patientSummaryAddButton} add-button`}
+ variant="subtle"
+ onClick={(e) => {
+ killEvent(e);
+ setEditGoal(undefined);
+ open();
+ }}
+ size="md"
+ >
+ <IconPlus size={18} />
+ </ActionIcon>
+ </Group>
+ </UnstyledButton>
+ <Collapse in={!collapsed}>
+ {sortedGoals.length > 0 ? (
+ <Box ml="36" mt="8" mb="16">
+ <Flex direction="column" gap={8}>
+ {sortedGoals.map((goal) => {
+ const description = goal.description?.text || 'No description';
+ return (
+ <Box
+ key={goal.id}
+ className={styles.patientSummaryListItem}
+ onClick={(e) => handleGoalClick(goal, e)}
+ >
+ <Tooltip label={description} position="top-start" openDelay={650} disabled={!overflowedGoals[goal.id || '']}>
Greptile
greptile
logic: Using goal.id || '' could result in duplicate keys if multiple goals lack IDs. Consider using array index as fallback. ```suggestion + <Tooltip label={description} position="top-start" openDelay={650} disabled={!overflowedGoals[goal.id || `goal-${index}`]}> ```
diff block
+import { List, ActionPanel, Action, Icon } from "@raycast/api";
+import { formatPercentage, getFirstOutcomePrice, trimQuestion, formatVolumeWithSuffix, getMarketUrl } from "./utils";
+import { Ticker, Market } from "./types";
+
+function EventListItem({ ticker: Ticker }: { ticker: Ticker }) {
+ return (
+ <List.Item
+ key={Ticker.title}
+ title={Ticker.title}
+ subtitle={`${Ticker.markets.length} markets`}
+ accessories={[{ text: `24h Vol: ${formatVolumeWithSuffix(Ticker.volume24hr)}` }]}
+ actions={
+ <ActionPanel>
+ <Action.Push title="View Markets" target={<MarketList ticker={Ticker} />} icon={Icon.AppWindowList} />
+ <Action.CopyToClipboard
+ title="Copy Market Info"
+ content={`${Ticker.title}\n24h Volume: ${formatVolumeWithSuffix(Ticker.volume24hr)}\nMarkets: ${Ticker.markets.length}`}
+ shortcut={{ modifiers: ["cmd"], key: "c" }}
+ />
+ </ActionPanel>
+ }
+ />
+ );
+}
+
+function MarketListItem({ market, ticker }: { market: Market; ticker: Ticker }) {
+ if (!market.outcomePrices || (!market.groupItemTitle && !market.question)) {
+ return null;
+ }
+
+ const firstPrice = getFirstOutcomePrice(market.outcomePrices);
+ const volume = Number(market.volume24hr) || 0;
+
+ return (
+ <List.Item
+ key={market.question}
Greptile
greptile
logic: Using question as key could lead to duplicate keys if multiple markets have the same question. Should use market.slug instead since it's already being used as key in MarketList.
suggested fix
+ key={market.slug}
diff block
<div className="flex w-full flex-col">
{header.map((link) => (
<SheetClose key={link.label} asChild>
- <Link
+ <SharedNavLink
+ key={link.label}
Greptile
greptile
logic: Duplicate key prop - already specified on parent SheetClose element
suggested fix
+ className="justify-between py-2 text-base font-medium hover:underline sm:px-4"
diff block
+import styled from '@emotion/styled';
+import { DropResult } from '@hello-pangea/dnd';
+import { Controller, useFormContext } from 'react-hook-form';
+import {
+ CardContent,
+ CardFooter,
+ getNextThemeColor,
+ IconPlus,
+ LightButton,
+} from 'twenty-ui';
+import { z } from 'zod';
+
+import { FieldMetadataItemOption } from '@/object-metadata/types/FieldMetadataItem';
+import { selectOptionsSchema } from '@/object-metadata/validation-schemas/selectOptionsSchema';
+import { multiSelectFieldDefaultValueSchema } from '@/object-record/record-field/validation-schemas/multiSelectFieldDefaultValueSchema';
+import { selectFieldDefaultValueSchema } from '@/object-record/record-field/validation-schemas/selectFieldDefaultValueSchema';
+import { SettingsServiceCenterSectorFieldSelectFormOptionRow } from '@/settings/service-center/sectors/components/SettingsServiceCenterSectorFieldSelectFormOptionRow';
+import { useSelectSettingsFormInitialValues } from '@/settings/service-center/sectors/hooks/useSelectSettingsFormInitialValues';
+import { DraggableItem } from '@/ui/layout/draggable-list/components/DraggableItem';
+import { DraggableList } from '@/ui/layout/draggable-list/components/DraggableList';
+import { v4 } from 'uuid';
+import { moveArrayItem } from '~/utils/array/moveArrayItem';
+import { toSpliced } from '~/utils/array/toSpliced';
+
+export const settingsServiceCenterSectorTopicFieldSelectFormSchema = z.object({
+ defaultValue: selectFieldDefaultValueSchema(),
+ topics: selectOptionsSchema,
+});
+
+export const settingsDataModelFieldMultiSelectFormSchema = z.object({
+ defaultValue: multiSelectFieldDefaultValueSchema(),
+ topics: selectOptionsSchema,
+});
+
+const selectOrMultiSelectFormSchema = z.union([
+ settingsServiceCenterSectorTopicFieldSelectFormSchema,
+ settingsDataModelFieldMultiSelectFormSchema,
+]);
+
+export type SettingsDataModelFieldSelectFormValues = z.infer<
+ typeof selectOrMultiSelectFormSchema
+>;
+
+const StyledContainer = styled(CardContent)`
+ padding-bottom: ${({ theme }) => theme.spacing(3.5)};
+`;
+
+const StyledLabel = styled.span`
+ color: ${({ theme }) => theme.font.color.light};
+ display: block;
+ font-size: ${({ theme }) => theme.font.size.xs};
+ font-weight: ${({ theme }) => theme.font.weight.semiBold};
+ margin-bottom: 6px;
+ margin-top: ${({ theme }) => theme.spacing(1)};
+`;
+
+const StyledFooter = styled(CardFooter)`
+ background-color: ${({ theme }) => theme.background.secondary};
+ padding: ${({ theme }) => theme.spacing(1)};
+ display: flex;
+ justify-content: flex-end;
+`;
+
+// eslint-disable-next-line @nx/workspace-no-hardcoded-colors
+const StyledButton = styled(LightButton)`
+ justify-content: center;
+ width: 20%;
+ background-color: #1960eb;
+ color: #fff;
+ &:hover {
+ background-color: #154bb5;
+ color: #fff;
+ }
+`;
+
+export const SettingsServiceCenterSectorTopicSelect = () => {
+ // const { t } = useTranslation();
+
+ const { initialOptions } = useSelectSettingsFormInitialValues();
+ const {
+ control,
+ setValue: setFormValue,
+ getValues,
+ } = useFormContext<SettingsDataModelFieldSelectFormValues>();
+
+ const handleDragEnd = (
+ values: FieldMetadataItemOption[],
+ result: DropResult,
+ onChange: (options: FieldMetadataItemOption[]) => void,
+ ) => {
+ if (!result.destination) return;
+
+ const nextOptions = moveArrayItem(values, {
+ fromIndex: result.source.index,
+ toIndex: result.destination.index,
+ }).map((option, index) => ({ ...option, position: index }));
+
+ onChange(nextOptions);
+ };
+
+ const generateNewSelectOptionLabel = (
+ values: Pick<FieldMetadataItemOption, 'label'>[],
+ iteration = 1,
+ ): string => {
+ const newOptionLabel = `Topic ${values.length + iteration}`;
+ const labelExists = values.some((value) => value.label === newOptionLabel);
+
+ return labelExists
+ ? generateNewSelectOptionLabel(values, iteration + 1)
+ : newOptionLabel;
+ };
+
+ const generateNewSelectOption = (
+ options: FieldMetadataItemOption[],
+ ): FieldMetadataItemOption => {
+ const newOptionLabel = generateNewSelectOptionLabel(options);
+
+ return {
+ color: getNextThemeColor(options[options.length - 1].color),
+ id: v4(),
+ label: newOptionLabel,
+ position: options.length,
+ value: newOptionLabel,
+ };
+ };
+ const getOptionsWithNewOption = () => {
+ const currentOptions = getValues('topics');
+
+ const newOptions = [
+ ...currentOptions,
+ generateNewSelectOption(currentOptions),
+ ];
+
+ return newOptions;
+ };
+
+ const handleAddTopic = () => {
+ const newOptions = getOptionsWithNewOption();
+
+ setFormValue('topics', newOptions);
+ };
+
+ const handleInputEnter = () => {
+ const newOptions = getOptionsWithNewOption();
+
+ setFormValue('topics', newOptions);
+ };
+
+ return (
+ <>
+ <Controller
+ name="topics"
+ control={control}
+ defaultValue={initialOptions}
+ render={({ field: { onChange, value: topics } }) => (
+ <>
+ <StyledContainer>
+ <StyledLabel>
+ {'Add topics related to this sector below'}
+ </StyledLabel>
+ <DraggableList
+ onDragEnd={(result) => handleDragEnd(topics, result, onChange)}
+ draggableItems={
+ <>
+ {topics.map((topic, index) => (
+ <DraggableItem
+ isInsideScrollableContainer
+ key={topic.id}
+ draggableId={topic.id}
+ index={index}
+ isDragDisabled={topics.length === 1}
+ itemComponent={
+ <SettingsServiceCenterSectorFieldSelectFormOptionRow
+ key={topic.id}
Greptile
greptile
logic: duplicate key prop with parent DraggableItem
suggested fix
+ option={topic}
diff block
{ key: "ne", label: "!=" },
];
-export default function DataTableFilter({
- possibleFilters,
- activeFilters,
- updateFilters,
- className,
-}: DataTableFilterProps) {
- const router = useRouter();
- const pathName = usePathname();
- const searchParamsRaw = useSearchParams();
- const searchParams = useMemo(() => new URLSearchParams(searchParamsRaw.toString()), [searchParamsRaw]);
- const queryParamFilters = searchParams.get("filter");
+const JSON_OPERATIONS = [{ key: "eq", label: "=" }];
- const [filters, setFilters] = useState<DatatableFilter[]>(
- queryParamFilters ? (getFilterFromUrlParams(queryParamFilters) ?? []) : []
- );
- const [popoverOpen, setPopoverOpen] = useState<boolean>(false);
+const dataTypeOperationsMap: Record<ColumnFilter["dataType"], { key: string; label: string }[]> = {
+ string: STRING_OPERATIONS,
+ number: NUMBER_OPERATIONS,
+ json: JSON_OPERATIONS,
+};
- const handleApplyFilters = () => {
- searchParams.delete("filter");
- searchParams.delete("pageNumber");
- searchParams.append("pageNumber", "0");
- searchParams.append("filter", toFilterUrlParam(filters));
- setPopoverOpen(false);
- router.push(`${pathName}?${searchParams.toString()}`);
- };
+export default function DataTableFilter({ columns, className }: DataTableFilterProps) {
+ const router = useRouter();
+ const pathName = usePathname();
+ const searchParams = useSearchParams();
+ const [filter, setFilter] = useState<DatatableFilter>({ operator: "", column: "", value: "" });
+
+ const handleApplyFilters = useCallback(() => {
+ const params = new URLSearchParams(searchParams);
+ params.append("filter", JSON.stringify(filter));
+ params.delete("pageNumber");
+ params.append("pageNumber", "0");
+ router.push(`${pathName}?${params.toString()}`);
+ }, [filter, pathName, router, searchParams]);
+
+ const handleValueChange = useCallback(({ field, value }: { field: keyof DatatableFilter; value: string }) => {
+ setFilter((prev) => ({
+ ...prev,
+ [field]: value,
+ }));
+ }, []);
useEffect(() => {
- if (activeFilters.length > 0) {
- setFilters(activeFilters);
- }
- }, [activeFilters]);
+ const firstColumn = head(columns);
- const isFilterFilled = (filter: DatatableFilter): boolean => filter.value.length > 0;
+ if (firstColumn) {
+ const { key: column, dataType } = firstColumn;
- const hasFilters = queryParamFilters ? (getFilterFromUrlParams(queryParamFilters)?.length ?? 0) > 0 : false;
+ if (dataType && dataTypeOperationsMap[dataType]?.length) {
+ const operator = dataTypeOperationsMap[dataType][0].key;
+
+ setFilter({
+ operator,
+ column,
+ value: "",
+ });
+ }
+ }
+ }, [columns]);
return (
- <Popover open={popoverOpen} onOpenChange={setPopoverOpen} key={useSearchParams().toString()}>
+ <Popover>
<PopoverTrigger asChild className={className}>
- <Button
- variant="outline"
- className={cn(
- "text-secondary-foreground h-7 text-xs font-medium",
- hasFilters ? "text-primary bg-primary/20 border-primary/40 hover:bg-primary/30" : ""
- )}
- >
+ <Button variant="outline" className="text-secondary-foreground h-7 text-xs font-medium">
<ListFilter size={14} className="mr-2" />
- Filters
+ Add filters
</Button>
</PopoverTrigger>
- <PopoverContent className="z-30 p-0 w-[400px]" side="bottom" align="start">
- <div className="">
- <div className="p-2">
- {filters.length > 0 ? (
- <table key={filters.length.toString()} className="w-full">
- <tbody>
- {filters.map((filter, i) => (
- <DataTableFilterRow
- i={i}
- key={i}
- filters={filters}
- setFilters={setFilters}
- possibleFilters={possibleFilters}
- updateFilters={updateFilters}
- />
- ))}
- </tbody>
- </table>
- ) : (
- <div className="px-2">
- <Label className="text-sm text-secondary-foreground">No filters applied</Label>
- </div>
- )}
- </div>
- <div className="flex flex-row justify-between p-2 border-t">
- <Button
- variant="ghost"
- onClick={() => {
- setFilters((filters) => [...filters, { column: possibleFilters[0].id, operator: "eq", value: "" }]);
- }}
- >
- <Plus size={14} className="mr-1" />
- Add Filter
- </Button>
- <Button
- disabled={filters.some((filter) => !isFilterFilled(filter))}
- variant="secondary"
- onClick={handleApplyFilters}
- handleEnter
- >
- Apply
+ <PopoverContent className="z-30 p-0 w-96" side="bottom" align="start">
+ <div className="flex gap-2 p-2">
+ <Select value={filter.column} onValueChange={(value) => handleValueChange({ field: "column", value })}>
+ <SelectTrigger className="flex truncate font-medium max-w-32">
+ <SelectValue placeholder="Choose column..." />
+ </SelectTrigger>
+ <SelectContent>
+ {columns.map((column) => (
+ <SelectItem key={column.key} value={column.key}>
+ {column.name}
+ </SelectItem>
+ ))}
+ </SelectContent>
+ </Select>
+ <Select value={filter.operator} onValueChange={(value) => handleValueChange({ field: "operator", value })}>
+ <SelectTrigger className="font-medium w-fit">
+ <SelectValue />
+ </SelectTrigger>
+ <SelectContent>
+ {dataTypeOperationsMap[get(find(columns, ["key", filter.column]), "dataType", "string")].map(
+ ({ key, label }) => (
+ <SelectItem key={key} value={key}>
+ {label}
+ </SelectItem>
+ )
+ )}
+ </SelectContent>
+ </Select>
+ <Input
+ type={columns.find((c) => c.key === filter.column)?.dataType === "number" ? "number" : "text"}
+ className="h-7 hide-arrow"
+ placeholder="value"
+ onChange={(e) => handleValueChange({ field: "value", value: e.target.value })}
+ />
+ </div>
+ <div className="flex flex-row-reverse border-t p-2">
+ <PopoverClose asChild>
+ <Button onClick={handleApplyFilters} variant="secondary" handleEnter className="ml-auto">
+ Add filter
</Button>
- </div>
+ </PopoverClose>
</div>
</PopoverContent>
</Popover>
);
}
-interface RowProps {
- i: number;
- filters: DatatableFilter[];
- setFilters: (filters: DatatableFilter[]) => void;
- updateFilters: (newFilters: DatatableFilter[]) => void;
- possibleFilters: Filter[];
-}
+export const DataTableFilterList = () => {
+ const router = useRouter();
+ const pathName = usePathname();
+ const searchParams = useSearchParams();
+
+ const filters = useMemo(
+ () => searchParams.getAll("filter").map((f) => JSON.parse(f) as DatatableFilter),
+ [searchParams]
+ );
+
+ const handleRemoveFilter = useCallback(
+ (filter: DatatableFilter) => {
+ const params = new URLSearchParams(searchParams);
+ const newFilters = filters.filter((f) => !isEqual(f, filter));
+ params.delete("filter");
+ newFilters.forEach((f) => {
+ params.append(`filter`, JSON.stringify(f));
+ });
+ router.push(`${pathName}?${params.toString()}`);
+ },
+ [filters, pathName, router, searchParams]
+ );
-function DataTableFilterRow({ i, filters, setFilters, updateFilters, possibleFilters }: RowProps) {
- const filter = filters[i];
- const [selectedFilter, setSelectedFilter] = useState<Filter | null>(null);
- const operators = (filter: Filter | null) =>
- filter?.restrictOperators != null
- ? SELECT_OPERATORS.filter((op) => filter.restrictOperators!.includes(op.key))
- : SELECT_OPERATORS;
-
- const handleRemoveFilter = (index: number) => {
- const newFilters = [...filters];
- newFilters.splice(index, 1);
- setFilters(newFilters);
- updateFilters(newFilters);
- };
+ if (filters.length === 0) {
+ return null;
+ }
return (
- <tr key={i} className="w-full">
- <td>
- <div className="flex">
- <Select
- defaultValue={filter.column}
- onValueChange={(value) => {
- const newFilters = [...filters];
- newFilters[i].column = value;
- setSelectedFilter(possibleFilters.find((f) => f.id === value) ?? null);
- setFilters(newFilters);
- }}
- >
- <SelectTrigger className="flex font-medium w-40">
- <SelectValue placeholder="Choose column..." />
- </SelectTrigger>
- <SelectContent>
- {possibleFilters.map((filter, colIdx) => (
- <SelectItem key={colIdx} value={filter.id}>
- {filter.name}
- </SelectItem>
- ))}
- </SelectContent>
- </Select>
- </div>
- </td>
- <td className="px-2">
- <Select
- defaultValue={filter?.operator ?? "eq"}
- onValueChange={(value) => {
- const newFilters = [...filters];
- newFilters[i].operator = value;
- setFilters(newFilters);
- }}
- >
- <SelectTrigger className="font-medium">
- <SelectValue />
- </SelectTrigger>
- <SelectContent>
- {operators(selectedFilter).map((operator) => (
- <SelectItem key={operator.key} value={operator.key}>
- {operator.label}
- </SelectItem>
- ))}
- </SelectContent>
- </Select>
- </td>
- <td className="">
- <Input
- className="h-7"
- defaultValue={filter?.value ?? ""}
- placeholder="value"
- onChange={(e) => {
- const newFilters = [...filters];
- newFilters[i].value = e.target.value ?? "";
- setFilters(newFilters);
- }}
- />
- </td>
- <td>
- <Button className="p-0 px-1 text-secondary-foreground" variant={"ghost"} onClick={() => handleRemoveFilter(i)}>
- <X size={16} />
- </Button>
- </td>
- </tr>
+ <div className="flex gap-2 flex-wrap">
+ {filters.map((f) => (
+ <Tooltip key={`${f.column}-${f.value}-${f.operator}`}>
Greptile
greptile
style: Key construction with value could cause duplicate keys if column and value are the same. Consider adding index to key. ```suggestion + <Tooltip key={`${f.column}-${f.value}-${f.operator}-${filters.indexOf(f)}`}> ```
diff block
},
[openModal]
);
- return (
- <div className="p-5 my-4 rounded-[1rem] space-y-5 dark:bg-[#1E2025] border-[.2rem] dark:border-[#FFFFFF0D] border-[#B993E6] ">
- <h3 className=" font-medium">
- {startedAt} - {stoppedAt}
- </h3>
- <div className="flex gap-5 flex-wrap ">
- {timeSlots.map((el, i) => (
- <ScreenshotItem
- key={i}
- endTime={el.stoppedAt}
- startTime={el.startedAt}
- percent={el.percentage}
- imageUrl={el.screenshots[0]?.thumbUrl}
- onShow={() => openScreenModal(el)}
- idSlot={el.id}
- />
- ))}
- <ScreenshotDetailsModal open={isOpen} closeModal={closeModal} slot={selectedElement} />
- </div>
- </div>
- );
-};
-export const ScreenshootPerHourTeam = ({
- timeSlots,
- startedAt,
- stoppedAt
-}: {
- timeSlots: ITimerSlot[];
- startedAt: string;
- stoppedAt: string;
-}) => {
- const { isOpen, closeModal, openModal } = useModal();
+ useEffect(() => {
+ console.log('Time slots received:', timeSlots);
+ if (timeSlots && timeSlots.length > 0) {
+ console.log('First slot screenshots:', timeSlots[0]?.screenshots);
+ }
+ }, [timeSlots]);
+
+ const containerClasses = isTeamPage
+ ? 'p-4 my-4 rounded-md dark:bg-[#1E2025] border-[0.125rem] bg-light--theme dark:border-[#FFFFFF0D]'
+ : 'p-5 my-4 rounded-[1rem] space-y-5 dark:bg-[#1E2025] border-[.2rem] dark:border-[#FFFFFF0D] border-[#B993E6]';
+
+ const headingClasses = isTeamPage ? 'px-4' : 'font-medium';
+
+ const contentClasses = isTeamPage ? 'flex justify-start items-start flex-wrap' : 'flex gap-5 flex-wrap';
+
return (
- <div className="p-4 my-4 rounded-md dark:bg-[#1E2025] border-[0.125rem] bg-light--theme dark:border-[#FFFFFF0D]">
- <h3 className="px-4">
+ <div className={containerClasses}>
+ <h3 className={headingClasses}>
{startedAt} - {stoppedAt}
</h3>
- <div className="flex justify-start items-start flex-wrap ">
- {timeSlots.map((el, i) => (
- <div key={i} className={clsxm('min-w-[15rem] xl:w-1/6 p-4')}>
+ <div className={contentClasses}>
+ {timeSlots.map((el, i) => {
+ if (isTeamPage) {
+ return (
+ <div key={i} className={clsxm('min-w-[15rem] xl:w-1/6 p-4')}>
+ <ScreenshotItem
+ key={i}
+ endTime={el.stoppedAt}
Greptile
greptile
logic: Duplicate key prop - already using key on the parent div at line 56
suggested fix
endTime={el.stoppedAt}
diff block
+import { Form, LocalStorage, ActionPanel, Action, showToast, Toast, useNavigation } from "@raycast/api";
+import { TRIGGER_FILTERS_KEY } from "../utils/constants";
+import { useEffect, useState } from "react";
+import { getAllTagsAPI } from "../utils/n8n-api-utils";
+import { Tag } from "../types/types"; // Assuming Tag type is defined in types.ts
+
+export default function TriggerFilterForm() {
+ const { pop } = useNavigation();
+ const [selectedTagNames, setSelectedTagNames] = useState<string[]>([]);
+ const [availableTags, setAvailableTags] = useState<Tag[]>([]);
+ const [isLoading, setIsLoading] = useState<boolean>(true);
+
+ // Helper function to validate filter data
+ function validateFilters(data: unknown): string[] {
+ // If it's not an array, return empty array
+ if (!Array.isArray(data)) {
+ console.warn("Saved filters are not in array format, resetting");
+ return [];
+ }
+
+ // Filter out non-string values
+ const validFilters = data.filter((item) => typeof item === "string");
+
+ // If we found invalid items, log a warning
+ if (validFilters.length !== data.length) {
+ console.warn(`Found ${data.length - validFilters.length} invalid filter items, cleaning up`);
+ }
+
+ return validFilters;
+ }
+
+ useEffect(() => {
+ async function loadData() {
+ setIsLoading(true);
+ try {
+ // Load saved filters
+ const storedFilters = await LocalStorage.getItem<string>(TRIGGER_FILTERS_KEY);
+ if (storedFilters) {
+ try {
+ const parsedFilters = JSON.parse(storedFilters);
+ const validFilters = validateFilters(parsedFilters);
+ setSelectedTagNames(validFilters);
+
+ // If we had to clean up filters, save the cleaned version back
+ if (Array.isArray(parsedFilters) && validFilters.length !== parsedFilters.length) {
+ await LocalStorage.setItem(TRIGGER_FILTERS_KEY, JSON.stringify(validFilters));
+ }
+ } catch (parseError) {
+ console.error("Failed to parse saved filters:", parseError);
+ // Reset filters if they're corrupted
+ await LocalStorage.removeItem(TRIGGER_FILTERS_KEY);
+ setSelectedTagNames([]);
+ }
+ }
+
+ // Fetch available tags
+ const tagsFromApi = await getAllTagsAPI();
+ setAvailableTags(tagsFromApi);
+ } catch (error) {
+ console.error("Failed to load filter data:", error);
+ await showToast({
+ style: Toast.Style.Failure,
+ title: "Failed to load filter settings",
+ message: error instanceof Error ? error.message : String(error),
+ });
+ } finally {
+ setIsLoading(false);
+ }
+ }
+ loadData();
+ }, []);
+
+ return (
+ <Form
+ isLoading={isLoading}
+ actions={
+ <ActionPanel>
+ <Action.SubmitForm
+ title="Save Filters"
+ onSubmit={async (values) => {
+ const tagsToSave = values.tags || [];
+ // Validate that all items are strings
+ const validTags = tagsToSave.filter((tag: unknown) => typeof tag === "string");
+
+ try {
+ await LocalStorage.setItem(TRIGGER_FILTERS_KEY, JSON.stringify(validTags));
+ await showToast({
+ style: Toast.Style.Success,
+ title: "Filters Saved",
+ message: `${validTags.length} filter(s) saved`,
+ });
+ pop(); // Close the form after saving
+ } catch (error) {
+ await showToast({
+ style: Toast.Style.Failure,
+ title: "Failed to save filters",
+ message: error instanceof Error ? error.message : String(error),
+ });
+ }
+ }}
+ />
+ <Action
+ title="Clear Filters"
+ style={Action.Style.Destructive}
+ onAction={async () => {
+ try {
+ await LocalStorage.removeItem(TRIGGER_FILTERS_KEY);
+ setSelectedTagNames([]); // Clear state as well
+ await showToast({ style: Toast.Style.Success, title: "Filters Cleared" });
+ pop();
+ } catch (error) {
+ await showToast({ style: Toast.Style.Failure, title: "Failed to clear filters" });
+ }
+ }}
+ shortcut={{ modifiers: ["cmd", "shift"], key: "d" }}
+ />
+ </ActionPanel>
+ }
+ >
+ <Form.TagPicker id="tags" title="Filter by Tags" value={selectedTagNames} onChange={setSelectedTagNames}>
+ {availableTags.map((tag) => (
+ <Form.TagPicker.Item key={tag.id || tag.name} value={tag.name} title={tag.name} />
+ ))}
Greptile
greptile
logic: Using tag.id || tag.name as key could lead to duplicate keys if both are undefined
diff block
+import { detailedTaskState } from '@app/stores';
+import { TaskProgressBar } from '@/core/components/features';
+import { useAtom } from 'jotai';
+import TaskRow from '../components/task-row';
+import { Disclosure } from '@headlessui/react';
+import { useCallback, useEffect, useState } from 'react';
+import ProfileInfoWithTime from '../components/profile-info-with-time';
+import { useAuthenticateUser, useOrganizationTeams } from '@app/hooks';
+import { secondsToTime } from '@app/helpers';
+import { ITasksTimesheet, ITime, OT_Member } from '@app/interfaces';
+import { ChevronDownIcon, ChevronUpIcon } from 'assets/svg';
+import { useTranslations } from 'next-intl';
+
+const TaskProgress = () => {
+ const [task] = useAtom(detailedTaskState);
+ const { user } = useAuthenticateUser();
+ const { activeTeam } = useOrganizationTeams();
+ const t = useTranslations();
+
+ const [userTotalTime, setUserTotalTime] = useState<ITime>({
+ hours: 0,
+ minutes: 0
+ });
+ const [userTotalTimeToday, setUserTotalTimeToday] = useState<ITime>({
+ hours: 0,
+ minutes: 0
+ });
+ const [timeRemaining, setTimeRemaining] = useState<ITime>({
+ hours: 0,
+ minutes: 0
+ });
+ const [groupTotalTime, setGroupTotalTime] = useState<ITime>({
+ hours: 0,
+ minutes: 0
+ });
+ const [numMembersToShow, setNumMembersToShow] = useState<number>(5);
+
+ const members = activeTeam?.members || [];
+
+ const currentUser: OT_Member | undefined = members.find((m) => {
+ return m.employee.user?.id === user?.id;
+ });
+
+ // const memberInfo = useTeamMemberCard(currentUser);
+
+ const userTotalTimeOnTask = useCallback((): void => {
+ const totalOnTaskInSeconds: number =
+ currentUser?.totalWorkedTasks?.find((object) => object.id === task?.id)?.duration || 0;
+
+ const { h, m } = secondsToTime(totalOnTaskInSeconds);
+
+ setUserTotalTime({ hours: h, minutes: m });
+ }, [currentUser?.totalWorkedTasks, task?.id]);
+
+ useEffect(() => {
+ userTotalTimeOnTask();
+ }, [userTotalTimeOnTask]);
+
+ const userTotalTimeOnTaskToday = useCallback((): void => {
+ const totalOnTaskInSeconds: number =
+ currentUser?.totalTodayTasks?.find((object) => object.id === task?.id)?.duration || 0;
+
+ const { h, m } = secondsToTime(totalOnTaskInSeconds);
+
+ setUserTotalTimeToday({ hours: h, minutes: m });
+ }, [currentUser?.totalTodayTasks, task?.id]);
+
+ useEffect(() => {
+ userTotalTimeOnTaskToday();
+ }, [userTotalTimeOnTaskToday]);
+
+ useEffect(() => {
+ const matchingMembers: OT_Member[] | undefined = activeTeam?.members.filter((member) =>
+ task?.members.some((taskMember) => taskMember.id === member.employeeId)
+ );
+
+ const usersTaskArray: ITasksTimesheet[] | undefined = matchingMembers
+ ?.flatMap((obj) => obj.totalWorkedTasks)
+ .filter((taskObj) => taskObj?.id === task?.id);
+
+ const usersTotalTimeInSeconds: number | undefined = usersTaskArray?.reduce(
+ (totalDuration, item) => totalDuration + item.duration,
+ 0
+ );
+
+ const usersTotalTime: number =
+ usersTotalTimeInSeconds === null || usersTotalTimeInSeconds === undefined ? 0 : usersTotalTimeInSeconds;
+
+ const timeObj = secondsToTime(usersTotalTime);
+ const { h: hoursTotal, m: minutesTotal } = timeObj;
+ setGroupTotalTime({ hours: hoursTotal, minutes: minutesTotal });
+
+ const remainingTime: number =
+ task?.estimate === null ||
+ task?.estimate === 0 ||
+ task?.estimate === undefined ||
+ usersTotalTimeInSeconds === undefined
+ ? 0
+ : task?.estimate - usersTotalTimeInSeconds;
+
+ const { h, m } = secondsToTime(remainingTime);
+ setTimeRemaining({ hours: h, minutes: m });
+ if (remainingTime <= 0) {
+ setTimeRemaining({ hours: 0, minutes: 0 });
+ }
+ }, [activeTeam?.members, task?.members, task?.id, task?.estimate]);
+
+ return (
+ <section className="flex flex-col gap-4 p-[0.9375rem]">
+ <TaskRow labelTitle={t('pages.taskDetails.PROGRESS')}>
+ <TaskProgressBar
+ task={task}
+ isAuthUser={true}
+ activeAuthTask={true}
+ showPercents={true}
+ // memberInfo={memberInfo}
+ />
+ </TaskRow>
+ <TaskRow labelTitle={t('pages.taskDetails.TOTAL_TIME')}>
+ <div className="not-italic font-semibold text-xs leading-[140%] tracking-[-0.02em] text-[#282048] dark:text-white">
+ {userTotalTime.hours}h : {userTotalTime.minutes}m
+ </div>
+ </TaskRow>
+ <TaskRow labelTitle={t('pages.taskDetails.TIME_TODAY')}>
+ <div className="not-italic font-semibold text-xs leading-[140%] tracking-[-0.02em] text-[#282048] dark:text-white">
+ {userTotalTimeToday.hours}h : {userTotalTimeToday.minutes}m
+ </div>
+ </TaskRow>
+ <TaskRow labelTitle={t('pages.taskDetails.TOTAL_GROUP_TIME')}>
+ <Disclosure>
+ {({ open }) => (
+ <div className="flex flex-col w-full mt-[0.1875rem]">
+ {task?.members && task?.members.length > 1 ? (
+ <Disclosure.Button className="flex items-center justify-between w-full">
+ <div className="not-italic font-semibold text-xs leading-[140%] tracking-[-0.02em] text-[#282048] dark:text-white">
+ {groupTotalTime.hours}h : {groupTotalTime.minutes}m
+ </div>
+
+ {open ? (
+ <ChevronUpIcon className="text-[#292D32] dark:text-white w-4 h-4" />
+ ) : (
+ <ChevronDownIcon className="text-[#292D32] dark:text-white w-4 h-4" />
+ )}
+ </Disclosure.Button>
+ ) : (
+ <div className="not-italic font-semibold text-xs leading-[140%] tracking-[-0.02em] text-[#282048] dark:text-white">
+ {groupTotalTime.hours}h : {groupTotalTime.minutes}m
+ </div>
+ )}
+ {task?.members && task?.members.length > 0 && (
+ <Disclosure.Panel>
+ <IndividualMembersTotalTime numMembersToShow={numMembersToShow} />
+ {task?.members?.length > 0 && task?.members?.length - 1 >= numMembersToShow && (
+ <div className="w-full flex justify-end my-1 text-[rgba(40,32,72,0.5)]">
+ <button
+ onClick={() => setNumMembersToShow((prev) => prev + 5)}
+ className="text-xs"
+ >
+ {t('common.SHOW_MORE')}
+ </button>
+ </div>
+ )}
+ </Disclosure.Panel>
+ )}
+ </div>
+ )}
+ </Disclosure>
+ </TaskRow>
+ <TaskRow labelTitle={t('pages.taskDetails.TIME_REMAINING')}>
+ <div className="not-italic font-semibold text-xs leading-[140%] tracking-[-0.02em] text-[#282048] dark:text-white">
+ {timeRemaining.hours}h : {timeRemaining.minutes}m
+ </div>
+ </TaskRow>
+ </section>
+ );
+};
+
+export default TaskProgress;
+
+const IndividualMembersTotalTime = ({ numMembersToShow }: { numMembersToShow: number }) => {
+ const [task] = useAtom(detailedTaskState);
+ const { activeTeam } = useOrganizationTeams();
+
+ const matchingMembers: OT_Member[] | undefined = activeTeam?.members.filter((member) =>
+ task?.members.some((taskMember) => taskMember.id === member.employeeId)
+ );
+
+ const findUserTotalWorked = (user: OT_Member, id: string | undefined) => {
+ return user?.totalWorkedTasks?.find((task: any) => task?.id === id)?.duration || 0;
+ };
+
+ return (
+ <>
+ {matchingMembers?.slice(0, numMembersToShow)?.map((member) => {
+ const taskDurationInSeconds = findUserTotalWorked(member, task?.id);
+
+ const { h, m } = secondsToTime(taskDurationInSeconds);
+
+ const time = `${h}h : ${m}m`;
+
+ return (
+ <div key={member.id} className="mt-2">
+ <ProfileInfoWithTime
+ key={member.id}
+ profilePicSrc={member.employee.user?.imageUrl}
+ names={member.employee.fullName}
+ time={time}
+ userId={member.employee.userId}
+ />
Greptile
greptile
logic: duplicate key prop on both div and ProfileInfoWithTime - remove from ProfileInfoWithTime
suggested fix
<div key={member.id} className="mt-2">
<ProfileInfoWithTime
profilePicSrc={member.employee.user?.imageUrl}
names={member.employee.fullName}
time={time}
userId={member.employee.userId}
/>
diff block
+import { Action, ActionPanel, Grid, Icon } from "@raycast/api";
+import { useDiscord, type DiscordMethods } from "./useDiscord";
+import { groupBy } from "./utils";
+import { useCachedState } from "@raycast/utils";
+import { useFavorites, FavoritesActionSection, type FavoriteMethods } from "./useFavorites";
+import type { SoundboardItem } from "./discord";
+
+export default function Command() {
+ const [columns, setColumns] = useCachedState("open-soundboard-columns", 8);
+ const { soundboardItems, isLoading, ...discordMethods } = useDiscord();
+ const { favorites, ...favoriteMethods } = useFavorites();
+
+ return (
+ <Grid
+ columns={columns}
+ inset={Grid.Inset.Large}
+ isLoading={isLoading}
+ searchBarAccessory={
+ <Grid.Dropdown
+ tooltip="Grid Item Size"
+ storeValue
+ onChange={(newValue) => {
+ setColumns(parseInt(newValue));
+ }}
+ >
+ <Grid.Dropdown.Item title="Large" value={"4"} />
+ <Grid.Dropdown.Item title="Medium" value={"6"} />
+ <Grid.Dropdown.Item title="Small" value={"8"} />
+ </Grid.Dropdown>
+ }
+ >
+ {(!isLoading || soundboardItems.length > 0) && (
+ <>
+ <Grid.Section title="FAVORITES">
+ {soundboardItems
+ .filter((item) => favorites.includes(item.id))
+ .toSorted((a, b) => favorites.indexOf(a.id) - favorites.indexOf(b.id))
+ .map((item) => (
+ <SoundGirdItem
+ key={item.id}
+ item={item}
+ isFavorite={true}
+ guildName="Favorites"
+ {...discordMethods}
+ {...favoriteMethods}
+ />
+ ))}
+ </Grid.Section>
+
+ {Object.entries(groupBy(soundboardItems, "guildName")).map(([guildName, items]) => (
+ <Grid.Section key={guildName} title={guildName.toUpperCase()}>
+ {items.map((item) => (
+ <SoundGirdItem
+ key={item.id}
+ item={item}
+ guildName={guildName}
+ {...discordMethods}
+ {...favoriteMethods}
+ />
+ ))}
+ </Grid.Section>
+ ))}
+ </>
+ )}
+ </Grid>
+ );
+}
+
+function SoundGirdItem(
+ props: { item: SoundboardItem; guildName: string; isFavorite?: boolean } & DiscordMethods & FavoriteMethods,
+) {
+ const { item, guildName, playSound, playSoundInCurrentChannel, refetch } = props;
+ return (
+ <Grid.Item
+ key={item.id}
Greptile
greptile
logic: duplicate key prop - already set at component level
diff block
+import React, { Fragment, useCallback, useState } from 'react';
+
+import { Button, Link, SyntaxHighlighter } from 'storybook/internal/components';
+
+import { CheckIcon, CopyIcon, LocationIcon } from '@storybook/icons';
+
+import * as Tabs from '@radix-ui/react-tabs';
+import type { NodeResult, Result } from 'axe-core';
+import { styled } from 'storybook/theming';
+
+import type { RuleType } from '../../types';
+import { useA11yContext } from '../A11yContext';
+
+const StyledSyntaxHighlighter = styled(SyntaxHighlighter)(
+ ({ theme }) => ({
+ fontSize: theme.typography.size.s1,
+ }),
+ ({ language }) =>
+ // We appended ' {}' to the selector in order to get proper syntax highlighting.
+ // This hides them in the displayed output so people can copy the selector without the brackets.
+ language === 'css' && {
+ '.selector ~ span:nth-last-of-type(-n+3)': {
+ display: 'none',
+ },
+ }
+);
+
+const Info = styled.div({
+ display: 'flex',
+ flexDirection: 'column',
+});
+
+const Description = styled.p({
+ margin: 0,
+});
+
+const Wrapper = styled.div({
+ containerType: 'inline-size',
+ display: 'flex',
+ flexDirection: 'column',
+ padding: '0 15px 20px 15px',
+ gap: 20,
+});
+
+const Columns = styled.div({
+ gap: 15,
+
+ '@container (min-width: 800px)': {
+ display: 'grid',
+ gridTemplateColumns: '50% 50%',
+ },
+});
+
+const Content = styled.div<{ side: 'left' | 'right' }>(({ theme, side }) => ({
+ display: side === 'left' ? 'flex' : 'none',
+ flexDirection: 'column',
+ gap: 15,
+ margin: side === 'left' ? '15px 0 20px 0' : 0,
+ '&:focus-visible': {
+ outline: 'none',
+ borderRadius: 4,
+ boxShadow: `0 0 0 1px inset ${theme.color.secondary}`,
+ },
+
+ '@container (min-width: 800px)': {
+ display: side === 'left' ? 'none' : 'flex',
+ },
+}));
+
+const Item = styled(Button)(({ theme }) => ({
+ fontFamily: theme.typography.fonts.mono,
+ fontWeight: theme.typography.weight.regular,
+ color: theme.textMutedColor,
+ height: 40,
+ overflow: 'hidden',
+ textOverflow: 'ellipsis',
+ whiteSpace: 'nowrap',
+ display: 'block',
+ width: '100%',
+ textAlign: 'left',
+ padding: '0 12px',
+ '&[data-state="active"]': {
+ color: theme.color.secondary,
+ backgroundColor: theme.background.hoverable,
+ },
+}));
+
+const Messages = styled.div({
+ display: 'flex',
+ flexDirection: 'column',
+ gap: 10,
+});
+
+const Actions = styled.div({
+ display: 'flex',
+ gap: 10,
+});
+
+const CopyButton = ({ onClick }: { onClick: () => void }) => {
+ const [copied, setCopied] = useState(false);
+
+ const handleClick = useCallback(() => {
+ onClick();
+ setCopied(true);
+ setTimeout(setCopied, 2000, false);
+ }, [onClick]);
+
+ return (
+ <Button onClick={handleClick}>
+ {copied ? <CheckIcon /> : <CopyIcon />} {copied ? 'Copied' : 'Copy link'}
+ </Button>
+ );
+};
+
+interface DetailsProps {
+ item: Result;
+ type: RuleType;
+ selection: string | undefined;
+ handleSelectionChange: (key: string) => void;
+}
+
+export const Details = ({ item, type, selection, handleSelectionChange }: DetailsProps) => (
+ <Wrapper>
+ <Info>
+ <Description>
+ {item.description.endsWith('.') ? item.description : `${item.description}.`}
+ </Description>
+ <Link href={item.helpUrl} target="_blank" withArrow>
+ Learn how to resolve this violation
+ </Link>
+ </Info>
+
+ <Tabs.Root
+ defaultValue="tab0"
+ orientation="vertical"
+ value={selection}
+ onValueChange={handleSelectionChange}
+ asChild
+ >
+ <Columns>
+ <Tabs.List aria-label={type}>
+ {item.nodes.map((node, index) => {
+ const key = `${type}.${item.id}.${index + 1}`;
+ return (
+ <Fragment key={key}>
+ <Tabs.Trigger value={key} asChild>
+ <Item variant="ghost" size="medium">
+ {index + 1}. {node.html}
+ </Item>
+ </Tabs.Trigger>
+ <Tabs.Content value={key} asChild>
+ <Content side="left">{getContent(node, key)}</Content>
+ </Tabs.Content>
+ </Fragment>
+ );
+ })}
+ </Tabs.List>
Greptile
greptile
style: Duplicate key generation logic appears in two map functions. Consider extracting key generation to a reusable function to ensure consistency.
diff block
+import { Form, LocalStorage, ActionPanel, Action, showToast, Toast, useNavigation } from "@raycast/api";
+ import { TRIGGER_FILTERS_KEY } from "../utils/constants";
+ import { useEffect, useState } from "react";
+ import { getAllTagsAPI } from "../utils/n8n-api-utils";
+ import { Tag } from "../types/types"; // Assuming Tag type is defined in types.ts
+
+ export default function TriggerFilterForm() {
+ const { pop } = useNavigation();
+ const [selectedTagNames, setSelectedTagNames] = useState<string[]>([]);
+ const [availableTags, setAvailableTags] = useState<Tag[]>([]);
+ const [isLoading, setIsLoading] = useState<boolean>(true);
+
+ useEffect(() => {
+ async function loadData() {
+ setIsLoading(true);
+ try {
+ // Load saved filters
+ const storedFilters = await LocalStorage.getItem<string>(TRIGGER_FILTERS_KEY);
+ if (storedFilters) {
+ setSelectedTagNames(JSON.parse(storedFilters));
+ }
+
+ // Fetch available tags
+ const tagsFromApi = await getAllTagsAPI();
+ setAvailableTags(tagsFromApi);
+
+ } catch (error) {
+ console.error("Failed to load filter data:", error);
+ await showToast({
+ style: Toast.Style.Failure,
+ title: "Failed to load filter settings",
+ message: error instanceof Error ? error.message : String(error),
+ });
+ } finally {
+ setIsLoading(false);
+ }
+ }
+ loadData();
+ }, []);
+
+ return (
+ <Form
+ isLoading={isLoading}
+ actions={
+ <ActionPanel>
+ <Action.SubmitForm
+ title="Save Filters"
+ onSubmit={async (values) => {
+ const tagsToSave = values.tags || [];
+ try {
+ await LocalStorage.setItem(TRIGGER_FILTERS_KEY, JSON.stringify(tagsToSave));
+ await showToast({ style: Toast.Style.Success, title: "Filters Saved" });
+ pop(); // Close the form after saving
+ } catch (error) {
+ await showToast({ style: Toast.Style.Failure, title: "Failed to save filters" });
+ }
+ }}
+ />
+ <Action
+ title="Clear Filters"
+ style={Action.Style.Destructive}
+ onAction={async () => {
+ try {
+ await LocalStorage.removeItem(TRIGGER_FILTERS_KEY);
+ setSelectedTagNames([]); // Clear state as well
+ await showToast({ style: Toast.Style.Success, title: "Filters Cleared" });
+ pop();
+ } catch (error) {
+ await showToast({ style: Toast.Style.Failure, title: "Failed to clear filters" });
+ }
+ }}
+ shortcut={{ modifiers: ["cmd", "shift"], key: "d" }}
+ />
+ </ActionPanel>
+ }
+ >
+ <Form.TagPicker
+ id="tags"
+ title="Filter by Tags"
+ value={selectedTagNames}
+ onChange={setSelectedTagNames}
+ >
+ {availableTags.map((tag) => (
+ <Form.TagPicker.Item key={tag.id || tag.name} value={tag.name} title={tag.name} />
+ ))}
Greptile
greptile
logic: Using tag.id || tag.name as key could lead to duplicate keys if both are undefined ```suggestion + {availableTags.map((tag, index) => ( + <Form.TagPicker.Item key={tag.id ?? `${tag.name}-${index}`} value={tag.name} title={tag.name} /> ))} ```
diff block
+import { useBus, useFerry, useMetro, useShip, useTram } from "../fetchers/depatures";
+import { List, Icon, Color, ActionPanel, Action } from "@raycast/api";
+import { TransportMode } from "../types/TransportMode";
+import { Site as SiteType } from "../types/Site";
+import moment from "moment";
+
+const getMetroLine = (lineId: number) => {
+ switch (lineId) {
+ case 10:
+ case 11:
+ return {
+ color: Color.Blue,
+ name: "Blue Line",
+ };
+ case 13:
+ case 14:
+ return {
+ color: Color.Red,
+ name: "Red Line",
+ };
+ case 17:
+ case 18:
+ case 19:
+ return {
+ color: Color.Green,
+ name: "Green Line",
+ };
+ }
+};
+
+const getIcon = (transportMode: TransportMode) => {
+ switch (transportMode) {
+ case TransportMode.Bus:
+ return Icon.Car;
+ case TransportMode.Metro:
+ case TransportMode.Tram:
+ return Icon.Train;
+ case TransportMode.Ferry:
+ case TransportMode.Ship:
+ return Icon.Boat;
+ }
+};
+
+const Site = ({ site }: { site: SiteType }) => {
+ const { isLoading: metroIsLoading, data: metroData, revalidate: revalidateMetro } = useMetro(site);
+ const { isLoading: ferryIsLoading, data: ferryData, revalidate: revalidateFerry } = useFerry(site);
+ const { isLoading: shipIsLoading, data: shipData, revalidate: revalidateShip } = useShip(site);
+ const { isLoading: tramIsLoading, data: tramData, revalidate: revalidateTram } = useTram(site);
+ const { isLoading: busIsLoading, data: busData, revalidate: revalidateBus } = useBus(site);
+
+ const isLoading = metroIsLoading || busIsLoading || ferryIsLoading || shipIsLoading || tramIsLoading;
+ const compindedData = [
+ ...(metroData?.departures ?? []),
+ ...(ferryData?.departures ?? []),
+ ...(shipData?.departures ?? []),
+ ...(tramData?.departures ?? []),
+ ...(busData?.departures ?? []),
+ ].sort((a, b) => moment(a.expected).diff(moment(b.expected)));
+
+ const revalidate = () => {
+ revalidateMetro();
+ revalidateFerry();
+ revalidateShip();
+ revalidateTram();
+ revalidateBus();
+ };
+
+ return (
+ <List isLoading={isLoading}>
+ {compindedData.map((item) => {
+ const line = getMetroLine(item.line.id);
+ return (
+ <List.Item
+ key={item.journey.id + item.scheduled}
Greptile
greptile
style: key concatenation could produce duplicate keys if journey.id and scheduled values happen to combine in the same way
diff block
+import { useEffect, useState, useCallback } from "react";
+import { ActionPanel, Action, List, Icon, Color, Toast, showToast, Form, useNavigation, Clipboard } from "@raycast/api";
+import { showFailureToast } from "@raycast/utils";
+import { NetworkService, VPC } from "./NetworkService";
+import SubnetsView from "./SubnetsView";
+import FirewallRulesView from "./FirewallRulesView";
+
+interface VPCViewProps {
+ projectId: string;
+ gcloudPath: string;
+}
+
+export default function VPCView({ projectId, gcloudPath }: VPCViewProps) {
+ const [isLoading, setIsLoading] = useState<boolean>(true);
+ const [vpcs, setVPCs] = useState<VPC[]>([]);
+ const [searchText, setSearchText] = useState<string>("");
+ const [service, setService] = useState<NetworkService | null>(null);
+ const { push } = useNavigation();
+
+ useEffect(() => {
+ // Initialize service with provided gcloudPath and projectId
+ const networkService = new NetworkService(gcloudPath, projectId);
+ setService(networkService);
+
+ const initializeData = async () => {
+ // Show initial loading toast
+ const loadingToast = await showToast({
+ style: Toast.Style.Animated,
+ title: "Loading VPC networks...",
+ message: "Please wait while we fetch your VPC networks",
+ });
+
+ try {
+ // Fetch VPCs
+ const fetchedVPCs = await networkService.getVPCs();
+ setVPCs(fetchedVPCs);
+
+ // Prefetch subnets in background for faster subnet view
+ networkService.getSubnets().catch((error) => {
+ console.error("Background subnet fetch error:", error);
+ showFailureToast("Failed to prefetch subnets - subnet view may load slower");
+ });
+
+ loadingToast.hide();
+
+ showToast({
+ style: Toast.Style.Success,
+ title: "VPCs loaded",
+ message: `${fetchedVPCs.length} VPC networks found`,
+ });
+ } catch (error: unknown) {
+ console.error("Error initializing:", error);
+ loadingToast.hide();
+
+ showToast({
+ style: Toast.Style.Failure,
+ title: "Failed to Load VPCs",
+ message: error instanceof Error ? error.message : String(error),
+ });
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ initializeData();
+ }, [gcloudPath, projectId]);
+
+ const refreshVPCs = useCallback(async () => {
+ if (!service) return;
+
+ setIsLoading(true);
+
+ const loadingToast = await showToast({
+ style: Toast.Style.Animated,
+ title: "Refreshing VPC networks...",
+ });
+
+ try {
+ const fetchedVPCs = await service.getVPCs();
+ setVPCs(fetchedVPCs);
+
+ loadingToast.hide();
+
+ showToast({
+ style: Toast.Style.Success,
+ title: "VPCs refreshed",
+ message: `${fetchedVPCs.length} VPC networks found`,
+ });
+ } catch (error: unknown) {
+ console.error("Error refreshing VPCs:", error);
+
+ loadingToast.hide();
+
+ showToast({
+ style: Toast.Style.Failure,
+ title: "Failed to Refresh VPCs",
+ message: error instanceof Error ? error.message : String(error),
+ });
+ } finally {
+ setIsLoading(false);
+ }
+ }, [service]);
+
+ const formatSubnetMode = (autoCreateSubnetworks: boolean) => {
+ return autoCreateSubnetworks ? "Auto mode" : "Custom mode";
+ };
+
+ const formatCreationTime = (timestamp: string) => {
+ return new Date(timestamp).toLocaleString();
+ };
+
+ const formatRoutingMode = (vpc: VPC) => {
+ if (!vpc.routingConfig || !vpc.routingConfig.routingMode) return "Regional";
+ return vpc.routingConfig.routingMode === "REGIONAL" ? "Regional" : "Global";
+ };
+
+ const getSubnetModeIcon = (autoCreateSubnetworks: boolean) => {
+ return {
+ source: Icon.Network,
+ tintColor: autoCreateSubnetworks ? Color.Green : Color.Orange,
+ };
+ };
+
+ return (
+ <List
+ isLoading={isLoading}
+ searchText={searchText}
+ onSearchTextChange={setSearchText}
+ searchBarPlaceholder="Search VPC networks..."
+ navigationTitle="VPC Networks"
+ filtering={true}
+ throttle
+ actions={
+ <ActionPanel>
+ <Action
+ title="Refresh"
+ icon={Icon.ArrowClockwise}
+ onAction={refreshVPCs}
+ shortcut={{ modifiers: ["cmd"], key: "r" }}
+ />
+ <Action
+ title="Create Vpc Network"
+ icon={Icon.Plus}
+ shortcut={{ modifiers: ["cmd"], key: "n" }}
+ onAction={() => {
+ if (!service) return;
+ push(
+ <CreateVPCForm
+ service={service}
+ gcloudPath={gcloudPath}
+ projectId={projectId}
+ onVPCCreated={refreshVPCs}
+ />,
+ );
+ }}
+ />
+ </ActionPanel>
+ }
+ >
+ {vpcs.length === 0 && !isLoading ? (
+ <List.EmptyView
+ title="No VPC Networks Found"
+ description={searchText ? "Try a different search term" : "Click the + button to create a new VPC network"}
+ icon={{ source: Icon.Network }}
+ actions={
+ <ActionPanel>
+ <Action
+ title="Create Vpc Network"
+ icon={Icon.Plus}
+ onAction={() => {
+ if (!service) return;
+ push(
+ <CreateVPCForm
+ service={service}
+ gcloudPath={gcloudPath}
+ projectId={projectId}
+ onVPCCreated={refreshVPCs}
+ />,
+ );
+ }}
+ />
+ <Action title="Refresh" icon={Icon.ArrowClockwise} onAction={refreshVPCs} />
+ </ActionPanel>
+ }
+ />
+ ) : (
+ vpcs.map((vpc) => (
+ <List.Item
+ key={vpc.id || vpc.name}
Greptile
greptile
logic: Using vpc.id || vpc.name as key could lead to duplicate keys if neither is unique. Consider using a more reliable unique identifier
diff block
+import { Icon, List } from "@raycast/api";
+import { Model } from "../../type";
+
+export const ModelListView = ({
+ title,
+ models,
+ selectedModel,
+ actionPanel,
+}: {
+ title: string;
+ models: Model[];
+ selectedModel: string | null;
+ actionPanel: (model: Model) => JSX.Element;
+}) => (
+ <List.Section title={title} subtitle={models.length.toLocaleString()}>
+ {models.map((model) => (
+ <ModelListItem key={model.id} model={model} selectedModel={selectedModel} actionPanel={actionPanel} />
+ ))}
+ </List.Section>
+);
+
+export const ModelListItem = ({
+ model,
+ selectedModel,
+ actionPanel,
+}: {
+ model: Model;
+ selectedModel: string | null;
+ actionPanel: (model: Model) => JSX.Element;
+}) => {
+ return (
+ <List.Item
+ id={model.id}
+ key={model.id}
Greptile
greptile
style: Duplicate key prop - id is already used as key in the parent List.Item
diff block
+/*
+ Arcane Theme for Hydra Launcher
+ Featuring Jinx and the aesthetic of Arcane
+*/
+
+/* Global styles */
+:root {
+ --arcane-primary: #9b6ef3;
+ --arcane-secondary: #4a2c6d;
+ --arcane-dark: #1a1325;
+ --arcane-accent: #e5b567;
+ --arcane-text: #e0e0e0;
+ --arcane-border: #4a2c6d;
+ --arcane-glow: #c795ff;
+ --arcane-shimmer: #d4a9ff;
+ --arcane-danger: #ff4d6d;
+ --arcane-success: #4dff88;
+ --arcane-warning: #ffb74d;
+ --arcane-info: #4dc4ff;
+ --arcane-highlight: #b384ff;
+}
+
+ /* Force transparent backgrounds everywhere */
+ html,
+ body,
+ #root,
+ main,
+ .title-bar,
+ article,
+ section,
+ div[class*="container"],
+ div[class*="background"] {
+ background-color: transparent !important;
+ background-image: none !important;
+ }
+
+ /* Set high-quality background with static image */
+ html::before {
+ content: "" !important;
+ position: fixed !important;
+ top: 0 !important;
+ left: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ z-index: -2 !important;
+ background-image: url('https://images4.alphacoders.com/119/1194463.jpg') !important;
+ background-size: cover !important;
+ background-position: center center !important;
+ background-repeat: no-repeat !important;
+ background-attachment: fixed !important;
+ filter: blur(5px) !important;
+ }
+
+ /* Add dark overlay for better contrast */
+ html::after {
+ content: "" !important;
+ position: fixed !important;
+ top: 0 !important;
+ left: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ z-index: -1 !important;
+ background-color: rgba(0, 0, 0, 0.4) !important; /* Black overlay with 40% opacity */
+ pointer-events: none !important;
+ }
+
+ /* Remove backgrounds from pseudo-elements */
+ *::before:not(html::before),
+ *::after:not(html::after) {
+ background-color: transparent !important;
+ background-image: none !important;
+ }
+
+ /* Override inline styles */
+ [style*="background"] {
+ background: transparent !important;
+ }
+ [style*="background-color"] {
+ background-color: transparent !important;
+ }
+
+ /* Basic text styling */
+ body {
+ color: var(--arcane-text);
+ font-family: 'Segoe UI', 'Roboto', sans-serif;
+ text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
+ }
+
+ /* Title bar styling */
+ .title-bar {
+ background: linear-gradient(90deg, rgba(26, 19, 37, 0.9), rgba(74, 44, 109, 0.7)) !important;
+ border-bottom: 1px solid var(--arcane-border) !important;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3) !important;
+ }
+
+ .title-bar h4 {
+ color: var(--arcane-accent) !important;
+ text-shadow: 0 0 5px rgba(229, 181, 103, 0.5) !important;
+ }
+
+ /* Header styling */
+ .header {
+ background: linear-gradient(90deg, rgba(26, 19, 37, 0.8), rgba(74, 44, 109, 0.6)) !important;
+ border-bottom: 1px solid var(--arcane-border) !important;
+ padding: 10px 15px !important;
+ }
+
+ .header__title {
+ color: var(--arcane-text) !important;
+ text-shadow: 0 0 5px rgba(155, 110, 243, 0.5) !important;
+ font-weight: 500 !important;
+ }
+
+ .header__search {
+ background: rgba(26, 19, 37, 0.7) !important;
+ border: 1px solid var(--arcane-border) !important;
+ border-radius: 4px !important;
+ overflow: hidden !important;
+ }
+
+ .header__search-input {
+ background: transparent !important;
+ color: var(--arcane-text) !important;
+ border: none !important;
+ padding: 8px 12px !important;
+ }
+
+ .header__search-input::placeholder {
+ color: rgba(224, 224, 224, 0.6) !important;
+ }
+
+ .header__action-button {
+ color: var(--arcane-primary) !important;
+ background: transparent !important;
+ border: none !important;
+ transition: all 0.3s ease !important;
+ }
+
+ .header__action-button:hover {
+ color: var(--arcane-accent) !important;
+ transform: scale(1.1) !important;
+ }
+
+ .header__back-button {
+ color: var(--arcane-primary) !important;
+ background: transparent !important;
+ border: none !important;
+ transition: all 0.3s ease !important;
+ }
+
+ .header__back-button:hover {
+ color: var(--arcane-accent) !important;
+ transform: scale(1.1) !important;
+ }
+
+ /* Title styling */
+ h2,
+ .home__title,
+ .section-title {
+ display: flex !important;
+ align-items: center !important;
+ background: linear-gradient(90deg, rgba(43, 34, 58, 0.9), rgba(74, 44, 109, 0.7)) !important;
+ padding: 30px 15px !important;
+ border-radius: 4px !important;
+ border-left: 3px solid var(--arcane-accent) !important;
+ box-shadow: 0 0 15px rgba(155, 110, 243, 0.2) !important;
+ position: relative !important;
+ text-shadow: 0 0 10px rgba(0, 0, 0, 0.8) !important;
+ letter-spacing: 3px !important;
+ font-weight: 500 !important;
+ color: var(--arcane-text) !important;
+ }
+
+ h2::after,
+ .home__title::after,
+ .section-title::after {
+ content: "";
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 2px;
+ background: linear-gradient(90deg, var(--arcane-accent), transparent);
+ }
+
+ /* Hide default flame icons */
+ .home__title-icon .home__flame-icon,
+ .flame-icon,
+ [class*="flame-icon"],
+ [class*="fire-icon"],
+ svg[src*="flame"],
+ img[src*="flame"] {
+ opacity: 0 !important;
+ }
+
+ /* Replace with custom Jinx-inspired icon */
+ .home__title-icon,
+ .sidebar__menu-item--active .sidebar__menu-item-button::before {
+ position: relative !important;
+ display: inline-flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ width: 32px !important;
+ height: 32px !important;
+ background-color: transparent !important;
+ opacity: 1 !important;
+ visibility: visible !important;
+ }
+
+ .home__title-icon::after,
+ .sidebar__menu-item--active .sidebar__menu-item-button::before {
+ content: "" !important;
+ position: absolute !important;
+ width: 25px !important;
+ height: 25px !important;
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%23e5b567"><path d="M12 2L9 7 4 9l5 2 3 5 3-5 5-2-5-2z"/><path d="M4 14l2 4 4 2M20 14l-2 4-4 2"/></svg>') !important;
+ background-size: contain !important;
+ background-repeat: no-repeat !important;
+ background-position: center !important;
+ filter: drop-shadow(0 0 4px rgba(229, 181, 103, 0.7)) !important;
+ animation: hextech-pulse 3s infinite alternate !important;
+ }
+
+ @keyframes hextech-pulse {
+ 0% { filter: drop-shadow(0 0 2px rgba(229, 181, 103, 0.5)); transform: scale(0.95); }
+ 100% { filter: drop-shadow(0 0 5px rgba(229, 181, 103, 0.9)); transform: scale(1.05); }
+ }
+
+ /* Improve section headers styling */
+ div[class*="title"]:not(.game-card__title):not(.sidebar-profile__button-title) {
+ background: linear-gradient(90deg, rgba(43, 34, 58, 0.9), rgba(74, 44, 109, 0.7), rgba(43, 34, 58, 0.4)) !important;
+ padding: 8px 15px !important;
+ border-radius: 6px !important;
+ border-left: 3px solid var(--arcane-accent) !important;
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;
+ position: relative !important;
+ overflow: hidden !important;
+ display: flex !important;
+ align-items: center !important;
+ }
+
+ /* Add a subtle shimmer effect to headers */
+ div[class*="title"]::after:not(.game-card__title)::after:not(.sidebar-profile__button-title)::after {
Greptile
greptile
logic: Duplicate keyframe definition 'shimmer-slow' (also defined on line 389)