@regardio/brand 0.2.0 → 0.3.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/README.md +123 -85
- package/dist/stories/Colors.stories.d.ts +7 -0
- package/dist/stories/Colors.stories.d.ts.map +1 -0
- package/dist/stories/Colors.stories.js +33 -0
- package/dist/stories/CompassSprites.stories.d.ts +10 -0
- package/dist/stories/CompassSprites.stories.d.ts.map +1 -0
- package/dist/stories/CompassSprites.stories.js +112 -0
- package/dist/stories/Icons.stories.d.ts +8 -0
- package/dist/stories/Icons.stories.d.ts.map +1 -0
- package/dist/stories/Icons.stories.js +42 -0
- package/dist/stories/Logos.stories.d.ts +7 -0
- package/dist/stories/Logos.stories.d.ts.map +1 -0
- package/dist/stories/Logos.stories.js +36 -0
- package/dist/stories/SystemIcons.stories.d.ts +6 -0
- package/dist/stories/SystemIcons.stories.d.ts.map +1 -0
- package/dist/stories/SystemIcons.stories.js +36 -0
- package/package.json +29 -8
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.
|
|
7
|
-
|
|
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
|
-
##
|
|
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
|
-
##
|
|
15
|
+
## Asset Catalog
|
|
35
16
|
|
|
36
|
-
|
|
17
|
+
Run Storybook to browse the complete asset catalog:
|
|
37
18
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
bridges, pointers) used across product UI and documentation
|
|
19
|
+
```bash
|
|
20
|
+
pnpm storybook
|
|
21
|
+
```
|
|
42
22
|
|
|
43
|
-
|
|
44
|
-
|
|
23
|
+
This opens an interactive catalog at `http://localhost:6006` with all icons,
|
|
24
|
+
logos, colors, and compass sprites.
|
|
45
25
|
|
|
46
|
-
|
|
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
|
|
51
|
-
src="./src/svg/icons/regardio-
|
|
52
|
-
<img alt="
|
|
53
|
-
src="./src/svg/icons/regardio-
|
|
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
|
-
|
|
37
|
+
## Asset Categories
|
|
59
38
|
|
|
60
|
-
|
|
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
|
-
|
|
41
|
+
Raw SVG assets are available in `src/svg/`:
|
|
74
42
|
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
###
|
|
46
|
+
### React Components
|
|
93
47
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|
-
**
|
|
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 @@
|
|
|
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
|
-
"
|
|
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.
|
|
9
|
+
"@regardio/dev": "1.9.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
|
-
"
|
|
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,33 +112,43 @@
|
|
|
101
112
|
"types": "./dist/generated/sprites/CompassSpriteProvider.d.ts"
|
|
102
113
|
}
|
|
103
114
|
},
|
|
104
|
-
"files": [
|
|
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",
|
|
114
133
|
"dev": "exec-tsc --project tsconfig.build.json --watch",
|
|
115
134
|
"fix": "exec-p fix:*",
|
|
116
135
|
"fix:biome": "lint-biome check --write --unsafe .",
|
|
117
|
-
"fix:md": "lint-md --fix \"**/*.md\" \"**/*.mdx\"
|
|
136
|
+
"fix:md": "lint-md --fix \"**/*.md\" \"**/*.mdx\"",
|
|
118
137
|
"generate": "exec-s generate:* fix:*",
|
|
119
138
|
"generate:compass-base-sprite": "exec-ts scripts/convert-svgs-to-sprite.ts ./src/svg/compass-base ./src/generated/sprites/compass-base.svg",
|
|
120
139
|
"generate:compass-base-sprites-components": "exec-ts scripts/build-compass-base-sprites.ts",
|
|
121
140
|
"generate:icons": "svgr --icon --out-dir ./src/generated/icons -- ./src/svg/icons",
|
|
122
141
|
"lint": "exec-p lint:*",
|
|
123
142
|
"lint:biome": "lint-biome check .",
|
|
124
|
-
"lint:md": "lint-md \"**/*.md\" \"**/*.mdx\"
|
|
143
|
+
"lint:md": "lint-md \"**/*.md\" \"**/*.mdx\"",
|
|
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": "
|
|
149
|
+
"version": "flow-changeset version"
|
|
129
150
|
},
|
|
130
151
|
"sideEffects": false,
|
|
131
152
|
"type": "module",
|
|
132
|
-
"version": "0.2
|
|
153
|
+
"version": "0.3.2"
|
|
133
154
|
}
|