feat: add internationalization message platform

This commit is contained in:
donghyeon-ka
2026-07-26 16:17:39 +09:00
parent b8c0444217
commit 668bf05b48
57 changed files with 1711 additions and 201 deletions
@@ -8,6 +8,7 @@ import {
import { createPortal } from "react-dom";
import { CloseIcon } from "../icons/semantic-icons.js";
import { useLocale } from "../../i18n/index.js";
export type ButtonVariant = "primary" | "secondary" | "danger" | "ghost";
export type ButtonSize = "default" | "compact";
@@ -277,6 +278,7 @@ export function Alert({
dismissLabel,
onDismiss,
}: AlertProps) {
const { message } = useLocale();
return (
<section
className={`ui-alert ui-alert--${variant}`}
@@ -288,7 +290,9 @@ export function Alert({
</div>
{onDismiss ? (
<IconButton
accessibleName={dismissLabel ?? `${title} 알림 닫기`}
accessibleName={
dismissLabel ?? message("action.alertCloseNamed", { title })
}
className="ui-alert__dismiss"
onClick={onDismiss}
variant="ghost"
@@ -334,6 +338,7 @@ export const Dialog = forwardRef<HTMLDialogElement, DialogProps>(
},
forwardedRef,
) {
const { message } = useLocale();
const dialogRef = useRef<HTMLDialogElement | null>(null);
const previousFocusRef = useRef<HTMLElement | null>(null);
const titleId = useId();
@@ -364,8 +369,11 @@ export const Dialog = forwardRef<HTMLDialogElement, DialogProps>(
if (typeof dialog.close === "function") dialog.close();
else dialog.removeAttribute("open");
}
previousFocusRef.current?.focus();
const previousFocus = previousFocusRef.current;
previousFocusRef.current = null;
queueMicrotask(() => {
if (previousFocus?.isConnected) previousFocus.focus();
});
}, [open]);
return (
@@ -395,7 +403,9 @@ export const Dialog = forwardRef<HTMLDialogElement, DialogProps>(
{description ? <p id={descriptionId}>{description}</p> : null}
</div>
<IconButton
accessibleName={closeLabel ?? `${title} 닫기`}
accessibleName={
closeLabel ?? message("action.closeNamed", { title })
}
className="ui-dialog__close"
onClick={onClose}
variant="ghost"