+
or
@@ -877,7 +878,8 @@ function KeybindingKeyControl({
value={isRecording ? "" : keyDraft}
placeholder={isRecording ? "Press shortcut" : "Unassigned"}
size="sm"
- className={cn("w-44 font-mono", isRecording && "border-primary/70 bg-primary/5")}
+ font="mono"
+ className={cn("w-44", isRecording && "border-primary/70 bg-primary/5")}
onFocus={() => setDraft({ isRecording: true })}
onBlur={() => setDraft({ isRecording: false })}
onChange={(event) => setDraft({ keyDraft: event.currentTarget.value })}
@@ -1190,7 +1192,8 @@ function NewKeybindingKeyInput({
value={draft.isRecording ? "" : draft.keyDraft}
placeholder={draft.isRecording ? "Press shortcut" : "Unassigned"}
size="sm"
- className={cn("font-mono", draft.isRecording && "border-primary/70 bg-primary/5", className)}
+ font="mono"
+ className={cn(draft.isRecording && "border-primary/70 bg-primary/5", className)}
onFocus={() => draft.setDraft({ isRecording: true })}
onBlur={() => draft.setDraft({ isRecording: false })}
onChange={(event) => draft.setDraft({ keyDraft: event.currentTarget.value })}
diff --git a/apps/web/src/components/settings/ProviderAccentColorPicker.tsx b/apps/web/src/components/settings/ProviderAccentColorPicker.tsx
index 500f3c0a7cb3..82e3d76f7220 100644
--- a/apps/web/src/components/settings/ProviderAccentColorPicker.tsx
+++ b/apps/web/src/components/settings/ProviderAccentColorPicker.tsx
@@ -56,7 +56,8 @@ function ProviderCustomColorPanel(props: {
props.onCommit(nextColor);
}}
onBlur={() => setHexDraft(null)}
- className="font-mono text-xs"
+ font="mono"
+ className="text-xs"
aria-label="Custom hex accent color"
spellCheck={false}
/>
diff --git a/apps/web/src/components/settings/ProviderInstanceCard.tsx b/apps/web/src/components/settings/ProviderInstanceCard.tsx
index ed8f5893f501..eebd871735df 100644
--- a/apps/web/src/components/settings/ProviderInstanceCard.tsx
+++ b/apps/web/src/components/settings/ProviderInstanceCard.tsx
@@ -268,7 +268,8 @@ function ProviderEnvironmentSection(props: {
updateVariable(variable.id, { name: name.trim() })}
placeholder="VARIABLE_NAME"
@@ -280,7 +281,8 @@ function ProviderEnvironmentSection(props: {
updateVariable(variable.id, { value })}
type={variable.sensitive ? "password" : undefined}
diff --git a/apps/web/src/components/settings/ThemeColorPicker.tsx b/apps/web/src/components/settings/ThemeColorPicker.tsx
index 7ddb89fa89aa..a1d2cde90b02 100644
--- a/apps/web/src/components/settings/ThemeColorPicker.tsx
+++ b/apps/web/src/components/settings/ThemeColorPicker.tsx
@@ -353,7 +353,8 @@ export const ThemeColorField = memo(function ThemeColorField({
onChange(role, event.currentTarget.value)}
diff --git a/apps/web/src/components/ui/input.tsx b/apps/web/src/components/ui/input.tsx
index cae3dfe62852..a5810308b6e8 100644
--- a/apps/web/src/components/ui/input.tsx
+++ b/apps/web/src/components/ui/input.tsx
@@ -7,6 +7,8 @@ import { cn } from "~/lib/utils";
type InputProps = Omit, "size"> & {
size?: "sm" | "compact" | "default" | "lg" | number;
+ /** Monospace with tabular digits, for paths, commands, colors and numbers. */
+ font?: "default" | "mono";
unstyled?: boolean;
nativeInput?: boolean;
};
@@ -14,6 +16,7 @@ type InputProps = Omit & { icon?: React.ReactNode }) {
return (
@@ -141,15 +146,18 @@ function SelectPopup({
function SelectItem({
className,
children,
+ font = "default",
hideIndicator: _hideIndicator = false,
...props
}: SelectPrimitive.Item.Props & {
+ font?: "default" | "mono";
hideIndicator?: boolean;
}) {
return (
editCell(row, field.key, event.target.value)
}
diff --git a/scripts/lint-restyle-ceiling.ts b/scripts/lint-restyle-ceiling.ts
index dccb0d540d2d..0ea57890b1e5 100644
--- a/scripts/lint-restyle-ceiling.ts
+++ b/scripts/lint-restyle-ceiling.ts
@@ -8,7 +8,7 @@ import * as NodeURL from "node:url";
// components/ui exports are migrated to variants (see vite.config.ts). This gate keeps the
// count from growing: CI fails when findings exceed the ceiling. Lower the ceiling when you
// migrate a file, and delete this script when the rule becomes an error.
-export const RESTYLE_CEILING = 1106;
+export const RESTYLE_CEILING = 1089;
const RULE = "shadcn(no-restyle)";