From 9afcc2f179a48f82d646e8089ba9b17b5212720b Mon Sep 17 00:00:00 2001 From: Carlos Date: Wed, 14 Jan 2026 12:00:12 +0100 Subject: [PATCH 1/2] OPS-831: Consulting page --- assets/companies/light/blueyonder.svg | 1 + assets/companies/light/deloitte.svg | 1 + assets/companies/light/dnv.svg | 1 + assets/companies/light/ey.svg | 1 + assets/companies/light/ltim.svg | 1 + assets/companies/light/pwc.svg | 1 + assets/companies/light/tcs.svg | 1 + pcweb/components/docpage/navbar/navbar.py | 3 +- pcweb/pages/__init__.py | 1 + pcweb/pages/use_cases/common/features_2.py | 23 ++++++- pcweb/pages/use_cases/consulting/__init__.py | 33 +++++++++ pcweb/pages/use_cases/consulting/views/faq.py | 30 ++++++++ .../use_cases/consulting/views/features_1.py | 69 +++++++++++++++++++ .../use_cases/consulting/views/features_2.py | 58 ++++++++++++++++ .../consulting/views/final_section.py | 20 ++++++ .../pages/use_cases/consulting/views/hero.py | 44 ++++++++++++ .../consulting/views/social_proof.py | 39 +++++++++++ .../pages/use_cases/consulting/views/stats.py | 39 +++++++++++ .../consulting/views/text_section_1.py | 10 +++ .../consulting/views/text_section_2.py | 11 +++ .../consulting/views/text_section_3.py | 11 +++ .../consulting/views/text_section_4.py | 11 +++ 22 files changed, 406 insertions(+), 3 deletions(-) create mode 100644 assets/companies/light/blueyonder.svg create mode 100644 assets/companies/light/deloitte.svg create mode 100644 assets/companies/light/dnv.svg create mode 100644 assets/companies/light/ey.svg create mode 100644 assets/companies/light/ltim.svg create mode 100644 assets/companies/light/pwc.svg create mode 100644 assets/companies/light/tcs.svg create mode 100644 pcweb/pages/use_cases/consulting/__init__.py create mode 100644 pcweb/pages/use_cases/consulting/views/faq.py create mode 100644 pcweb/pages/use_cases/consulting/views/features_1.py create mode 100644 pcweb/pages/use_cases/consulting/views/features_2.py create mode 100644 pcweb/pages/use_cases/consulting/views/final_section.py create mode 100644 pcweb/pages/use_cases/consulting/views/hero.py create mode 100644 pcweb/pages/use_cases/consulting/views/social_proof.py create mode 100644 pcweb/pages/use_cases/consulting/views/stats.py create mode 100644 pcweb/pages/use_cases/consulting/views/text_section_1.py create mode 100644 pcweb/pages/use_cases/consulting/views/text_section_2.py create mode 100644 pcweb/pages/use_cases/consulting/views/text_section_3.py create mode 100644 pcweb/pages/use_cases/consulting/views/text_section_4.py diff --git a/assets/companies/light/blueyonder.svg b/assets/companies/light/blueyonder.svg new file mode 100644 index 000000000..e721f4ff6 --- /dev/null +++ b/assets/companies/light/blueyonder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/deloitte.svg b/assets/companies/light/deloitte.svg new file mode 100644 index 000000000..731b9e925 --- /dev/null +++ b/assets/companies/light/deloitte.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/dnv.svg b/assets/companies/light/dnv.svg new file mode 100644 index 000000000..206cf963d --- /dev/null +++ b/assets/companies/light/dnv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/ey.svg b/assets/companies/light/ey.svg new file mode 100644 index 000000000..e0e28dd40 --- /dev/null +++ b/assets/companies/light/ey.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/ltim.svg b/assets/companies/light/ltim.svg new file mode 100644 index 000000000..e57ad9b37 --- /dev/null +++ b/assets/companies/light/ltim.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/pwc.svg b/assets/companies/light/pwc.svg new file mode 100644 index 000000000..39d31c865 --- /dev/null +++ b/assets/companies/light/pwc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/companies/light/tcs.svg b/assets/companies/light/tcs.svg new file mode 100644 index 000000000..242b42531 --- /dev/null +++ b/assets/companies/light/tcs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pcweb/components/docpage/navbar/navbar.py b/pcweb/components/docpage/navbar/navbar.py index 6cda0da5e..028e1960e 100644 --- a/pcweb/components/docpage/navbar/navbar.py +++ b/pcweb/components/docpage/navbar/navbar.py @@ -11,6 +11,7 @@ from pcweb.pages.faq import faq from pcweb.pages.framework.framework import framework from pcweb.pages.hosting.hosting import hosting_landing +from pcweb.pages.use_cases.consulting import consulting_use_case_page from pcweb.pages.use_cases.finance import finance_use_case_page from pcweb.pages.use_cases.healthcare import healthcare_use_case_page from pcweb.pages.use_cases.use_cases import use_cases_page @@ -390,7 +391,7 @@ def solutions_section(): }, { "label": "Consulting", - "url": use_cases_page.path, + "url": consulting_use_case_page.path, "icon": "MentoringIcon", }, { diff --git a/pcweb/pages/__init__.py b/pcweb/pages/__init__.py index e0c8a4b11..3cc40811e 100644 --- a/pcweb/pages/__init__.py +++ b/pcweb/pages/__init__.py @@ -23,6 +23,7 @@ from .sales import sales as sales from .security.security import security_page as security_page from .to_be_booked import to_be_booked as to_be_booked +from .use_cases.consulting import consulting_use_case_page as consulting_use_case_page from .use_cases.finance import finance_use_case_page as finance_use_case_page from .use_cases.healthcare import healthcare_use_case_page as healthcare_use_case_page from .use_cases.use_cases import use_cases_page as use_cases_page diff --git a/pcweb/pages/use_cases/common/features_2.py b/pcweb/pages/use_cases/common/features_2.py index 8e4295b82..eec7fb72d 100644 --- a/pcweb/pages/use_cases/common/features_2.py +++ b/pcweb/pages/use_cases/common/features_2.py @@ -2,7 +2,14 @@ import reflex_ui as ui -def feature_card(icon: str, stat: str, title: str, description: str) -> rx.Component: +def feature_card( + icon: str, + stat: str, + title: str, + description: str, + items: list[str] | None = None, + class_name: str = "", +) -> rx.Component: return rx.el.div( ui.icon( icon, class_name="text-m-violet-9 dark:text-m-violet-10 shrink-0 size-5" @@ -16,5 +23,17 @@ def feature_card(icon: str, stat: str, title: str, description: str) -> rx.Compo description, class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium mt-2", ), - class_name="flex flex-col items-start p-10", + rx.el.ul( + *[ + rx.el.li( + item, + class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium mt-1", + ) + for item in items + ], + class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium list-disc list-inside mt-2", + ) + if items + else None, + class_name=ui.cn("flex flex-col items-start p-10", class_name), ) diff --git a/pcweb/pages/use_cases/consulting/__init__.py b/pcweb/pages/use_cases/consulting/__init__.py new file mode 100644 index 000000000..ac6749840 --- /dev/null +++ b/pcweb/pages/use_cases/consulting/__init__.py @@ -0,0 +1,33 @@ +import reflex as rx + +from pcweb.meta.meta import meta_tags +from pcweb.pages.use_cases.consulting.views.faq import faq +from pcweb.pages.use_cases.consulting.views.features_1 import features_1 +from pcweb.pages.use_cases.consulting.views.features_2 import features_2 +from pcweb.pages.use_cases.consulting.views.final_section import final_section +from pcweb.pages.use_cases.consulting.views.hero import hero +from pcweb.pages.use_cases.consulting.views.social_proof import social_proof +from pcweb.pages.use_cases.consulting.views.stats import stats +from pcweb.pages.use_cases.consulting.views.text_section_1 import text_section_1 +from pcweb.pages.use_cases.consulting.views.text_section_3 import text_section_3 +from pcweb.pages.use_cases.consulting.views.text_section_4 import text_section_4 +from pcweb.templates.mainpage import mainpage + + +@mainpage( + path="/use-cases/consulting", title="Consulting Use Case - Reflex", meta=meta_tags +) +def consulting_use_case_page() -> rx.Component: + return rx.el.div( + hero(), + social_proof(), + text_section_3(), + features_2(), + text_section_1(), + features_1(), + text_section_4(), + stats(), + faq(), + final_section(), + class_name="flex flex-col size-full justify-center items-center max-w-[calc(100vw-2rem)] mx-auto", + ) diff --git a/pcweb/pages/use_cases/consulting/views/faq.py b/pcweb/pages/use_cases/consulting/views/faq.py new file mode 100644 index 000000000..188273f54 --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/faq.py @@ -0,0 +1,30 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.faq import faq_section + + +def faq() -> rx.Component: + return faq_section( + faq_items=[ + ( + "Is Reflex suitable for client delivery?", + "Yes. Reflex is used to deliver real, long-lived applications inside enterprise client environments — not just demos.", + ), + ( + "Do consultants need frontend or DevOps skills?", + "No. Reflex abstracts frontend and deployment so teams can focus on Python, analytics, and business logic.", + ), + ( + "Can we reuse apps across multiple clients?", + "Absolutely. Many firms build reusable templates and accelerators on Reflex and customize them per engagement.", + ), + ( + "Can Reflex support AI, analytics, and ML workloads?", + "Yes. Reflex runs in Python and integrates directly with models, data pipelines, and AI services.", + ), + ( + "Can we deploy inside client infrastructure?", + "Yes. Reflex supports VPC, on-prem, and air-gapped deployments to meet strict client requirements.", + ), + ], + ) diff --git a/pcweb/pages/use_cases/consulting/views/features_1.py b/pcweb/pages/use_cases/consulting/views/features_1.py new file mode 100644 index 000000000..42a0ade7f --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/features_1.py @@ -0,0 +1,69 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.features_1 import feature_card + + +def features_1() -> rx.Component: + return rx.el.section( + feature_card( + "Chart03Icon", + "Client Dashboards & Executive Portals", + items=[ + "Strategy and KPI dashboards", + "Transformation progress trackers", + "Financial and operational performance views", + "C-suite-ready reporting apps", + ], + ), + feature_card( + "ArtificialIntelligence04Icon", + "AI-Powered Advisory Tools", + items=[ + "RAG chatbots over client documents", + "Internal research assistants", + "Scenario analysis and decision tools", + "AI copilots for consultants and clients", + ], + ), + feature_card( + "Layers01Icon", + "Internal Delivery Platforms", + items=[ + "Engagement management tools", + "Knowledge-base portals", + "Staffing and utilization dashboards", + "IP libraries and accelerators", + ], + ), + feature_card( + "FlowConnectionIcon", + "Process & Workflow Automation", + items=[ + "Data ingestion and validation apps", + "Audit and compliance workflows", + "Risk assessment tools", + "Custom approval and review systems", + ], + ), + feature_card( + "PackageIcon", + "Productized Consulting IP", + items=[ + "Repeatable tools packaged across clients", + "White-labeled internal platforms", + "Subscription-style advisory software", + "Embedded analytics inside client orgs", + ], + ), + feature_card( + "ChartUpIcon", + "Analytics & Performance Tools", + items=[ + "Custom BI dashboards", + "Predictive modeling interfaces", + "Data quality and monitoring apps", + "Business intelligence reporting", + ], + ), + class_name="grid lg:grid-cols-2 grid-cols-1 mx-auto w-full max-w-[64.19rem] lg:border-l border-slate-3 relative overflow-hidden border-t", + ) diff --git a/pcweb/pages/use_cases/consulting/views/features_2.py b/pcweb/pages/use_cases/consulting/views/features_2.py new file mode 100644 index 000000000..f9d76e1c2 --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/features_2.py @@ -0,0 +1,58 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.features_2 import feature_card + + +def features_2() -> rx.Component: + return rx.el.section( + feature_card( + "ZapIcon", + "Create initial prototypes easily", + "Build without engineering resources", + "Create initial prototype/gather requirements very quickly without engineering resources. Build full-stack applications from a prompt. Reflex AI generates Python backend logic, data pipelines, and UI components which are all editable, extensible, and ready for real client delivery. Use Reflex to:", + items=[ + "Turn slideware into live applications", + "Prototype fast, then deploy to production without rewrites", + "Package IP into reusable, deployable tools", + ], + class_name="lg:border-b", + ), + feature_card( + "RepeatIcon", + "From Prototype to Production", + "No rebuilds required", + "Most consulting tools die as demos. Reflex apps are production-grade by default, meaning what you build for a pilot can be handed off, deployed, and operated long-term. Perfect for:", + items=[ + "Proofs of concept", + "MVPs for client programs", + "Long-lived internal platforms", + "Commercialized advisory products", + ], + class_name="lg:border-b", + ), + feature_card( + "DashboardSpeed01Icon", + "10x Faster Delivery", + "No front-end teams needed", + "Reflex handles frontend, backend, state, and deployment automatically. Your teams stay in Python and focus on business logic, analytics, and outcomes — not React, infra glue, or UI frameworks.", + items=[ + "Frontend, backend, state, and deployment automation", + "Python focus for business logic and analytics", + "No React, infra glue, or UI frameworks", + ], + ), + feature_card( + "DatabaseIcon", + "Built for Data-Heavy Work", + "Integrate with client systems", + "Reflex lets consulting teams seamlessly and securely integrate directly with a wide variety of client and third-party data sources, including:", + items=[ + "Snowflake, Databricks, BigQuery", + "Postgres, SQL Server, Oracle", + "ERP, CRM, and operational systems", + "ML models, forecasting pipelines, optimization engines", + "APIs, flat files, and secure data rooms", + ], + ), + class_name="grid lg:grid-cols-2 grid-cols-1 mx-auto w-full max-w-[64.19rem] lg:border-x border-slate-3 relative overflow-hidden border-t lg:divide-x divide-slate-3 max-lg:divide-y", + ) diff --git a/pcweb/pages/use_cases/consulting/views/final_section.py b/pcweb/pages/use_cases/consulting/views/final_section.py new file mode 100644 index 000000000..da7ed6d3d --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/final_section.py @@ -0,0 +1,20 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.final_section import left_content, right_content + + +def final_section() -> rx.Component: + return rx.el.section( + rx.el.div( + left_content( + "Turn Consulting Engagements Into Real Software", + "Deliver faster, differentiate your firm, and transform insights into production-grade applications with Reflex AI.", + ), + right_content( + "Build Your First Client App", + "Connect to client data sources and ship a working tool in days — production-ready, no JavaScript required.", + ), + class_name="flex xl:flex-row flex-col w-full rounded-2xl border border-m-slate-4 dark:border-m-slate-12 bg-white-1 dark:bg-m-slate-14 z-5 xl:divide-x divide-slate-3 max-xl:divide-y", + ), + class_name="mx-auto w-full max-w-[71.125rem] relative rounded-4xl border border-slate-4 backdrop-blur-[6px] bg-slate-2/48 p-4 flex z-1 max-lg:mb-6 -mb-px", + ) diff --git a/pcweb/pages/use_cases/consulting/views/hero.py b/pcweb/pages/use_cases/consulting/views/hero.py new file mode 100644 index 000000000..0ecd9ab8d --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/hero.py @@ -0,0 +1,44 @@ +import reflex as rx + +from pcweb.components.numbers_pattern import numbers_pattern +from pcweb.pages.use_cases.common.hero import left_content, right_content + + +def hero() -> rx.Component: + return rx.el.section( + numbers_pattern( + side="right", + class_name="lg:top-[65px] top-[45px] lg:h-[calc(100%-65px)] h-[calc(100%-45px)] max-lg:hidden", + ), + rx.el.div( + left_content( + "Build Client-Ready Enterprise Apps —", + " 10x Faster with Reflex AI", + "The fastest way for consulting firms to prototype and build secure, production-grade internal tools and client-facing applications using only Python. Go from idea to deployed app in days, not quarters, without front-end teams or rebuild cycles.", + "Book a Demo", + "Get Started Free", + ), + right_content( + [ + ( + "ZapIcon", + "Turn slideware into live applications in days, not quarters", + ), + ( + "RepeatIcon", + "Prototype fast, then deploy to production without rewrites", + ), + ( + "PythonIcon", + "Stay in Python—no React, no frontend teams required", + ), + ( + "ShieldKeyIcon", + "Deploy inside client VPCs and on-prem for enterprise security", + ), + ], + ), + class_name="flex lg:flex-row flex-col lg:gap-20 gap-10 max-lg:items-center max-lg:justify-center max-lg:text-center", + ), + class_name="flex flex-col justify-center items-center gap-4 mx-auto w-full max-w-[64.19rem] lg:border-x border-slate-3 pb-[3rem] pt-32 lg:pt-[11.5rem] lg:pb-[7.5rem] relative lg:overflow-hidden overflow-hidden z-[1] lg:px-10", + ) diff --git a/pcweb/pages/use_cases/consulting/views/social_proof.py b/pcweb/pages/use_cases/consulting/views/social_proof.py new file mode 100644 index 000000000..c0052abfd --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/social_proof.py @@ -0,0 +1,39 @@ +import reflex as rx +import reflex_ui as ui + +from pcweb.pages.use_cases.common.logos_carousel import logos_carousel + +LOGOS = [ + "blueyonder", + "accenture", + "dnv", + "deloitte", + "ltim", + "ey", + "tcs", + "pwc", +] + + +def first_card(title: str) -> rx.Component: + return rx.el.div( + ui.icon( + "CheckmarkBadge02Icon", + class_name="text-m-slate-11 dark:text-m-slate-9 shrink-0", + ), + rx.el.span( + title, + class_name="text-m-slate-11 dark:text-m-slate-9 text-sm font-medium text-wrap", + ), + class_name="flex flex-row gap-2.5 items-center max-lg:justify-center lg:col-span-2 px-10 h-full max-lg:h-[10.75rem] max-lg:w-full w-full lg:border-r", + ) + + +def social_proof() -> rx.Component: + return rx.el.div( + first_card( + "Consulting firms choose Reflex to ship faster, differentiate engagements, and turn insights into real software." + ), + logos_carousel(LOGOS), + class_name="flex lg:flex-row flex-col justify-center items-center mx-auto w-full max-w-[64.19rem] lg:border border-slate-3 h-[10.75rem] z-1", + ) diff --git a/pcweb/pages/use_cases/consulting/views/stats.py b/pcweb/pages/use_cases/consulting/views/stats.py new file mode 100644 index 000000000..d7dc0bf22 --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/stats.py @@ -0,0 +1,39 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.stats import stat_card + + +def stats() -> rx.Component: + return rx.el.section( + stat_card( + "Self-host in client VPCs or on-prem", + "Deploy Reflex apps entirely within client-approved infrastructure for maximum security and compliance.", + accent=True, + ), + stat_card( + "No data leaves client infrastructure", + "All application data and processing remain within the client's secure environment at all times.", + accent=True, + ), + stat_card( + "Enterprise authentication & RBAC", + "Integrate with client identity providers and enforce role-based access control with SSO support.", + accent=True, + ), + stat_card( + "Auditability and observability built in", + "Complete logging of user actions, data access, and system events for compliance and security reviews.", + accent=True, + ), + stat_card( + "Compatible with regulated industries", + "Works with finance, healthcare, energy, and public sector compliance frameworks and security requirements.", + accent=True, + ), + stat_card( + "No vendor lock-in", + "Clients own the code and infrastructure completely, ensuring long-term control and flexibility.", + accent=True, + ), + class_name="grid lg:grid-cols-3 grid-cols-1 mx-auto w-full max-w-[64.19rem] border-slate-3 relative overflow-hidden border-t max-lg:divide-y lg:border-l", + ) diff --git a/pcweb/pages/use_cases/consulting/views/text_section_1.py b/pcweb/pages/use_cases/consulting/views/text_section_1.py new file mode 100644 index 000000000..1a13d06d1 --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/text_section_1.py @@ -0,0 +1,10 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.text_section import text_section + + +def text_section_1() -> rx.Component: + return text_section( + header="Consulting Firms Build their Client Apps with Reflex", + description="Consulting teams use Reflex to create reusable, client-ready applications with AI.", + ) diff --git a/pcweb/pages/use_cases/consulting/views/text_section_2.py b/pcweb/pages/use_cases/consulting/views/text_section_2.py new file mode 100644 index 000000000..1b4a1fc21 --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/text_section_2.py @@ -0,0 +1,11 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.text_section import text_section + + +def text_section_2() -> rx.Component: + return text_section( + header="Proven at the World's Leading Institutions", + description="From global banks to agile fintechs, see how teams are transforming their internal tools with Reflex.", + class_name="border-t-0", + ) diff --git a/pcweb/pages/use_cases/consulting/views/text_section_3.py b/pcweb/pages/use_cases/consulting/views/text_section_3.py new file mode 100644 index 000000000..258a8c09d --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/text_section_3.py @@ -0,0 +1,11 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.text_section import text_section + + +def text_section_3() -> rx.Component: + return text_section( + header="The most powerful tool for Consulting Firms", + description="Build full-stack applications from a prompt. Reflex AI generates Python backend logic, data pipelines, and UI components which are all editable, extensible, and ready for real client delivery.", + class_name="border-t-0", + ) diff --git a/pcweb/pages/use_cases/consulting/views/text_section_4.py b/pcweb/pages/use_cases/consulting/views/text_section_4.py new file mode 100644 index 000000000..39a07278a --- /dev/null +++ b/pcweb/pages/use_cases/consulting/views/text_section_4.py @@ -0,0 +1,11 @@ +import reflex as rx + +from pcweb.pages.use_cases.common.text_section import text_section + + +def text_section_4() -> rx.Component: + return text_section( + header="Designed for Enterprise Clients", + description="Reflex apps run entirely in client-approved environments, making them suitable for the most demanding enterprises. Reflex never sees client data. Ideal for consulting firms working with sensitive, regulated, or mission-critical systems.", + class_name="border-t-0", + ) From a5b8ffaa1f37119d05d33c0e90aeed10f6691029 Mon Sep 17 00:00:00 2001 From: Carlos Date: Wed, 14 Jan 2026 12:10:46 +0100 Subject: [PATCH 2/2] remove unused --- .../use_cases/consulting/views/text_section_2.py | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 pcweb/pages/use_cases/consulting/views/text_section_2.py diff --git a/pcweb/pages/use_cases/consulting/views/text_section_2.py b/pcweb/pages/use_cases/consulting/views/text_section_2.py deleted file mode 100644 index 1b4a1fc21..000000000 --- a/pcweb/pages/use_cases/consulting/views/text_section_2.py +++ /dev/null @@ -1,11 +0,0 @@ -import reflex as rx - -from pcweb.pages.use_cases.common.text_section import text_section - - -def text_section_2() -> rx.Component: - return text_section( - header="Proven at the World's Leading Institutions", - description="From global banks to agile fintechs, see how teams are transforming their internal tools with Reflex.", - class_name="border-t-0", - )