diff --git a/src/app/admin/settings/ai/AIClient.tsx b/src/app/admin/settings/ai/AIClient.tsx
index 37611cf..da83174 100644
--- a/src/app/admin/settings/ai/AIClient.tsx
+++ b/src/app/admin/settings/ai/AIClient.tsx
@@ -131,7 +131,7 @@ function ToolCard({ tool, isConnected, onOpen }: ToolCardProps) {
boxShadow: isConnected ? '0 2px 8px rgba(202, 117, 67, 0.25)' : 'none',
}}
title={!isConnected ? "Add your OpenAI API key in Settings to enable" : "Open tool"}
- >
+ aria-label="Open Tool">
Open Tool
)}
@@ -140,7 +140,7 @@ function ToolCard({ tool, isConnected, onOpen }: ToolCardProps) {
style={{
background: 'rgba(0, 0, 0, 0.04)',
color: 'rgba(0, 0, 0, 0.4)',
- }}>
+ }} aria-label="Coming Soon">
Coming Soon
)}
@@ -149,7 +149,7 @@ function ToolCard({ tool, isConnected, onOpen }: ToolCardProps) {
style={{
background: 'rgba(171, 162, 120, 0.15)',
color: '#92781e',
- }}>
+ }} aria-label="Request Access">
Request Access
)}
@@ -225,7 +225,7 @@ function ConnectionStatusBanner({ isConnected, availableCount, onConfigure }: {
color: 'white',
boxShadow: '0 2px 8px rgba(202, 117, 67, 0.25)',
}}
- >
+ aria-label="Add API Key">
Add API Key
@@ -783,7 +783,7 @@ function ReportExplainerTool({ brandId }: { brandId: string }) {
onClick={() => copyToClipboard(JSON.stringify(result, null, 2))}
className="text-xs flex items-center gap-1 transition-colors"
style={{ color: 'var(--admin-text-muted)' }}
- >
+ aria-label="Copy to clipboard">
Copy to clipboard
@@ -898,7 +898,7 @@ function PricingAdvisorTool({ brandId }: { brandId: string }) {
-
+
{priceTiers.map((tier, i) => (
@@ -922,7 +922,7 @@ function PricingAdvisorTool({ brandId }: { brandId: string }) {
/>
{priceTiers.length > 1 && (
-
+
)}
))}
@@ -932,7 +932,7 @@ function PricingAdvisorTool({ brandId }: { brandId: string }) {
-
+
@@ -971,7 +971,7 @@ function PricingAdvisorTool({ brandId }: { brandId: string }) {
/>
{historicalSales.length > 1 && (
-
+
)}
))}
@@ -1048,7 +1048,7 @@ function PricingAdvisorTool({ brandId }: { brandId: string }) {
onClick={() => copyToClipboard(JSON.stringify(result, null, 2))}
className="text-xs flex items-center gap-1 transition-colors"
style={{ color: 'var(--admin-text-muted)' }}
- >
+ aria-label="Copy to clipboard">
Copy to clipboard
@@ -1154,7 +1154,7 @@ function StopBlastAdvisorTool({ brandId }: { brandId: string }) {
Recommended Subject Line
{result.subjectLine}
-
@@ -1410,7 +1410,7 @@ function RouteOptimizerTool({ brandId }: { brandId: string }) {
onClick={addStop}
className="text-xs flex items-center gap-1 transition-colors"
style={{ color: 'var(--admin-accent)' }}
- >
+ aria-label="+ Add Stop">
+ Add Stop
@@ -1419,7 +1419,7 @@ function RouteOptimizerTool({ brandId }: { brandId: string }) {
Stop {i + 1}
{stops.length > 2 && (
- removeStop(i)} className="text-xs transition-colors" style={{ color: 'var(--admin-danger)' }}>
+ removeStop(i)} className="text-xs transition-colors" style={{ color: 'var(--admin-danger)' }} aria-label="Remove">
Remove
)}
@@ -1546,7 +1546,7 @@ function RouteOptimizerTool({ brandId }: { brandId: string }) {
onClick={() => copyToClipboard(JSON.stringify(result, null, 2))}
className="text-xs flex items-center gap-1 transition-colors"
style={{ color: 'var(--admin-text-muted)' }}
- >
+ aria-label="Copy to clipboard">
Copy to clipboard
@@ -1638,7 +1638,7 @@ function DemandForecastTool({ brandId }: { brandId: string }) {
- + Add Row
+ + Add Row
@@ -1674,7 +1674,7 @@ function DemandForecastTool({ brandId }: { brandId: string }) {
style={{ borderColor: 'var(--admin-border)', backgroundColor: 'var(--admin-bg)', color: 'var(--admin-text-primary)' }}
/>
{historicalData.length > 1 && (
- removeRow(i)} className="text-xs justify-self-end transition-colors" style={{ color: 'var(--admin-danger)' }}>✕
+ removeRow(i)} className="text-xs justify-self-end transition-colors" style={{ color: 'var(--admin-danger)' }} aria-label="✕">✕
)}
))}
@@ -1746,7 +1746,7 @@ function DemandForecastTool({ brandId }: { brandId: string }) {
onClick={() => copyToClipboard(JSON.stringify(result, null, 2))}
className="text-xs flex items-center gap-1 transition-colors"
style={{ color: 'var(--admin-text-muted)' }}
- >
+ aria-label="Copy to clipboard">
Copy to clipboard
@@ -1773,7 +1773,7 @@ function ToolModal({ tool, brandId, brandName, onClose }: ModalProps) {
{tool.icon}
{tool.title}
-
+
@@ -1875,7 +1875,7 @@ export default function AIsettingsClient({
setActiveModule(null)}
className={`admin-filter-tab ${activeModule === null ? 'admin-filter-tab--active' : ''}`}
- >
+ aria-label="All ()">
All ({AI_TOOLS.length})
{modules.map((m) => {
@@ -1885,7 +1885,7 @@ export default function AIsettingsClient({
key={m}
onClick={() => setActiveModule(activeModule === m ? null : m)}
className={`admin-filter-tab ${activeModule === m ? 'admin-filter-tab--active' : ''}`}
- >
+ aria-label="()">
{m} ({count})
);
diff --git a/src/app/admin/settings/billing/BillingClientPage.tsx b/src/app/admin/settings/billing/BillingClientPage.tsx
index 06f4a8a..635a83f 100644
--- a/src/app/admin/settings/billing/BillingClientPage.tsx
+++ b/src/app/admin/settings/billing/BillingClientPage.tsx
@@ -236,7 +236,7 @@ export default function BillingClientPage({ overview }: Props) {
setCompareOpen(!compareOpen)}
className="inline-flex items-center gap-1.5 text-sm font-medium text-[var(--admin-accent)] hover:text-[var(--admin-accent-hover)] transition-colors"
- >
+ aria-label="plans">
{compareOpen ? "Hide" : "Compare"} plans