@godxjp/ui 16.3.0 → 16.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -275,6 +275,7 @@ function AppProvider({
275
275
  React.useEffect(() => {
276
276
  if (typeof document !== "undefined") {
277
277
  document.documentElement.dir = localeDirection(locale);
278
+ document.documentElement.lang = locale;
278
279
  }
279
280
  }, [locale]);
280
281
  React.useEffect(() => {
@@ -1,11 +1,29 @@
1
1
  @import "sonner/dist/styles.css";
2
2
  @import "react-day-picker/style.css";
3
- /* Default sans font — self-contained so consumers need no font config (subsetted: latin/vi/jp). */
4
- @import "@fontsource/m-plus-2/400.css";
5
- @import "@fontsource/m-plus-2/500.css";
6
- @import "@fontsource/m-plus-2/700.css";
3
+ /* Bundled sans fonts — self-contained so consumers need no font config. The browser only
4
+ * downloads the subset files matching the rendered text:
5
+ * · Noto Sans JP — the DEFAULT face (Japanese + Latin), used for all locales except `vi`.
6
+ * · Montserrat — swapped in for the Vietnamese locale (`<html lang="vi">`), incl. its
7
+ * `vietnamese` subset for full diacritics. See --font-family-sans + :lang(vi). */
8
+ @import "@fontsource/noto-sans-jp/400.css";
9
+ @import "@fontsource/noto-sans-jp/500.css";
10
+ @import "@fontsource/noto-sans-jp/700.css";
11
+ @import "@fontsource/montserrat/400.css";
12
+ @import "@fontsource/montserrat/500.css";
13
+ @import "@fontsource/montserrat/700.css";
7
14
  @import "tailwindcss";
8
15
 
16
+ /* Vietnamese locale → Montserrat (set by AppProvider via <html lang="vi">). Overrides the
17
+ * --font-family-sans token so every body/heading rule that reads it switches automatically. */
18
+ :root:lang(vi),
19
+ [lang="vi"] {
20
+ /* Montserrat for Latin/Vietnamese; Noto Sans JP kept as the tail so any 日本語 in a vi-locale
21
+ * screen still has the bundled JP face (Montserrat has no CJK glyphs). */
22
+ --font-family-sans:
23
+ "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial,
24
+ system-ui, "Noto Sans JP", sans-serif;
25
+ }
26
+
9
27
  /* Guarantee the full set of semantic color utilities ships in the compiled CSS
10
28
  * even when the library itself only references a few — consumers (and the token
11
29
  * docs) must be able to use bg/text/border for EVERY semantic role. Without this
@@ -95,15 +95,13 @@
95
95
 
96
96
  /* Sans stack — script-aware per the international convention for mixed
97
97
  * Latin/CJK UI: native Latin system fonts FIRST (clean, familiar English &
98
- * Vietnamese on every OS), then the bundled "M PLUS 2" + Hiragino / Noto Sans JP
99
- * as the CJK fallback. Browsers resolve fonts per-glyph, so Latin renders in the
100
- * system sans while 日本語 falls through to M PLUS 2 (still shipped, so JP is
101
- * consistent across machines). Listing M PLUS 2 first its Latin glyphs are
102
- * tuned to harmonise with kana, not for standalone English — made English read
103
- * oddly; Latin-first fixes that without losing the bundled JP face. */
98
+ * DEFAULT face is the bundled "Noto Sans JP" (Japanese + clean Latin), with system sans as
99
+ * the network/loading fallback. The Vietnamese locale swaps this token to Montserrat via
100
+ * `:root:lang(vi)` in styles/index.css (set by AppProvider's <html lang>). Browsers resolve
101
+ * fonts per-glyph, so 日本語 and Latin both render in Noto Sans JP when it's loaded. */
104
102
  --font-family-sans:
105
- -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial,
106
- system-ui, "M PLUS 2", "Hiragino Sans", "Noto Sans JP", "Be Vietnam Pro", sans-serif;
103
+ "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial,
104
+ system-ui, "Hiragino Sans", sans-serif;
107
105
  --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
108
106
  /* ── Type scale — GOLDEN-RATIO modular scale (Ant/Tailwind model). ONE base + ONE ratio; every
109
107
  * step is base × ratioⁿ, so the whole scale stays in golden proportion. `--font-size-ratio` is
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@godxjp/ui",
3
- "version": "16.3.0",
3
+ "version": "16.4.0",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@10.29.1",
6
6
  "sideEffects": false,
@@ -302,18 +302,18 @@
302
302
  "init-agent": "node scripts/init-agent-kit.mjs"
303
303
  },
304
304
  "peerDependencies": {
305
+ "@axe-core/playwright": "*",
305
306
  "@hookform/resolvers": "^5.2.0",
306
307
  "@tanstack/react-query": ">=5.0.0",
308
+ "axe-core": "*",
309
+ "playwright": "*",
307
310
  "react": ">=19.0.0",
308
311
  "react-dom": ">=19.0.0",
309
312
  "react-hook-form": "^7.76.0",
310
313
  "react-router-dom": ">=7.0.0",
311
314
  "recharts": "^2.13.0 || ^3.0.0",
312
315
  "tailwindcss": ">=4.0.0",
313
- "zod": "^4.4.0",
314
- "playwright": "*",
315
- "@axe-core/playwright": "*",
316
- "axe-core": "*"
316
+ "zod": "^4.4.0"
317
317
  },
318
318
  "peerDependenciesMeta": {
319
319
  "recharts": {
@@ -331,8 +331,8 @@
331
331
  },
332
332
  "dependencies": {
333
333
  "@date-fns/tz": "^1.5.0",
334
- "@tanstack/react-table": "^8.21.3",
335
- "@fontsource/m-plus-2": "^5.2.9",
334
+ "@fontsource/montserrat": "^5.2.8",
335
+ "@fontsource/noto-sans-jp": "^5.2.9",
336
336
  "@radix-ui/react-accordion": "^1.2.12",
337
337
  "@radix-ui/react-alert-dialog": "^1.1.15",
338
338
  "@radix-ui/react-aspect-ratio": "^1.1.8",
@@ -359,6 +359,7 @@
359
359
  "@radix-ui/react-toggle": "^1.1.10",
360
360
  "@radix-ui/react-toggle-group": "^1.1.11",
361
361
  "@radix-ui/react-tooltip": "^1.2.8",
362
+ "@tanstack/react-table": "^8.21.3",
362
363
  "class-variance-authority": "^0.7.1",
363
364
  "clsx": "^2.1.1",
364
365
  "cmdk": "^1.1.1",