najm-kit 2.1.32 → 2.1.33

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/dist/index.d.ts CHANGED
@@ -267,6 +267,12 @@ interface NThemeCustomizerProps {
267
267
  onPreviewModeChange: (mode: NajmMode) => void;
268
268
  /** Whether to show the light/dark preview-mode control in the theme tab. */
269
269
  showPreviewMode?: boolean;
270
+ /**
271
+ * Whether to render the internal Theme/Typography tab bar. Defaults to `true`.
272
+ * When `false`, the first resolved entry from `tabs` is rendered directly so
273
+ * a host application can present a single section inside its own tabs.
274
+ */
275
+ showTabs?: boolean;
270
276
  tabs?: readonly NThemeCustomizerTab[];
271
277
  fontOptions?: readonly NThemeCustomizerFontOption[];
272
278
  labels?: Partial<NThemeCustomizerLabels>;
@@ -274,7 +280,7 @@ interface NThemeCustomizerProps {
274
280
  className?: string;
275
281
  }
276
282
 
277
- declare function NThemeCustomizer({ value, factoryValue, onChange, previewMode, onPreviewModeChange, showPreviewMode, tabs, fontOptions, labels, disabled, className, }: NThemeCustomizerProps): react_jsx_runtime.JSX.Element;
283
+ declare function NThemeCustomizer({ value, factoryValue, onChange, previewMode, onPreviewModeChange, showPreviewMode, showTabs, tabs, fontOptions, labels, disabled, className, }: NThemeCustomizerProps): react_jsx_runtime.JSX.Element;
278
284
 
279
285
  /** Keeps authored TypeScript theme objects type-checked without changing them. */
280
286
  declare function defineNajmThemeConfig(config: NajmThemeConfig): NajmThemeConfig;
package/dist/index.mjs CHANGED
@@ -3289,6 +3289,7 @@ function NThemeCustomizer({
3289
3289
  previewMode,
3290
3290
  onPreviewModeChange,
3291
3291
  showPreviewMode = true,
3292
+ showTabs = true,
3292
3293
  tabs,
3293
3294
  fontOptions,
3294
3295
  labels,
@@ -3350,115 +3351,119 @@ function NThemeCustomizer({
3350
3351
  }
3351
3352
  return out;
3352
3353
  }, [labels]);
3354
+ const themeContent = /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
3355
+ /* @__PURE__ */ jsx(
3356
+ ThemeCustomizerThemeTab,
3357
+ {
3358
+ value,
3359
+ factoryValue,
3360
+ onChange,
3361
+ previewMode,
3362
+ onPreviewModeChange,
3363
+ showPreviewMode,
3364
+ disabled,
3365
+ labels: {
3366
+ resetField: resetFieldLabel,
3367
+ resetSection: resetSectionLabel,
3368
+ colorSwatchFallback: colorSwatchFallbackLabel,
3369
+ defaultOption: defaultOptionLabel,
3370
+ lightMode: resolveLabel("lightMode", labels),
3371
+ darkMode: resolveLabel("darkMode", labels),
3372
+ surfaceGroup: resolveLabel("surfaceGroup", labels),
3373
+ brandGroup: resolveLabel("brandGroup", labels),
3374
+ feedbackGroup: resolveLabel("feedbackGroup", labels),
3375
+ borderFocusGroup: resolveLabel("borderFocusGroup", labels),
3376
+ sidebarGroup: resolveLabel("sidebarGroup", labels),
3377
+ chartsGroup: resolveLabel("chartsGroup", labels),
3378
+ globalBorderWidth: resolveLabel("globalBorderWidth", labels),
3379
+ tableSubsection: resolveLabel("tableSubsection", labels),
3380
+ tableHeaderColor: resolveLabel("tableHeaderColor", labels),
3381
+ tableHeaderTextColor: resolveLabel("tableHeaderTextColor", labels),
3382
+ tableBorderColor: resolveLabel("tableBorderColor", labels),
3383
+ previewMode: resolveLabel("previewMode", labels),
3384
+ tokens: tokenLabels,
3385
+ options: labels?.options ?? {}
3386
+ }
3387
+ }
3388
+ ),
3389
+ /* @__PURE__ */ jsx("div", { className: "border-t border-border pt-4", children: /* @__PURE__ */ jsx(
3390
+ ThemeCustomizerComponentsLayoutTab,
3391
+ {
3392
+ value,
3393
+ factoryValue,
3394
+ onChange,
3395
+ disabled,
3396
+ showTableColors: false,
3397
+ labels: {
3398
+ resetField: resetFieldLabel,
3399
+ defaultOption: defaultOptionLabel,
3400
+ layoutSubsection: resolveLabel("layoutSubsection", labels),
3401
+ pageHeaderSubsection: resolveLabel("pageHeaderSubsection", labels),
3402
+ sidebarSubsection: resolveLabel("sidebarSubsection", labels),
3403
+ tableSubsection: resolveLabel("tableSubsection", labels),
3404
+ inputSubsection: resolveLabel("inputSubsection", labels),
3405
+ pageGutter: resolveLabel("pageGutter", labels),
3406
+ sectionGap: resolveLabel("sectionGap", labels),
3407
+ pageHeaderCard: resolveLabel("pageHeaderCard", labels),
3408
+ sidebarSectionLabels: resolveLabel("sidebarSectionLabels", labels),
3409
+ sidebarSectionSeparators: resolveLabel("sidebarSectionSeparators", labels),
3410
+ tableHeaderColor: resolveLabel("tableHeaderColor", labels),
3411
+ tableHeaderTextColor: resolveLabel("tableHeaderTextColor", labels),
3412
+ tableBorderColor: resolveLabel("tableBorderColor", labels),
3413
+ inputBorderWidth: resolveLabel("inputBorderWidth", labels),
3414
+ globalBorderWidth: resolveLabel("globalBorderWidth", labels),
3415
+ globalRadius: resolveLabel("globalRadius", labels)
3416
+ }
3417
+ }
3418
+ ) })
3419
+ ] });
3420
+ const typographyContent = /* @__PURE__ */ jsx(
3421
+ ThemeCustomizerTypographyTab,
3422
+ {
3423
+ value,
3424
+ factoryValue,
3425
+ onChange,
3426
+ fontOptions,
3427
+ disabled,
3428
+ labels: {
3429
+ resetField: resetFieldLabel,
3430
+ defaultOption: defaultOptionLabel,
3431
+ fontSans: resolveLabel("fontSans", labels),
3432
+ fontHeading: resolveLabel("fontHeading", labels),
3433
+ fontMono: resolveLabel("fontMono", labels),
3434
+ advancedTypography: resolveLabel("advancedTypography", labels),
3435
+ baseSize: resolveLabel("baseSize", labels),
3436
+ scale: resolveLabel("scale", labels),
3437
+ options: labels?.options ?? {},
3438
+ lineHeight: resolveLabel("lineHeight", labels),
3439
+ letterSpacing: resolveLabel("letterSpacing", labels)
3440
+ }
3441
+ }
3442
+ );
3353
3443
  const items = visibleTabs.map((tab) => {
3354
3444
  if (tab === "theme") {
3355
3445
  return {
3356
3446
  value: TAB_VALUE.theme,
3357
3447
  label: themeLabel,
3358
3448
  disabled,
3359
- content: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
3360
- /* @__PURE__ */ jsx(
3361
- ThemeCustomizerThemeTab,
3362
- {
3363
- value,
3364
- factoryValue,
3365
- onChange,
3366
- previewMode,
3367
- onPreviewModeChange,
3368
- showPreviewMode,
3369
- disabled,
3370
- labels: {
3371
- resetField: resetFieldLabel,
3372
- resetSection: resetSectionLabel,
3373
- colorSwatchFallback: colorSwatchFallbackLabel,
3374
- defaultOption: defaultOptionLabel,
3375
- lightMode: resolveLabel("lightMode", labels),
3376
- darkMode: resolveLabel("darkMode", labels),
3377
- surfaceGroup: resolveLabel("surfaceGroup", labels),
3378
- brandGroup: resolveLabel("brandGroup", labels),
3379
- feedbackGroup: resolveLabel("feedbackGroup", labels),
3380
- borderFocusGroup: resolveLabel("borderFocusGroup", labels),
3381
- sidebarGroup: resolveLabel("sidebarGroup", labels),
3382
- chartsGroup: resolveLabel("chartsGroup", labels),
3383
- globalBorderWidth: resolveLabel("globalBorderWidth", labels),
3384
- tableSubsection: resolveLabel("tableSubsection", labels),
3385
- tableHeaderColor: resolveLabel("tableHeaderColor", labels),
3386
- tableHeaderTextColor: resolveLabel("tableHeaderTextColor", labels),
3387
- tableBorderColor: resolveLabel("tableBorderColor", labels),
3388
- previewMode: resolveLabel("previewMode", labels),
3389
- tokens: tokenLabels,
3390
- options: labels?.options ?? {}
3391
- }
3392
- }
3393
- ),
3394
- /* @__PURE__ */ jsx("div", { className: "border-t border-border pt-4", children: /* @__PURE__ */ jsx(
3395
- ThemeCustomizerComponentsLayoutTab,
3396
- {
3397
- value,
3398
- factoryValue,
3399
- onChange,
3400
- disabled,
3401
- showTableColors: false,
3402
- labels: {
3403
- resetField: resetFieldLabel,
3404
- defaultOption: defaultOptionLabel,
3405
- layoutSubsection: resolveLabel("layoutSubsection", labels),
3406
- pageHeaderSubsection: resolveLabel("pageHeaderSubsection", labels),
3407
- sidebarSubsection: resolveLabel("sidebarSubsection", labels),
3408
- tableSubsection: resolveLabel("tableSubsection", labels),
3409
- inputSubsection: resolveLabel("inputSubsection", labels),
3410
- pageGutter: resolveLabel("pageGutter", labels),
3411
- sectionGap: resolveLabel("sectionGap", labels),
3412
- pageHeaderCard: resolveLabel("pageHeaderCard", labels),
3413
- sidebarSectionLabels: resolveLabel("sidebarSectionLabels", labels),
3414
- sidebarSectionSeparators: resolveLabel("sidebarSectionSeparators", labels),
3415
- tableHeaderColor: resolveLabel("tableHeaderColor", labels),
3416
- tableHeaderTextColor: resolveLabel("tableHeaderTextColor", labels),
3417
- tableBorderColor: resolveLabel("tableBorderColor", labels),
3418
- inputBorderWidth: resolveLabel("inputBorderWidth", labels),
3419
- globalBorderWidth: resolveLabel("globalBorderWidth", labels),
3420
- globalRadius: resolveLabel("globalRadius", labels)
3421
- }
3422
- }
3423
- ) })
3424
- ] })
3449
+ content: themeContent
3425
3450
  };
3426
3451
  }
3427
3452
  return {
3428
3453
  value: TAB_VALUE.typography,
3429
3454
  label: typographyLabel,
3430
3455
  disabled,
3431
- content: /* @__PURE__ */ jsx(
3432
- ThemeCustomizerTypographyTab,
3433
- {
3434
- value,
3435
- factoryValue,
3436
- onChange,
3437
- fontOptions,
3438
- disabled,
3439
- labels: {
3440
- resetField: resetFieldLabel,
3441
- defaultOption: defaultOptionLabel,
3442
- fontSans: resolveLabel("fontSans", labels),
3443
- fontHeading: resolveLabel("fontHeading", labels),
3444
- fontMono: resolveLabel("fontMono", labels),
3445
- advancedTypography: resolveLabel("advancedTypography", labels),
3446
- baseSize: resolveLabel("baseSize", labels),
3447
- scale: resolveLabel("scale", labels),
3448
- options: labels?.options ?? {},
3449
- lineHeight: resolveLabel("lineHeight", labels),
3450
- letterSpacing: resolveLabel("letterSpacing", labels)
3451
- }
3452
- }
3453
- )
3456
+ content: typographyContent
3454
3457
  };
3455
3458
  });
3456
3459
  const handleResetTheme = () => onChange(resetComponentsLayoutSection(resetThemeSection(value, factoryValue), factoryValue));
3457
3460
  const handleResetTypography = () => onChange(resetTypographySection(value, factoryValue));
3458
3461
  const handleReset = () => {
3459
- if (activeTab === TAB_VALUE.theme) handleResetTheme();
3462
+ const target = showTabs ? activeTab : TAB_VALUE[firstTab];
3463
+ if (target === TAB_VALUE.theme) handleResetTheme();
3460
3464
  else handleResetTypography();
3461
3465
  };
3466
+ const directContent = items[0]?.content ?? themeContent;
3462
3467
  return /* @__PURE__ */ jsxs(
3463
3468
  "div",
3464
3469
  {
@@ -3469,7 +3474,7 @@ function NThemeCustomizer({
3469
3474
  className
3470
3475
  ),
3471
3476
  children: [
3472
- /* @__PURE__ */ jsx(
3477
+ showTabs ? /* @__PURE__ */ jsx(
3473
3478
  NTabs,
3474
3479
  {
3475
3480
  items,
@@ -3483,7 +3488,7 @@ function NThemeCustomizer({
3483
3488
  trigger: "min-w-0 px-1.5 text-xs"
3484
3489
  }
3485
3490
  }
3486
- ),
3491
+ ) : directContent,
3487
3492
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end", children: /* @__PURE__ */ jsxs(
3488
3493
  NButton,
3489
3494
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "najm-kit",
3
- "version": "2.1.32",
3
+ "version": "2.1.33",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "Reusable React UI component package for Najm framework",