@regardio/brand 0.2.0 → 0.3.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.
package/README.md CHANGED
@@ -3,115 +3,153 @@
3
3
  > **Design system and branding for the Regardio ecosystem**
4
4
 
5
5
  Regardio Brand provides the visual identity, design tokens, and brand guidelines
6
- for all Regardio applications. It ensures consistent visual language and user
7
- experience across the entire toolkit while supporting customization for
8
- different deployment contexts.
6
+ for all Regardio applications. The package includes both raw SVG files and
7
+ ready-to-use React components.
9
8
 
10
- ## What is Regardio Brand?
11
-
12
- Regardio Brand delivers comprehensive design system including:
13
-
14
- - **Design Tokens** - Colors, typography, spacing, and visual constants
15
- - **Brand Guidelines** - Logo usage, voice, tone, and visual identity standards
16
- - **Asset Library** - Icons, illustrations, and branded graphics
17
- - **Component Specifications** - Design specifications for UI components
18
- - **Theme Variants** - Light/dark modes and accessibility considerations
19
- - **Brand Extensions** - Guidelines for custom implementations and
20
- white-labeling
21
-
22
- This package serves as the foundation for visual consistency across all
23
- Ensemble applications and enables organizations to maintain brand coherence
24
- while using Ensemble tools.
25
-
26
- ## Getting Started
27
-
28
- ### Installation
9
+ ## Installation
29
10
 
30
11
  ```bash
31
12
  pnpm add @regardio/brand
32
13
  ```
33
14
 
34
- ## Included Assets
15
+ ## Asset Catalog
35
16
 
36
- The SVG assets live in `src/svg/` and are organized into:
17
+ Run Storybook to browse the complete asset catalog:
37
18
 
38
- - `icons/` — Wordmarks, product marks, and system icons for the Regardio brand
39
- and the Regardio System
40
- - `compass-base/` — System primitives and compositions (facets, steps, sparks,
41
- bridges, pointers) used across product UI and documentation
19
+ ```bash
20
+ pnpm storybook
21
+ ```
42
22
 
43
- Below are a few representative examples. Files are served directly from this
44
- package and can be embedded as inline SVGs or referenced via your bundler.
23
+ This opens an interactive catalog at `http://localhost:6006` with all icons,
24
+ logos, colors, and compass sprites.
45
25
 
46
- ### Brand Logos
26
+ ## Sample Assets
47
27
 
48
28
  <!-- markdownlint-disable MD033 -->
49
29
  <p style="background:#f1eded; display: flex; gap: 16px; align-items: center; padding: 16px;">
50
- <img alt="Regardio Logo Color"
51
- src="./src/svg/icons/regardio-logo-color.svg" width="120" />
52
- <img alt="Regardio Logo Mono"
53
- src="./src/svg/icons/regardio-logo-mono.svg" width="120" />
54
-
30
+ <img alt="Regardio Logo" src="./src/svg/icons/regardio-logo-color.svg" width="120" />
31
+ <img alt="Regardio Icon" src="./src/svg/icons/regardio-icon-color.svg" width="48" />
32
+ <img alt="Ensemble Icon" src="./src/svg/icons/regardio-ensemble-icon-color.svg" width="48" />
33
+ <img alt="System Icon" src="./src/svg/icons/regardio-system-icon.svg" width="48" />
55
34
  </p>
56
35
  <!-- markdownlint-enable MD033 -->
57
36
 
58
- ### Brand Icons
37
+ ## Asset Categories
59
38
 
60
- <!-- markdownlint-disable MD033 -->
61
- <p style="background:#0f3b50; display: flex; gap: 16px; align-items: center; padding: 16px;">
62
- <img alt="Regardio Ensemble Icon Color"
63
- src="./src/svg/icons/regardio-ensemble-icon-color.svg" width="120" />
64
- <img alt="Regardio Ensemble Icon Mono"
65
- src="./src/svg/icons/regardio-ensemble-icon-mono.svg" width="120" />
66
- <img alt="Regardio Compass Icon"
67
- src="./src/svg/icons/regardio-compass-icon.svg" width="120" />
68
- <img alt="Regardio System Icon"
69
- src="./src/svg/icons/regardio-system-icon.svg" width="120" />
70
- </p>
71
- <!-- markdownlint-enable MD033 -->
39
+ ### SVG Files
72
40
 
73
- ### System Icons
41
+ Raw SVG assets are available in `src/svg/`:
74
42
 
75
- <!-- markdownlint-disable MD033 -->
76
- <p style="display: flex; gap: 16px; align-items: center; padding: 16px;">
77
- <img alt="Regardio System Spark Icon"
78
- src="./src/svg/icons/regardio-system-spark-icon.svg" width="96" />
79
- <img alt="Regardio System Pursuit Icon"
80
- src="./src/svg/icons/regardio-system-pursuit-icon.svg" width="96" />
81
- <img alt="Regardio System Circle Icon"
82
- src="./src/svg/icons/regardio-system-circle-icon.svg" width="96" />
83
- <img alt="Regardio System Facet Icon"
84
- src="./src/svg/icons/regardio-system-facet-icon.svg" width="96" />
85
- <img alt="Regardio System Plan Icon"
86
- src="./src/svg/icons/regardio-system-plan-icon.svg" width="96" />
87
- <img alt="Regardio System Bridge Icon"
88
- src="./src/svg/icons/regardio-system-bridge-icon.svg" width="96" />
89
- </p>
90
- <!-- markdownlint-enable MD033 -->
43
+ - **`icons/`** — Regardio logos, icons, and system symbols
44
+ - **`compass-base/`** Compass sprite components (facets, sparks, bridges, pursuits)
91
45
 
92
- ### Compass Card
46
+ ### React Components
93
47
 
94
- <!-- markdownlint-disable MD033 -->
95
- <p style="display: flex; gap: 16px; align-items: center; padding: 16px; ">
96
- <img alt="Sparks: Leisure – Calm"
97
- src="./src/svg/compass-base/spark.leisure.calm.svg" width="105" />
98
- <img alt="Sparks: Motivator – Strength"
99
- src="./src/svg/compass-base/spark.motivator.strength.svg" width="148" />
100
- <img alt="Facets: Element – Spaces"
101
- src="./src/svg/compass-base/facet.element.spaces.svg" width="105" />
102
- <img alt="Facets: Step – Signal"
103
- src="./src/svg/compass-base/facet.step.signal.bottom.svg" width="105" />
104
- <img alt="Bridges: Perspective – Fulfills"
105
- src="./src/svg/compass-base/bridge.perspective.fulfills.svg" width="148" />
106
- <img alt="Prospects: Pointer"
107
- src="./src/svg/compass-base/prospect.pointer.svg" width="105" />
108
- </p>
109
- <!-- markdownlint-enable MD033 -->
48
+ Generated React components are exported from the package:
49
+
50
+ - **Logos** `@regardio/brand/logos/*`
51
+ - **Icons** — `@regardio/brand/icons/*`
52
+ - **Sprites** `@regardio/brand/sprites/*`
53
+
54
+ ## Usage
55
+
56
+ ### React Components
57
+
58
+ ```tsx
59
+ import RegardioLogoColor from "@regardio/brand/logos/regardio-logo-color";
60
+ import RegardioIconColor from "@regardio/brand/icons/regardio-color";
61
+ import { CompassSprite } from "@regardio/brand/sprites/compass-sprite";
62
+ import { CompassSpriteProvider } from "@regardio/brand/sprites/compass-sprite-provider";
63
+
64
+ function App() {
65
+ return (
66
+ <CompassSpriteProvider>
67
+ <RegardioLogoColor style={{ width: 200 }} />
68
+ <RegardioIconColor style={{ fontSize: 48 }} />
69
+ <CompassSprite id="spark.leisure.calm" width={80} height={80} />
70
+ </CompassSpriteProvider>
71
+ );
72
+ }
73
+ ```
74
+
75
+ ### CompassSpriteProvider
76
+
77
+ The `CompassSpriteProvider` embeds SVG symbol definitions for all compass sprites
78
+ directly into the DOM. Include it **once** at the root of your application:
79
+
80
+ ```tsx
81
+ import { CompassSpriteProvider } from "@regardio/brand/sprites/compass-sprite-provider";
82
+
83
+ function App() {
84
+ return (
85
+ <CompassSpriteProvider>
86
+ {/* Your app content */}
87
+ </CompassSpriteProvider>
88
+ );
89
+ }
90
+ ```
91
+
92
+ Then use `CompassSprite` anywhere in your app to reference sprites by ID:
93
+
94
+ ```tsx
95
+ import { CompassSprite } from "@regardio/brand/sprites/compass-sprite";
96
+
97
+ <CompassSprite id="spark.leisure.calm" width={80} height={80} />
98
+ <CompassSprite id="facet.element.people" width={60} height={80} />
99
+ <CompassSprite id="bridge.perspective.enables" width={100} height={70} />
100
+ ```
101
+
102
+ ### Regardio Color Scheme with Tailwind CSS
103
+
104
+ Import `colors.css` to use the Regardio color palette with Tailwind CSS v4:
105
+
106
+ ```tsx
107
+ import "@regardio/brand/colors.css";
108
+ ```
109
+
110
+ This provides CSS custom properties using the `@theme` directive, making colors
111
+ available as Tailwind utilities. The palette includes:
112
+
113
+ - **coral**, **orange**, **yellow**, **olive**, **lime**, **green**, **teal**, **cyan**, **blue**, **purple**, **pink**, **red** — full spectrum
114
+ - **gray** — neutral tones with warm undertones
115
+ - **white**, **black** — base colors
116
+
117
+ Each color has shades from `50` (lightest) to `950` (darkest):
118
+
119
+ ```html
120
+ <div class="bg-coral-500 text-white">Coral background</div>
121
+ <div class="text-teal-700">Teal text</div>
122
+ <div class="border-purple-300">Purple border</div>
123
+ ```
124
+
125
+ The compass sprites use these colors via Tailwind classes (e.g., `fill-green-300`),
126
+ so the color scheme must be loaded for sprites to render correctly.
127
+
128
+ ## Scripts
129
+
130
+ | Script | Description |
131
+ |--------|-------------|
132
+ | `pnpm build` | Build TypeScript to `dist/` |
133
+ | `pnpm dev` | Watch mode for development |
134
+ | `pnpm generate` | Regenerate all React components from SVGs |
135
+ | `pnpm storybook` | Launch Storybook asset catalog |
136
+ | `pnpm storybook:build` | Build static Storybook site |
137
+ | `pnpm lint` | Run linting checks |
138
+ | `pnpm fix` | Auto-fix linting issues |
139
+ | `pnpm typecheck` | TypeScript type checking |
140
+
141
+ ## Exports
142
+
143
+ | Export | Description |
144
+ |--------|-------------|
145
+ | `@regardio/brand/colors.css` | Tailwind v4 theme with Regardio color palette |
146
+ | `@regardio/brand/logos/*` | Logo React components |
147
+ | `@regardio/brand/icons/*` | Icon React components |
148
+ | `@regardio/brand/sprites/*` | Compass sprite components |
110
149
 
111
150
  ## License
112
151
 
113
- **Creative Commons Attribution-ShareAlike 4.0 International** (CC BY-SA 4.0):
114
- Regardio Brand assets and guidelines are freely available for use and adaptation.
152
+ **CC BY-SA 4.0** Regardio Brand assets are freely available for use and adaptation.
115
153
 
116
154
  ---
117
155
 
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ export declare const PrimaryColors: StoryObj;
5
+ export declare const SecondaryColors: StoryObj;
6
+ export declare const NeutralColors: StoryObj;
7
+ //# sourceMappingURL=Colors.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Colors.stories.d.ts","sourceRoot":"","sources":["../../src/stories/Colors.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAsC5D,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,aAAa,EAAE,QAiB3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAiB7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAiD3B,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ const ColorSwatch = ({ name, cssVar }) => (_jsxs("div", { style: {
3
+ border: '1px solid #e5e5e5',
4
+ borderRadius: '8px',
5
+ display: 'flex',
6
+ flexDirection: 'column',
7
+ overflow: 'hidden',
8
+ }, children: [_jsx("div", { style: {
9
+ background: `var(${cssVar})`,
10
+ height: '80px',
11
+ } }), _jsxs("div", { style: { padding: '12px' }, children: [_jsx("div", { style: { fontSize: '14px', fontWeight: 600 }, children: name }), _jsx("div", { style: { color: '#666', fontFamily: 'monospace', fontSize: '12px' }, children: cssVar })] })] }));
12
+ const ColorGrid = ({ children }) => (_jsx("div", { style: {
13
+ display: 'grid',
14
+ gap: '16px',
15
+ gridTemplateColumns: 'repeat(auto-fill, minmax(180px, 1fr))',
16
+ padding: '24px',
17
+ }, children: children }));
18
+ const meta = {
19
+ parameters: {
20
+ layout: 'fullscreen',
21
+ },
22
+ title: 'Brand/Colors',
23
+ };
24
+ export default meta;
25
+ export const PrimaryColors = {
26
+ render: () => (_jsxs(ColorGrid, { children: [_jsx(ColorSwatch, { cssVar: "--color-primary", name: "Primary" }), _jsx(ColorSwatch, { cssVar: "--color-primary-light", name: "Primary Light" }), _jsx(ColorSwatch, { cssVar: "--color-primary-dark", name: "Primary Dark" })] })),
27
+ };
28
+ export const SecondaryColors = {
29
+ render: () => (_jsxs(ColorGrid, { children: [_jsx(ColorSwatch, { cssVar: "--color-secondary", name: "Secondary" }), _jsx(ColorSwatch, { cssVar: "--color-secondary-light", name: "Secondary Light" }), _jsx(ColorSwatch, { cssVar: "--color-secondary-dark", name: "Secondary Dark" })] })),
30
+ };
31
+ export const NeutralColors = {
32
+ render: () => (_jsxs(ColorGrid, { children: [_jsx(ColorSwatch, { cssVar: "--color-white", name: "White" }), _jsx(ColorSwatch, { cssVar: "--color-gray-100", name: "Gray 100" }), _jsx(ColorSwatch, { cssVar: "--color-gray-200", name: "Gray 200" }), _jsx(ColorSwatch, { cssVar: "--color-gray-300", name: "Gray 300" }), _jsx(ColorSwatch, { cssVar: "--color-gray-400", name: "Gray 400" }), _jsx(ColorSwatch, { cssVar: "--color-gray-500", name: "Gray 500" }), _jsx(ColorSwatch, { cssVar: "--color-gray-600", name: "Gray 600" }), _jsx(ColorSwatch, { cssVar: "--color-gray-700", name: "Gray 700" }), _jsx(ColorSwatch, { cssVar: "--color-gray-800", name: "Gray 800" }), _jsx(ColorSwatch, { cssVar: "--color-gray-900", name: "Gray 900" }), _jsx(ColorSwatch, { cssVar: "--color-black", name: "Black" })] })),
33
+ };
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ export declare const LeisureSparks: StoryObj;
5
+ export declare const MotivatorSparks: StoryObj;
6
+ export declare const FacetElements: StoryObj;
7
+ export declare const FacetSteps: StoryObj;
8
+ export declare const BridgePerspectives: StoryObj;
9
+ export declare const AllSprites: StoryObj;
10
+ //# sourceMappingURL=CompassSprites.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompassSprites.stories.d.ts","sourceRoot":"","sources":["../../src/stories/CompassSprites.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAmG5D,QAAA,MAAM,IAAI,EAAE,IAaX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,aAAa,EAAE,QAa3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAa7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAa3B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,QAaxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,QAahC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,QAWxB,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { CompassSprite } from '../generated/sprites/CompassSprite';
3
+ import { CompassSpriteProvider } from '../generated/sprites/CompassSpriteProvider';
4
+ const spriteIds = [
5
+ 'spark.leisure.breeze',
6
+ 'spark.leisure.calm',
7
+ 'spark.leisure.contemplation',
8
+ 'spark.leisure.distance',
9
+ 'spark.leisure.indulgence',
10
+ 'spark.leisure.inspiration',
11
+ 'spark.leisure.movement',
12
+ 'spark.leisure.nearness',
13
+ 'spark.leisure.nourishment',
14
+ 'spark.leisure.refreshment',
15
+ 'spark.leisure.relaxation',
16
+ 'spark.leisure.relief',
17
+ 'spark.motivator.flexibility',
18
+ 'spark.motivator.orientation',
19
+ 'spark.motivator.pathways',
20
+ 'spark.motivator.possibilities',
21
+ 'spark.motivator.strength',
22
+ 'spark.motivator.structure',
23
+ 'sparks.leisure',
24
+ 'sparks.motivators',
25
+ 'facet.element.means',
26
+ 'facet.element.notions',
27
+ 'facet.element.people',
28
+ 'facet.element.spaces',
29
+ 'facet.element.things',
30
+ 'facet.element.times',
31
+ 'facet.step.accord.bottom',
32
+ 'facet.step.accord.top',
33
+ 'facet.step.action.bottom',
34
+ 'facet.step.action.top',
35
+ 'facet.step.effect.bottom',
36
+ 'facet.step.effect.top',
37
+ 'facet.step.essence.bottom',
38
+ 'facet.step.essence.top',
39
+ 'facet.step.impulse.bottom',
40
+ 'facet.step.impulse.top',
41
+ 'facet.step.signal.bottom',
42
+ 'facet.step.signal.top',
43
+ 'facets.elements',
44
+ 'facets.steps',
45
+ 'bridge.perspective.contradicts',
46
+ 'bridge.perspective.enables',
47
+ 'bridge.perspective.extends',
48
+ 'bridge.perspective.fulfills',
49
+ 'bridge.perspective.matches',
50
+ 'bridge.perspective.supports',
51
+ 'bridges.perspectives',
52
+ 'prospect.pointer',
53
+ 'pursuits.flourishing',
54
+ ];
55
+ const SpriteGrid = ({ children }) => (_jsx("div", { style: {
56
+ display: 'grid',
57
+ gap: '16px',
58
+ gridTemplateColumns: 'repeat(auto-fill, minmax(120px, 1fr))',
59
+ padding: '24px',
60
+ }, children: children }));
61
+ const SpriteCard = ({ id, size = 80 }) => (_jsxs("div", { style: {
62
+ alignItems: 'center',
63
+ border: '1px solid #e5e5e5',
64
+ borderRadius: '8px',
65
+ display: 'flex',
66
+ flexDirection: 'column',
67
+ gap: '8px',
68
+ padding: '12px',
69
+ }, children: [_jsx(CompassSprite, { height: size, id: id, width: size }), _jsx("span", { style: {
70
+ color: '#666',
71
+ fontSize: '10px',
72
+ textAlign: 'center',
73
+ wordBreak: 'break-word',
74
+ }, children: id })] }));
75
+ const meta = {
76
+ decorators: [
77
+ (Story) => (_jsxs(_Fragment, { children: [_jsx(CompassSpriteProvider, {}), _jsx(Story, {})] })),
78
+ ],
79
+ parameters: {
80
+ layout: 'fullscreen',
81
+ },
82
+ title: 'Brand/Compass Sprites',
83
+ };
84
+ export default meta;
85
+ export const LeisureSparks = {
86
+ render: () => (_jsx(SpriteGrid, { children: spriteIds
87
+ .filter((id) => id.startsWith('spark.leisure.'))
88
+ .map((id) => (_jsx(SpriteCard, { id: id }, id))) })),
89
+ };
90
+ export const MotivatorSparks = {
91
+ render: () => (_jsx(SpriteGrid, { children: spriteIds
92
+ .filter((id) => id.startsWith('spark.motivator.'))
93
+ .map((id) => (_jsx(SpriteCard, { id: id }, id))) })),
94
+ };
95
+ export const FacetElements = {
96
+ render: () => (_jsx(SpriteGrid, { children: spriteIds
97
+ .filter((id) => id.startsWith('facet.element.'))
98
+ .map((id) => (_jsx(SpriteCard, { id: id }, id))) })),
99
+ };
100
+ export const FacetSteps = {
101
+ render: () => (_jsx(SpriteGrid, { children: spriteIds
102
+ .filter((id) => id.startsWith('facet.step.'))
103
+ .map((id) => (_jsx(SpriteCard, { id: id }, id))) })),
104
+ };
105
+ export const BridgePerspectives = {
106
+ render: () => (_jsx(SpriteGrid, { children: spriteIds
107
+ .filter((id) => id.startsWith('bridge.perspective.'))
108
+ .map((id) => (_jsx(SpriteCard, { id: id }, id))) })),
109
+ };
110
+ export const AllSprites = {
111
+ render: () => (_jsx(SpriteGrid, { children: spriteIds.map((id) => (_jsx(SpriteCard, { id: id }, id))) })),
112
+ };
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ export declare const RegardioIcons: StoryObj;
5
+ export declare const EnsembleIcons: StoryObj;
6
+ export declare const CompassIcon: StoryObj;
7
+ export declare const AllIcons: StoryObj;
8
+ //# sourceMappingURL=Icons.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.stories.d.ts","sourceRoot":"","sources":["../../src/stories/Icons.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAuC5D,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,aAAa,EAAE,QAc3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,QAc3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,QAQzB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,QA0BtB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import RegardioCompassIcon from '../generated/icons/RegardioCompassIcon';
3
+ import RegardioEnsembleIconColor from '../generated/icons/RegardioEnsembleIconColor';
4
+ import RegardioEnsembleIconColorFull from '../generated/icons/RegardioEnsembleIconColorFull';
5
+ import RegardioEnsembleIconMono from '../generated/icons/RegardioEnsembleIconMono';
6
+ import RegardioIconColor from '../generated/icons/RegardioIconColor';
7
+ import RegardioIconColorFull from '../generated/icons/RegardioIconColorFull';
8
+ import RegardioIconMono from '../generated/icons/RegardioIconMono';
9
+ const IconGrid = ({ children }) => (_jsx("div", { style: {
10
+ display: 'grid',
11
+ gap: '24px',
12
+ gridTemplateColumns: 'repeat(auto-fill, minmax(150px, 1fr))',
13
+ padding: '24px',
14
+ }, children: children }));
15
+ const IconCard = ({ name, children }) => (_jsxs("div", { style: {
16
+ alignItems: 'center',
17
+ border: '1px solid #e5e5e5',
18
+ borderRadius: '8px',
19
+ display: 'flex',
20
+ flexDirection: 'column',
21
+ gap: '12px',
22
+ padding: '16px',
23
+ }, children: [_jsx("div", { style: { fontSize: '64px', lineHeight: 1 }, children: children }), _jsx("span", { style: { color: '#666', fontSize: '12px', textAlign: 'center' }, children: name })] }));
24
+ const meta = {
25
+ parameters: {
26
+ layout: 'fullscreen',
27
+ },
28
+ title: 'Brand/Icons',
29
+ };
30
+ export default meta;
31
+ export const RegardioIcons = {
32
+ render: () => (_jsxs(IconGrid, { children: [_jsx(IconCard, { name: "RegardioIconColor", children: _jsx(RegardioIconColor, {}) }), _jsx(IconCard, { name: "RegardioIconColorFull", children: _jsx(RegardioIconColorFull, {}) }), _jsx(IconCard, { name: "RegardioIconMono", children: _jsx(RegardioIconMono, {}) })] })),
33
+ };
34
+ export const EnsembleIcons = {
35
+ render: () => (_jsxs(IconGrid, { children: [_jsx(IconCard, { name: "EnsembleIconColor", children: _jsx(RegardioEnsembleIconColor, {}) }), _jsx(IconCard, { name: "EnsembleIconColorFull", children: _jsx(RegardioEnsembleIconColorFull, {}) }), _jsx(IconCard, { name: "EnsembleIconMono", children: _jsx(RegardioEnsembleIconMono, {}) })] })),
36
+ };
37
+ export const CompassIcon = {
38
+ render: () => (_jsx(IconGrid, { children: _jsx(IconCard, { name: "CompassIcon", children: _jsx(RegardioCompassIcon, {}) }) })),
39
+ };
40
+ export const AllIcons = {
41
+ render: () => (_jsxs(IconGrid, { children: [_jsx(IconCard, { name: "RegardioIconColor", children: _jsx(RegardioIconColor, {}) }), _jsx(IconCard, { name: "RegardioIconColorFull", children: _jsx(RegardioIconColorFull, {}) }), _jsx(IconCard, { name: "RegardioIconMono", children: _jsx(RegardioIconMono, {}) }), _jsx(IconCard, { name: "EnsembleIconColor", children: _jsx(RegardioEnsembleIconColor, {}) }), _jsx(IconCard, { name: "EnsembleIconColorFull", children: _jsx(RegardioEnsembleIconColorFull, {}) }), _jsx(IconCard, { name: "EnsembleIconMono", children: _jsx(RegardioEnsembleIconMono, {}) }), _jsx(IconCard, { name: "CompassIcon", children: _jsx(RegardioCompassIcon, {}) })] })),
42
+ };
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ export declare const ColorLogos: StoryObj;
5
+ export declare const MonoLogos: StoryObj;
6
+ export declare const AllLogos: StoryObj;
7
+ //# sourceMappingURL=Logos.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logos.stories.d.ts","sourceRoot":"","sources":["../../src/stories/Logos.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAyC5D,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,UAAU,EAAE,QAiBxB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,QAevB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,QAuBtB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import RegardioLogoColor from '../generated/icons/RegardioLogoColor';
3
+ import RegardioLogoColorLight from '../generated/icons/RegardioLogoColorLight';
4
+ import RegardioLogoMono from '../generated/icons/RegardioLogoMono';
5
+ import RegardioLogoMonoLight from '../generated/icons/RegardioLogoMonoLight';
6
+ const LogoContainer = ({ children, background, }) => (_jsx("div", { style: {
7
+ alignItems: 'center',
8
+ background: background || 'transparent',
9
+ borderRadius: '8px',
10
+ display: 'flex',
11
+ flexDirection: 'column',
12
+ gap: '16px',
13
+ padding: '32px',
14
+ }, children: children }));
15
+ const LogoGrid = ({ children }) => (_jsx("div", { style: {
16
+ display: 'grid',
17
+ gap: '24px',
18
+ gridTemplateColumns: 'repeat(2, 1fr)',
19
+ padding: '24px',
20
+ }, children: children }));
21
+ const meta = {
22
+ parameters: {
23
+ layout: 'fullscreen',
24
+ },
25
+ title: 'Brand/Logos',
26
+ };
27
+ export default meta;
28
+ export const ColorLogos = {
29
+ render: () => (_jsxs(LogoGrid, { children: [_jsxs(LogoContainer, { background: "#ffffff", children: [_jsx(RegardioLogoColor, { style: { height: 'auto', width: 200 } }), _jsx("span", { style: { color: '#666', fontSize: '12px' }, children: "RegardioLogoColor (light background)" })] }), _jsxs(LogoContainer, { background: "#0f3b50", children: [_jsx(RegardioLogoColorLight, { style: { height: 'auto', width: 200 } }), _jsx("span", { style: { color: '#ccc', fontSize: '12px' }, children: "RegardioLogoColorLight (dark background)" })] })] })),
30
+ };
31
+ export const MonoLogos = {
32
+ render: () => (_jsxs(LogoGrid, { children: [_jsxs(LogoContainer, { background: "#ffffff", children: [_jsx(RegardioLogoMono, { style: { height: 'auto', width: 200 } }), _jsx("span", { style: { color: '#666', fontSize: '12px' }, children: "RegardioLogoMono (light background)" })] }), _jsxs(LogoContainer, { background: "#0f3b50", children: [_jsx(RegardioLogoMonoLight, { style: { height: 'auto', width: 200 } }), _jsx("span", { style: { color: '#ccc', fontSize: '12px' }, children: "RegardioLogoMonoLight (dark background)" })] })] })),
33
+ };
34
+ export const AllLogos = {
35
+ render: () => (_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: '32px' }, children: _jsxs(LogoGrid, { children: [_jsxs(LogoContainer, { background: "#ffffff", children: [_jsx(RegardioLogoColor, { style: { height: 'auto', width: 200 } }), _jsx("span", { style: { color: '#666', fontSize: '12px' }, children: "RegardioLogoColor" })] }), _jsxs(LogoContainer, { background: "#0f3b50", children: [_jsx(RegardioLogoColorLight, { style: { height: 'auto', width: 200 } }), _jsx("span", { style: { color: '#ccc', fontSize: '12px' }, children: "RegardioLogoColorLight" })] }), _jsxs(LogoContainer, { background: "#ffffff", children: [_jsx(RegardioLogoMono, { style: { height: 'auto', width: 200 } }), _jsx("span", { style: { color: '#666', fontSize: '12px' }, children: "RegardioLogoMono" })] }), _jsxs(LogoContainer, { background: "#0f3b50", children: [_jsx(RegardioLogoMonoLight, { style: { height: 'auto', width: 200 } }), _jsx("span", { style: { color: '#ccc', fontSize: '12px' }, children: "RegardioLogoMonoLight" })] })] }) })),
36
+ };
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ export declare const AllSystemIcons: StoryObj;
5
+ export declare const SystemIconSizes: StoryObj;
6
+ //# sourceMappingURL=SystemIcons.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemIcons.stories.d.ts","sourceRoot":"","sources":["../../src/stories/SystemIcons.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAuC5D,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,cAAc,EAAE,QA0B5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,QAa7B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import RegardioSystemBridgeIcon from '../generated/icons/RegardioSystemBridgeIcon';
3
+ import RegardioSystemCircleIcon from '../generated/icons/RegardioSystemCircleIcon';
4
+ import RegardioSystemFacetIcon from '../generated/icons/RegardioSystemFacetIcon';
5
+ import RegardioSystemIcon from '../generated/icons/RegardioSystemIcon';
6
+ import RegardioSystemPlanIcon from '../generated/icons/RegardioSystemPlanIcon';
7
+ import RegardioSystemPursuitIcon from '../generated/icons/RegardioSystemPursuitIcon';
8
+ import RegardioSystemSparkIcon from '../generated/icons/RegardioSystemSparkIcon';
9
+ const IconGrid = ({ children }) => (_jsx("div", { style: {
10
+ display: 'grid',
11
+ gap: '24px',
12
+ gridTemplateColumns: 'repeat(auto-fill, minmax(150px, 1fr))',
13
+ padding: '24px',
14
+ }, children: children }));
15
+ const IconCard = ({ name, children }) => (_jsxs("div", { style: {
16
+ alignItems: 'center',
17
+ border: '1px solid #e5e5e5',
18
+ borderRadius: '8px',
19
+ display: 'flex',
20
+ flexDirection: 'column',
21
+ gap: '12px',
22
+ padding: '16px',
23
+ }, children: [_jsx("div", { style: { fontSize: '64px', lineHeight: 1 }, children: children }), _jsx("span", { style: { color: '#666', fontSize: '12px', textAlign: 'center' }, children: name })] }));
24
+ const meta = {
25
+ parameters: {
26
+ layout: 'fullscreen',
27
+ },
28
+ title: 'Brand/System Icons',
29
+ };
30
+ export default meta;
31
+ export const AllSystemIcons = {
32
+ render: () => (_jsxs(IconGrid, { children: [_jsx(IconCard, { name: "SystemIcon", children: _jsx(RegardioSystemIcon, {}) }), _jsx(IconCard, { name: "SparkIcon", children: _jsx(RegardioSystemSparkIcon, {}) }), _jsx(IconCard, { name: "PursuitIcon", children: _jsx(RegardioSystemPursuitIcon, {}) }), _jsx(IconCard, { name: "CircleIcon", children: _jsx(RegardioSystemCircleIcon, {}) }), _jsx(IconCard, { name: "FacetIcon", children: _jsx(RegardioSystemFacetIcon, {}) }), _jsx(IconCard, { name: "PlanIcon", children: _jsx(RegardioSystemPlanIcon, {}) }), _jsx(IconCard, { name: "BridgeIcon", children: _jsx(RegardioSystemBridgeIcon, {}) })] })),
33
+ };
34
+ export const SystemIconSizes = {
35
+ render: () => (_jsxs("div", { style: { padding: '24px' }, children: [_jsx("h3", { style: { marginBottom: '16px' }, children: "System Icon at different sizes" }), _jsxs("div", { style: { alignItems: 'center', display: 'flex', gap: '24px' }, children: [_jsx(RegardioSystemIcon, { style: { fontSize: '24px' } }), _jsx(RegardioSystemIcon, { style: { fontSize: '32px' } }), _jsx(RegardioSystemIcon, { style: { fontSize: '48px' } }), _jsx(RegardioSystemIcon, { style: { fontSize: '64px' } }), _jsx(RegardioSystemIcon, { style: { fontSize: '96px' } })] })] })),
36
+ };
package/package.json CHANGED
@@ -1,20 +1,31 @@
1
1
  {
2
2
  "$schema": "https://www.schemastore.org/package.json",
3
- "authors": ["Bernd Matzner <bernd.matzner@regard.io>"],
3
+ "author": "Bernd Matzner <bernd.matzner@regard.io>",
4
+ "bugs": {
5
+ "url": "https://github.com/regardio/brand/issues"
6
+ },
4
7
  "description": "Regardio Brand Assets",
5
8
  "devDependencies": {
6
- "@regardio/dev": "1.7.0",
9
+ "@regardio/dev": "1.7.1",
10
+ "@storybook/react-vite": "10.1.11",
7
11
  "@svgr/cli": "8.1.0",
8
12
  "@svgr/plugin-jsx": "8.1.0",
9
13
  "@svgr/plugin-svgo": "8.1.0",
14
+ "@tailwindcss/vite": "4.1.18",
10
15
  "@total-typescript/ts-reset": "0.6.1",
11
16
  "@types/node": "25.0.3",
12
17
  "@types/react": "19.2.7",
13
18
  "@types/react-dom": "19.2.3",
19
+ "@vitejs/plugin-react": "5.1.2",
14
20
  "linkedom": "0.18.12",
15
21
  "node-html-parser": "7.0.1",
22
+ "react": "19.2.3",
23
+ "react-dom": "19.2.3",
24
+ "storybook": "10.1.11",
16
25
  "svgo": "4.0.0",
17
- "typescript": "5.9.3"
26
+ "tailwindcss": "4.1.18",
27
+ "typescript": "5.9.3",
28
+ "vite": "7.3.0"
18
29
  },
19
30
  "exports": {
20
31
  "./colors.css": {
@@ -101,13 +112,21 @@
101
112
  "types": "./dist/generated/sprites/CompassSpriteProvider.d.ts"
102
113
  }
103
114
  },
104
- "files": ["dist", "src/styles/colors.css"],
115
+ "files": [
116
+ "dist",
117
+ "src/styles/colors.css"
118
+ ],
119
+ "homepage": "https://github.com/regardio/brand#readme",
105
120
  "license": "CC BY-SA 4.0",
106
121
  "name": "@regardio/brand",
107
122
  "private": false,
108
123
  "publishConfig": {
109
124
  "access": "public"
110
125
  },
126
+ "repository": {
127
+ "type": "git",
128
+ "url": "https://github.com/regardio/brand"
129
+ },
111
130
  "scripts": {
112
131
  "build": "exec-tsc --project tsconfig.build.json",
113
132
  "clean": "exec-clean .turbo dist src/generated",
@@ -124,10 +143,12 @@
124
143
  "lint:md": "lint-md \"**/*.md\" \"**/*.mdx\" \"!**/node_modules/**\" \"!**/dist/**\"",
125
144
  "prepare": "exec-husky",
126
145
  "release": "flow-release",
146
+ "storybook": "storybook dev -p 6006",
147
+ "storybook:build": "storybook build -o storybook-static",
127
148
  "typecheck": "exec-tsc --noEmit",
128
- "version": "pnpm changeset version"
149
+ "version": "flow-changeset version"
129
150
  },
130
151
  "sideEffects": false,
131
152
  "type": "module",
132
- "version": "0.2.0"
153
+ "version": "0.3.1"
133
154
  }