rouse-ui-kit-make-kit 0.1.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/guidelines/Guidelines.md +114 -0
- package/guidelines/setup.md +260 -0
- package/package.json +11 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<!-- make-kit-guidelines -->
|
|
2
|
+
## Design System Setup — MANDATORY
|
|
3
|
+
|
|
4
|
+
This project depends on `@make-kits/rouse-ui-kit` packages. Before writing
|
|
5
|
+
any code:
|
|
6
|
+
|
|
7
|
+
1. Read guidelines/setup.md and guidelines/Guidelines.md by their exact
|
|
8
|
+
path (e.g. node_modules/<scope>/<package>/guidelines/setup.md).
|
|
9
|
+
This project uses pnpm, which symlinks packages — do NOT use
|
|
10
|
+
`find`, `glob`, or `file_search` to discover files as they silently
|
|
11
|
+
fail on symlinks. Instead use: reading files by exact path,
|
|
12
|
+
`ls` (follows symlinks), `find -L` (`-L` follows symlinks), or `cat`.
|
|
13
|
+
2. Execute all setup instructions (install dependencies, config changes)
|
|
14
|
+
against THIS project — not the package itself.
|
|
15
|
+
3. Do not skip, modify, or improvise any setup steps.
|
|
16
|
+
4. Read ALL other required .md files specified in guidelines/Guidelines.md.
|
|
17
|
+
5. Verify that all packages specified in setup.md appear in this
|
|
18
|
+
project's package.json and that all required .md files have been read before proceeding.
|
|
19
|
+
<!-- /make-kit-guidelines -->
|
|
20
|
+
|
|
21
|
+
**Add your own guidelines here**
|
|
22
|
+
|
|
23
|
+
## Rouse Design System Guidelines
|
|
24
|
+
|
|
25
|
+
Read `guidelines/setup.md` for full component reference and import patterns.
|
|
26
|
+
|
|
27
|
+
### General
|
|
28
|
+
- Use `rouse-ui-kit` components for ALL UI elements — never build custom buttons, inputs, chips, alerts, or labels from scratch
|
|
29
|
+
- Import everything from `rouse-ui-kit`; never import directly from `@mui/material` for UI components (MUI is a peer dependency of the kit)
|
|
30
|
+
- Always wrap the app in `ThemeProvider` + `CssBaseline` from MUI using the `theme` export from `rouse-ui-kit`
|
|
31
|
+
- Set `html { font-size: 16px }` in global CSS so MUI rem values are correct
|
|
32
|
+
|
|
33
|
+
### Typography
|
|
34
|
+
- Use `Typography variant="h4"` for page titles, `h5` for section headers, `h6` for card headers
|
|
35
|
+
- Never set `fontSize` manually — always use MUI Typography `variant` prop
|
|
36
|
+
- Never use `color: "black"` — use `theme.palette.text.primary` (#191919) or `theme.palette.text.secondary` (#666666)
|
|
37
|
+
|
|
38
|
+
### Status & Labels
|
|
39
|
+
- Use `LabelFilled` for status (Active/Inactive) with `color="success"` or `color="default"`
|
|
40
|
+
- Use `ChipStatus` for contract tier / category badges (Premium, Basic)
|
|
41
|
+
- Use `AlertStandard` for all contextual messages — never custom-build alert boxes
|
|
42
|
+
|
|
43
|
+
### Layout
|
|
44
|
+
- Page backgrounds: `bgcolor: theme.palette.background.default` (#F5F5F5)
|
|
45
|
+
- Card/section backgrounds: `bgcolor: background.white` (#FFFFFF) with `border: 1px solid ${theme.palette.divider}`
|
|
46
|
+
- Section cards have a header (title in `h6` + optional `LabelFilled` badge) separated by a divider from the content
|
|
47
|
+
- Modals: `background.white`, `borderRadius: 2`, `boxShadow: 3`, max-width `28rem`–`32rem`
|
|
48
|
+
|
|
49
|
+
### Forms
|
|
50
|
+
- All text inputs: `TextFieldOutlined` — use `placeholder` + `size="small"` for search bars
|
|
51
|
+
- All dropdowns: `SelectOutlined`
|
|
52
|
+
- All checkboxes: `Checkbox` from rouse-ui-kit
|
|
53
|
+
- Form modals always have 3 sections: header (title+desc), content (fields), footer (Cancel + primary CTA)
|
|
54
|
+
|
|
55
|
+
<!--
|
|
56
|
+
|
|
57
|
+
System Guidelines (original template — keep for reference)
|
|
58
|
+
|
|
59
|
+
Use this file to provide the AI with rules and guidelines you want it to follow.
|
|
60
|
+
This template outlines a few examples of things you can add. You can add your own sections and format it to suit your needs
|
|
61
|
+
|
|
62
|
+
TIP: More context isn't always better. It can confuse the LLM. Try and add the most important rules you need
|
|
63
|
+
|
|
64
|
+
# General guidelines
|
|
65
|
+
|
|
66
|
+
Any general rules you want the AI to follow.
|
|
67
|
+
For example:
|
|
68
|
+
|
|
69
|
+
* Only use absolute positioning when necessary. Opt for responsive and well structured layouts that use flexbox and grid by default
|
|
70
|
+
* Refactor code as you go to keep code clean
|
|
71
|
+
* Keep file sizes small and put helper functions and components in their own files.
|
|
72
|
+
|
|
73
|
+
--------------
|
|
74
|
+
|
|
75
|
+
# Design system guidelines
|
|
76
|
+
Rules for how the AI should make generations look like your company's design system
|
|
77
|
+
|
|
78
|
+
Additionally, if you select a design system to use in the prompt box, you can reference
|
|
79
|
+
your design system's components, tokens, variables and components.
|
|
80
|
+
For example:
|
|
81
|
+
|
|
82
|
+
* Use a base font-size of 14px
|
|
83
|
+
* Date formats should always be in the format “Jun 10”
|
|
84
|
+
* The bottom toolbar should only ever have a maximum of 4 items
|
|
85
|
+
* Never use the floating action button with the bottom toolbar
|
|
86
|
+
* Chips should always come in sets of 3 or more
|
|
87
|
+
* Don't use a dropdown if there are 2 or fewer options
|
|
88
|
+
|
|
89
|
+
You can also create sub sections and add more specific details
|
|
90
|
+
For example:
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
## Button
|
|
94
|
+
The Button component is a fundamental interactive element in our design system, designed to trigger actions or navigate
|
|
95
|
+
users through the application. It provides visual feedback and clear affordances to enhance user experience.
|
|
96
|
+
|
|
97
|
+
### Usage
|
|
98
|
+
Buttons should be used for important actions that users need to take, such as form submissions, confirming choices,
|
|
99
|
+
or initiating processes. They communicate interactivity and should have clear, action-oriented labels.
|
|
100
|
+
|
|
101
|
+
### Variants
|
|
102
|
+
* Primary Button
|
|
103
|
+
* Purpose : Used for the main action in a section or page
|
|
104
|
+
* Visual Style : Bold, filled with the primary brand color
|
|
105
|
+
* Usage : One primary button per section to guide users toward the most important action
|
|
106
|
+
* Secondary Button
|
|
107
|
+
* Purpose : Used for alternative or supporting actions
|
|
108
|
+
* Visual Style : Outlined with the primary color, transparent background
|
|
109
|
+
* Usage : Can appear alongside a primary button for less important actions
|
|
110
|
+
* Tertiary Button
|
|
111
|
+
* Purpose : Used for the least important actions
|
|
112
|
+
* Visual Style : Text-only with no border, using primary color
|
|
113
|
+
* Usage : For actions that should be available but not emphasized
|
|
114
|
+
-->
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# Rouse UI Kit — Setup & Component Reference
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
This project uses `rouse-ui-kit` from npm. It is already listed in `package.json`.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Import pattern
|
|
12
|
+
|
|
13
|
+
All components and tokens are imported from `rouse-ui-kit`:
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import {
|
|
17
|
+
ButtonContained, ButtonOutlined, ButtonText,
|
|
18
|
+
TextFieldOutlined, SelectOutlined,
|
|
19
|
+
ChipFilled, ChipStatus,
|
|
20
|
+
LabelFilled, LabelOutlined,
|
|
21
|
+
AlertStandard,
|
|
22
|
+
Checkbox,
|
|
23
|
+
IconButtonOutlined,
|
|
24
|
+
Menu,
|
|
25
|
+
theme, background, gray, other, interaction,
|
|
26
|
+
primary, secondary, text, typography,
|
|
27
|
+
} from "rouse-ui-kit";
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Always wrap the app in `ThemeProvider` and `CssBaseline` from MUI:
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
import { ThemeProvider } from "@mui/material/styles";
|
|
34
|
+
import CssBaseline from "@mui/material/CssBaseline";
|
|
35
|
+
import { theme } from "rouse-ui-kit";
|
|
36
|
+
|
|
37
|
+
<ThemeProvider theme={theme}>
|
|
38
|
+
<CssBaseline />
|
|
39
|
+
{/* app content */}
|
|
40
|
+
</ThemeProvider>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Design Tokens
|
|
46
|
+
|
|
47
|
+
### Colors — use via `theme.palette.*`
|
|
48
|
+
|
|
49
|
+
| Token | Value | Usage |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `theme.palette.text.primary` | `#191919` | All primary text |
|
|
52
|
+
| `theme.palette.text.secondary` | `#666666` | Labels, captions, metadata |
|
|
53
|
+
| `theme.palette.text.disabled` | `#999999` | Disabled states |
|
|
54
|
+
| `theme.palette.secondary.main` | `#2C4D9E` | Links, active nav, accent |
|
|
55
|
+
| `theme.palette.secondary.light` | `#6F8DE3` | Hover/light accent |
|
|
56
|
+
| `theme.palette.primary.main` | `#4C4C4C` | Borders, icons |
|
|
57
|
+
| `theme.palette.divider` | `rgba(0,0,0,0.12)` | Borders, dividers |
|
|
58
|
+
| `theme.palette.action.hover` | `rgba(0,0,0,0.04)` | Row hover |
|
|
59
|
+
| `background.white` | `#FFFFFF` | Card/surface backgrounds |
|
|
60
|
+
| `background.paper` | `#FAFAFA` | Slightly off-white surfaces |
|
|
61
|
+
| `background.default` | `#F5F5F5` | Page background |
|
|
62
|
+
| `gray[10]` | `#E5E5E5` | Avatar backgrounds, subtle fills |
|
|
63
|
+
|
|
64
|
+
Import standalone tokens when needed:
|
|
65
|
+
```tsx
|
|
66
|
+
import { background, gray, other, interaction } from "rouse-ui-kit";
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Typography — use MUI `variant` prop, never hardcode font sizes
|
|
70
|
+
|
|
71
|
+
| Variant | Size | Weight | Use for |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| `h4` | 34px (2.125rem) | 400 | Page titles |
|
|
74
|
+
| `h5` | 24px (1.5rem) | 400 | Section headers |
|
|
75
|
+
| `h6` | 20px (1.25rem) | 500 | Card headers, sub-section titles |
|
|
76
|
+
| `subtitle1` | 16px | 400 | Secondary headers |
|
|
77
|
+
| `subtitle2` | 14px | 500 | Table headers, labels with emphasis |
|
|
78
|
+
| `body1` | 16px | 400 | Body text |
|
|
79
|
+
| `body2` | 14px | 400 | Secondary body, descriptions |
|
|
80
|
+
| `caption` | 12px | 400 | Metadata, timestamps, hints |
|
|
81
|
+
|
|
82
|
+
**Never** set `fontSize` manually on `Typography` — always use `variant`.
|
|
83
|
+
**Never** use `color: "black"` — always use `theme.palette.text.primary`.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Components
|
|
88
|
+
|
|
89
|
+
### ButtonContained
|
|
90
|
+
Primary CTA. Use for the main action on a page/section.
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
<ButtonContained label="Add client" onClick={handleClick} />
|
|
94
|
+
<ButtonContained label="Save" disabled={!isValid} />
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Props: `label`, `onClick`, `disabled`, `icon` ("none" | "left" | "right")
|
|
98
|
+
|
|
99
|
+
### ButtonOutlined
|
|
100
|
+
Secondary action. Use alongside `ButtonContained` for cancel/alternative actions.
|
|
101
|
+
|
|
102
|
+
```tsx
|
|
103
|
+
<ButtonOutlined label="Cancel" onClick={handleClose} />
|
|
104
|
+
<ButtonOutlined label="Filters" icon={FilterList} />
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Props: `label`, `onClick`, `disabled`, `icon`
|
|
108
|
+
|
|
109
|
+
### ButtonText
|
|
110
|
+
Tertiary action. Least emphasis.
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
<ButtonText label="Learn more" onClick={handleClick} />
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### TextFieldOutlined
|
|
117
|
+
Use for all text inputs. For search bars use `placeholder` instead of `label` with `size="small"`.
|
|
118
|
+
|
|
119
|
+
```tsx
|
|
120
|
+
// Form field (floating label)
|
|
121
|
+
<TextFieldOutlined label="Name" value={name} onChange={setName} />
|
|
122
|
+
|
|
123
|
+
// Search bar (placeholder, no floating label)
|
|
124
|
+
<TextFieldOutlined
|
|
125
|
+
placeholder="Search clients"
|
|
126
|
+
value={search}
|
|
127
|
+
onChange={setSearch}
|
|
128
|
+
icon={SearchIcon}
|
|
129
|
+
clearable
|
|
130
|
+
size="small"
|
|
131
|
+
onClear={() => setSearch("")}
|
|
132
|
+
/>
|
|
133
|
+
|
|
134
|
+
// With error
|
|
135
|
+
<TextFieldOutlined label="Email" value={email} onChange={setEmail} error helperText="Invalid email" />
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Props: `label`, `placeholder`, `value`, `onChange`, `error`, `helperText`, `disabled`, `clearable`, `onClear`, `icon`, `onIconClick`, `type`, `size` ("small" | "medium")
|
|
139
|
+
|
|
140
|
+
### SelectOutlined
|
|
141
|
+
Use for all dropdown selects.
|
|
142
|
+
|
|
143
|
+
```tsx
|
|
144
|
+
const options = [
|
|
145
|
+
{ value: "rouse", label: "Rouse" },
|
|
146
|
+
{ value: "rb", label: "Ritchie Bros" },
|
|
147
|
+
];
|
|
148
|
+
|
|
149
|
+
<SelectOutlined
|
|
150
|
+
label="Company"
|
|
151
|
+
value={company}
|
|
152
|
+
options={options}
|
|
153
|
+
onChange={setCompany}
|
|
154
|
+
/>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Props: `label`, `value`, `options`, `onChange`, `error`, `helperText`, `disabled`, `clearable`, `onClear`
|
|
158
|
+
|
|
159
|
+
### Checkbox
|
|
160
|
+
Use for boolean fields and multi-select lists.
|
|
161
|
+
|
|
162
|
+
```tsx
|
|
163
|
+
<Checkbox label="All Seller Orgs" checked={isChecked} onChange={setIsChecked} />
|
|
164
|
+
<Checkbox label="Disabled" disabled />
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Props: `label`, `checked`, `onChange`, `disabled`, `indeterminate`
|
|
168
|
+
|
|
169
|
+
### ChipFilled
|
|
170
|
+
Use for filter tabs and toggleable categories.
|
|
171
|
+
|
|
172
|
+
```tsx
|
|
173
|
+
<ChipFilled label="All clients" selected={filter === "all"} onClick={() => setFilter("all")} />
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Props: `label`, `selected`, `onClick`, `disabled`, `color` ("primary" | "secondary"), `deletable`, `onDelete`
|
|
177
|
+
|
|
178
|
+
### ChipStatus
|
|
179
|
+
Use for contract tiers and category badges (not status — use LabelFilled for status).
|
|
180
|
+
|
|
181
|
+
```tsx
|
|
182
|
+
<ChipStatus label="Premium" color="secondary" />
|
|
183
|
+
<ChipStatus label="Basic" color="default" />
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Props: `label`, `color` ("primary" | "secondary" | "default"), `icon`
|
|
187
|
+
|
|
188
|
+
### LabelFilled
|
|
189
|
+
**Use for status indicators** (Active/Inactive, approval states).
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
<LabelFilled label="Active" color="success" icon="none" />
|
|
193
|
+
<LabelFilled label="Inactive" color="default" icon="none" />
|
|
194
|
+
<LabelFilled label="Full edit" color="primary" icon="none" />
|
|
195
|
+
<LabelFilled label="Required" color="error" icon="none" />
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Colors: `"default"` | `"primary"` | `"secondary"` | `"error"` | `"warning"` | `"success"` | `"info"`
|
|
199
|
+
Props: `label`, `color`, `icon` ("none" | "left" | "right" | "only")
|
|
200
|
+
|
|
201
|
+
### LabelOutlined
|
|
202
|
+
Same as LabelFilled but outlined style. Use when less emphasis is needed.
|
|
203
|
+
|
|
204
|
+
```tsx
|
|
205
|
+
<LabelOutlined label="View only" color="default" icon="none" />
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### AlertStandard
|
|
209
|
+
Use for contextual messages, warnings, and info banners.
|
|
210
|
+
|
|
211
|
+
```tsx
|
|
212
|
+
<AlertStandard severity="info">
|
|
213
|
+
Seller Orgs are independent units.
|
|
214
|
+
</AlertStandard>
|
|
215
|
+
|
|
216
|
+
<AlertStandard severity="warning" action="End session" onAction={handleEnd}>
|
|
217
|
+
You are viewing as Carlos Mendez — session ends in 15 min
|
|
218
|
+
</AlertStandard>
|
|
219
|
+
|
|
220
|
+
<AlertStandard severity="secondary" onClose={handleClose}>
|
|
221
|
+
Draft saved automatically.
|
|
222
|
+
</AlertStandard>
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Severities: `"error"` | `"warning"` | `"info"` | `"success"` | `"primary"` | `"secondary"`
|
|
226
|
+
Props: `severity`, `title`, `children`, `action`, `onAction`, `onClose`
|
|
227
|
+
|
|
228
|
+
### IconButtonOutlined
|
|
229
|
+
Use for icon-only actions in tables and cards.
|
|
230
|
+
|
|
231
|
+
```tsx
|
|
232
|
+
<IconButtonOutlined icon={MoreVert} size="small" aria-label="More options" onClick={handleClick} />
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Sizes: `"xSmall"` | `"small"` | `"medium"` | `"large"`
|
|
236
|
+
|
|
237
|
+
### Menu
|
|
238
|
+
Use for dropdown menus and option lists.
|
|
239
|
+
|
|
240
|
+
```tsx
|
|
241
|
+
<Menu
|
|
242
|
+
options={[{ value: "edit", label: "Edit" }, { value: "delete", label: "Delete" }]}
|
|
243
|
+
selectedValues={[selected]}
|
|
244
|
+
onSelect={setSelected}
|
|
245
|
+
/>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Rules
|
|
251
|
+
|
|
252
|
+
- **Never use hardcoded hex colors** — always use `theme.palette.*` or named tokens
|
|
253
|
+
- **Never use hardcoded font sizes** — always use Typography `variant` prop
|
|
254
|
+
- **Never use `fontWeight: 700`** unless it's a stat number (use `fontWeight: 500` for emphasis)
|
|
255
|
+
- **Use `background.white`** for card/surface backgrounds, not `"#fff"` or `"white"`
|
|
256
|
+
- **Use `LabelFilled` for status** (Active/Inactive), **ChipStatus for category** (Premium/Basic)
|
|
257
|
+
- **Use `AlertStandard` for all banners and contextual messages** — never build custom alert boxes
|
|
258
|
+
- **Modals** should use `background.white`, `borderRadius: 2`, `boxShadow: 3`, max-width constraint
|
|
259
|
+
- **Tables**: use `Box component="table"` with `borderCollapse: "collapse"`, headers with `Typography variant="subtitle2"`
|
|
260
|
+
- **Form modals**: always have a header section (title + description), content section, and footer with Cancel + primary action
|
package/package.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "rouse-ui-kit-make-kit",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Rouse UI Kit — Figma Make guidelines",
|
|
5
|
+
"keywords": ["make-kit", "figma-make", "rouse", "design-system"],
|
|
6
|
+
"files": ["guidelines"],
|
|
7
|
+
"make-kit": {
|
|
8
|
+
"library": "rouse-ui-kit",
|
|
9
|
+
"version": "0.1.2"
|
|
10
|
+
}
|
|
11
|
+
}
|