@regardio/brand 0.8.1 → 0.9.0

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 (36) hide show
  1. package/README.md +8 -5
  2. package/dist/components/button.stories.d.mts +103 -63
  3. package/dist/generated/icons/regardio-ensemble-icon-color-full.mjs +136 -136
  4. package/dist/generated/icons/regardio-ensemble-icon-color.mjs +136 -136
  5. package/dist/generated/icons/{regardio-system-zest-icon.d.mts → system-layer-bridges-icon.d.mts} +3 -3
  6. package/dist/generated/icons/{regardio-system-bridge-icon.mjs → system-layer-bridges-icon.mjs} +4 -4
  7. package/dist/generated/icons/{regardio-system-plan-icon.d.mts → system-layer-circles-icon.d.mts} +3 -3
  8. package/dist/generated/icons/{regardio-system-circle-icon.mjs → system-layer-circles-icon.mjs} +3 -3
  9. package/dist/generated/icons/{regardio-system-spark-icon.d.mts → system-layer-facets-icon.d.mts} +3 -3
  10. package/dist/generated/icons/{regardio-system-facet-icon.mjs → system-layer-facets-icon.mjs} +4 -4
  11. package/dist/generated/icons/{regardio-system-facet-icon.d.mts → system-layer-plans-icon.d.mts} +3 -3
  12. package/dist/generated/icons/system-layer-plans-icon.mjs +19 -0
  13. package/dist/generated/icons/system-layer-pursuits-icon.d.mts +14 -0
  14. package/dist/generated/icons/{regardio-system-pursuit-icon.mjs → system-layer-pursuits-icon.mjs} +4 -4
  15. package/dist/generated/icons/system-layer-sources-icon.d.mts +14 -0
  16. package/dist/generated/icons/system-layer-sources-icon.mjs +19 -0
  17. package/dist/generated/sprites/compass-sprite-provider.mjs +323 -293
  18. package/dist/generated/sprites/compass-sprite.d.mts +5 -4
  19. package/dist/generated/sprites/compass-sprite.mjs +54 -3
  20. package/dist/styles/grid.css +47 -5
  21. package/dist/styles/index.css +3 -0
  22. package/dist/styles/tokens.css +1 -1
  23. package/dist/styles/typography.css +14 -32
  24. package/dist/styles/utopia.css +59 -0
  25. package/package.json +39 -40
  26. package/src/styles/grid.css +47 -5
  27. package/src/styles/index.css +3 -0
  28. package/src/styles/tokens.css +1 -1
  29. package/src/styles/typography.css +14 -32
  30. package/src/styles/utopia.css +59 -0
  31. package/dist/generated/icons/regardio-system-bridge-icon.d.mts +0 -14
  32. package/dist/generated/icons/regardio-system-circle-icon.d.mts +0 -14
  33. package/dist/generated/icons/regardio-system-plan-icon.mjs +0 -19
  34. package/dist/generated/icons/regardio-system-pursuit-icon.d.mts +0 -14
  35. package/dist/generated/icons/regardio-system-spark-icon.mjs +0 -19
  36. package/dist/generated/icons/regardio-system-zest-icon.mjs +0 -19
@@ -1,7 +1,8 @@
1
1
  import React, { SVGProps } from "react";
2
2
 
3
3
  //#region src/generated/sprites/compass-sprite.d.ts
4
- type CompassSpriteId = "bridges.perspectives.contradicts" | "bridges.perspectives.enables" | "bridges.perspectives.extends" | "bridges.perspectives.fulfills" | "bridges.perspectives.matches" | "bridges.perspectives.supports" | "bridges.perspectives" | "facets.elements.assets" | "facets.elements.means" | "facets.elements.people" | "facets.elements.spaces" | "facets.elements" | "facets.elements.things" | "facets.elements.times" | "facets.steps.accord.bottom" | "facets.steps.accord.top" | "facets.steps.action.bottom" | "facets.steps.action.top" | "facets.steps.effect.bottom" | "facets.steps.effect.top" | "facets.steps.essence.bottom" | "facets.steps.essence.top" | "facets.steps.impulse.bottom" | "facets.steps.impulse.top" | "facets.steps.signal.bottom" | "facets.steps.signal.top" | "facets.steps" | "pursuit.prospect.flourishing" | "zest.leisure.breeze" | "zest.leisure.calm" | "zest.leisure.contemplation" | "zest.leisure.distance" | "zest.leisure.indulgence" | "zest.leisure.inspiration" | "zest.leisure.movement" | "zest.leisure.nearness" | "zest.leisure.nourishment" | "zest.leisure.refreshment" | "zest.leisure.relaxation" | "zest.leisure.relief" | "zest.leisure" | "zest.motivators.flexibility" | "zest.motivators.orientation" | "zest.motivators.pathways" | "zest.motivators.possibilities" | "zest.motivators.strength" | "zest.motivators.structure" | "zest.motivators";
4
+ type CompassSpriteId = "bridge-view-contradicts" | "bridge-view-enables" | "bridge-view-extends" | "bridge-view-fulfills" | "bridge-view-matches" | "bridge-view-supports" | "bridges-views" | "facet-element-means" | "facet-element-memories" | "facet-element-people" | "facet-element-spaces" | "facet-element-things" | "facet-element-times" | "facet-step-accord-bottom" | "facet-step-accord-top" | "facet-step-action-bottom" | "facet-step-action-top" | "facet-step-effect-bottom" | "facet-step-effect-top" | "facet-step-essence-bottom" | "facet-step-essence-top" | "facet-step-impulse-bottom" | "facet-step-impulse-top" | "facet-step-signal-bottom" | "facet-step-signal-top" | "facets-elements" | "facets-steps" | "pursuit-foundation-flourishing" | "pursuit-foundation-pointer" | "source-drive-flexibility" | "source-drive-orientation" | "source-drive-pathways" | "source-drive-possibilities" | "source-drive-strength" | "source-drive-structure" | "source-leisure-breeze" | "source-leisure-calm" | "source-leisure-contemplation" | "source-leisure-distance" | "source-leisure-indulgence" | "source-leisure-inspiration" | "source-leisure-movement" | "source-leisure-nearness" | "source-leisure-nourishment" | "source-leisure-refreshment" | "source-leisure-relaxation" | "source-leisure-relief" | "sources-drive" | "sources-leisure";
5
+ declare const compassSpriteIds: CompassSpriteId[];
5
6
  interface CompassSpriteProps extends Omit<SVGProps<SVGSVGElement>, "children"> {
6
7
  /** The sprite ID to render */
7
8
  id: CompassSpriteId;
@@ -13,8 +14,8 @@ interface CompassSpriteProps extends Omit<SVGProps<SVGSVGElement>, "children"> {
13
14
  *
14
15
  * Usage:
15
16
  * ```tsx
16
- * <CompassSprite id="facet.step.action.bottom" className="w-8 h-8" />
17
- * <CompassSprite id="spark.motivator.possibilities" size={24} />
17
+ * <CompassSprite id="facet-step-action-bottom" className="w-8 h-8" />
18
+ * <CompassSprite id="source-drive-possibilities" size={24} />
18
19
  * ```
19
20
  *
20
21
  * Note: The compass-base.svg sprite file must be available in your application.
@@ -28,4 +29,4 @@ declare function CompassSprite({
28
29
  ...props
29
30
  }: CompassSpriteProps): React.JSX.Element;
30
31
  //#endregion
31
- export { CompassSprite, CompassSprite as default, CompassSpriteId, CompassSpriteProps };
32
+ export { CompassSprite, CompassSprite as default, CompassSpriteId, CompassSpriteProps, compassSpriteIds };
@@ -1,12 +1,63 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  //#region src/generated/sprites/compass-sprite.tsx
3
+ const compassSpriteIds = [
4
+ "bridge-view-contradicts",
5
+ "bridge-view-enables",
6
+ "bridge-view-extends",
7
+ "bridge-view-fulfills",
8
+ "bridge-view-matches",
9
+ "bridge-view-supports",
10
+ "bridges-views",
11
+ "facet-element-means",
12
+ "facet-element-memories",
13
+ "facet-element-people",
14
+ "facet-element-spaces",
15
+ "facet-element-things",
16
+ "facet-element-times",
17
+ "facet-step-accord-bottom",
18
+ "facet-step-accord-top",
19
+ "facet-step-action-bottom",
20
+ "facet-step-action-top",
21
+ "facet-step-effect-bottom",
22
+ "facet-step-effect-top",
23
+ "facet-step-essence-bottom",
24
+ "facet-step-essence-top",
25
+ "facet-step-impulse-bottom",
26
+ "facet-step-impulse-top",
27
+ "facet-step-signal-bottom",
28
+ "facet-step-signal-top",
29
+ "facets-elements",
30
+ "facets-steps",
31
+ "pursuit-foundation-flourishing",
32
+ "pursuit-foundation-pointer",
33
+ "source-drive-flexibility",
34
+ "source-drive-orientation",
35
+ "source-drive-pathways",
36
+ "source-drive-possibilities",
37
+ "source-drive-strength",
38
+ "source-drive-structure",
39
+ "source-leisure-breeze",
40
+ "source-leisure-calm",
41
+ "source-leisure-contemplation",
42
+ "source-leisure-distance",
43
+ "source-leisure-indulgence",
44
+ "source-leisure-inspiration",
45
+ "source-leisure-movement",
46
+ "source-leisure-nearness",
47
+ "source-leisure-nourishment",
48
+ "source-leisure-refreshment",
49
+ "source-leisure-relaxation",
50
+ "source-leisure-relief",
51
+ "sources-drive",
52
+ "sources-leisure"
53
+ ];
3
54
  /**
4
55
  * Renders a sprite from the compass-base.svg sprite sheet.
5
56
  *
6
57
  * Usage:
7
58
  * ```tsx
8
- * <CompassSprite id="facet.step.action.bottom" className="w-8 h-8" />
9
- * <CompassSprite id="spark.motivator.possibilities" size={24} />
59
+ * <CompassSprite id="facet-step-action-bottom" className="w-8 h-8" />
60
+ * <CompassSprite id="source-drive-possibilities" size={24} />
10
61
  * ```
11
62
  *
12
63
  * Note: The compass-base.svg sprite file must be available in your application.
@@ -28,4 +79,4 @@ function CompassSprite({ id, size, width, height, ...props }) {
28
79
  });
29
80
  }
30
81
  //#endregion
31
- export { CompassSprite, CompassSprite as default };
82
+ export { CompassSprite, CompassSprite as default, compassSpriteIds };
@@ -1,10 +1,43 @@
1
1
  /**
2
- * Grid Utilities
3
- * Regardio's standard container and grid layout system
2
+ * Grid System
3
+ * Fluid grid based on Utopia scales for perfect square cells
4
4
  *
5
- * Uses tokens defined in tokens.css:
6
- * - --spacing-grid-max: Maximum container width
7
- * - --spacing-grid-gutter: Horizontal padding/gap
5
+ * FLUID GRID APPROACH:
6
+ * The grid uses fluid spacing where gutter width scales proportionally with viewport.
7
+ * When grid-gutter equals column width, and the same value is used for row gaps,
8
+ * cells become perfect squares automatically - no aspect-ratio calculations needed.
9
+ *
10
+ * CONFIGURATION:
11
+ * Define these tokens in your application (see utopia.css for fluid scales):
12
+ *
13
+ * ```css
14
+ * :root {
15
+ * --spacing-grid-max: 162.5rem; // Maximum container width
16
+ * --spacing-grid-gutter: var(--space-m); // Fluid gutter (column + row gaps)
17
+ * }
18
+ * ```
19
+ *
20
+ * USAGE WITH REACT GRID:
21
+ * Use @regardio/react Grid component for responsive layouts:
22
+ *
23
+ * ```tsx
24
+ * <Grid.Root flow="dense">
25
+ * <Grid.Item span={12} spanMd={6} spanLg={4}>
26
+ * Content automatically becomes square when gutter = column width
27
+ * </Grid.Item>
28
+ * </Grid.Root>
29
+ * ```
30
+ *
31
+ * FLUID SPACING:
32
+ * Use fluid-tailwindcss utilities instead of custom classes:
33
+ * - fl-gap-s/m: Fluid gap from --space-s to --space-m
34
+ * - fl-py-m/l: Fluid vertical padding from --space-m to --space-l
35
+ * - flex flex-col fl-gap-xs/s: Stack with fluid gap
36
+ * - flex flex-wrap fl-gap-2xs/xs: Cluster with fluid gap
37
+ *
38
+ * UTOPIA CALCULATOR:
39
+ * Generate fluid scales at https://utopia.fyi/grid/calculator
40
+ * Link fluid type, spacing, and grid for a cohesive system.
8
41
  */
9
42
  @layer components {
10
43
  /**
@@ -19,6 +52,8 @@
19
52
 
20
53
  /**
21
54
  * 12-column CSS Grid with container queries
55
+ * Uses CSS custom properties for configurability:
56
+ * - --spacing-grid-gutter: Gap between grid items
22
57
  */
23
58
  .u-grid {
24
59
  display: grid;
@@ -57,4 +92,11 @@
57
92
  .u-grid-quarter {
58
93
  grid-column: span 3;
59
94
  }
95
+
96
+ /**
97
+ * Sixth-width grid item spanning 2 columns
98
+ */
99
+ .u-grid-sixth {
100
+ grid-column: span 2;
101
+ }
60
102
  }
@@ -17,6 +17,9 @@
17
17
  /* Design tokens (breakpoints, containers, semantic colors, shadows) */
18
18
  @import "./tokens.css";
19
19
 
20
+ /* Utopia fluid scales (type and spacing) */
21
+ @import "./utopia.css";
22
+
20
23
  /* Fluid typography system with Georama Variable font */
21
24
  @import "./typography.css";
22
25
 
@@ -67,7 +67,7 @@
67
67
 
68
68
  :root {
69
69
  /* Grid system configuration */
70
- --spacing-grid-max: 1200px;
70
+ --spacing-grid-max: 2560px;
71
71
  --spacing-grid-gutter: 1.5rem;
72
72
 
73
73
  /* Elevation shadows - light mode */
@@ -1,7 +1,11 @@
1
1
  /**
2
2
  * Typography System
3
- * Fluid typography using viewport-based scaling with Georama Variable font
4
- * Scales automatically between 320px and 2560px viewports
3
+ * Fluid typography using Utopia scales with Georama Variable font
4
+ *
5
+ * Uses Utopia --step-* tokens for fluid type scaling.
6
+ * Base font size (--step-0) applied to body, not html, to avoid interfering with other tools.
7
+ *
8
+ * @link https://utopia.fyi/type/calculator
5
9
  */
6
10
 
7
11
  @import "@fontsource-variable/georama";
@@ -12,22 +16,6 @@
12
16
  --font-mono:
13
17
  ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;
14
18
 
15
- /* Fluid font sizes - viewport-based scaling */
16
- /* Base: 16px at 320px viewport, scales to 18px at 2560px */
17
- --font-size-xs: clamp(0.75rem, 0.7455rem + 0.0196vw, 0.84rem);
18
- --font-size-sm: clamp(0.875rem, 0.8696rem + 0.0234vw, 0.98rem);
19
- --font-size-base: clamp(1rem, 0.9937rem + 0.0272vw, 1.125rem);
20
- --font-size-lg: clamp(1.125rem, 1.1179rem + 0.0308vw, 1.266rem);
21
- --font-size-xl: clamp(1.25rem, 1.242rem + 0.0348vw, 1.406rem);
22
- --font-size-2xl: clamp(1.5rem, 1.4902rem + 0.0424vw, 1.688rem);
23
- --font-size-3xl: clamp(1.875rem, 1.8627rem + 0.0533vw, 2.109rem);
24
- --font-size-4xl: clamp(2.25rem, 2.2353rem + 0.0641vw, 2.531rem);
25
- --font-size-5xl: clamp(3rem, 2.9804rem + 0.0848vw, 3.375rem);
26
- --font-size-6xl: clamp(3.75rem, 3.7255rem + 0.106vw, 4.219rem);
27
- --font-size-7xl: clamp(4.5rem, 4.4706rem + 0.1272vw, 5.063rem);
28
- --font-size-8xl: clamp(6rem, 5.9608rem + 0.1696vw, 6.75rem);
29
- --font-size-9xl: clamp(8rem, 7.9412rem + 0.2544vw, 9rem);
30
-
31
19
  /* Line heights */
32
20
  --line-height-none: 1;
33
21
  --line-height-tight: 1.25;
@@ -46,15 +34,9 @@
46
34
  }
47
35
 
48
36
  @layer base {
49
- /* Fluid root font size - scales from 16px at 320px to 27px at 2560px */
50
- /* This makes ALL rem values fluid throughout the system */
51
- html {
52
- font-size: clamp(16px, 14.429px + 0.4911vw, 27px);
53
- }
54
-
55
37
  body {
56
38
  font-family: var(--font-sans);
57
- font-size: var(--font-size-base);
39
+ font-size: var(--step-0);
58
40
  font-feature-settings:
59
41
  "liga" 1,
60
42
  "dlig" 1,
@@ -66,41 +48,41 @@
66
48
  line-height: var(--line-height-normal);
67
49
  }
68
50
 
69
- /* Headings with fluid sizing */
51
+ /* Headings with Utopia fluid sizing */
70
52
  h1 {
71
- font-size: var(--font-size-5xl);
53
+ font-size: var(--step-5);
72
54
  font-weight: 700;
73
55
  line-height: var(--line-height-tight);
74
56
  letter-spacing: var(--letter-spacing-tight);
75
57
  }
76
58
 
77
59
  h2 {
78
- font-size: var(--font-size-4xl);
60
+ font-size: var(--step-4);
79
61
  font-weight: 700;
80
62
  line-height: var(--line-height-tight);
81
63
  letter-spacing: var(--letter-spacing-tight);
82
64
  }
83
65
 
84
66
  h3 {
85
- font-size: var(--font-size-3xl);
67
+ font-size: var(--step-3);
86
68
  font-weight: 600;
87
69
  line-height: var(--line-height-snug);
88
70
  }
89
71
 
90
72
  h4 {
91
- font-size: var(--font-size-2xl);
73
+ font-size: var(--step-2);
92
74
  font-weight: 600;
93
75
  line-height: var(--line-height-snug);
94
76
  }
95
77
 
96
78
  h5 {
97
- font-size: var(--font-size-xl);
79
+ font-size: var(--step-1);
98
80
  font-weight: 600;
99
81
  line-height: var(--line-height-snug);
100
82
  }
101
83
 
102
84
  h6 {
103
- font-size: var(--font-size-lg);
85
+ font-size: var(--step-0);
104
86
  font-weight: 600;
105
87
  line-height: var(--line-height-normal);
106
88
  }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Utopia Fluid Scales
3
+ * Generated from https://utopia.fyi
4
+ *
5
+ * This file defines fluid type and spacing scales that adapt smoothly across viewports.
6
+ * Use these tokens with fluid-tailwindcss utilities or directly in your CSS.
7
+ *
8
+ * TYPOGRAPHY:
9
+ * Apply --step-0 to body or main container (not html to avoid interfering with other tools)
10
+ * Use --step-1 through --step-7 for headings and larger text
11
+ * Use --step--1 and --step--2 for smaller text
12
+ *
13
+ * SPACING:
14
+ * Use with fluid-tailwindcss: fl-gap-s/m, fl-py-m/l, etc.
15
+ * Or use directly: gap: var(--space-s-m)
16
+ *
17
+ * GRID:
18
+ * Configure grid gutter with fluid spacing for perfect square cells
19
+ */
20
+
21
+ /* @link https://utopia.fyi/type/calculator?c=320,16,1.2,2560,26,1.25,7,2,&s=0.75|0.5|0.25,1.5|2|3|4|6,2xs-2xl&g=2xs,2xl,2xl,12 */
22
+ :root {
23
+ --step--2: clamp(0.6944rem, 0.6451rem + 0.2468vw, 1.04rem);
24
+ --step--1: clamp(0.8333rem, 0.7667rem + 0.3333vw, 1.3rem);
25
+ --step-0: clamp(1rem, 0.9107rem + 0.4464vw, 1.625rem);
26
+ --step-1: clamp(1.2rem, 1.0813rem + 0.5938vw, 2.0313rem);
27
+ --step-2: clamp(1.44rem, 1.283rem + 0.785vw, 2.5391rem);
28
+ --step-3: clamp(1.728rem, 1.5215rem + 1.0327vw, 3.1738rem);
29
+ --step-4: clamp(2.0736rem, 1.8031rem + 1.3526vw, 3.9673rem);
30
+ --step-5: clamp(2.4883rem, 2.1354rem + 1.7648vw, 4.9591rem);
31
+ --step-6: clamp(2.986rem, 2.527rem + 2.2949vw, 6.1989rem);
32
+ --step-7: clamp(3.5832rem, 2.9881rem + 2.9753vw, 7.7486rem);
33
+ }
34
+
35
+ /* @link https://utopia.fyi/space/calculator?c=320,16,1.2,2560,26,1.25,7,2,&s=0.75|0.5|0.25,1.5|2|3|4|6,2xs-2xl&g=2xs,2xl,2xl,12 */
36
+ :root {
37
+ --space-3xs: clamp(0.25rem, 0.2232rem + 0.1339vw, 0.4375rem);
38
+ --space-2xs: clamp(0.5rem, 0.4554rem + 0.2232vw, 0.8125rem);
39
+ --space-xs: clamp(0.75rem, 0.6786rem + 0.3571vw, 1.25rem);
40
+ --space-s: clamp(1rem, 0.9107rem + 0.4464vw, 1.625rem);
41
+ --space-m: clamp(1.5rem, 1.3661rem + 0.6696vw, 2.4375rem);
42
+ --space-l: clamp(2rem, 1.8214rem + 0.8929vw, 3.25rem);
43
+ --space-xl: clamp(3rem, 2.7321rem + 1.3393vw, 4.875rem);
44
+ --space-2xl: clamp(4rem, 3.6429rem + 1.7857vw, 6.5rem);
45
+ --space-3xl: clamp(6rem, 5.4643rem + 2.6786vw, 9.75rem);
46
+
47
+ /* One-up pairs */
48
+ --space-3xs-2xs: clamp(0.25rem, 0.1696rem + 0.4018vw, 0.8125rem);
49
+ --space-2xs-xs: clamp(0.5rem, 0.3929rem + 0.5357vw, 1.25rem);
50
+ --space-xs-s: clamp(0.75rem, 0.625rem + 0.625vw, 1.625rem);
51
+ --space-s-m: clamp(1rem, 0.7946rem + 1.0268vw, 2.4375rem);
52
+ --space-m-l: clamp(1.5rem, 1.25rem + 1.25vw, 3.25rem);
53
+ --space-l-xl: clamp(2rem, 1.5893rem + 2.0536vw, 4.875rem);
54
+ --space-xl-2xl: clamp(3rem, 2.5rem + 2.5vw, 6.5rem);
55
+ --space-2xl-3xl: clamp(4rem, 3.1786rem + 4.1071vw, 9.75rem);
56
+
57
+ /* Custom pairs */
58
+ --space-2xs-2xl: clamp(0.5rem, -0.3571rem + 4.2857vw, 6.5rem);
59
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://www.schemastore.org/package.json",
3
3
  "name": "@regardio/brand",
4
- "version": "0.8.1",
4
+ "version": "0.9.0",
5
5
  "private": false,
6
6
  "description": "Regardio Brand Assets",
7
7
  "homepage": "https://github.com/regardio/brand#readme",
@@ -65,33 +65,33 @@
65
65
  "import": "./dist/generated/icons/regardio-logo-mono-light.mjs",
66
66
  "types": "./dist/generated/icons/regardio-logo-mono-light.d.mts"
67
67
  },
68
- "./icons/regardio-system-bridge-icon": {
69
- "import": "./dist/generated/icons/regardio-system-bridge-icon.mjs",
70
- "types": "./dist/generated/icons/regardio-system-bridge-icon.d.mts"
71
- },
72
- "./icons/regardio-system-circle-icon": {
73
- "import": "./dist/generated/icons/regardio-system-circle-icon.mjs",
74
- "types": "./dist/generated/icons/regardio-system-circle-icon.d.mts"
75
- },
76
- "./icons/regardio-system-facet-icon": {
77
- "import": "./dist/generated/icons/regardio-system-facet-icon.mjs",
78
- "types": "./dist/generated/icons/regardio-system-facet-icon.d.mts"
79
- },
80
68
  "./icons/regardio-system-icon": {
81
69
  "import": "./dist/generated/icons/regardio-system-icon.mjs",
82
70
  "types": "./dist/generated/icons/regardio-system-icon.d.mts"
83
71
  },
84
- "./icons/regardio-system-plan-icon": {
85
- "import": "./dist/generated/icons/regardio-system-plan-icon.mjs",
86
- "types": "./dist/generated/icons/regardio-system-plan-icon.d.mts"
72
+ "./icons/system-layer-bridges-icon": {
73
+ "import": "./dist/generated/icons/system-layer-bridges-icon.mjs",
74
+ "types": "./dist/generated/icons/system-layer-bridges-icon.d.mts"
75
+ },
76
+ "./icons/system-layer-circles-icon": {
77
+ "import": "./dist/generated/icons/system-layer-circles-icon.mjs",
78
+ "types": "./dist/generated/icons/system-layer-circles-icon.d.mts"
79
+ },
80
+ "./icons/system-layer-facets-icon": {
81
+ "import": "./dist/generated/icons/system-layer-facets-icon.mjs",
82
+ "types": "./dist/generated/icons/system-layer-facets-icon.d.mts"
83
+ },
84
+ "./icons/system-layer-sources-icon": {
85
+ "import": "./dist/generated/icons/system-layer-sources-icon.mjs",
86
+ "types": "./dist/generated/icons/system-layer-sources-icon.d.mts"
87
87
  },
88
- "./icons/regardio-system-pursuit-icon": {
89
- "import": "./dist/generated/icons/regardio-system-pursuit-icon.mjs",
90
- "types": "./dist/generated/icons/regardio-system-pursuit-icon.d.mts"
88
+ "./icons/system-layer-plans-icon": {
89
+ "import": "./dist/generated/icons/system-layer-plans-icon.mjs",
90
+ "types": "./dist/generated/icons/system-layer-plans-icon.d.mts"
91
91
  },
92
- "./icons/regardio-system-spark-icon": {
93
- "import": "./dist/generated/icons/regardio-system-spark-icon.mjs",
94
- "types": "./dist/generated/icons/regardio-system-spark-icon.d.mts"
92
+ "./icons/system-layer-pursuits-icon": {
93
+ "import": "./dist/generated/icons/system-layer-pursuits-icon.mjs",
94
+ "types": "./dist/generated/icons/system-layer-pursuits-icon.d.mts"
95
95
  },
96
96
  "./sprites/compass-sprite": {
97
97
  "import": "./dist/generated/sprites/compass-sprite.mjs",
@@ -108,9 +108,7 @@
108
108
  "src/components"
109
109
  ],
110
110
  "scripts": {
111
- "build": "exec-s build:tsdown build:copy-styles",
112
- "build:copy-styles": "mkdir -p dist/styles && cp -r src/styles/* dist/styles/",
113
- "build:tsdown": "tsdown",
111
+ "build": "tsdown",
114
112
  "clean": "exec-clean .turbo dist src/generated",
115
113
  "dev": "tsdown --watch",
116
114
  "fix": "exec-s fix:pkg fix:md fix:biome",
@@ -140,15 +138,15 @@
140
138
  },
141
139
  "dependencies": {
142
140
  "@fontsource-variable/georama": "5.2.8",
143
- "@regardio/react": "^0.8.1",
144
- "@regardio/tailwind": "^0.4.2"
141
+ "@regardio/react": "^0.8.2",
142
+ "@regardio/tailwind": "^0.4.3"
145
143
  },
146
144
  "devDependencies": {
147
- "@regardio/dev": "^1.18.0",
148
- "@storybook/addon-a11y": "10.3.0",
149
- "@storybook/addon-docs": "10.3.0",
150
- "@storybook/addon-vitest": "10.3.0",
151
- "@storybook/react-vite": "10.3.0",
145
+ "@regardio/dev": "^1.18.2",
146
+ "@storybook/addon-a11y": "10.3.3",
147
+ "@storybook/addon-docs": "10.3.3",
148
+ "@storybook/addon-vitest": "10.3.3",
149
+ "@storybook/react-vite": "10.3.3",
152
150
  "@svgr/cli": "8.1.0",
153
151
  "@svgr/plugin-jsx": "8.1.0",
154
152
  "@svgr/plugin-svgo": "8.1.0",
@@ -158,20 +156,21 @@
158
156
  "@types/react": "19.2.14",
159
157
  "@types/react-dom": "19.2.3",
160
158
  "@vitejs/plugin-react": "6.0.1",
161
- "@vitest/browser-playwright": "4.1.0",
162
- "@vitest/coverage-v8": "4.1.0",
163
- "@vitest/ui": "4.1.0",
159
+ "@vitest/browser-playwright": "4.1.1",
160
+ "@vitest/coverage-v8": "4.1.1",
161
+ "@vitest/ui": "4.1.1",
164
162
  "linkedom": "0.18.12",
165
163
  "node-html-parser": "7.1.0",
166
164
  "playwright": "1.58.2",
167
165
  "react": "19.2.4",
168
166
  "react-dom": "19.2.4",
169
- "storybook": "10.3.0",
167
+ "storybook": "10.3.3",
170
168
  "svgo": "4.0.1",
171
169
  "tailwindcss": "4.2.2",
172
- "tsdown": "0.21.4",
173
- "typescript": "5.9.3",
174
- "vite": "8.0.0",
175
- "vitest": "4.1.0"
170
+ "tsdown": "0.21.5",
171
+ "tsx": "4.21.0",
172
+ "typescript": "6.0.2",
173
+ "vite": "8.0.2",
174
+ "vitest": "4.1.1"
176
175
  }
177
176
  }
@@ -1,10 +1,43 @@
1
1
  /**
2
- * Grid Utilities
3
- * Regardio's standard container and grid layout system
2
+ * Grid System
3
+ * Fluid grid based on Utopia scales for perfect square cells
4
4
  *
5
- * Uses tokens defined in tokens.css:
6
- * - --spacing-grid-max: Maximum container width
7
- * - --spacing-grid-gutter: Horizontal padding/gap
5
+ * FLUID GRID APPROACH:
6
+ * The grid uses fluid spacing where gutter width scales proportionally with viewport.
7
+ * When grid-gutter equals column width, and the same value is used for row gaps,
8
+ * cells become perfect squares automatically - no aspect-ratio calculations needed.
9
+ *
10
+ * CONFIGURATION:
11
+ * Define these tokens in your application (see utopia.css for fluid scales):
12
+ *
13
+ * ```css
14
+ * :root {
15
+ * --spacing-grid-max: 162.5rem; // Maximum container width
16
+ * --spacing-grid-gutter: var(--space-m); // Fluid gutter (column + row gaps)
17
+ * }
18
+ * ```
19
+ *
20
+ * USAGE WITH REACT GRID:
21
+ * Use @regardio/react Grid component for responsive layouts:
22
+ *
23
+ * ```tsx
24
+ * <Grid.Root flow="dense">
25
+ * <Grid.Item span={12} spanMd={6} spanLg={4}>
26
+ * Content automatically becomes square when gutter = column width
27
+ * </Grid.Item>
28
+ * </Grid.Root>
29
+ * ```
30
+ *
31
+ * FLUID SPACING:
32
+ * Use fluid-tailwindcss utilities instead of custom classes:
33
+ * - fl-gap-s/m: Fluid gap from --space-s to --space-m
34
+ * - fl-py-m/l: Fluid vertical padding from --space-m to --space-l
35
+ * - flex flex-col fl-gap-xs/s: Stack with fluid gap
36
+ * - flex flex-wrap fl-gap-2xs/xs: Cluster with fluid gap
37
+ *
38
+ * UTOPIA CALCULATOR:
39
+ * Generate fluid scales at https://utopia.fyi/grid/calculator
40
+ * Link fluid type, spacing, and grid for a cohesive system.
8
41
  */
9
42
  @layer components {
10
43
  /**
@@ -19,6 +52,8 @@
19
52
 
20
53
  /**
21
54
  * 12-column CSS Grid with container queries
55
+ * Uses CSS custom properties for configurability:
56
+ * - --spacing-grid-gutter: Gap between grid items
22
57
  */
23
58
  .u-grid {
24
59
  display: grid;
@@ -57,4 +92,11 @@
57
92
  .u-grid-quarter {
58
93
  grid-column: span 3;
59
94
  }
95
+
96
+ /**
97
+ * Sixth-width grid item spanning 2 columns
98
+ */
99
+ .u-grid-sixth {
100
+ grid-column: span 2;
101
+ }
60
102
  }
@@ -17,6 +17,9 @@
17
17
  /* Design tokens (breakpoints, containers, semantic colors, shadows) */
18
18
  @import "./tokens.css";
19
19
 
20
+ /* Utopia fluid scales (type and spacing) */
21
+ @import "./utopia.css";
22
+
20
23
  /* Fluid typography system with Georama Variable font */
21
24
  @import "./typography.css";
22
25
 
@@ -67,7 +67,7 @@
67
67
 
68
68
  :root {
69
69
  /* Grid system configuration */
70
- --spacing-grid-max: 1200px;
70
+ --spacing-grid-max: 2560px;
71
71
  --spacing-grid-gutter: 1.5rem;
72
72
 
73
73
  /* Elevation shadows - light mode */