@turquoisehealth/pit-viper 2.182.1-dev.5 → 2.183.1-dev.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.
@@ -1,80 +0,0 @@
1
- # Design Language Reference
2
-
3
- Use this reference in Design Review Mode — when validating designs or explaining layout rationale without generating code.
4
-
5
- For component selection, use `/llm/search` first. This reference covers layout patterns and token validation.
6
-
7
- ## Layout Patterns
8
-
9
- | Pattern | Structure | Best For |
10
- |---------|-----------|----------|
11
- | **Dashboard** | `PvSidePanel` (nav) + main content area | Multi-page apps with persistent navigation |
12
- | **Form** | `PvCard` with header/body/footer slots | Data entry, settings, editing |
13
- | **List-detail** | Table on left, `PvDrawer` or `PvModal` for details | Browse-and-edit workflows |
14
- | **Settings** | `PvTabs` with `PvAccordion` sections | Complex configuration with many options |
15
- | **Marketing** | Full-width sections, Consumer theme | Public-facing, consumer-oriented pages |
16
-
17
- ## Token Validation
18
-
19
- When reviewing designs for Pit Viper compliance:
20
-
21
- ### Colors
22
-
23
- Fetch current palette:
24
- ```
25
- WebFetch https://pitviper.turquoise.health/llm/tokens?category=color
26
- ```
27
-
28
- Key values:
29
- - Primary Brand: `#176F6F` (interactive elements, links)
30
- - Secondary Brand: `#02363D` (body text, dark surfaces)
31
- - Error: `#DA1E28`
32
- - Warning: `#896000`
33
- - Success: `#0E6027`
34
-
35
- ### Spacing
36
-
37
- 4px base grid. Valid values: 4, 8, 12, 16, 20, 24, 32, 64, 128 pixels.
38
-
39
- | Value | Use Case |
40
- |-------|----------|
41
- | 4-8px | Tight spacing, icons, inline elements |
42
- | 12-16px | Component padding, section spacing |
43
- | 24-32px | Major sections, page-level spacing |
44
- | 64-128px | Hero sections, large separators |
45
-
46
- ### Typography
47
-
48
- | Style | Platform Size | Consumer Size | Weight |
49
- |-------|---------------|---------------|--------|
50
- | Heading 1 | 20px | 62px | 600 |
51
- | Heading 2 | 16px | 16px | 600 |
52
- | Body MD | 12px | 16px | 400 |
53
- | Body SM | 11px | 11px | 400 |
54
-
55
- ### Border Radius
56
-
57
- - Small: 2px
58
- - Default: 5px
59
- - Large: 12px
60
-
61
- ### Shadows
62
-
63
- Four elevation levels exist (button, popover, elevated hover, modal). Don't invent custom shadows.
64
-
65
- ## Review Checklist
66
-
67
- 1. **Does the component exist?** Search `/llm/search?q={name}` first.
68
- 2. **Are tokens valid?** Check colors, spacing, typography against values above.
69
- 3. **Is the pattern established?** Match to layout patterns table.
70
- 4. **Is the 4px grid respected?** Flag spacing values that aren't multiples of 4.
71
-
72
- ## When to Escalate
73
-
74
- Flag for design system review if the design requires:
75
- - Colors not in the palette
76
- - Spacing values not on the 4px grid
77
- - Components that don't exist in Pit Viper
78
- - Patterns that diverge significantly from established layouts
79
-
80
- Don't silently work around these — they indicate a design system gap.
@@ -1,265 +0,0 @@
1
- # Design Rules
2
-
3
- Prescriptive rules for consistent visual output. These are mandatory — follow them exactly.
4
-
5
- ## Contents
6
-
7
- - Spacing (vertical `pv-stack-*`, padding `pv-inset-*`, flow `pv-flow-*`)
8
- - Typography (heading hierarchy, body text, labels, text modifiers)
9
- - Colors (backgrounds `pv-surface-*`, status colors)
10
- - Layout (page structure, containers, flex)
11
- - Cards, Forms, Tables
12
- - Borders & Radius
13
- - Allowed Inline Styles
14
- - Checklist (run before finalizing)
15
-
16
- ## Spacing
17
-
18
- Use pv-* spacing classes. Never use raw `padding`, `margin`, `gap`, or pixel values.
19
-
20
- ### Vertical Spacing (pv-stack-*)
21
-
22
- | Context | Class | When |
23
- |---------|-------|------|
24
- | Page sections | `pv-stack-32` | Between major content blocks |
25
- | Within sections | `pv-stack-24` | Between card/groups inside a section |
26
- | Related elements | `pv-stack-16` | Between form fields, list items |
27
- | Tight coupling | `pv-stack-8` | Label to input, heading to description |
28
- | Minimal | `pv-stack-4` | Icon to text, inline elements |
29
-
30
- ### Padding (pv-inset-*)
31
-
32
- | Context | Class |
33
- |---------|-------|
34
- | Page wrapper | `pv-inset-square-24` |
35
- | Card body | `pv-inset-square-16` |
36
- | Compact card | `pv-inset-square-12` |
37
- | Button-like elements | `pv-inset-squish-8` or `pv-inset-squish-12` |
38
- | Dense lists | `pv-inset-square-8` |
39
-
40
- ### Flow (pv-flow-*)
41
-
42
- Use `pv-flow-*` for horizontal/flex gaps:
43
-
44
- | Context | Class |
45
- |---------|-------|
46
- | Button groups | `pv-flow-8` |
47
- | Card grids | `pv-flow-16` or `pv-flow-24` |
48
- | Nav items | `pv-flow-4` or `pv-flow-8` |
49
-
50
- ## Typography
51
-
52
- Use pv-* typography classes. Never use raw `font-size`, `font-weight`, or `line-height`.
53
-
54
- ### Heading Hierarchy
55
-
56
- | Level | Class | Use |
57
- |-------|-------|-----|
58
- | Page title | `pv-heading-1` | One per page, top of content |
59
- | Section title | `pv-heading-2` | Major sections within page |
60
- | Card/panel title | `pv-heading-3` | Card headers, modal titles |
61
- | Subsection | `pv-heading-4` | Nested sections, accordion headers |
62
- | Small heading | `pv-heading-5` | Rarely used |
63
-
64
- ### Body Text
65
-
66
- | Context | Class |
67
- |---------|-------|
68
- | Default body | `pv-text-body-md` |
69
- | Secondary info | `pv-text-body-sm` |
70
- | Fine print | `pv-text-body-xs` |
71
- | Large intro | `pv-text-body-lg` (Consumer theme only) |
72
-
73
- ### Labels & Titles
74
-
75
- | Context | Class |
76
- |---------|-------|
77
- | Form label | `pv-text-title-sm` |
78
- | Card header text | `pv-text-title-md` |
79
- | Emphasized inline | `pv-text-title-sm` |
80
-
81
- ### Text Modifiers
82
-
83
- | Purpose | Class |
84
- |---------|-------|
85
- | De-emphasize | `pv-text-subdued` |
86
- | On dark backgrounds | `pv-text-inverse` |
87
- | Brand color | `pv-text-brand` |
88
- | Error message | `pv-text-critical` |
89
- | Success message | `pv-text-success` |
90
- | Warning message | `pv-text-warning` |
91
-
92
- ## Colors
93
-
94
- Use semantic classes. Never hardcode hex values.
95
-
96
- ### Backgrounds (pv-surface-*)
97
-
98
- | Purpose | Class |
99
- |---------|-------|
100
- | Default page | `pv-surface` |
101
- | Elevated card | `pv-surface-raised` |
102
- | Subtle highlight | `pv-surface-accent` |
103
- | Brand header | `pv-surface-brand` |
104
- | Error state | `pv-surface-critical` |
105
- | Success state | `pv-surface-success` |
106
- | Warning state | `pv-surface-warning` |
107
- | Code/mono areas | `pv-surface-gray` or background token |
108
-
109
- ### Status Colors
110
-
111
- | State | Text Class | Background Class |
112
- |-------|------------|------------------|
113
- | Success | `pv-text-success` | `pv-surface-success` |
114
- | Error | `pv-text-critical` | `pv-surface-critical` |
115
- | Warning | `pv-text-warning` | `pv-surface-warning` |
116
- | Info | `pv-text-brand` | `pv-surface-accent` |
117
-
118
- ## Layout
119
-
120
- ### Page Structure
121
-
122
- Every page should follow this structure:
123
-
124
- ```html
125
- <body class="pv-surface">
126
- <header class="pv-surface-brand pv-inset-square-24">
127
- <!-- Header content -->
128
- </header>
129
-
130
- <main class="pv-container-lg pv-inset-square-24">
131
- <!-- Page content -->
132
- </main>
133
- </body>
134
- ```
135
-
136
- ### Container Widths
137
-
138
- | Size | Class | Use |
139
- |------|-------|-----|
140
- | Small | `pv-container-sm` | Forms, narrow content |
141
- | Medium | `pv-container-md` | Articles, single-column |
142
- | Large | `pv-container-lg` | Dashboards, data tables |
143
-
144
- Always center containers: add `style="margin: 0 auto;"` or wrap in flex parent.
145
-
146
- ### Flex Layouts
147
-
148
- | Pattern | Classes |
149
- |---------|---------|
150
- | Horizontal row | `pv-flex` |
151
- | Vertical stack | `pv-flex pv-flex-vertical` |
152
- | Space between | `pv-flex pv-space-between` |
153
- | Centered | `pv-flex pv-center` |
154
- | Responsive wrap | `pv-flex pv-flex-responsive` |
155
-
156
- Set flex gap with `pv-flow-*` or `--flex-gap` custom property.
157
-
158
- ## Cards
159
-
160
- Always use proper card structure:
161
-
162
- ```html
163
- <div class="pv-card">
164
- <div class="pv-card-header">
165
- <h3 class="pv-heading-3">Title</h3>
166
- </div>
167
- <div class="pv-card-body pv-flow-16">
168
- <!-- Content -->
169
- </div>
170
- <div class="pv-card-footer pv-flex pv-flow-8" style="justify-content: flex-end;">
171
- <!-- Actions -->
172
- </div>
173
- </div>
174
- ```
175
-
176
- Don't use:
177
- - Raw `<div>` with padding for card-like containers
178
- - Inline styles for card padding
179
- - Custom border/shadow styles
180
-
181
- ## Forms
182
-
183
- ### Field Structure
184
-
185
- ```html
186
- <div>
187
- <label class="pv-text-title-sm pv-stack-4">Label</label>
188
- <pv-input placeholder="..."></pv-input>
189
- </div>
190
- ```
191
-
192
- - Always use `pv-stack-4` between label and input
193
- - Use `pv-flow-16` or `pv-stack-16` between fields
194
- - Group related fields in `<fieldset>` with `pv-stack-24` between groups
195
-
196
- ### Actions
197
-
198
- ```html
199
- <div class="pv-flex pv-flow-8" style="--flex-justify: flex-end;">
200
- <pv-button variant="ghost" label="Cancel"></pv-button>
201
- <pv-button label="Submit"></pv-button>
202
- </div>
203
- ```
204
-
205
- - Primary action on right
206
- - Secondary/cancel on left
207
- - Use `pv-flow-8` between buttons
208
-
209
- ## Tables
210
-
211
- For data tables, always use `PvDataTable` (Vue) or `pv-table` classes (HTML).
212
-
213
- HTML table structure:
214
- ```html
215
- <table class="pv-table">
216
- <thead>
217
- <tr>
218
- <th>Header</th>
219
- </tr>
220
- </thead>
221
- <tbody>
222
- <tr>
223
- <td>Cell</td>
224
- </tr>
225
- </tbody>
226
- </table>
227
- ```
228
-
229
- Never add custom styling to tables.
230
-
231
- ## Borders & Radius
232
-
233
- | Purpose | Class |
234
- |---------|-------|
235
- | Subtle divider | `pv-border-bottom` |
236
- | Card-like border | `pv-border` |
237
- | Rounded corners | `pv-radius` (default 5px) |
238
- | Small radius | `pv-radius-sm` (2px) |
239
- | Large radius | `pv-radius-lg` (12px) |
240
-
241
- ## Allowed Inline Styles
242
-
243
- Only these inline styles are acceptable (when no class exists):
244
-
245
- - `style="max-width: Npx;"` — constrain element width
246
- - `style="height: Npx;"` — set explicit height (tables, charts)
247
- - `style="flex: 1;"` — flex grow in layouts
248
- - `style="margin: 0 auto;"` — center container
249
- - `style="justify-content: flex-end;"` — align flex children
250
- - `style="--flex-gap: Nrem;"` — set flex gap
251
-
252
- Everything else must use pv-* classes. If you need a style that doesn't exist, flag it as a design system gap.
253
-
254
- ## Checklist
255
-
256
- Before finalizing output, verify:
257
-
258
- 1. [ ] No raw `padding`, `margin`, `font-size`, `color` in styles
259
- 2. [ ] No hardcoded hex colors
260
- 3. [ ] No `<style>` blocks
261
- 4. [ ] Headings follow hierarchy (h1 > h2 > h3)
262
- 5. [ ] Cards use `pv-card` + `pv-card-header` + `pv-card-body`
263
- 6. [ ] Page wrapped in `pv-container-*` with `pv-inset-square-24`
264
- 7. [ ] Spacing uses `pv-stack-*` or `pv-flow-*`
265
- 8. [ ] Status colors use semantic classes, not hardcoded values