najm-kit 2.11.21 → 2.11.22
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.
- package/CHANGELOG.md +14 -6
- package/README.md +15 -15
- package/dist/theme.css +5 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 2.11.
|
|
3
|
+
## 2.11.22 - 2026-09-11
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
- Allowed destructive dialogs to render a caller-supplied title, wrap and
|
|
6
|
+
center long item names, and use a transparent destructive-outline cancel
|
|
7
|
+
action.
|
|
8
|
+
- Made native calendar caption dropdowns follow the resolved light or dark
|
|
9
|
+
theme and clarified pointer feedback for enabled and disabled dates.
|
|
9
10
|
|
|
10
|
-
## 2.11.
|
|
11
|
+
## 2.11.21 - 2026-09-09
|
|
12
|
+
|
|
13
|
+
- Added first-visit browser-language negotiation to `defineNajmPreferences`.
|
|
14
|
+
Applications can pass the raw `Accept-Language` header to `resolve`; explicit
|
|
15
|
+
cookies and account fallbacks retain priority, while quality weights and
|
|
16
|
+
regional language tags are matched against the configured catalog.
|
|
17
|
+
|
|
18
|
+
## 2.11.19 - 2026-09-06
|
|
11
19
|
|
|
12
20
|
- Made native calendar month and year dropdowns follow the resolved Najm light
|
|
13
21
|
or dark theme instead of opening with the browser's light color scheme.
|
package/README.md
CHANGED
|
@@ -1132,19 +1132,19 @@ field are the same `400`. Nothing from the request body reaches the response.
|
|
|
1132
1132
|
|
|
1133
1133
|
```tsx
|
|
1134
1134
|
// src/app/layout.tsx
|
|
1135
|
-
import { cookies, headers } from "next/headers";
|
|
1135
|
+
import { cookies, headers } from "next/headers";
|
|
1136
1136
|
import { preferences } from "@/preferences";
|
|
1137
1137
|
|
|
1138
1138
|
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
|
1139
|
-
const [cookieStore, requestHeaders, session] = await Promise.all([
|
|
1140
|
-
cookies(),
|
|
1141
|
-
headers(),
|
|
1142
|
-
getSession(),
|
|
1143
|
-
]);
|
|
1144
|
-
const { language, theme, timeZone } = preferences.resolve(cookieStore, {
|
|
1145
|
-
languageFallback: session?.user.language,
|
|
1146
|
-
acceptLanguage: requestHeaders.get("accept-language"),
|
|
1147
|
-
});
|
|
1139
|
+
const [cookieStore, requestHeaders, session] = await Promise.all([
|
|
1140
|
+
cookies(),
|
|
1141
|
+
headers(),
|
|
1142
|
+
getSession(),
|
|
1143
|
+
]);
|
|
1144
|
+
const { language, theme, timeZone } = preferences.resolve(cookieStore, {
|
|
1145
|
+
languageFallback: session?.user.language,
|
|
1146
|
+
acceptLanguage: requestHeaders.get("accept-language"),
|
|
1147
|
+
});
|
|
1148
1148
|
|
|
1149
1149
|
return (
|
|
1150
1150
|
<html
|
|
@@ -1160,11 +1160,11 @@ export default async function RootLayout({ children }: { children: React.ReactNo
|
|
|
1160
1160
|
}
|
|
1161
1161
|
```
|
|
1162
1162
|
|
|
1163
|
-
`resolve` takes anything with `get(name)` — Next's cookie store, or a plain
|
|
1164
|
-
object in a test. Language precedence is cookie, then `languageFallback`, then
|
|
1165
|
-
the `acceptLanguage` request header, then the catalog default. Browser
|
|
1166
|
-
negotiation honors quality weights and regional tags; invalid stored values
|
|
1167
|
-
fall through rather than pinning the UI.
|
|
1163
|
+
`resolve` takes anything with `get(name)` — Next's cookie store, or a plain
|
|
1164
|
+
object in a test. Language precedence is cookie, then `languageFallback`, then
|
|
1165
|
+
the `acceptLanguage` request header, then the catalog default. Browser
|
|
1166
|
+
negotiation honors quality weights and regional tags; invalid stored values
|
|
1167
|
+
fall through rather than pinning the UI.
|
|
1168
1168
|
|
|
1169
1169
|
### Types
|
|
1170
1170
|
|
package/dist/theme.css
CHANGED
|
@@ -317,10 +317,10 @@ input:autofill {
|
|
|
317
317
|
overflow-x: auto;
|
|
318
318
|
scrollbar-width: none;
|
|
319
319
|
}
|
|
320
|
-
.najm-overlay-scroll-x::-webkit-scrollbar {
|
|
321
|
-
display: none;
|
|
322
|
-
}
|
|
323
|
-
|
|
320
|
+
.najm-overlay-scroll-x::-webkit-scrollbar {
|
|
321
|
+
display: none;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
324
|
/* Responsive table actions stay discoverable on touch and tablet layouts.
|
|
325
325
|
Fine-pointer desktops may keep the quieter hover/focus reveal treatment. */
|
|
326
326
|
.ntable-card-action {
|
|
@@ -377,7 +377,7 @@ input:autofill {
|
|
|
377
377
|
.nimage-input-compact-overlay:focus-visible {
|
|
378
378
|
opacity: 1;
|
|
379
379
|
}
|
|
380
|
-
}
|
|
380
|
+
}
|
|
381
381
|
|
|
382
382
|
/* OverlayScrollbars theme used by the <NajmScroll> component — a thin,
|
|
383
383
|
translucent slate bar that floats over content with no reserved space.
|