@loykin/designkit 0.0.1-dev.7 → 0.0.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/dist/index.d.cts CHANGED
@@ -330,6 +330,12 @@ interface WorkbenchBodyTemplateProps {
330
330
  }
331
331
  declare function WorkbenchBodyTemplate({ theme, className, contentClassName, title, description, status, topBar, headerRight, actions, leftPane, mainPane, rightPane, bottomPane, children, resizable, leftPaneCollapsed, rightPaneCollapsed, bottomPaneCollapsed, leftPaneWidth, rightPaneWidth, bottomPaneHeight, minLeftPaneWidth, maxLeftPaneWidth, minRightPaneWidth, maxRightPaneWidth, minBottomPaneHeight, maxBottomPaneHeight, onResize, leftPaneClassName, mainPaneClassName, rightPaneClassName, bottomPaneClassName, leftPaneLabel, rightPaneLabel, }: WorkbenchBodyTemplateProps): React__default.JSX.Element;
332
332
 
333
+ /**
334
+ * Defines one tab inside `DataBodyTemplate`.
335
+ *
336
+ * Must be rendered beneath a `DataBodyTemplate` root. Do not mix `Tab`, `Section`,
337
+ * and `Body` as sibling layout modes in the same root.
338
+ */
333
339
  interface DataBodyTabProps {
334
340
  id: string;
335
341
  label: React__default.ReactNode;
@@ -338,11 +344,23 @@ interface DataBodyTabProps {
338
344
  children: React__default.ReactNode;
339
345
  }
340
346
  declare function DataBodyTab(_props: DataBodyTabProps): null;
347
+ /**
348
+ * Defines the single-pane body of `DataBodyTemplate`.
349
+ *
350
+ * Must be rendered beneath a `DataBodyTemplate` root. Use this instead of `Tab`
351
+ * or `Section` when the page has one full-height content pane.
352
+ */
341
353
  interface DataBodyBodyProps {
342
354
  children?: React__default.ReactNode;
343
355
  className?: string;
344
356
  }
345
357
  declare function DataBodyBody(_props: DataBodyBodyProps): null;
358
+ /**
359
+ * Defines one section in the left-navigation layout of `DataBodyTemplate`.
360
+ *
361
+ * Must be rendered beneath a `DataBodyTemplate` root. Do not combine sections
362
+ * with `Tab` or `Body` siblings in the same root.
363
+ */
346
364
  interface DataBodySectionProps {
347
365
  id: string;
348
366
  label: React__default.ReactNode;
@@ -351,14 +369,24 @@ interface DataBodySectionProps {
351
369
  children?: React__default.ReactNode;
352
370
  }
353
371
  declare function DataBodySection(_props: DataBodySectionProps): null;
372
+ /** Adds summary content beneath the header of a `DataBodyTemplate` root. */
354
373
  interface DataBodySummaryProps {
355
374
  children?: React__default.ReactNode;
356
375
  }
357
376
  declare function DataBodySummary(_props: DataBodySummaryProps): null;
358
377
  type GroupLayout = 'stacked' | 'horizontal' | 'inline' | 'split';
359
378
  type GroupVariant = 'card' | 'plain' | 'bordered';
379
+ /**
380
+ * Groups related content inside `DataBodyTemplate`.
381
+ *
382
+ * `DataBodyTemplate.Group` is a compound child and must never be rendered as a
383
+ * standalone page component. Wrap it in `DataBodyTemplate`, optionally inside a
384
+ * `Tab`, `Section`, or `Body`.
385
+ */
360
386
  interface DataBodyGroupProps {
387
+ /** Visual arrangement of the group. @defaultValue `'stacked'` */
361
388
  layout?: GroupLayout;
389
+ /** Surface treatment. Defaults depend on `layout`. */
362
390
  variant?: GroupVariant;
363
391
  title?: React__default.ReactNode;
364
392
  description?: React__default.ReactNode;
@@ -368,12 +396,14 @@ interface DataBodyGroupProps {
368
396
  children?: React__default.ReactNode;
369
397
  }
370
398
  declare function DataBodyGroup(props: DataBodyGroupProps): React__default.JSX.Element;
399
+ /** Read-only label/value content for a `DataBodyTemplate.Group`. */
371
400
  interface DataBodyFieldProps {
372
401
  label: string;
373
402
  description?: string;
374
403
  children?: React__default.ReactNode;
375
404
  }
376
405
  declare function DataBodyField({ label, description, children }: DataBodyFieldProps): React__default.JSX.Element;
406
+ /** Form label/control content for a `DataBodyTemplate.Group`. */
377
407
  interface DataBodyRowProps {
378
408
  label: string;
379
409
  description?: string;
@@ -381,6 +411,12 @@ interface DataBodyRowProps {
381
411
  children?: React__default.ReactNode;
382
412
  }
383
413
  declare function DataBodyRow({ label, description, required, children }: DataBodyRowProps): React__default.JSX.Element;
414
+ /**
415
+ * Props for the required root of the `DataBodyTemplate` compound component.
416
+ *
417
+ * Choose one primary child mode: direct content/groups, `Tab`, `Section`, or
418
+ * `Body`. Do not combine those layout modes in the same root.
419
+ */
384
420
  interface DataBodyTemplateProps {
385
421
  theme?: React__default.CSSProperties;
386
422
  className?: string;
@@ -397,7 +433,25 @@ interface DataBodyTemplateProps {
397
433
  children?: React__default.ReactNode;
398
434
  contentClassName?: string;
399
435
  }
400
- declare function Root$1({ theme, className, topBar, title, description, status, actions, toolbarLeft, toolbarRight, activeTab: controlledActive, defaultTab, onTabChange, children, contentClassName, }: DataBodyTemplateProps): React__default.JSX.Element;
436
+ declare function Root$1(props: DataBodyTemplateProps): React__default.JSX.Element;
437
+ /**
438
+ * Page-level template for data, list, tab, form, and settings experiences.
439
+ *
440
+ * Compound members such as `DataBodyTemplate.Group`, `Tab`, `Section`, `Body`,
441
+ * `Row`, and `Field` must be rendered beneath this root. Rendering a compound
442
+ * member without the root throws a descriptive runtime error.
443
+ *
444
+ * @example
445
+ * ```tsx
446
+ * <DataBodyTemplate title="Settings">
447
+ * <DataBodyTemplate.Group title="Profile">
448
+ * <DataBodyTemplate.Row label="Name">
449
+ * <Input />
450
+ * </DataBodyTemplate.Row>
451
+ * </DataBodyTemplate.Group>
452
+ * </DataBodyTemplate>
453
+ * ```
454
+ */
401
455
  declare const DataBodyTemplate: typeof Root$1 & {
402
456
  Body: typeof DataBodyBody;
403
457
  Tab: typeof DataBodyTab;
@@ -443,6 +497,8 @@ interface DetailBodyTemplateProps {
443
497
  aside?: React__default.ReactNode;
444
498
  summary?: React__default.ReactNode;
445
499
  stickyAside?: boolean;
500
+ /** Class applied to the inner content + aside layout container. */
501
+ layoutClassName?: string;
446
502
  contentClassName?: string;
447
503
  mediaClassName?: string;
448
504
  asideClassName?: string;
@@ -475,7 +531,7 @@ interface DetailBodySectionProps {
475
531
  children?: React__default.ReactNode;
476
532
  }
477
533
  declare function DetailBodySection({ title, description, actions, surface, className, children, }: DetailBodySectionProps): React__default.JSX.Element;
478
- declare function DetailBodyTemplateRoot({ variant, theme, className, topBar, header, lead, eyebrow, title, description, status, actions, media, aside, summary, stickyAside, contentClassName, mediaClassName, asideClassName, children, }: DetailBodyTemplateProps): React__default.JSX.Element;
534
+ declare function DetailBodyTemplateRoot({ variant, theme, className, topBar, header, lead, eyebrow, title, description, status, actions, media, aside, summary, stickyAside, layoutClassName, contentClassName, mediaClassName, asideClassName, children, }: DetailBodyTemplateProps): React__default.JSX.Element;
479
535
  declare const DetailBodyTemplate: typeof DetailBodyTemplateRoot & {
480
536
  Header: typeof DetailBodyHeader;
481
537
  Tab: typeof DetailBodyTab;
package/dist/index.d.ts CHANGED
@@ -330,6 +330,12 @@ interface WorkbenchBodyTemplateProps {
330
330
  }
331
331
  declare function WorkbenchBodyTemplate({ theme, className, contentClassName, title, description, status, topBar, headerRight, actions, leftPane, mainPane, rightPane, bottomPane, children, resizable, leftPaneCollapsed, rightPaneCollapsed, bottomPaneCollapsed, leftPaneWidth, rightPaneWidth, bottomPaneHeight, minLeftPaneWidth, maxLeftPaneWidth, minRightPaneWidth, maxRightPaneWidth, minBottomPaneHeight, maxBottomPaneHeight, onResize, leftPaneClassName, mainPaneClassName, rightPaneClassName, bottomPaneClassName, leftPaneLabel, rightPaneLabel, }: WorkbenchBodyTemplateProps): React__default.JSX.Element;
332
332
 
333
+ /**
334
+ * Defines one tab inside `DataBodyTemplate`.
335
+ *
336
+ * Must be rendered beneath a `DataBodyTemplate` root. Do not mix `Tab`, `Section`,
337
+ * and `Body` as sibling layout modes in the same root.
338
+ */
333
339
  interface DataBodyTabProps {
334
340
  id: string;
335
341
  label: React__default.ReactNode;
@@ -338,11 +344,23 @@ interface DataBodyTabProps {
338
344
  children: React__default.ReactNode;
339
345
  }
340
346
  declare function DataBodyTab(_props: DataBodyTabProps): null;
347
+ /**
348
+ * Defines the single-pane body of `DataBodyTemplate`.
349
+ *
350
+ * Must be rendered beneath a `DataBodyTemplate` root. Use this instead of `Tab`
351
+ * or `Section` when the page has one full-height content pane.
352
+ */
341
353
  interface DataBodyBodyProps {
342
354
  children?: React__default.ReactNode;
343
355
  className?: string;
344
356
  }
345
357
  declare function DataBodyBody(_props: DataBodyBodyProps): null;
358
+ /**
359
+ * Defines one section in the left-navigation layout of `DataBodyTemplate`.
360
+ *
361
+ * Must be rendered beneath a `DataBodyTemplate` root. Do not combine sections
362
+ * with `Tab` or `Body` siblings in the same root.
363
+ */
346
364
  interface DataBodySectionProps {
347
365
  id: string;
348
366
  label: React__default.ReactNode;
@@ -351,14 +369,24 @@ interface DataBodySectionProps {
351
369
  children?: React__default.ReactNode;
352
370
  }
353
371
  declare function DataBodySection(_props: DataBodySectionProps): null;
372
+ /** Adds summary content beneath the header of a `DataBodyTemplate` root. */
354
373
  interface DataBodySummaryProps {
355
374
  children?: React__default.ReactNode;
356
375
  }
357
376
  declare function DataBodySummary(_props: DataBodySummaryProps): null;
358
377
  type GroupLayout = 'stacked' | 'horizontal' | 'inline' | 'split';
359
378
  type GroupVariant = 'card' | 'plain' | 'bordered';
379
+ /**
380
+ * Groups related content inside `DataBodyTemplate`.
381
+ *
382
+ * `DataBodyTemplate.Group` is a compound child and must never be rendered as a
383
+ * standalone page component. Wrap it in `DataBodyTemplate`, optionally inside a
384
+ * `Tab`, `Section`, or `Body`.
385
+ */
360
386
  interface DataBodyGroupProps {
387
+ /** Visual arrangement of the group. @defaultValue `'stacked'` */
361
388
  layout?: GroupLayout;
389
+ /** Surface treatment. Defaults depend on `layout`. */
362
390
  variant?: GroupVariant;
363
391
  title?: React__default.ReactNode;
364
392
  description?: React__default.ReactNode;
@@ -368,12 +396,14 @@ interface DataBodyGroupProps {
368
396
  children?: React__default.ReactNode;
369
397
  }
370
398
  declare function DataBodyGroup(props: DataBodyGroupProps): React__default.JSX.Element;
399
+ /** Read-only label/value content for a `DataBodyTemplate.Group`. */
371
400
  interface DataBodyFieldProps {
372
401
  label: string;
373
402
  description?: string;
374
403
  children?: React__default.ReactNode;
375
404
  }
376
405
  declare function DataBodyField({ label, description, children }: DataBodyFieldProps): React__default.JSX.Element;
406
+ /** Form label/control content for a `DataBodyTemplate.Group`. */
377
407
  interface DataBodyRowProps {
378
408
  label: string;
379
409
  description?: string;
@@ -381,6 +411,12 @@ interface DataBodyRowProps {
381
411
  children?: React__default.ReactNode;
382
412
  }
383
413
  declare function DataBodyRow({ label, description, required, children }: DataBodyRowProps): React__default.JSX.Element;
414
+ /**
415
+ * Props for the required root of the `DataBodyTemplate` compound component.
416
+ *
417
+ * Choose one primary child mode: direct content/groups, `Tab`, `Section`, or
418
+ * `Body`. Do not combine those layout modes in the same root.
419
+ */
384
420
  interface DataBodyTemplateProps {
385
421
  theme?: React__default.CSSProperties;
386
422
  className?: string;
@@ -397,7 +433,25 @@ interface DataBodyTemplateProps {
397
433
  children?: React__default.ReactNode;
398
434
  contentClassName?: string;
399
435
  }
400
- declare function Root$1({ theme, className, topBar, title, description, status, actions, toolbarLeft, toolbarRight, activeTab: controlledActive, defaultTab, onTabChange, children, contentClassName, }: DataBodyTemplateProps): React__default.JSX.Element;
436
+ declare function Root$1(props: DataBodyTemplateProps): React__default.JSX.Element;
437
+ /**
438
+ * Page-level template for data, list, tab, form, and settings experiences.
439
+ *
440
+ * Compound members such as `DataBodyTemplate.Group`, `Tab`, `Section`, `Body`,
441
+ * `Row`, and `Field` must be rendered beneath this root. Rendering a compound
442
+ * member without the root throws a descriptive runtime error.
443
+ *
444
+ * @example
445
+ * ```tsx
446
+ * <DataBodyTemplate title="Settings">
447
+ * <DataBodyTemplate.Group title="Profile">
448
+ * <DataBodyTemplate.Row label="Name">
449
+ * <Input />
450
+ * </DataBodyTemplate.Row>
451
+ * </DataBodyTemplate.Group>
452
+ * </DataBodyTemplate>
453
+ * ```
454
+ */
401
455
  declare const DataBodyTemplate: typeof Root$1 & {
402
456
  Body: typeof DataBodyBody;
403
457
  Tab: typeof DataBodyTab;
@@ -443,6 +497,8 @@ interface DetailBodyTemplateProps {
443
497
  aside?: React__default.ReactNode;
444
498
  summary?: React__default.ReactNode;
445
499
  stickyAside?: boolean;
500
+ /** Class applied to the inner content + aside layout container. */
501
+ layoutClassName?: string;
446
502
  contentClassName?: string;
447
503
  mediaClassName?: string;
448
504
  asideClassName?: string;
@@ -475,7 +531,7 @@ interface DetailBodySectionProps {
475
531
  children?: React__default.ReactNode;
476
532
  }
477
533
  declare function DetailBodySection({ title, description, actions, surface, className, children, }: DetailBodySectionProps): React__default.JSX.Element;
478
- declare function DetailBodyTemplateRoot({ variant, theme, className, topBar, header, lead, eyebrow, title, description, status, actions, media, aside, summary, stickyAside, contentClassName, mediaClassName, asideClassName, children, }: DetailBodyTemplateProps): React__default.JSX.Element;
534
+ declare function DetailBodyTemplateRoot({ variant, theme, className, topBar, header, lead, eyebrow, title, description, status, actions, media, aside, summary, stickyAside, layoutClassName, contentClassName, mediaClassName, asideClassName, children, }: DetailBodyTemplateProps): React__default.JSX.Element;
479
535
  declare const DetailBodyTemplate: typeof DetailBodyTemplateRoot & {
480
536
  Header: typeof DetailBodyHeader;
481
537
  Tab: typeof DetailBodyTab;
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import { clsx } from 'clsx';
3
3
  import { twMerge } from 'tailwind-merge';
4
4
  import { Button as Button$1 } from '@base-ui/react/button';
5
5
  import { cva } from 'class-variance-authority';
6
- import { jsxs, jsx, Fragment as Fragment$1 } from 'react/jsx-runtime';
6
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
7
  import { Avatar as Avatar$1 } from '@base-ui/react/avatar';
8
8
  import { mergeProps } from '@base-ui/react/merge-props';
9
9
  import { useRender } from '@base-ui/react/use-render';
@@ -18,7 +18,7 @@ import { Select as Select$1 } from '@base-ui/react/select';
18
18
  import { Separator as Separator$1 } from '@base-ui/react/separator';
19
19
  import { Dialog } from '@base-ui/react/dialog';
20
20
  import * as React2 from 'react';
21
- import React2__default, { createContext, forwardRef, useContext, useEffect, useMemo, Children, useState, Fragment, useCallback } from 'react';
21
+ import React2__default, { createContext, forwardRef, useContext, useEffect, useMemo, Children, useState, Fragment as Fragment$1, useCallback } from 'react';
22
22
  import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
23
23
  import { Slider as Slider$1 } from '@base-ui/react/slider';
24
24
  import { Switch as Switch$1 } from '@base-ui/react/switch';
@@ -1458,7 +1458,7 @@ function Sidebar({
1458
1458
  /* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }),
1459
1459
  /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })
1460
1460
  ] }),
1461
- /* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col", children })
1461
+ /* @__PURE__ */ jsx("div", { className: "flex h-full min-h-0 w-full flex-col", children })
1462
1462
  ]
1463
1463
  }
1464
1464
  ) });
@@ -2645,7 +2645,7 @@ function WorkbenchBodyTemplate({
2645
2645
  ] })
2646
2646
  ] }),
2647
2647
  /* @__PURE__ */ jsxs("div", { className: cn("flex min-h-0 flex-1 overflow-hidden", contentClassName), children: [
2648
- showLeftPane && /* @__PURE__ */ jsxs(Fragment$1, { children: [
2648
+ showLeftPane && /* @__PURE__ */ jsxs(Fragment, { children: [
2649
2649
  /* @__PURE__ */ jsx(
2650
2650
  "aside",
2651
2651
  {
@@ -2684,8 +2684,8 @@ function WorkbenchBodyTemplate({
2684
2684
  )
2685
2685
  ] }),
2686
2686
  /* @__PURE__ */ jsxs("main", { className: cn("flex min-w-0 flex-1 flex-col overflow-hidden", mainPaneClassName), children: [
2687
- /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: mainPane ?? children }),
2688
- showBottomPane && /* @__PURE__ */ jsxs(Fragment$1, { children: [
2687
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto", children: mainPane ?? children }),
2688
+ showBottomPane && /* @__PURE__ */ jsxs(Fragment, { children: [
2689
2689
  resizable && /* @__PURE__ */ jsx(
2690
2690
  ResizeHandle,
2691
2691
  {
@@ -2724,7 +2724,7 @@ function WorkbenchBodyTemplate({
2724
2724
  )
2725
2725
  ] })
2726
2726
  ] }),
2727
- showRightPane && /* @__PURE__ */ jsxs(Fragment$1, { children: [
2727
+ showRightPane && /* @__PURE__ */ jsxs(Fragment, { children: [
2728
2728
  resizable && /* @__PURE__ */ jsx(
2729
2729
  ResizeHandle,
2730
2730
  {
@@ -2765,19 +2765,30 @@ function WorkbenchBodyTemplate({
2765
2765
  ] })
2766
2766
  ] });
2767
2767
  }
2768
+ var DataBodyTemplateContext = React2__default.createContext(false);
2769
+ function useDataBodyTemplateParent(component) {
2770
+ if (!React2__default.useContext(DataBodyTemplateContext)) {
2771
+ throw new Error(
2772
+ `[DesignKit] <DataBodyTemplate.${component}> must be rendered inside <DataBodyTemplate>. Wrap it like: <DataBodyTemplate><DataBodyTemplate.${component}>...</DataBodyTemplate.${component}></DataBodyTemplate>.`
2773
+ );
2774
+ }
2775
+ }
2768
2776
  function DataBodyTab(_props) {
2777
+ useDataBodyTemplateParent("Tab");
2769
2778
  return null;
2770
2779
  }
2771
2780
  function isDataBodyTab(node) {
2772
2781
  return Boolean(node && typeof node === "object" && "type" in node && node.type === DataBodyTab);
2773
2782
  }
2774
2783
  function DataBodyBody(_props) {
2784
+ useDataBodyTemplateParent("Body");
2775
2785
  return null;
2776
2786
  }
2777
2787
  function isDataBodyBody(node) {
2778
2788
  return Boolean(node && typeof node === "object" && "type" in node && node.type === DataBodyBody);
2779
2789
  }
2780
2790
  function DataBodySection(_props) {
2791
+ useDataBodyTemplateParent("Section");
2781
2792
  return null;
2782
2793
  }
2783
2794
  function isDataBodySection(node) {
@@ -2786,6 +2797,7 @@ function isDataBodySection(node) {
2786
2797
  );
2787
2798
  }
2788
2799
  function DataBodySummary(_props) {
2800
+ useDataBodyTemplateParent("Summary");
2789
2801
  return null;
2790
2802
  }
2791
2803
  function isDataBodySummary(node) {
@@ -2800,6 +2812,7 @@ var layoutDefaultVariant = {
2800
2812
  split: "bordered"
2801
2813
  };
2802
2814
  function DataBodyGroup(props) {
2815
+ useDataBodyTemplateParent("Group");
2803
2816
  return renderGroupProps(props);
2804
2817
  }
2805
2818
  function isDataBodyGroup(node) {
@@ -2819,12 +2832,12 @@ function GroupWrapper({
2819
2832
  }
2820
2833
  return /* @__PURE__ */ jsx("div", { className: "rounded-(--radius) border border-border p-(--designkit-panel-gap)", children });
2821
2834
  }
2822
- return /* @__PURE__ */ jsx(Fragment$1, { children });
2835
+ return /* @__PURE__ */ jsx(Fragment, { children });
2823
2836
  }
2824
2837
  function renderGroups(nodes) {
2825
2838
  const childArray = Children.toArray(nodes);
2826
2839
  if (!childArray.some(isDataBodyGroup)) return nodes;
2827
- return /* @__PURE__ */ jsx(Fragment$1, { children: childArray.map((child, i) => /* @__PURE__ */ jsx(Fragment, { children: isDataBodyGroup(child) ? renderGroup(child) : child }, i)) });
2840
+ return /* @__PURE__ */ jsx(Fragment, { children: childArray.map((child, i) => /* @__PURE__ */ jsx(Fragment$1, { children: isDataBodyGroup(child) ? renderGroup(child) : child }, i)) });
2828
2841
  }
2829
2842
  function renderGroup(group) {
2830
2843
  return renderGroupProps(group.props);
@@ -2897,6 +2910,7 @@ function renderGroupProps(props) {
2897
2910
  ] });
2898
2911
  }
2899
2912
  function DataBodyField({ label, description, children }) {
2913
+ useDataBodyTemplateParent("Field");
2900
2914
  return /* @__PURE__ */ jsxs(
2901
2915
  "div",
2902
2916
  {
@@ -2913,6 +2927,7 @@ function DataBodyField({ label, description, children }) {
2913
2927
  );
2914
2928
  }
2915
2929
  function DataBodyRow({ label, description, required, children }) {
2930
+ useDataBodyTemplateParent("Row");
2916
2931
  return /* @__PURE__ */ jsxs(
2917
2932
  "div",
2918
2933
  {
@@ -2935,7 +2950,7 @@ function TopBarSlot({ topBar }) {
2935
2950
  if (!topBar) return null;
2936
2951
  return /* @__PURE__ */ jsx("div", { className: "shrink-0", children: topBar });
2937
2952
  }
2938
- function Root2({
2953
+ function RootContent({
2939
2954
  theme,
2940
2955
  className,
2941
2956
  topBar,
@@ -3041,10 +3056,13 @@ function Root2({
3041
3056
  /* @__PURE__ */ jsx("div", { className: "flex min-w-0 items-center gap-2", children: toolbarLeft }),
3042
3057
  /* @__PURE__ */ jsx(DataPage.Actions, { children: toolbarRight })
3043
3058
  ] }),
3044
- hasTabs ? /* @__PURE__ */ jsx(DataPage.GroupBody, { className: "min-h-full", children: renderGroups(activeTabNode?.props.children) }) : /* @__PURE__ */ jsx(DataPage.GroupBody, { children: bodyChildren.map((child, i) => /* @__PURE__ */ jsx(Fragment, { children: isDataBodyGroup(child) ? renderGroup(child) : child }, i)) })
3059
+ hasTabs ? /* @__PURE__ */ jsx(DataPage.GroupBody, { className: "min-h-full", children: renderGroups(activeTabNode?.props.children) }) : /* @__PURE__ */ jsx(DataPage.GroupBody, { children: bodyChildren.map((child, i) => /* @__PURE__ */ jsx(Fragment$1, { children: isDataBodyGroup(child) ? renderGroup(child) : child }, i)) })
3045
3060
  ] })
3046
3061
  ] });
3047
3062
  }
3063
+ function Root2(props) {
3064
+ return /* @__PURE__ */ jsx(DataBodyTemplateContext.Provider, { value: true, children: /* @__PURE__ */ jsx(RootContent, { ...props }) });
3065
+ }
3048
3066
  var DataBodyTemplate = Object.assign(Root2, {
3049
3067
  Body: DataBodyBody,
3050
3068
  Tab: DataBodyTab,
@@ -3122,7 +3140,7 @@ function BrowseBodyTemplate({
3122
3140
  "div",
3123
3141
  {
3124
3142
  className: cn(
3125
- "min-w-0 flex-1 overflow-hidden px-(--designkit-page-padding-x) py-(--designkit-page-padding-y)",
3143
+ "min-w-0 flex-1 overflow-auto px-(--designkit-page-padding-x) py-(--designkit-page-padding-y)",
3126
3144
  "[&_.gridkit-shell]:h-full [&_.gridkit-table-stack]:flex-1 [&_.gridkit-table-stack]:min-h-0",
3127
3145
  "[&_.gridkit-frame]:flex-1 [&_.gridkit-frame]:min-h-0 [&_.gridkit-frame]:overflow-auto",
3128
3146
  contentClassName
@@ -3193,7 +3211,7 @@ function DetailBodySection({
3193
3211
  );
3194
3212
  }
3195
3213
  function renderChildren(nodes) {
3196
- return Children.toArray(nodes).map((child, i) => /* @__PURE__ */ jsx(Fragment, { children: child }, i));
3214
+ return Children.toArray(nodes).map((child, i) => /* @__PURE__ */ jsx(Fragment$1, { children: child }, i));
3197
3215
  }
3198
3216
  function DetailBodyTemplateRoot({
3199
3217
  variant = "record",
@@ -3211,6 +3229,7 @@ function DetailBodyTemplateRoot({
3211
3229
  aside,
3212
3230
  summary,
3213
3231
  stickyAside = true,
3232
+ layoutClassName,
3214
3233
  contentClassName,
3215
3234
  mediaClassName,
3216
3235
  asideClassName,
@@ -3267,7 +3286,7 @@ function DetailBodyTemplateRoot({
3267
3286
  const hasRecordInspector = Boolean(leadSlot);
3268
3287
  const hasFullLeadArea = Boolean(leadSlot || insideAsideSlot);
3269
3288
  const layout = {
3270
- media: /* @__PURE__ */ jsxs(Fragment$1, { children: [
3289
+ media: /* @__PURE__ */ jsxs(Fragment, { children: [
3271
3290
  leadSlot && /* @__PURE__ */ jsx("div", { className: "mb-(--designkit-panel-gap)", children: leadSlot }),
3272
3291
  body
3273
3292
  ] }),
@@ -3284,7 +3303,7 @@ function DetailBodyTemplateRoot({
3284
3303
  ]
3285
3304
  }
3286
3305
  ),
3287
- full: /* @__PURE__ */ jsxs(Fragment$1, { children: [
3306
+ full: /* @__PURE__ */ jsxs(Fragment, { children: [
3288
3307
  hasFullLeadArea && /* @__PURE__ */ jsxs(
3289
3308
  "div",
3290
3309
  {
@@ -3324,7 +3343,8 @@ function DetailBodyTemplateRoot({
3324
3343
  {
3325
3344
  className: cn(
3326
3345
  "grid h-full min-h-0 grid-cols-1 overflow-hidden",
3327
- outsideAsideSlot && "lg:grid-cols-[minmax(0,1fr)_minmax(18rem,24rem)]"
3346
+ outsideAsideSlot && "lg:grid-cols-[minmax(0,1fr)_minmax(18rem,24rem)]",
3347
+ layoutClassName
3328
3348
  ),
3329
3349
  children: [
3330
3350
  /* @__PURE__ */ jsx(
@@ -3491,7 +3511,7 @@ function FormWizardBodyTemplate({
3491
3511
  return /* @__PURE__ */ jsxs(DataPage, { className: "layout-form-wizard", style: theme, children: [
3492
3512
  topBar && /* @__PURE__ */ jsx("div", { className: "shrink-0", children: topBar }),
3493
3513
  /* @__PURE__ */ jsx(DataPage.Header, { children: /* @__PURE__ */ jsx(DataPage.TitleBlock, { title, status }) }),
3494
- /* @__PURE__ */ jsx("div", { className: "shrink-0 px-(--designkit-page-padding-x) pb-4", children: /* @__PURE__ */ jsx("div", { className: "flex items-center", children: steps.map((step, i) => /* @__PURE__ */ jsxs(Fragment, { children: [
3514
+ /* @__PURE__ */ jsx("div", { className: "shrink-0 px-(--designkit-page-padding-x) pb-4", children: /* @__PURE__ */ jsx("div", { className: "flex items-center", children: steps.map((step, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
3495
3515
  i > 0 && /* @__PURE__ */ jsx(
3496
3516
  "div",
3497
3517
  {