Aur UI

Use Shortcut Label

Platform-aware shortcut label: ⌘ on Apple platforms, Ctrl elsewhere, resolved after mount.

bash
pnpm add @aur-ui/ui
tsx
import { useShortcutLabel } from "@aur-ui/ui/hooks/use-shortcut-label";
hooks/use-shortcut-label.ts
"use client";

import { useEffect, useState } from "react";

/**
 * Platform-aware shortcut label: `useShortcutLabel("K")` → "⌘K" on Apple
 * platforms, "Ctrl K" elsewhere. Resolves after mount (returns `null` on the
 * server and first client render) so SSR markup never guesses the platform.
 */
export function useShortcutLabel(key: string): string | null {
  const [label, setLabel] = useState<string | null>(null);

  useEffect(() => {
    // navigator.platform is deprecated and empty in some browsers; prefer
    // userAgentData where available, then fall back through userAgent.
    const platform =
      (navigator as { userAgentData?: { platform?: string } }).userAgentData
        ?.platform ||
      navigator.platform ||
      navigator.userAgent;
    const isApple = /mac|iphone|ipad/i.test(platform);
    setLabel(isApple ? `${key}` : `Ctrl ${key}`);
  }, [key]);

  return label;
}