najm-kit 2.11.0 → 2.11.2

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 CHANGED
@@ -1,6 +1,19 @@
1
- # Changelog
2
-
3
- ## 2.11.0 - 2026-08-10
1
+ # Changelog
2
+
3
+ ## 2.11.2 - 2026-08-11
4
+
5
+ - Fixed `PasswordInput` forwarding native input attributes such as generated
6
+ form IDs and ARIA metadata to the actual `<input>`, restoring programmatic
7
+ label association for assistive technology and browser automation.
8
+
9
+ ## 2.11.1 - 2026-08-11
10
+
11
+ - Fixed `NajmThemeProvider` precedence so an explicit runtime `mode` overrides
12
+ a preset stored in the design config. An explicit `preset` prop still wins,
13
+ allowing deliberately fixed-preset subtrees without producing mixed light
14
+ and dark application surfaces.
15
+
16
+ ## 2.11.0 - 2026-08-10
4
17
 
5
18
  - Gave every keyboard-focusable primitive a visible focus ring, from one shared
6
19
  source: `focusRingClasses` and `focusRingWithinClasses`, exported from the
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- import { FormDevToolsProvider, NBrandingStateProvider, NajmFormatProvider } from '../chunk-2GFWF46W.mjs';
3
- export { NEmptyState, NErrorState, NForbiddenState, NLoadingState, NNotFoundState } from '../chunk-2GFWF46W.mjs';
4
- import { NajmNextUIProvider } from '../chunk-CE7MVEJ2.mjs';
5
- import '../chunk-EEBLEDNI.mjs';
6
- import '../chunk-XZL32HFR.mjs';
7
- import '../chunk-KVZACF4G.mjs';
2
+ import { FormDevToolsProvider, NBrandingStateProvider, NajmFormatProvider } from '../chunk-ZXIVSNXV.mjs';
3
+ export { NEmptyState, NErrorState, NForbiddenState, NLoadingState, NNotFoundState } from '../chunk-ZXIVSNXV.mjs';
4
+ import { NajmNextUIProvider } from '../chunk-T6RL7TSQ.mjs';
5
+ import '../chunk-6UDJNTJ6.mjs';
6
+ import '../chunk-ONE7GLIH.mjs';
7
+ import '../chunk-LK3SMYUP.mjs';
8
8
  import '../chunk-JABLSOQN.mjs';
9
9
  import '../chunk-TFHWLE7N.mjs';
10
10
  import * as React from 'react';
@@ -1,3 +1,3 @@
1
- export { NNextImage, NajmNextUIProvider, NextLinkAdapter, useNextNavigationAdapter } from '../chunk-CE7MVEJ2.mjs';
2
- import '../chunk-EEBLEDNI.mjs';
3
- import '../chunk-KVZACF4G.mjs';
1
+ export { NNextImage, NajmNextUIProvider, NextLinkAdapter, useNextNavigationAdapter } from '../chunk-T6RL7TSQ.mjs';
2
+ import '../chunk-6UDJNTJ6.mjs';
3
+ import '../chunk-LK3SMYUP.mjs';
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-KVZACF4G.mjs';
1
+ import { cn } from './chunk-LK3SMYUP.mjs';
2
2
  import * as React from 'react';
3
3
  import { createContext, useContext } from 'react';
4
4
  import { OverlayScrollbars } from 'overlayscrollbars';
@@ -1,4 +1,4 @@
1
- import { NajmDesignProvider, cn } from './chunk-KVZACF4G.mjs';
1
+ import { NajmDesignProvider, cn } from './chunk-LK3SMYUP.mjs';
2
2
  import * as React2 from 'react';
3
3
  import React2__default from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -244,7 +244,7 @@ function NajmThemeProvider({
244
244
  const depth = React.useContext(NajmThemeDepthContext);
245
245
  const parentMode = React.useContext(NajmThemeModeContext);
246
246
  const parentAppearance = React.useContext(NajmAppearanceContext);
247
- const effectivePreset = preset ?? config?.preset;
247
+ const effectivePreset = preset ?? (mode === void 0 ? config?.preset : void 0);
248
248
  const effectiveMode = mode ?? config?.mode;
249
249
  const effectiveAccent = accent ?? config?.accent;
250
250
  const effectiveAccentOnly = accentOnly ?? config?.accentOnly;
@@ -1,4 +1,4 @@
1
- import { useNajmComponentStyle, cn } from './chunk-KVZACF4G.mjs';
1
+ import { useNajmComponentStyle, cn } from './chunk-LK3SMYUP.mjs';
2
2
  import { resolveVariantAlias, resolveRadiusValue } from './chunk-TFHWLE7N.mjs';
3
3
  import * as React2 from 'react';
4
4
  import React2__default from 'react';
@@ -1,4 +1,4 @@
1
- import { useImageChain, normalizeImageSources, NajmUIProvider } from './chunk-EEBLEDNI.mjs';
1
+ import { useImageChain, normalizeImageSources, NajmUIProvider } from './chunk-6UDJNTJ6.mjs';
2
2
  import React from 'react';
3
3
  import { useRouter } from 'next/navigation';
4
4
  import NextImage from 'next/image';
@@ -1,6 +1,6 @@
1
- import { useResolvedFeedbackLabels, useNajmPreferencesContext } from './chunk-EEBLEDNI.mjs';
2
- import { Button } from './chunk-XZL32HFR.mjs';
3
- import { useNajmDesign, cn } from './chunk-KVZACF4G.mjs';
1
+ import { useResolvedFeedbackLabels, useNajmPreferencesContext } from './chunk-6UDJNTJ6.mjs';
2
+ import { Button } from './chunk-ONE7GLIH.mjs';
3
+ import { useNajmDesign, cn } from './chunk-LK3SMYUP.mjs';
4
4
  import { humanizeToken, DEFAULT_PLACEHOLDER, formatRelativeTime, formatTime, formatDateTime, formatDate, formatPercent, formatNumber, formatCurrency } from './chunk-JABLSOQN.mjs';
5
5
  import * as React3 from 'react';
6
6
  import { createContext, useContext, useMemo, useState, useCallback } from 'react';
package/dist/index.d.ts CHANGED
@@ -2203,7 +2203,7 @@ interface NumberInputProps extends BaseProps {
2203
2203
  icon?: InputIcon;
2204
2204
  showIcon?: boolean;
2205
2205
  }
2206
- interface PasswordInputProps extends BaseProps {
2206
+ interface PasswordInputProps extends BaseProps, Omit<InputHTMLAttributes<HTMLInputElement>, "className" | "onChange" | "placeholder" | "type" | "value"> {
2207
2207
  value: string;
2208
2208
  onChange: (value: string) => void;
2209
2209
  placeholder?: string;
package/dist/index.mjs CHANGED
@@ -1,15 +1,15 @@
1
1
  import { resolveAvatarSrc } from './chunk-BEGOH366.mjs';
2
2
  export { isPlaceholderAvatar, resolveAvatarSrc } from './chunk-BEGOH366.mjs';
3
- import { NLoadingState, NErrorState, NEmptyState, useResolvedFormDevTools, useNBranding } from './chunk-2GFWF46W.mjs';
4
- export { FormDevToolsProvider, NBrandingProvider, NBrandingStateProvider, NEmptyState, NErrorState, NForbiddenState, NLoadingState, NNotFoundState, NPageLayout, NSpinner, NajmFormatProvider, buildFormFill, normalizeBranding, useNBranding, useNBrandingEditor, useNajmFormat, useNajmFormatContext } from './chunk-2GFWF46W.mjs';
5
- import { normalizeImageSources, useImageChain, useNBadgeDefaults, mergeBadgeMaps, resolveStatusColor, resolveBadgeStatusLabel, colorTextClass, useResolvedPaginationLabels } from './chunk-EEBLEDNI.mjs';
6
- export { DEFAULT_PAGINATION_KEY_PREFIX, DEFAULT_TIME_ZONE, EMPTY_DESIGN, NAJM_COLOR_TEXT_CLASSES, NAJM_STATUS_COLORS, NTableDefaultsProvider, NajmDesignEditorProvider, NajmPreferencesProvider, NajmUIProvider, buildPaginationLabels, colorTextClass, findStatusColor, normalizeStatusToken, resolveStatusColor, statusTextClass, useNTableDefaults, useNajmDesignEditor, useNajmPreferencesContext, useNajmTheme, useNajmTimeZone } from './chunk-EEBLEDNI.mjs';
7
- import { NajmScroll, useNajmScrollViewport, useTableStore, TableStoreContext, NTableJson } from './chunk-K7T7X6PX.mjs';
8
- export { NTableJson, NajmScroll, TableStoreContext, useTableStore } from './chunk-K7T7X6PX.mjs';
9
- import { inputBorderClasses, Button, NIcon, surfaceBorderClasses, buttonVariants, NButton, sidebarBorderClasses } from './chunk-XZL32HFR.mjs';
10
- export { Button, NButton, NIcon, buttonVariants, inputBorderClasses, sidebarBorderClasses, surfaceBorderClasses } from './chunk-XZL32HFR.mjs';
11
- import { useNajmComponentStyle, cn, NajmThemeContainerCtx, useNajmThemeMode, useNajmDesign, composePreset } from './chunk-KVZACF4G.mjs';
12
- export { NajmDesignProvider, NajmThemeProvider, cn, composePreset, resolvePreset, useNajmAppearance, useNajmComponentStyle, useNajmDesign, useNajmThemeMode } from './chunk-KVZACF4G.mjs';
3
+ import { NLoadingState, NErrorState, NEmptyState, useResolvedFormDevTools, useNBranding } from './chunk-ZXIVSNXV.mjs';
4
+ export { FormDevToolsProvider, NBrandingProvider, NBrandingStateProvider, NEmptyState, NErrorState, NForbiddenState, NLoadingState, NNotFoundState, NPageLayout, NSpinner, NajmFormatProvider, buildFormFill, normalizeBranding, useNBranding, useNBrandingEditor, useNajmFormat, useNajmFormatContext } from './chunk-ZXIVSNXV.mjs';
5
+ import { normalizeImageSources, useImageChain, useNBadgeDefaults, mergeBadgeMaps, resolveStatusColor, resolveBadgeStatusLabel, colorTextClass, useResolvedPaginationLabels } from './chunk-6UDJNTJ6.mjs';
6
+ export { DEFAULT_PAGINATION_KEY_PREFIX, DEFAULT_TIME_ZONE, EMPTY_DESIGN, NAJM_COLOR_TEXT_CLASSES, NAJM_STATUS_COLORS, NTableDefaultsProvider, NajmDesignEditorProvider, NajmPreferencesProvider, NajmUIProvider, buildPaginationLabels, colorTextClass, findStatusColor, normalizeStatusToken, resolveStatusColor, statusTextClass, useNTableDefaults, useNajmDesignEditor, useNajmPreferencesContext, useNajmTheme, useNajmTimeZone } from './chunk-6UDJNTJ6.mjs';
7
+ import { NajmScroll, useNajmScrollViewport, useTableStore, TableStoreContext, NTableJson } from './chunk-5JVFMOLI.mjs';
8
+ export { NTableJson, NajmScroll, TableStoreContext, useTableStore } from './chunk-5JVFMOLI.mjs';
9
+ import { inputBorderClasses, Button, NIcon, surfaceBorderClasses, buttonVariants, NButton, sidebarBorderClasses } from './chunk-ONE7GLIH.mjs';
10
+ export { Button, NButton, NIcon, buttonVariants, inputBorderClasses, sidebarBorderClasses, surfaceBorderClasses } from './chunk-ONE7GLIH.mjs';
11
+ import { useNajmComponentStyle, cn, NajmThemeContainerCtx, useNajmThemeMode, useNajmDesign, composePreset } from './chunk-LK3SMYUP.mjs';
12
+ export { NajmDesignProvider, NajmThemeProvider, cn, composePreset, resolvePreset, useNajmAppearance, useNajmComponentStyle, useNajmDesign, useNajmThemeMode } from './chunk-LK3SMYUP.mjs';
13
13
  export { DEFAULT_CARD_BREAKPOINT, DEFAULT_CARD_PAGINATION_KEY_PREFIX, buildCardPaginationLabels, createCardPagination, useCardViewport, useDesktopTableMode, useMediaQuery } from './chunk-OUS7OYVA.mjs';
14
14
  import './chunk-F5KXJCCJ.mjs';
15
15
  import { humanizeToken } from './chunk-JABLSOQN.mjs';
@@ -4349,13 +4349,13 @@ var NumberInput = ({ value, onChange, placeholder = "", icon, showIcon = true, i
4349
4349
  /* @__PURE__ */ jsx(Input, { type: "number", placeholder, value: value ?? "", onChange: (ev) => onChange(Number(ev.target.value)), className: "p-0 border-0 shadow-none bg-transparent dark:bg-transparent focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0 text-foreground placeholder:text-muted-foreground" })
4350
4350
  ] });
4351
4351
  };
4352
- var PasswordInput = ({ value, onChange, placeholder = "", icon, showIcon = true, iconColor, className = "", variant = "default", status = "default", bordered, borderColor }) => {
4352
+ var PasswordInput = ({ value, onChange, placeholder = "", icon, showIcon = true, iconColor, className = "", variant = "default", status = "default", bordered, borderColor, disabled = false, ...props }) => {
4353
4353
  const [showPassword, setShowPassword] = useState(false);
4354
4354
  const shouldDisplayIcon = Boolean(icon) && showIcon;
4355
4355
  const iconProps = getIconColorProps(iconColor, "h-4 w-4");
4356
- return /* @__PURE__ */ jsxs(BaseInput, { variant, status, bordered, borderColor, className: cn("gap-2", className), children: [
4356
+ return /* @__PURE__ */ jsxs(BaseInput, { variant, status, bordered, borderColor, className: cn("gap-2", className), disabled, children: [
4357
4357
  shouldDisplayIcon && /* @__PURE__ */ jsx("span", { className: iconProps.className, style: iconProps.style, children: resolveIcon(icon) }),
4358
- /* @__PURE__ */ jsx(Input, { type: showPassword ? "text" : "password", placeholder, value, onChange: (ev) => onChange(ev.target.value), className: "p-0 border-0 shadow-none bg-transparent dark:bg-transparent focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0 text-foreground placeholder:text-muted-foreground" }),
4358
+ /* @__PURE__ */ jsx(Input, { type: showPassword ? "text" : "password", placeholder, value, onChange: (ev) => onChange(ev.target.value), className: "p-0 border-0 shadow-none bg-transparent dark:bg-transparent focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0 text-foreground placeholder:text-muted-foreground", disabled, ...props }),
4359
4359
  showPassword ? /* @__PURE__ */ jsx(Eye, { className: "absolute right-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground cursor-pointer", onClick: () => setShowPassword(false) }) : /* @__PURE__ */ jsx(EyeOff, { className: "absolute right-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground cursor-pointer", onClick: () => setShowPassword(true) })
4360
4360
  ] });
4361
4361
  };
package/dist/json.mjs CHANGED
@@ -1,6 +1,6 @@
1
- export { NTableJson } from './chunk-K7T7X6PX.mjs';
2
- import { Button } from './chunk-XZL32HFR.mjs';
3
- import { cn } from './chunk-KVZACF4G.mjs';
1
+ export { NTableJson } from './chunk-5JVFMOLI.mjs';
2
+ import { Button } from './chunk-ONE7GLIH.mjs';
3
+ import { cn } from './chunk-LK3SMYUP.mjs';
4
4
  import './chunk-TFHWLE7N.mjs';
5
5
  import { useMemo, useRef, useCallback } from 'react';
6
6
  import CodeMirror from '@uiw/react-codemirror';
package/dist/theme.css CHANGED
@@ -307,10 +307,10 @@ input:autofill {
307
307
  overflow-x: auto;
308
308
  scrollbar-width: none;
309
309
  }
310
- .najm-overlay-scroll-x::-webkit-scrollbar {
311
- display: none;
312
- }
313
-
310
+ .najm-overlay-scroll-x::-webkit-scrollbar {
311
+ display: none;
312
+ }
313
+
314
314
  /* Responsive table actions stay discoverable on touch and tablet layouts.
315
315
  Fine-pointer desktops may keep the quieter hover/focus reveal treatment. */
316
316
  .ntable-card-action {
@@ -367,7 +367,7 @@ input:autofill {
367
367
  .nimage-input-compact-overlay:focus-visible {
368
368
  opacity: 1;
369
369
  }
370
- }
370
+ }
371
371
 
372
372
  /* OverlayScrollbars theme used by the <NajmScroll> component — a thin,
373
373
  translucent slate bar that floats over content with no reserved space.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "najm-kit",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Reusable React UI component package for Najm framework",