fix: empty headlines; useage of Error as variable and excluded… (#5491)

Co-authored-by: Victor Santos <victor@formbricks.com>
This commit is contained in:
Jakob Schott
2025-04-25 16:12:31 +02:00
committed by GitHub
parent 8611410b21
commit 1aaa30c6e9
13 changed files with 186 additions and 64 deletions

View File

@@ -10,8 +10,12 @@ const LoadingCard = () => {
return (
<div className="w-full max-w-4xl rounded-xl border border-slate-200 bg-white py-4 shadow-sm">
<div className="grid content-center border-b border-slate-200 px-4 pb-4 text-left text-slate-900">
<h3 className="h-6 w-full max-w-56 animate-pulse rounded-lg bg-slate-100 text-lg font-medium leading-6"></h3>
<p className="mt-3 h-4 w-full max-w-80 animate-pulse rounded-lg bg-slate-100 text-sm text-slate-500"></p>
<h3 className="h-6 w-full max-w-56 animate-pulse rounded-lg bg-slate-100 text-lg leading-6 font-medium">
<span className="sr-only">{t("common.loading")}</span>
</h3>
<p className="mt-3 h-4 w-full max-w-80 animate-pulse rounded-lg bg-slate-100 text-sm text-slate-500">
<span className="sr-only">{t("common.loading")}</span>
</p>
</div>
<div className="w-full">
<div className="rounded-lg px-4 pt-4">
@@ -24,7 +28,9 @@ const LoadingCard = () => {
<div className="col-span-4 sm:col-span-2">{t("common.created_at")}</div>
</div>
<div className="px-6">
<div className="my-4 h-5 w-full animate-pulse rounded-full bg-slate-200"></div>
<div className="my-4 h-5 w-full animate-pulse rounded-full bg-slate-200">
<span className="sr-only">{t("common.loading")}</span>
</div>
</div>
</div>
<div className="flex justify-start">

View File

@@ -72,8 +72,11 @@ const Alert = React.forwardRef<
Alert.displayName = "Alert";
const AlertTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(
({ className, ...props }, ref) => {
({ className, children, ...props }, ref) => {
const { size } = useAlertContext();
const headingContent = children || <span className="sr-only">Alert</span>;
return (
<h5
ref={ref}
@@ -82,8 +85,9 @@ const AlertTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<H
size === "small" ? "flex-shrink truncate" : "col-start-1 row-start-1",
className
)}
{...props}
/>
{...props}>
{headingContent}
</h5>
);
}
);

View File

@@ -172,7 +172,7 @@ export const withButtonAndIcon: Story = {
};
// Error variant
export const Error: Story = {
export const Destructive: Story = {
render: renderAlert,
args: {
variant: "error",

View File

@@ -0,0 +1,154 @@
import "@testing-library/jest-dom/vitest";
import { render, screen } from "@testing-library/react";
import { describe, expect, test } from "vitest";
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "./index";
describe("Card Component", () => {
test("renders basic Card component", () => {
render(<Card data-testid="test-card">Card Content</Card>);
const card = screen.getByTestId("test-card");
expect(card).toBeInTheDocument();
expect(card).toHaveTextContent("Card Content");
expect(card).toHaveClass("rounded-xl", "border", "border-slate-200", "bg-white", "shadow-sm");
});
test("applies custom className to Card", () => {
render(
<Card data-testid="custom-card" className="custom-class">
Card Content
</Card>
);
const card = screen.getByTestId("custom-card");
expect(card).toHaveClass("custom-class");
});
test("renders CardHeader component", () => {
render(<CardHeader data-testid="test-header">Header Content</CardHeader>);
const header = screen.getByTestId("test-header");
expect(header).toBeInTheDocument();
expect(header).toHaveTextContent("Header Content");
expect(header).toHaveClass("flex", "flex-col", "space-y-1.5", "p-6");
});
test("applies custom className to CardHeader", () => {
render(
<CardHeader data-testid="custom-header" className="custom-class">
Header Content
</CardHeader>
);
const header = screen.getByTestId("custom-header");
expect(header).toHaveClass("custom-class");
});
test("renders CardTitle component", () => {
render(<CardTitle data-testid="test-title">Title Content</CardTitle>);
const title = screen.getByTestId("test-title");
expect(title).toBeInTheDocument();
expect(title).toHaveTextContent("Title Content");
expect(title).toHaveClass("text-2xl", "leading-none", "font-semibold", "tracking-tight");
});
test("renders CardTitle with sr-only when no children provided", () => {
render(<CardTitle data-testid="empty-title" />);
const title = screen.getByTestId("empty-title");
expect(title).toBeInTheDocument();
const srOnly = title.querySelector(".sr-only");
expect(srOnly).toBeInTheDocument();
expect(srOnly).toHaveTextContent("Title");
});
test("applies custom className to CardTitle", () => {
render(
<CardTitle data-testid="custom-title" className="custom-class">
Title Content
</CardTitle>
);
const title = screen.getByTestId("custom-title");
expect(title).toHaveClass("custom-class");
});
test("renders CardDescription component", () => {
render(<CardDescription data-testid="test-description">Description Content</CardDescription>);
const description = screen.getByTestId("test-description");
expect(description).toBeInTheDocument();
expect(description).toHaveTextContent("Description Content");
expect(description).toHaveClass("text-sm", "text-muted-foreground");
});
test("applies custom className to CardDescription", () => {
render(
<CardDescription data-testid="custom-description" className="custom-class">
Description Content
</CardDescription>
);
const description = screen.getByTestId("custom-description");
expect(description).toHaveClass("custom-class");
});
test("renders CardContent component", () => {
render(<CardContent data-testid="test-content">Content</CardContent>);
const content = screen.getByTestId("test-content");
expect(content).toBeInTheDocument();
expect(content).toHaveTextContent("Content");
expect(content).toHaveClass("p-6", "pt-0");
});
test("applies custom className to CardContent", () => {
render(
<CardContent data-testid="custom-content" className="custom-class">
Content
</CardContent>
);
const content = screen.getByTestId("custom-content");
expect(content).toHaveClass("custom-class");
});
test("renders CardFooter component", () => {
render(<CardFooter data-testid="test-footer">Footer Content</CardFooter>);
const footer = screen.getByTestId("test-footer");
expect(footer).toBeInTheDocument();
expect(footer).toHaveTextContent("Footer Content");
expect(footer).toHaveClass("flex", "items-center", "p-6", "pt-0");
});
test("applies custom className to CardFooter", () => {
render(
<CardFooter data-testid="custom-footer" className="custom-class">
Footer Content
</CardFooter>
);
const footer = screen.getByTestId("custom-footer");
expect(footer).toHaveClass("custom-class");
});
test("renders full Card with all subcomponents", () => {
render(
<Card data-testid="full-card">
<CardHeader>
<CardTitle>Test Title</CardTitle>
<CardDescription>Test Description</CardDescription>
</CardHeader>
<CardContent>Test Content</CardContent>
<CardFooter>Test Footer</CardFooter>
</Card>
);
const card = screen.getByTestId("full-card");
expect(card).toBeInTheDocument();
expect(screen.getByText("Test Title")).toBeInTheDocument();
expect(screen.getByText("Test Description")).toBeInTheDocument();
expect(screen.getByText("Test Content")).toBeInTheDocument();
expect(screen.getByText("Test Footer")).toBeInTheDocument();
});
test("passes extra props to Card", () => {
render(
<Card data-testid="props-card" aria-label="Card with props" role="region">
Test
</Card>
);
const card = screen.getByTestId("props-card");
expect(card).toHaveAttribute("aria-label", "Card with props");
expect(card).toHaveAttribute("role", "region");
});
});

View File

@@ -51,13 +51,18 @@ const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDiv
CardHeader.displayName = "CardHeader";
const CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(
({ className, ...props }, ref) => (
<h3
ref={ref}
className={cn("text-2xl leading-none font-semibold tracking-tight", className)}
{...props}
/>
)
({ className, children, ...props }, ref) => {
const headingContent = children || <span className="sr-only">Title</span>;
return (
<h3
ref={ref}
className={cn("text-2xl leading-none font-semibold tracking-tight", className)}
{...props}>
{headingContent}
</h3>
);
}
);
CardTitle.displayName = "CardTitle";

View File

@@ -94,6 +94,7 @@ export default defineConfig({
"lib/utils/billing.ts",
"lib/crypto.ts",
"lib/utils/billing.ts",
"modules/ui/components/card/index.tsx"
],
exclude: [
"**/.next/**",

View File

@@ -1974,7 +1974,6 @@
"alignment_and_engagement_survey_question_1_upper_label": "Vollständiges Verständnis",
"alignment_and_engagement_survey_question_2_headline": "Ich fühle, dass meine Werte mit der Mission und Kultur des Unternehmens übereinstimmen.",
"alignment_and_engagement_survey_question_2_lower_label": "Keine Übereinstimmung",
"alignment_and_engagement_survey_question_2_upper_label": "Vollständige Übereinstimmung",
"alignment_and_engagement_survey_question_3_headline": "Ich arbeite effektiv mit meinem Team zusammen, um unsere Ziele zu erreichen.",
"alignment_and_engagement_survey_question_3_lower_label": "Schlechte Zusammenarbeit",
"alignment_and_engagement_survey_question_3_upper_label": "Ausgezeichnete Zusammenarbeit",
@@ -1984,7 +1983,6 @@
"book_interview": "Interview buchen",
"build_product_roadmap_description": "Finde die EINE Sache heraus, die deine Nutzer am meisten wollen, und baue sie.",
"build_product_roadmap_name": "Produkt Roadmap erstellen",
"build_product_roadmap_name_with_project_name": "$[projectName] Roadmap Ideen",
"build_product_roadmap_question_1_headline": "Wie zufrieden bist Du mit den Funktionen und der Benutzerfreundlichkeit von $[projectName]?",
"build_product_roadmap_question_1_lower_label": "Überhaupt nicht zufrieden",
"build_product_roadmap_question_1_upper_label": "Extrem zufrieden",
@@ -2167,7 +2165,6 @@
"csat_question_7_choice_3": "Etwas schnell",
"csat_question_7_choice_4": "Nicht so schnell",
"csat_question_7_choice_5": "Überhaupt nicht schnell",
"csat_question_7_choice_6": "Nicht zutreffend",
"csat_question_7_headline": "Wie schnell haben wir auf deine Fragen zu unseren Dienstleistungen reagiert?",
"csat_question_7_subheader": "Bitte wähle eine aus:",
"csat_question_8_choice_1": "Das ist mein erster Kauf",
@@ -2175,7 +2172,6 @@
"csat_question_8_choice_3": "Sechs Monate bis ein Jahr",
"csat_question_8_choice_4": "1 - 2 Jahre",
"csat_question_8_choice_5": "3 oder mehr Jahre",
"csat_question_8_choice_6": "Ich habe noch keinen Kauf getätigt",
"csat_question_8_headline": "Wie lange bist Du schon Kunde von $[projectName]?",
"csat_question_8_subheader": "Bitte wähle eine aus:",
"csat_question_9_choice_1": "Sehr wahrscheinlich",
@@ -2390,7 +2386,6 @@
"identify_sign_up_barriers_question_9_dismiss_button_label": "Erstmal überspringen",
"identify_sign_up_barriers_question_9_headline": "Danke! Hier ist dein Code: SIGNUPNOW10",
"identify_sign_up_barriers_question_9_html": "Vielen Dank, dass Du dir die Zeit genommen hast, Feedback zu geben \uD83D\uDE4F",
"identify_sign_up_barriers_with_project_name": "Anmeldebarrieren für $[projectName]",
"identify_upsell_opportunities_description": "Finde heraus, wie viel Zeit dein Produkt deinem Nutzer spart. Nutze dies, um mehr zu verkaufen.",
"identify_upsell_opportunities_name": "Upsell-Möglichkeiten identifizieren",
"identify_upsell_opportunities_question_1_choice_1": "Weniger als 1 Stunde",
@@ -2643,7 +2638,6 @@
"product_market_fit_superhuman_question_3_choice_3": "Produktmanager",
"product_market_fit_superhuman_question_3_choice_4": "People Manager",
"product_market_fit_superhuman_question_3_choice_5": "Softwareentwickler",
"product_market_fit_superhuman_question_3_headline": "Was ist deine Rolle?",
"product_market_fit_superhuman_question_3_subheader": "Bitte wähle eine der folgenden Optionen aus:",
"product_market_fit_superhuman_question_4_headline": "Wer würde am ehesten von $[projectName] profitieren?",
"product_market_fit_superhuman_question_5_headline": "Welchen Mehrwert ziehst Du aus $[projectName]?",
@@ -2665,7 +2659,6 @@
"professional_development_survey_description": "Bewerte die Zufriedenheit der Mitarbeiter mit beruflichen Entwicklungsmöglichkeiten.",
"professional_development_survey_name": "Berufliche Entwicklungsbewertung",
"professional_development_survey_question_1_choice_1": "Ja",
"professional_development_survey_question_1_choice_2": "Nein",
"professional_development_survey_question_1_headline": "Sind Sie an beruflichen Entwicklungsmöglichkeiten interessiert?",
"professional_development_survey_question_2_choice_1": "Networking-Veranstaltungen",
"professional_development_survey_question_2_choice_2": "Konferenzen oder Seminare",
@@ -2755,7 +2748,6 @@
"site_abandonment_survey_question_6_choice_3": "Mehr Produktvielfalt",
"site_abandonment_survey_question_6_choice_4": "Verbesserte Seitengestaltung",
"site_abandonment_survey_question_6_choice_5": "Mehr Kundenbewertungen",
"site_abandonment_survey_question_6_choice_6": "Andere",
"site_abandonment_survey_question_6_headline": "Welche Verbesserungen würden Dich dazu ermutigen, länger auf unserer Seite zu bleiben?",
"site_abandonment_survey_question_6_subheader": "Bitte wähle alle zutreffenden Optionen aus:",
"site_abandonment_survey_question_7_headline": "Möchtest Du Updates über neue Produkte und Aktionen erhalten?",

View File

@@ -1974,7 +1974,6 @@
"alignment_and_engagement_survey_question_1_upper_label": "Complete understanding",
"alignment_and_engagement_survey_question_2_headline": "I feel that my values align with the companys mission and culture.",
"alignment_and_engagement_survey_question_2_lower_label": "Not aligned",
"alignment_and_engagement_survey_question_2_upper_label": "Completely aligned",
"alignment_and_engagement_survey_question_3_headline": "I collaborate effectively with my team to achieve our goals.",
"alignment_and_engagement_survey_question_3_lower_label": "Poor collaboration",
"alignment_and_engagement_survey_question_3_upper_label": "Excellent collaboration",
@@ -1984,7 +1983,6 @@
"book_interview": "Book interview",
"build_product_roadmap_description": "Identify the ONE thing your users want the most and build it.",
"build_product_roadmap_name": "Build Product Roadmap",
"build_product_roadmap_name_with_project_name": "$[projectName] Roadmap Input",
"build_product_roadmap_question_1_headline": "How satisfied are you with the features and functionality of $[projectName]?",
"build_product_roadmap_question_1_lower_label": "Not at all satisfied",
"build_product_roadmap_question_1_upper_label": "Extremely satisfied",
@@ -2167,7 +2165,6 @@
"csat_question_7_choice_3": "Somewhat responsive",
"csat_question_7_choice_4": "Not so responsive",
"csat_question_7_choice_5": "Not at all responsive",
"csat_question_7_choice_6": "Not applicable",
"csat_question_7_headline": "How responsive have we been to your questions about our services?",
"csat_question_7_subheader": "Please select one:",
"csat_question_8_choice_1": "This is my first purchase",
@@ -2175,7 +2172,6 @@
"csat_question_8_choice_3": "Six months to a year",
"csat_question_8_choice_4": "1 - 2 years",
"csat_question_8_choice_5": "3 or more years",
"csat_question_8_choice_6": "I haven't made a purchase yet",
"csat_question_8_headline": "How long have you been a customer of $[projectName]?",
"csat_question_8_subheader": "Please select one:",
"csat_question_9_choice_1": "Extremely likely",
@@ -2390,7 +2386,6 @@
"identify_sign_up_barriers_question_9_dismiss_button_label": "Skip for now",
"identify_sign_up_barriers_question_9_headline": "Thanks! Here is your code: SIGNUPNOW10",
"identify_sign_up_barriers_question_9_html": "<p class=\"fb-editor-paragraph\" dir=\"ltr\"><span>Thanks a lot for taking the time to share feedback \uD83D\uDE4F</span></p>",
"identify_sign_up_barriers_with_project_name": "$[projectName] Sign Up Barriers",
"identify_upsell_opportunities_description": "Find out how much time your product saves your user. Use it to upsell.",
"identify_upsell_opportunities_name": "Identify Upsell Opportunities",
"identify_upsell_opportunities_question_1_choice_1": "Less than 1 hour",
@@ -2643,7 +2638,6 @@
"product_market_fit_superhuman_question_3_choice_3": "Product Manager",
"product_market_fit_superhuman_question_3_choice_4": "Product Owner",
"product_market_fit_superhuman_question_3_choice_5": "Software Engineer",
"product_market_fit_superhuman_question_3_headline": "What is your role?",
"product_market_fit_superhuman_question_3_subheader": "Please select one of the following options:",
"product_market_fit_superhuman_question_4_headline": "What type of people do you think would most benefit from $[projectName]?",
"product_market_fit_superhuman_question_5_headline": "What is the main benefit you receive from $[projectName]?",
@@ -2665,7 +2659,6 @@
"professional_development_survey_description": "Assess employee satisfaction with professional growth and development opportunities.",
"professional_development_survey_name": "Professional Development Survey",
"professional_development_survey_question_1_choice_1": "Yes",
"professional_development_survey_question_1_choice_2": "No",
"professional_development_survey_question_1_headline": "Are you interested in professional development activities?",
"professional_development_survey_question_2_choice_1": "Networking events",
"professional_development_survey_question_2_choice_2": "Conferences or seminars",
@@ -2755,7 +2748,6 @@
"site_abandonment_survey_question_6_choice_3": "More product variety",
"site_abandonment_survey_question_6_choice_4": "Improved site design",
"site_abandonment_survey_question_6_choice_5": "More customer reviews",
"site_abandonment_survey_question_6_choice_6": "Other",
"site_abandonment_survey_question_6_headline": "What improvements would encourage you to stay longer on our site?",
"site_abandonment_survey_question_6_subheader": "Please select all that apply:",
"site_abandonment_survey_question_7_headline": "Would you like to receive updates about new products and promotions?",

View File

@@ -1974,7 +1974,6 @@
"alignment_and_engagement_survey_question_1_upper_label": "Compréhension complète",
"alignment_and_engagement_survey_question_2_headline": "Je sens que mes valeurs s'alignent avec la mission et la culture de l'entreprise.",
"alignment_and_engagement_survey_question_2_lower_label": "Non aligné",
"alignment_and_engagement_survey_question_2_upper_label": "Complètement aligné",
"alignment_and_engagement_survey_question_3_headline": "Je collabore efficacement avec mon équipe pour atteindre nos objectifs.",
"alignment_and_engagement_survey_question_3_lower_label": "Mauvaise collaboration",
"alignment_and_engagement_survey_question_3_upper_label": "Excellente collaboration",
@@ -1984,7 +1983,6 @@
"book_interview": "Réserver un entretien",
"build_product_roadmap_description": "Identifiez la chose UNIQUE que vos utilisateurs désirent le plus et construisez-la.",
"build_product_roadmap_name": "Élaborer la feuille de route du produit",
"build_product_roadmap_name_with_project_name": "Entrée de feuille de route $[projectName]",
"build_product_roadmap_question_1_headline": "Dans quelle mesure êtes-vous satisfait des fonctionnalités et de l'ergonomie de $[projectName] ?",
"build_product_roadmap_question_1_lower_label": "Pas du tout satisfait",
"build_product_roadmap_question_1_upper_label": "Extrêmement satisfait",
@@ -2167,7 +2165,6 @@
"csat_question_7_choice_3": "Quelque peu réactif",
"csat_question_7_choice_4": "Pas si réactif",
"csat_question_7_choice_5": "Pas du tout réactif",
"csat_question_7_choice_6": "Non applicable",
"csat_question_7_headline": "Dans quelle mesure avons-nous été réactifs à vos questions concernant nos services ?",
"csat_question_7_subheader": "Veuillez en sélectionner un :",
"csat_question_8_choice_1": "Ceci est mon premier achat",
@@ -2175,7 +2172,6 @@
"csat_question_8_choice_3": "Six mois à un an",
"csat_question_8_choice_4": "1 - 2 ans",
"csat_question_8_choice_5": "3 ans ou plus",
"csat_question_8_choice_6": "Je n'ai pas encore effectué d'achat.",
"csat_question_8_headline": "Depuis combien de temps êtes-vous client de $[projectName] ?",
"csat_question_8_subheader": "Veuillez en sélectionner un :",
"csat_question_9_choice_1": "Extrêmement probable",
@@ -2390,7 +2386,6 @@
"identify_sign_up_barriers_question_9_dismiss_button_label": "Passer pour l'instant",
"identify_sign_up_barriers_question_9_headline": "Merci ! Voici votre code : SIGNUPNOW10",
"identify_sign_up_barriers_question_9_html": "<p class=\"fb-editor-paragraph\" dir=\"ltr\"><span>Merci beaucoup d'avoir pris le temps de partager vos retours \uD83D\uDE4F</span></p>",
"identify_sign_up_barriers_with_project_name": "Barrières d'inscription $[projectName]",
"identify_upsell_opportunities_description": "Découvrez combien de temps votre produit fait gagner à vos utilisateurs. Utilisez-le pour vendre davantage.",
"identify_upsell_opportunities_name": "Identifier les opportunités de vente additionnelle",
"identify_upsell_opportunities_question_1_choice_1": "Moins d'une heure",
@@ -2643,7 +2638,6 @@
"product_market_fit_superhuman_question_3_choice_3": "Chef de produit",
"product_market_fit_superhuman_question_3_choice_4": "Propriétaire de produit",
"product_market_fit_superhuman_question_3_choice_5": "Ingénieur logiciel",
"product_market_fit_superhuman_question_3_headline": "Quel est votre rôle ?",
"product_market_fit_superhuman_question_3_subheader": "Veuillez sélectionner l'une des options suivantes :",
"product_market_fit_superhuman_question_4_headline": "Quel type de personnes pensez-vous bénéficierait le plus de $[projectName] ?",
"product_market_fit_superhuman_question_5_headline": "Quel est le principal avantage que vous tirez de $[projectName] ?",
@@ -2665,7 +2659,6 @@
"professional_development_survey_description": "Évaluer la satisfaction des employés concernant les opportunités de croissance et de développement professionnel.",
"professional_development_survey_name": "Sondage sur le développement professionnel",
"professional_development_survey_question_1_choice_1": "Oui",
"professional_development_survey_question_1_choice_2": "Non",
"professional_development_survey_question_1_headline": "Êtes-vous intéressé par des activités de développement professionnel ?",
"professional_development_survey_question_2_choice_1": "Événements de réseautage",
"professional_development_survey_question_2_choice_2": "Conférences ou séminaires",
@@ -2755,7 +2748,6 @@
"site_abandonment_survey_question_6_choice_3": "Plus de variété de produits",
"site_abandonment_survey_question_6_choice_4": "Conception de site améliorée",
"site_abandonment_survey_question_6_choice_5": "Plus d'avis clients",
"site_abandonment_survey_question_6_choice_6": "Autre",
"site_abandonment_survey_question_6_headline": "Quelles améliorations vous inciteraient à rester plus longtemps sur notre site ?",
"site_abandonment_survey_question_6_subheader": "Veuillez sélectionner tout ce qui s'applique :",
"site_abandonment_survey_question_7_headline": "Souhaitez-vous recevoir des mises à jour sur les nouveaux produits et les promotions ?",

View File

@@ -1974,7 +1974,6 @@
"alignment_and_engagement_survey_question_1_upper_label": "Entendimento completo",
"alignment_and_engagement_survey_question_2_headline": "Sinto que meus valores estão alinhados com a missão e cultura da empresa.",
"alignment_and_engagement_survey_question_2_lower_label": "Nenhum alinhamento",
"alignment_and_engagement_survey_question_2_upper_label": "Totalmente alinhado",
"alignment_and_engagement_survey_question_3_headline": "Eu trabalho efetivamente com minha equipe para atingir nossos objetivos.",
"alignment_and_engagement_survey_question_3_lower_label": "Colaboração ruim",
"alignment_and_engagement_survey_question_3_upper_label": "Colaboração excelente",
@@ -1984,7 +1983,6 @@
"book_interview": "Marcar entrevista",
"build_product_roadmap_description": "Identifique a ÚNICA coisa que seus usuários mais querem e construa isso.",
"build_product_roadmap_name": "Construir Roteiro do Produto",
"build_product_roadmap_name_with_project_name": "Entrada do Roadmap do $[projectName]",
"build_product_roadmap_question_1_headline": "Quão satisfeito(a) você está com os recursos e funcionalidades do $[projectName]?",
"build_product_roadmap_question_1_lower_label": "Nada satisfeito",
"build_product_roadmap_question_1_upper_label": "Super satisfeito",
@@ -2167,7 +2165,6 @@
"csat_question_7_choice_3": "Meio responsivo",
"csat_question_7_choice_4": "Não tão responsivo",
"csat_question_7_choice_5": "Nada responsivo",
"csat_question_7_choice_6": "Não se aplica",
"csat_question_7_headline": "Quão rápido temos respondido suas perguntas sobre nossos serviços?",
"csat_question_7_subheader": "Por favor, escolha uma:",
"csat_question_8_choice_1": "Essa é minha primeira compra",
@@ -2175,7 +2172,6 @@
"csat_question_8_choice_3": "De seis meses a um ano",
"csat_question_8_choice_4": "1 - 2 anos",
"csat_question_8_choice_5": "3 ou mais anos",
"csat_question_8_choice_6": "Ainda não fiz uma compra",
"csat_question_8_headline": "Há quanto tempo você é cliente do $[projectName]?",
"csat_question_8_subheader": "Por favor, escolha uma:",
"csat_question_9_choice_1": "Muito provável",
@@ -2390,7 +2386,6 @@
"identify_sign_up_barriers_question_9_dismiss_button_label": "Pular por enquanto",
"identify_sign_up_barriers_question_9_headline": "Valeu! Aqui está seu código: SIGNUPNOW10",
"identify_sign_up_barriers_question_9_html": "Valeu demais por tirar um tempinho pra compartilhar seu feedback \uD83D\uDE4F",
"identify_sign_up_barriers_with_project_name": "Barreiras de Cadastro do $[projectName]",
"identify_upsell_opportunities_description": "Descubra quanto tempo seu produto economiza para o usuário. Use isso para fazer upsell.",
"identify_upsell_opportunities_name": "Identificar Oportunidades de Upsell",
"identify_upsell_opportunities_question_1_choice_1": "Menos de 1 hora",
@@ -2643,7 +2638,6 @@
"product_market_fit_superhuman_question_3_choice_3": "Gerente de Produto",
"product_market_fit_superhuman_question_3_choice_4": "Dono do Produto",
"product_market_fit_superhuman_question_3_choice_5": "Engenheiro de Software",
"product_market_fit_superhuman_question_3_headline": "Qual é a sua função?",
"product_market_fit_superhuman_question_3_subheader": "Por favor, escolha uma das opções a seguir:",
"product_market_fit_superhuman_question_4_headline": "Que tipo de pessoas você acha que mais se beneficiariam do $[projectName]?",
"product_market_fit_superhuman_question_5_headline": "Qual é o principal benefício que você recebe do $[projectName]?",
@@ -2665,7 +2659,6 @@
"professional_development_survey_description": "Avalie a satisfação dos funcionários com oportunidades de desenvolvimento profissional.",
"professional_development_survey_name": "Avaliação de Desenvolvimento Profissional",
"professional_development_survey_question_1_choice_1": "Sim",
"professional_development_survey_question_1_choice_2": "Não",
"professional_development_survey_question_1_headline": "Você está interessado em atividades de desenvolvimento profissional?",
"professional_development_survey_question_2_choice_1": "Eventos de networking",
"professional_development_survey_question_2_choice_2": "Conferencias ou seminários",
@@ -2755,7 +2748,6 @@
"site_abandonment_survey_question_6_choice_3": "Mais variedade de produtos",
"site_abandonment_survey_question_6_choice_4": "Design do site melhorado",
"site_abandonment_survey_question_6_choice_5": "Mais avaliações de clientes",
"site_abandonment_survey_question_6_choice_6": "outro",
"site_abandonment_survey_question_6_headline": "Quais melhorias fariam você ficar mais tempo no nosso site?",
"site_abandonment_survey_question_6_subheader": "Por favor, selecione todas as opções que se aplicam:",
"site_abandonment_survey_question_7_headline": "Você gostaria de receber atualizações sobre novos produtos e promoções?",

View File

@@ -1974,7 +1974,6 @@
"alignment_and_engagement_survey_question_1_upper_label": "Compreensão completa",
"alignment_and_engagement_survey_question_2_headline": "Sinto que os meus valores estão alinhados com a missão e a cultura da empresa.",
"alignment_and_engagement_survey_question_2_lower_label": "Não alinhado",
"alignment_and_engagement_survey_question_2_upper_label": "Completamente alinhado",
"alignment_and_engagement_survey_question_3_headline": "Colaboro eficazmente com a minha equipa para alcançar os nossos objetivos.",
"alignment_and_engagement_survey_question_3_lower_label": "Colaboração fraca",
"alignment_and_engagement_survey_question_3_upper_label": "Excelente colaboração",
@@ -1984,7 +1983,6 @@
"book_interview": "Agendar entrevista",
"build_product_roadmap_description": "Identifique a ÚNICA coisa que os seus utilizadores mais querem e construa-a.",
"build_product_roadmap_name": "Construir Roteiro do Produto",
"build_product_roadmap_name_with_project_name": "Contributo para o Roteiro de $[projectName]",
"build_product_roadmap_question_1_headline": "Quão satisfeito está com as funcionalidades e características de $[projectName]?",
"build_product_roadmap_question_1_lower_label": "Nada satisfeito",
"build_product_roadmap_question_1_upper_label": "Extremamente satisfeito",
@@ -2167,7 +2165,6 @@
"csat_question_7_choice_3": "Um pouco responsivo",
"csat_question_7_choice_4": "Não tão responsivo",
"csat_question_7_choice_5": "Nada responsivo",
"csat_question_7_choice_6": "Não aplicável",
"csat_question_7_headline": "Quão responsivos temos sido às suas perguntas sobre os nossos serviços?",
"csat_question_7_subheader": "Por favor, selecione um:",
"csat_question_8_choice_1": "Esta é a minha primeira compra",
@@ -2175,7 +2172,6 @@
"csat_question_8_choice_3": "Seis meses a um ano",
"csat_question_8_choice_4": "1 - 2 anos",
"csat_question_8_choice_5": "3 ou mais anos",
"csat_question_8_choice_6": "Ainda não fiz uma compra",
"csat_question_8_headline": "Há quanto tempo é cliente de $[projectName]?",
"csat_question_8_subheader": "Por favor, selecione um:",
"csat_question_9_choice_1": "Extremamente provável",
@@ -2390,7 +2386,6 @@
"identify_sign_up_barriers_question_9_dismiss_button_label": "Saltar por agora",
"identify_sign_up_barriers_question_9_headline": "Obrigado! Aqui está o seu código: SIGNUPNOW10",
"identify_sign_up_barriers_question_9_html": "<p class=\"fb-editor-paragraph\" dir=\"ltr\"><span>Muito obrigado por dedicar tempo a partilhar feedback \uD83D\uDE4F</span></p>",
"identify_sign_up_barriers_with_project_name": "Barreiras de Inscrição do $[projectName]",
"identify_upsell_opportunities_description": "Descubra quanto tempo o seu produto poupa ao seu utilizador. Use isso para vender mais.",
"identify_upsell_opportunities_name": "Identificar Oportunidades de Venda Adicional",
"identify_upsell_opportunities_question_1_choice_1": "Menos de 1 hora",
@@ -2643,7 +2638,6 @@
"product_market_fit_superhuman_question_3_choice_3": "Gestor de Produto",
"product_market_fit_superhuman_question_3_choice_4": "Proprietário do Produto",
"product_market_fit_superhuman_question_3_choice_5": "Engenheiro de Software",
"product_market_fit_superhuman_question_3_headline": "Qual é o seu papel?",
"product_market_fit_superhuman_question_3_subheader": "Por favor, selecione uma das seguintes opções:",
"product_market_fit_superhuman_question_4_headline": "Que tipo de pessoas acha que mais beneficiariam de $[projectName]?",
"product_market_fit_superhuman_question_5_headline": "Qual é o principal benefício que recebe de $[projectName]?",
@@ -2665,7 +2659,6 @@
"professional_development_survey_description": "Avaliar a satisfação dos funcionários com as oportunidades de crescimento e desenvolvimento profissional.",
"professional_development_survey_name": "Inquérito de Desenvolvimento Profissional",
"professional_development_survey_question_1_choice_1": "Sim",
"professional_development_survey_question_1_choice_2": "Não",
"professional_development_survey_question_1_headline": "Está interessado em atividades de desenvolvimento profissional?",
"professional_development_survey_question_2_choice_1": "Eventos de networking",
"professional_development_survey_question_2_choice_2": "Conferências ou seminários",
@@ -2755,7 +2748,6 @@
"site_abandonment_survey_question_6_choice_3": "Mais variedade de produtos",
"site_abandonment_survey_question_6_choice_4": "Design do site melhorado",
"site_abandonment_survey_question_6_choice_5": "Mais avaliações de clientes",
"site_abandonment_survey_question_6_choice_6": "Outro",
"site_abandonment_survey_question_6_headline": "Que melhorias o incentivariam a permanecer mais tempo no nosso site?",
"site_abandonment_survey_question_6_subheader": "Por favor, selecione todas as opções aplicáveis:",
"site_abandonment_survey_question_7_headline": "Gostaria de receber atualizações sobre novos produtos e promoções?",

View File

@@ -1974,7 +1974,6 @@
"alignment_and_engagement_survey_question_1_upper_label": "完全瞭解",
"alignment_and_engagement_survey_question_2_headline": "我覺得我的價值觀與公司的使命和文化一致。",
"alignment_and_engagement_survey_question_2_lower_label": "不一致",
"alignment_and_engagement_survey_question_2_upper_label": "完全一致",
"alignment_and_engagement_survey_question_3_headline": "我與我的團隊有效協作以實現我們的目標。",
"alignment_and_engagement_survey_question_3_lower_label": "協作不佳",
"alignment_and_engagement_survey_question_3_upper_label": "良好的協作",
@@ -1984,7 +1983,6 @@
"book_interview": "預訂面試",
"build_product_roadmap_description": "找出您的使用者最想要的一件事,然後建立它。",
"build_product_roadmap_name": "建立產品路線圖",
"build_product_roadmap_name_with_project_name": "{projectName} 路線圖輸入",
"build_product_roadmap_question_1_headline": "您對 {projectName} 的功能和特性感到滿意嗎?",
"build_product_roadmap_question_1_lower_label": "完全不滿意",
"build_product_roadmap_question_1_upper_label": "非常滿意",
@@ -2167,7 +2165,6 @@
"csat_question_7_choice_3": "有點快速回應",
"csat_question_7_choice_4": "不太快速回應",
"csat_question_7_choice_5": "完全不快速回應",
"csat_question_7_choice_6": "不適用",
"csat_question_7_headline": "我們對您有關我們服務的問題的回應有多迅速?",
"csat_question_7_subheader": "請選取其中一項:",
"csat_question_8_choice_1": "這是我的第一次購買",
@@ -2175,7 +2172,6 @@
"csat_question_8_choice_3": "六個月到一年",
"csat_question_8_choice_4": "1 - 2 年",
"csat_question_8_choice_5": "3 年或以上",
"csat_question_8_choice_6": "我尚未購買",
"csat_question_8_headline": "您成為 {projectName} 的客戶有多久了?",
"csat_question_8_subheader": "請選取其中一項:",
"csat_question_9_choice_1": "非常有可能",
@@ -2390,7 +2386,6 @@
"identify_sign_up_barriers_question_9_dismiss_button_label": "暫時跳過",
"identify_sign_up_barriers_question_9_headline": "謝謝這是您的程式碼SIGNUPNOW10",
"identify_sign_up_barriers_question_9_html": "<p class=\"fb-editor-paragraph\" dir=\"ltr\"><span>非常感謝您撥冗分享回饋 \uD83D\uDE4F</span></p>",
"identify_sign_up_barriers_with_project_name": "{projectName} 註冊障礙",
"identify_upsell_opportunities_description": "找出您的產品為使用者節省了多少時間。使用它來追加銷售。",
"identify_upsell_opportunities_name": "識別追加銷售機會",
"identify_upsell_opportunities_question_1_choice_1": "不到 1 小時",
@@ -2643,7 +2638,6 @@
"product_market_fit_superhuman_question_3_choice_3": "產品經理",
"product_market_fit_superhuman_question_3_choice_4": "產品負責人",
"product_market_fit_superhuman_question_3_choice_5": "軟體工程師",
"product_market_fit_superhuman_question_3_headline": "您的角色是什麼?",
"product_market_fit_superhuman_question_3_subheader": "請選取以下其中一個選項:",
"product_market_fit_superhuman_question_4_headline": "您認為哪些類型的人最能從 {projectName} 中受益?",
"product_market_fit_superhuman_question_5_headline": "您從 {projectName} 獲得的主要好處是什麼?",
@@ -2665,7 +2659,6 @@
"professional_development_survey_description": "評估員工對專業成長和發展機會的滿意度。",
"professional_development_survey_name": "專業發展問卷",
"professional_development_survey_question_1_choice_1": "是",
"professional_development_survey_question_1_choice_2": "否",
"professional_development_survey_question_1_headline": "您對專業發展活動感興趣嗎?",
"professional_development_survey_question_2_choice_1": "人脈交流活動",
"professional_development_survey_question_2_choice_2": "研討會或研討會",
@@ -2755,7 +2748,6 @@
"site_abandonment_survey_question_6_choice_3": "更多產品種類",
"site_abandonment_survey_question_6_choice_4": "改進的網站設計",
"site_abandonment_survey_question_6_choice_5": "更多客戶評論",
"site_abandonment_survey_question_6_choice_6": "其他",
"site_abandonment_survey_question_6_headline": "哪些改進措施可以鼓勵您在我們的網站上停留更久?",
"site_abandonment_survey_question_6_subheader": "請選取所有適用的選項:",
"site_abandonment_survey_question_7_headline": "您是否要接收有關新產品和促銷活動的更新資訊?",

View File

@@ -21,5 +21,5 @@ sonar.scm.exclusions.disabled=false
sonar.sourceEncoding=UTF-8
# Coverage
sonar.coverage.exclusions=**/*.test.*,**/*.spec.*,**/*.mdx,**/*.config.mts,**/*.config.ts,**/constants.ts,**/route.ts,**/types/**,**/*.stories.*,**/mocks/**,**/__mocks__/**,**/openapi.ts,**/openapi-document.ts,**/instrumentation.ts,scripts/merge-client-endpoints.ts,**/playwright/**,**/Dockerfile,**/*.config.cjs,**/*.css,**/templates.ts
sonar.cpd.exclusions=**/*.test.*,**/*.spec.*,**/*.mdx,**/*.config.mts,**/*.config.ts,**/constants.ts,**/route.ts,**/types/**,**/*.stories.*,**/mocks/**,**/__mocks__/**,**/openapi.ts,**/openapi-document.ts,**/instrumentation.ts,scripts/merge-client-endpoints.ts,**/playwright/**,**/Dockerfile,**/*.config.cjs,**/*.css,**/templates.ts
sonar.coverage.exclusions=**/*.test.*,**/*.spec.*,**/*.mdx,**/*.config.mts,**/*.config.ts,**/constants.ts,**/route.ts,**/types/**,**/stories.*,**/mocks/**,**/__mocks__/**,**/openapi.ts,**/openapi-document.ts,**/instrumentation.ts,scripts/merge-client-endpoints.ts,**/playwright/**,**/Dockerfile,**/*.config.cjs,**/*.css,**/templates.ts
sonar.cpd.exclusions=**/*.test.*,**/*.spec.*,**/*.mdx,**/*.config.mts,**/*.config.ts,**/constants.ts,**/route.ts,**/types/**,**/stories.*,**/mocks/**,**/__mocks__/**,**/openapi.ts,**/openapi-document.ts,**/instrumentation.ts,scripts/merge-client-endpoints.ts,**/playwright/**,**/Dockerfile,**/*.config.cjs,**/*.css,**/templates.ts