@gridui/grid 2.3.6 → 3.0.1

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.
Files changed (41) hide show
  1. package/README.md +3 -1
  2. package/dist/frame-footer/style.d.ts +3 -2
  3. package/dist/frame-header/style.d.ts +9 -0
  4. package/dist/frame-rail/style.d.ts +3 -2
  5. package/dist/frame-section/style.d.ts +9 -0
  6. package/dist/grid/grid.d.ts +1 -1
  7. package/dist/grid/style.d.ts +2 -2
  8. package/dist/grid-item/style.d.ts +3 -1
  9. package/dist/index.js +156 -46
  10. package/dist/index.js.map +4 -4
  11. package/dist/row/style.d.ts +6 -1
  12. package/dist/shared/chrome.d.ts +1 -0
  13. package/dist/shared/frame-style.d.ts +3 -3
  14. package/dist/stack/style.d.ts +3 -1
  15. package/dist/styles.css +129 -1
  16. package/docs/README.md +8 -387
  17. package/docs/catalog.json +37 -3
  18. package/docs/guides/dashboard-frame.md +91 -0
  19. package/docs/guides/grid.md +126 -0
  20. package/docs/guides/page-frame.md +137 -0
  21. package/docs/guides/split.md +49 -0
  22. package/docs/reference/README.md +21 -0
  23. package/docs/reference/container.md +63 -0
  24. package/docs/reference/dashboard-frame.md +99 -0
  25. package/docs/reference/frame-boundary.md +63 -0
  26. package/docs/reference/frame-footer.md +96 -0
  27. package/docs/reference/frame-header.md +84 -0
  28. package/docs/reference/frame-rail-group.md +70 -0
  29. package/docs/reference/frame-rail.md +63 -0
  30. package/docs/reference/frame-region-row.md +69 -0
  31. package/docs/reference/frame-region.md +69 -0
  32. package/docs/reference/frame-section.md +97 -0
  33. package/docs/reference/frame-sections.md +55 -0
  34. package/docs/reference/frame-texture.md +25 -0
  35. package/docs/reference/grid-item.md +79 -0
  36. package/docs/reference/grid.md +91 -0
  37. package/docs/reference/page-frame.md +89 -0
  38. package/docs/reference/row.md +93 -0
  39. package/docs/reference/split.md +75 -0
  40. package/docs/reference/stack.md +75 -0
  41. package/package.json +5 -6
package/README.md CHANGED
@@ -56,7 +56,7 @@ FrameBoundary instances use their current palette's border color.
56
56
  Astro host elements require an
57
57
  [application-owned adapter](https://github.com/sudo-ui/GridUI-React-Monorepo/blob/main/docs/usage/framework-adapters.md). The page filler uses
58
58
  the final section's tone for its leading line.
59
- Grid `frame="cells"` owns outer and cell edges; `frame="internal"` owns seams
59
+ Grid `frame="all"` owns outer and cell edges; `frame="internal"` owns seams
60
60
  inside an existing frame. Use `fillLastRow` with direct GridItem children to
61
61
  fill incomplete rows at every breakpoint. Explicit gaps are disallowed in
62
62
  framed grids. For wrapping lists with a container-driven track count, use
@@ -101,3 +101,5 @@ See [quarterly release history](https://github.com/sudo-ui/GridUI-React-Monorepo
101
101
 
102
102
  `DashboardFrame` supplies full-height workspace gutters and structural edges without
103
103
  creating a main landmark. See [dashboard frames](docs/README.md#dashboard-frames).
104
+
105
+ [Component reference](docs/reference/README.md) contains focused API pages for each public component.
@@ -4,5 +4,6 @@
4
4
  * @namespace FrameFooter
5
5
  * @description Style
6
6
  */
7
- export declare const frameSignatureStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
8
- export declare const frameSignatureCroppedStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
7
+ export declare const frameSignatureStyles: (props?: ({
8
+ appearance?: "standard" | "cropped" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @author WMXPY
3
+ * @package Grid
4
+ * @namespace FrameHeader
5
+ * @description Style
6
+ */
7
+ export declare const frameHeaderContentStyles: (props?: ({
8
+ wrap?: boolean | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -4,6 +4,7 @@
4
4
  * @namespace FrameRail
5
5
  * @description Style
6
6
  */
7
- export declare const frameRailStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
7
+ export declare const frameRailStyles: (props?: ({
8
+ placement?: "start" | "sticky-bottom" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
10
  export declare const frameRailContentStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
9
- export declare const frameRailStickyBottomStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @author WMXPY
3
+ * @package Grid
4
+ * @namespace FrameSection
5
+ * @description Style
6
+ */
7
+ export declare const frameSectionSurfaceStyles: (props?: ({
8
+ edges?: "none" | "frame" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -12,7 +12,7 @@ type GridFrameOptions = {
12
12
  readonly frame?: "none";
13
13
  readonly gap?: Responsive<Space>;
14
14
  } | {
15
- readonly frame: "none" | "cells" | "internal";
15
+ readonly frame: "none" | "all" | "internal";
16
16
  readonly gap?: never;
17
17
  };
18
18
  type GridLayoutOptions = ({
@@ -5,8 +5,8 @@
5
5
  * @description Style
6
6
  */
7
7
  export declare const gridStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
8
- export declare const gridCellsStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
8
+ export declare const gridAllStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
9
9
  export declare const gridInternalStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
10
10
  export declare const gridVariants: (props?: ({
11
- frame?: "none" | "cells" | "internal" | null | undefined;
11
+ frame?: "none" | "all" | "internal" | null | undefined;
12
12
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -4,4 +4,6 @@
4
4
  * @namespace GridItem
5
5
  * @description Style
6
6
  */
7
- export declare const gridItemStyles: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
7
+ export declare const gridItemStyles: (props?: ({
8
+ align?: "center" | "end" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
package/dist/index.js CHANGED
@@ -195,6 +195,7 @@ var chromeStyle = (padding) => {
195
195
  const values = resolveResponsive(padding);
196
196
  return {
197
197
  "--gridui-chrome-padding": spaceValue(values.base),
198
+ "--gridui-chrome-padding-sm": spaceValue(values.sm),
198
199
  "--gridui-chrome-padding-md": spaceValue(values.md),
199
200
  "--gridui-chrome-padding-lg": spaceValue(values.lg)
200
201
  };
@@ -208,10 +209,17 @@ var frameChromeStyles = cva4("gridui-frame-chrome");
208
209
  import { cn as cn4 } from "@gridui/style-utils";
209
210
  import { paletteClass } from "@gridui/theme";
210
211
  import { cva as cva5 } from "class-variance-authority";
211
- var frameToneStyles = (options = {}) => {
212
- const { tone = "neutral" } = options;
213
- return tone === "neutral" ? "" : `gridui-frame-${tone} ${paletteClass(tone)}`;
214
- };
212
+ var frameToneStyles = cva5("", {
213
+ variants: {
214
+ tone: {
215
+ neutral: null,
216
+ brand: `gridui-frame-brand ${paletteClass("brand")}`,
217
+ warning: `gridui-frame-warning ${paletteClass("warning")}`,
218
+ danger: `gridui-frame-danger ${paletteClass("danger")}`
219
+ }
220
+ },
221
+ defaultVariants: { tone: "neutral" }
222
+ });
215
223
  var frameContentStyles = cva5(cn4(
216
224
  "gridui-frame-content",
217
225
  "gridui-u-grid--border-x gridui-u-grid--border-solid gridui-u-grid--border-border gridui-u-grid--wrap-anywhere"
@@ -223,8 +231,15 @@ import { cva as cva6 } from "class-variance-authority";
223
231
  var frameSignatureStyles = cva6(cn5(
224
232
  "gridui-frame-signature gridui-u-grid--flex gridui-u-grid--min-w-0 gridui-u-grid--items-center gridui-u-grid--justify-center gridui-u-grid--gap-gridui-24 gridui-u-grid--py-gridui-32 gridui-u-grid--px-gridui-24 gridui-u-grid--overflow-hidden gridui-u-grid--border-t gridui-u-grid--border-solid gridui-u-grid--border-border gridui-u-grid--bg-transparent",
225
233
  "gridui-u-grid--[&>svg]:h-auto gridui-u-grid--[&>svg]:opacity-30 gridui-u-grid--[&>span]:font-display gridui-u-grid--[&>span]:leading-none gridui-u-grid--[&>span]:text-transparent"
226
- ));
227
- var frameSignatureCroppedStyles = cva6("gridui-frame-signature-cropped gridui-u-grid--block gridui-u-grid--pb-0 gridui-u-grid--@container gridui-u-grid--[&>span]:block gridui-u-grid--[&>span]:text-center gridui-u-grid--[&>span]:whitespace-nowrap");
234
+ ), {
235
+ variants: {
236
+ appearance: {
237
+ standard: null,
238
+ cropped: "gridui-frame-signature-cropped gridui-u-grid--block gridui-u-grid--pb-0 gridui-u-grid--@container gridui-u-grid--[&>span]:block gridui-u-grid--[&>span]:text-center gridui-u-grid--[&>span]:whitespace-nowrap"
239
+ }
240
+ },
241
+ defaultVariants: { appearance: "standard" }
242
+ });
228
243
 
229
244
  // src/frame-footer/frame-footer.tsx
230
245
  import { cn as cn6 } from "@gridui/style-utils";
@@ -232,7 +247,7 @@ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
232
247
  var FrameFooter = (props) => {
233
248
  const { padding = {
234
249
  base: 16,
235
- md: 24
250
+ sm: 24
236
251
  }, contentLayout = "flex", tone = "neutral", boundary = "line", decoration, signature, signatureAppearance = "standard", className, children, ...restProps } = props;
237
252
  return /* @__PURE__ */ jsxs3(
238
253
  "footer",
@@ -268,7 +283,7 @@ var FrameFooter = (props) => {
268
283
  signature ? /* @__PURE__ */ jsx5(
269
284
  "div",
270
285
  {
271
- className: cn6(frameContentStyles(), frameSignatureStyles(), signatureAppearance === "cropped" && frameSignatureCroppedStyles()),
286
+ className: cn6(frameContentStyles(), frameSignatureStyles({ appearance: signatureAppearance })),
272
287
  "aria-hidden": "true",
273
288
  inert: true,
274
289
  children: signature
@@ -279,6 +294,18 @@ var FrameFooter = (props) => {
279
294
  );
280
295
  };
281
296
 
297
+ // src/frame-header/style.ts
298
+ import { cva as cva7 } from "class-variance-authority";
299
+ var frameHeaderContentStyles = cva7(frameChromeStyles(), {
300
+ variants: {
301
+ wrap: {
302
+ false: "gridui-u-grid--[--gridui-frame-header-wrap:nowrap]",
303
+ true: "gridui-u-grid--[--gridui-frame-header-wrap:wrap]"
304
+ }
305
+ },
306
+ defaultVariants: { wrap: true }
307
+ });
308
+
282
309
  // src/frame-header/frame-header.tsx
283
310
  import { cn as cn7 } from "@gridui/style-utils";
284
311
  import { spaceValue as spaceValue2 } from "@gridui/style-utils/responsive";
@@ -286,7 +313,7 @@ import { jsx as jsx6 } from "react/jsx-runtime";
286
313
  var FrameHeader = (props) => {
287
314
  const { padding = {
288
315
  base: 16,
289
- md: 24
316
+ sm: 24
290
317
  }, wrap = true, gap = 16, justify = "between", className, children, ...restProps } = props;
291
318
  return /* @__PURE__ */ jsx6(
292
319
  "header",
@@ -296,11 +323,11 @@ var FrameHeader = (props) => {
296
323
  children: /* @__PURE__ */ jsx6(
297
324
  "div",
298
325
  {
299
- className: cn7(frameContentStyles(), frameChromeStyles()),
326
+ className: cn7(frameContentStyles(), frameHeaderContentStyles({ wrap })),
300
327
  "data-justify": justify,
301
328
  style: {
302
329
  ...chromeStyle(padding),
303
- flexWrap: wrap ? "wrap" : "nowrap",
330
+ flexWrap: "var(--gridui-frame-header-wrap)",
304
331
  gap: spaceValue2(gap)
305
332
  },
306
333
  children
@@ -311,10 +338,17 @@ var FrameHeader = (props) => {
311
338
  };
312
339
 
313
340
  // src/frame-rail/style.ts
314
- import { cva as cva7 } from "class-variance-authority";
315
- var frameRailStyles = cva7("gridui-frame-rail gridui-u-grid--flex gridui-u-grid--h-full gridui-u-grid--box-border gridui-u-grid--flex-col gridui-u-grid--py-gridui-24 gridui-u-grid--text-muted");
316
- var frameRailContentStyles = cva7("gridui-frame-rail-content gridui-u-grid--relative gridui-u-grid--z-(--gridui-z-interaction) gridui-u-grid--min-w-0 gridui-u-grid--type-eyebrow gridui-u-grid--bg-inherit");
317
- var frameRailStickyBottomStyles = cva7("gridui-frame-rail-sticky-bottom gridui-u-grid--justify-end gridui-u-grid--[&>.gridui-frame-rail-content]:sticky");
341
+ import { cva as cva8 } from "class-variance-authority";
342
+ var frameRailStyles = cva8("gridui-frame-rail gridui-u-grid--flex gridui-u-grid--h-full gridui-u-grid--box-border gridui-u-grid--flex-col gridui-u-grid--py-gridui-24 gridui-u-grid--text-muted", {
343
+ variants: {
344
+ placement: {
345
+ start: null,
346
+ "sticky-bottom": "gridui-frame-rail-sticky-bottom gridui-u-grid--justify-end gridui-u-grid--[&>.gridui-frame-rail-content]:sticky"
347
+ }
348
+ },
349
+ defaultVariants: { placement: "start" }
350
+ });
351
+ var frameRailContentStyles = cva8("gridui-frame-rail-content gridui-u-grid--relative gridui-u-grid--z-(--gridui-z-interaction) gridui-u-grid--min-w-0 gridui-u-grid--type-eyebrow gridui-u-grid--bg-inherit");
318
352
 
319
353
  // src/frame-rail/frame-rail.tsx
320
354
  import { cn as cn8 } from "@gridui/style-utils";
@@ -330,7 +364,7 @@ var FrameRail = (props) => {
330
364
  "div",
331
365
  {
332
366
  ...restProps,
333
- className: cn8(frameRailStyles(), placement === "sticky-bottom" && frameRailStickyBottomStyles(), className),
367
+ className: cn8(frameRailStyles({ placement }), className),
334
368
  children: /* @__PURE__ */ jsx7(
335
369
  "div",
336
370
  {
@@ -349,15 +383,17 @@ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
349
383
  var FrameRailGroup = (props) => {
350
384
  const { rail, railWidth = {
351
385
  base: 0,
352
- md: 32
386
+ sm: 32
353
387
  }, children, className, style, ...restProps } = props;
354
388
  const hasRail = rail !== void 0 && rail !== null && rail !== false;
355
389
  const width = resolveResponsive2(hasRail ? railWidth : 0);
356
390
  const layoutStyle = {
357
391
  "--gridui-rail-width-base": spaceValue3(width.base),
392
+ "--gridui-rail-width-sm": spaceValue3(width.sm),
358
393
  "--gridui-rail-width-md": spaceValue3(width.md),
359
394
  "--gridui-rail-width-lg": spaceValue3(width.lg),
360
395
  "--gridui-rail-display-base": width.base === 0 ? "none" : "block",
396
+ "--gridui-rail-display-sm": width.sm === 0 ? "none" : "block",
361
397
  "--gridui-rail-display-md": width.md === 0 ? "none" : "block",
362
398
  "--gridui-rail-display-lg": width.lg === 0 ? "none" : "block",
363
399
  ...style
@@ -440,6 +476,21 @@ var FrameTexture = (props) => {
440
476
  );
441
477
  };
442
478
 
479
+ // src/frame-section/style.ts
480
+ import { cva as cva9 } from "class-variance-authority";
481
+ var frameSectionSurfaceStyles = cva9([
482
+ frameContentStyles(),
483
+ "gridui-frame-surface"
484
+ ], {
485
+ variants: {
486
+ edges: {
487
+ frame: null,
488
+ none: "gridui-u-grid--border-x-0"
489
+ }
490
+ },
491
+ defaultVariants: { edges: "frame" }
492
+ });
493
+
443
494
  // src/frame-section/frame-section.tsx
444
495
  import { cn as cn12 } from "@gridui/style-utils";
445
496
  import { spacingVariables } from "@gridui/style-utils/responsive";
@@ -473,7 +524,7 @@ var FrameSection = (props) => {
473
524
  /* @__PURE__ */ jsxs5(
474
525
  "div",
475
526
  {
476
- className: cn12(frameContentStyles(), "gridui-frame-surface", edges === "none" && "gridui-u-grid--border-x-0"),
527
+ className: cn12(frameSectionSurfaceStyles({ edges })),
477
528
  style: {
478
529
  ...spacingVariables("section-padding-inline", paddingInline),
479
530
  ...spacingVariables("section-padding-block", paddingBlock)
@@ -521,11 +572,18 @@ var spanValue = (value) => {
521
572
 
522
573
  // src/grid-item/style.ts
523
574
  import { cn as cn14 } from "@gridui/style-utils";
524
- import { cva as cva8 } from "class-variance-authority";
525
- var gridItemStyles = cva8(cn14(
575
+ import { cva as cva10 } from "class-variance-authority";
576
+ var gridItemStyles = cva10(cn14(
526
577
  "gridui-grid-item",
527
578
  "gridui-u-grid--min-w-0 gridui-u-grid--wrap-anywhere"
528
- ));
579
+ ), {
580
+ variants: {
581
+ align: {
582
+ center: "gridui-u-grid--[--gridui-grid-item-display:flex] gridui-u-grid--[--gridui-grid-item-align:center]",
583
+ end: "gridui-u-grid--[--gridui-grid-item-display:flex] gridui-u-grid--[--gridui-grid-item-align:end]"
584
+ }
585
+ }
586
+ });
529
587
 
530
588
  // src/grid-item/grid-item.tsx
531
589
  import { cn as cn15 } from "@gridui/style-utils";
@@ -546,14 +604,16 @@ var GridItem = (props) => {
546
604
  const inset = resolveResponsive3(padding);
547
605
  const layoutStyle = {
548
606
  "--gridui-span": spanValue(size.base),
607
+ "--gridui-span-sm": spanValue(size.sm),
549
608
  "--gridui-span-md": spanValue(size.md),
550
609
  "--gridui-span-lg": spanValue(size.lg),
551
610
  "--gridui-padding": spaceValue4(inset.base),
611
+ "--gridui-padding-sm": spaceValue4(inset.sm),
552
612
  "--gridui-padding-md": spaceValue4(inset.md),
553
613
  "--gridui-padding-lg": spaceValue4(inset.lg),
554
614
  ...align ? {
555
- display: "flex",
556
- alignItems: align
615
+ display: "var(--gridui-grid-item-display)",
616
+ alignItems: "var(--gridui-grid-item-align)"
557
617
  } : {},
558
618
  ...style
559
619
  };
@@ -562,7 +622,7 @@ var GridItem = (props) => {
562
622
  Component,
563
623
  {
564
624
  ...restProps,
565
- className: cn15(gridItemStyles(), className),
625
+ className: cn15(gridItemStyles({ align }), className),
566
626
  style: layoutStyle
567
627
  }
568
628
  );
@@ -570,24 +630,24 @@ var GridItem = (props) => {
570
630
 
571
631
  // src/grid/style.ts
572
632
  import { cn as cn16 } from "@gridui/style-utils";
573
- import { cva as cva9 } from "class-variance-authority";
574
- var gridStyles = cva9(cn16(
633
+ import { cva as cva11 } from "class-variance-authority";
634
+ var gridStyles = cva11(cn16(
575
635
  "gridui-grid",
576
636
  "gridui-u-grid--grid gridui-u-grid--min-w-0"
577
637
  ));
578
- var gridCellsStyles = cva9(cn16(
579
- "gridui-grid-cells",
638
+ var gridAllStyles = cva11(cn16(
639
+ "gridui-grid-all",
580
640
  "gridui-u-grid--border-t gridui-u-grid--border-solid gridui-u-grid--border-border gridui-u-grid--border-l gridui-u-grid--border-solid gridui-u-grid--border-border"
581
641
  ));
582
- var gridInternalStyles = cva9(cn16(
642
+ var gridInternalStyles = cva11(cn16(
583
643
  "gridui-grid-internal",
584
644
  "gridui-u-grid--bg-border"
585
645
  ));
586
- var gridVariants = cva9(gridStyles(), {
646
+ var gridVariants = cva11(gridStyles(), {
587
647
  variants: {
588
648
  frame: {
589
649
  none: "",
590
- cells: gridCellsStyles(),
650
+ all: gridAllStyles(),
591
651
  internal: gridInternalStyles()
592
652
  }
593
653
  },
@@ -673,6 +733,7 @@ var Grid = (props) => {
673
733
  const minimum = resolveResponsive4(minItemWidth);
674
734
  geometry = {
675
735
  "--gridui-grid-template": adaptiveGridTemplate(minimum.base),
736
+ "--gridui-grid-template-sm": adaptiveGridTemplate(minimum.sm),
676
737
  "--gridui-grid-template-md": adaptiveGridTemplate(minimum.md),
677
738
  "--gridui-grid-template-lg": adaptiveGridTemplate(minimum.lg)
678
739
  };
@@ -683,14 +744,17 @@ var Grid = (props) => {
683
744
  const tracks = resolveResponsive4(columns);
684
745
  count = {
685
746
  base: gridColumnCount(tracks.base),
747
+ sm: gridColumnCount(tracks.sm),
686
748
  md: gridColumnCount(tracks.md),
687
749
  lg: gridColumnCount(tracks.lg)
688
750
  };
689
751
  geometry = {
690
752
  "--gridui-columns": count.base,
753
+ "--gridui-columns-sm": count.sm,
691
754
  "--gridui-columns-md": count.md,
692
755
  "--gridui-columns-lg": count.lg,
693
756
  "--gridui-grid-template": gridTemplate(tracks.base),
757
+ "--gridui-grid-template-sm": gridTemplate(tracks.sm),
694
758
  "--gridui-grid-template-md": gridTemplate(tracks.md),
695
759
  "--gridui-grid-template-lg": gridTemplate(tracks.lg)
696
760
  };
@@ -699,6 +763,7 @@ var Grid = (props) => {
699
763
  const layoutStyle = {
700
764
  ...geometry,
701
765
  "--gridui-gap": frame === "internal" ? "1px" : spaceValue5(spacing.base),
766
+ "--gridui-gap-sm": frame === "internal" ? "1px" : spaceValue5(spacing.sm),
702
767
  "--gridui-gap-md": frame === "internal" ? "1px" : spaceValue5(spacing.md),
703
768
  "--gridui-gap-lg": frame === "internal" ? "1px" : spaceValue5(spacing.lg),
704
769
  ...style
@@ -718,6 +783,9 @@ var Grid = (props) => {
718
783
  base: fillGridRowSpans(count.base, spans.map((span) => {
719
784
  return span.base === "full" ? count.base : span.base;
720
785
  })),
786
+ sm: fillGridRowSpans(count.sm, spans.map((span) => {
787
+ return span.sm === "full" ? count.sm : span.sm;
788
+ })),
721
789
  md: fillGridRowSpans(count.md, spans.map((span) => {
722
790
  return span.md === "full" ? count.md : span.md;
723
791
  })),
@@ -728,6 +796,7 @@ var Grid = (props) => {
728
796
  content = items.map((item, index) => {
729
797
  const itemStyle = {
730
798
  "--gridui-span": `span ${filled.base[index]} / span ${filled.base[index]}`,
799
+ "--gridui-span-sm": `span ${filled.sm[index]} / span ${filled.sm[index]}`,
731
800
  "--gridui-span-md": `span ${filled.md[index]} / span ${filled.md[index]}`,
732
801
  "--gridui-span-lg": `span ${filled.lg[index]} / span ${filled.lg[index]}`,
733
802
  ...item.props.style
@@ -750,8 +819,8 @@ var Grid = (props) => {
750
819
  };
751
820
 
752
821
  // src/page-frame/style.ts
753
- import { cva as cva10 } from "class-variance-authority";
754
- var pageFrameVariants = cva10("gridui-page-frame gridui-u-grid--min-h-svh", {
822
+ import { cva as cva12 } from "class-variance-authority";
823
+ var pageFrameVariants = cva12("gridui-page-frame gridui-u-grid--min-h-svh", {
755
824
  variants: {
756
825
  width: containerWidthClasses
757
826
  },
@@ -837,11 +906,38 @@ var PageFrame = (props) => {
837
906
 
838
907
  // src/row/style.ts
839
908
  import { cn as cn19 } from "@gridui/style-utils";
840
- import { cva as cva11 } from "class-variance-authority";
841
- var rowStyles = cva11(cn19(
909
+ import { cva as cva13 } from "class-variance-authority";
910
+ var rowStyles = cva13(cn19(
842
911
  "gridui-row",
843
912
  "gridui-u-grid--min-w-0"
844
- ));
913
+ ), {
914
+ variants: {
915
+ inline: {
916
+ false: "gridui-u-grid--[--gridui-row-display:flex]",
917
+ true: "gridui-u-grid--[--gridui-row-display:inline-flex]"
918
+ },
919
+ align: {
920
+ stretch: "gridui-u-grid--[--gridui-row-align:stretch]",
921
+ center: "gridui-u-grid--[--gridui-row-align:center]",
922
+ baseline: "gridui-u-grid--[--gridui-row-align:baseline]",
923
+ end: "gridui-u-grid--[--gridui-row-align:end]"
924
+ },
925
+ justify: {
926
+ start: "gridui-u-grid--[--gridui-row-justify:flex-start]",
927
+ between: "gridui-u-grid--[--gridui-row-justify:space-between]"
928
+ },
929
+ wrap: {
930
+ false: "gridui-u-grid--[--gridui-row-wrap:nowrap]",
931
+ true: "gridui-u-grid--[--gridui-row-wrap:wrap]"
932
+ }
933
+ },
934
+ defaultVariants: {
935
+ inline: false,
936
+ align: "stretch",
937
+ justify: "start",
938
+ wrap: true
939
+ }
940
+ });
845
941
 
846
942
  // src/row/row.tsx
847
943
  import { cn as cn20 } from "@gridui/style-utils";
@@ -863,13 +959,18 @@ var Row = (props) => {
863
959
  "div",
864
960
  {
865
961
  ...restProps,
866
- className: cn20(rowStyles(), className),
962
+ className: cn20(rowStyles({
963
+ inline,
964
+ align,
965
+ justify,
966
+ wrap
967
+ }), className),
867
968
  "data-inline": inline,
868
969
  style: {
869
- display: inline ? "inline-flex" : "flex",
870
- alignItems: align,
871
- justifyContent: justify === "between" ? "space-between" : "flex-start",
872
- flexWrap: wrap ? "wrap" : "nowrap",
970
+ display: "var(--gridui-row-display)",
971
+ alignItems: "var(--gridui-row-align)",
972
+ justifyContent: "var(--gridui-row-justify)",
973
+ flexWrap: "var(--gridui-row-wrap)",
873
974
  gap: `${spaceValue6(rowGap)} ${spaceValue6(gap)}`,
874
975
  ...style
875
976
  }
@@ -892,9 +993,11 @@ var Split = (props) => {
892
993
  className: cn21("gridui-split", className),
893
994
  "data-order": order,
894
995
  "data-direction": directions.base,
996
+ "data-direction-sm": directions.sm,
895
997
  "data-direction-md": directions.md,
896
998
  "data-direction-lg": directions.lg,
897
999
  "data-seam": seams.base,
1000
+ "data-seam-sm": seams.sm,
898
1001
  "data-seam-md": seams.md,
899
1002
  "data-seam-lg": seams.lg
900
1003
  }
@@ -903,11 +1006,17 @@ var Split = (props) => {
903
1006
 
904
1007
  // src/stack/style.ts
905
1008
  import { cn as cn22 } from "@gridui/style-utils";
906
- import { cva as cva12 } from "class-variance-authority";
907
- var stackStyles = cva12(cn22(
1009
+ import { cva as cva14 } from "class-variance-authority";
1010
+ var stackStyles = cva14(cn22(
908
1011
  "gridui-stack",
909
1012
  "gridui-u-grid--flex gridui-u-grid--min-w-0 gridui-u-grid--flex-col"
910
- ));
1013
+ ), {
1014
+ variants: {
1015
+ width: {
1016
+ full: "gridui-u-grid--[--gridui-stack-width:100%]"
1017
+ }
1018
+ }
1019
+ });
911
1020
 
912
1021
  // src/stack/stack.tsx
913
1022
  import { cn as cn23 } from "@gridui/style-utils";
@@ -926,9 +1035,10 @@ var Stack = (props) => {
926
1035
  const spacing = resolveResponsive6(gap);
927
1036
  const layoutStyle = {
928
1037
  "--gridui-gap": spaceValue7(spacing.base),
1038
+ "--gridui-gap-sm": spaceValue7(spacing.sm),
929
1039
  "--gridui-gap-md": spaceValue7(spacing.md),
930
1040
  "--gridui-gap-lg": spaceValue7(spacing.lg),
931
- width: width === "full" ? "100%" : void 0,
1041
+ width: width === "full" ? "var(--gridui-stack-width)" : void 0,
932
1042
  maxWidth,
933
1043
  paddingTop: paddingStart === void 0 ? void 0 : spaceValue7(paddingStart),
934
1044
  ...style
@@ -937,7 +1047,7 @@ var Stack = (props) => {
937
1047
  "div",
938
1048
  {
939
1049
  ...restProps,
940
- className: cn23(stackStyles(), className),
1050
+ className: cn23(stackStyles({ width }), className),
941
1051
  style: layoutStyle
942
1052
  }
943
1053
  );