@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.
- package/claude-plugin/skills/pit-viper/SKILL.md +28 -31
- package/package.json +1 -1
- package/pv-components/dist/stats/vue/visualizations/stats.html +1 -1
- package/pv-components/dist/vue/visualizations/components/tables/PvDataTable/table-components/FilterGroupMenu.vue.d.ts +21 -0
- package/pv-components/dist/vue/visualizations/components/tables/PvDataTable/types.d.ts +9 -0
- package/pv-components/dist/vue/visualizations/components/tables/PvDataTable/useSetFilter.d.ts +1 -0
- package/pv-components/dist/vue/visualizations/pv-components-visualizations.mjs +1610 -1426
- package/pv-components/dist/vue/visualizations/pv-components-visualizations.mjs.map +1 -1
- package/claude-plugin/skills/pit-viper/references/design-language.md +0 -80
- package/claude-plugin/skills/pit-viper/references/design-rules.md +0 -265
- package/claude-plugin/skills/pit-viper/references/html-patterns.md +0 -468
- package/claude-plugin/skills/pit-viper/references/layout-patterns.md +0 -367
- package/claude-plugin/skills/pit-viper/references/patterns-core.md +0 -97
- package/claude-plugin/skills/pit-viper/references/theme-guide.md +0 -160
- package/claude-plugin/skills/pit-viper/references/vue-guidelines.md +0 -526
|
@@ -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
|