@etus/seven-skill 0.1.0-beta.2 → 0.1.0-beta.3
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/skills/seven/SKILL.md +9 -1
- package/.claude/skills/seven/reference/app-shell.md +70 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/cli/engine/detect-antipatterns-browser.js +4 -4
- package/cli/engine/token-data.generated.mjs +4 -4
- package/package.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: seven
|
|
3
3
|
description: Use when generating or auditing UI for the Seven Design System — ETUS Digital's React 19 + Tailwind v4 + @etus/tokens system. Covers component generation, variant selection, token consumption, typography (Inter only), color (OKLCH mint and lime brand, fuchsia chart-only), spatial design (two radius scales), motion (200ms tactile press), accessibility (WCAG 2.1 AA), pt-BR voice (sentence case, no trailing periods, imperative leads), and anti-pattern audits. Routes sub-commands shape, audit, polish, clarify. Not for backend or non-UI tasks.
|
|
4
|
-
version: 0.1.0-beta.
|
|
4
|
+
version: 0.1.0-beta.3
|
|
5
5
|
argument-hint: "[command] [target]"
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools:
|
|
@@ -95,6 +95,14 @@ See [reference/typography.md](reference/typography.md) for the full rule set.
|
|
|
95
95
|
|
|
96
96
|
See [reference/spatial-design.md](reference/spatial-design.md).
|
|
97
97
|
|
|
98
|
+
### App shell (sidebar + topbar)
|
|
99
|
+
|
|
100
|
+
- Sidebar and topbar sit on `var(--surface)` with **no border and no shadow**. The only divider in the shell is the secondary panel's `border-left` — never a `border-r` on the rail, never a `border-b` on the topbar.
|
|
101
|
+
- Controls inside the chrome are white cards: `var(--background)` + 1 px border + radius 8 (search/bell are 36×36 outline toggles). Flat grey chrome, bordered white controls.
|
|
102
|
+
- Rail: 64 px collapsed / 200 px expanded (overlay over the panel). Panel: 216 px. Rail active item is mint-filled; panel active item is `var(--primary-subtle)`.
|
|
103
|
+
|
|
104
|
+
See [reference/app-shell.md](reference/app-shell.md) for the full Figma-faithful spec and the `@etus/ui` mapping.
|
|
105
|
+
|
|
98
106
|
### Motion
|
|
99
107
|
|
|
100
108
|
- Default duration 200 ms (`var(--duration-normal)`), easing `var(--ease-default)`.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# App shell — Sidebar + Topbar (Figma-faithful)
|
|
2
|
+
|
|
3
|
+
The Seven application shell. Source of truth: Figma "Core Components — Seven", Sidebar set `2472:372` and Topbar set `1403:15038`. When the project has `@etus/ui`, compose `<Sidebar>` / `<Topbar>` from the package — never reimplement. When prototyping without the package, reproduce the nominal values below exactly.
|
|
4
|
+
|
|
5
|
+
## The two laws that kill most drift
|
|
6
|
+
|
|
7
|
+
1. **Chrome has no outline.** Sidebar and topbar have **no border and no shadow** — they sit on the same `var(--surface)` (#fafafa) plane. The ONLY divider in the shell is the **`border-left` of the secondary panel** (1 px `var(--border)`), owned by the panel, not the rail. Never add `border-r` to the sidebar or `border-b` to the topbar.
|
|
8
|
+
2. **Chrome is surface, controls are white cards.** The shell background is `var(--surface)`, never white. Interactive controls INSIDE the chrome (selects, search, account switch, toggles) are white cards: `bg-[color:var(--background)]` + 1 px `var(--input)`/`var(--border)` + `rounded-[var(--radius-md)]` (8 px). That contrast — flat grey chrome, bordered white controls — is the Seven shell signature.
|
|
9
|
+
|
|
10
|
+
## Sidebar (4 states)
|
|
11
|
+
|
|
12
|
+
All states: `bg-[color:var(--surface)]`, padding `12px` horizontal / `24px` vertical, column layout with `justify-between` (top group / bottom group). No border, no shadow.
|
|
13
|
+
|
|
14
|
+
| State | Width | Notes |
|
|
15
|
+
| -------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
16
|
+
| Collapsed (rail) | **64 px** | icons only |
|
|
17
|
+
| Expanded | **200 px** | labels visible |
|
|
18
|
+
| Secondary | **280 px** total | rail 64 + panel 216, panel carries `border-l` |
|
|
19
|
+
| Expanded + Secondary | rail expands 64→200 **as an overlay** | panel does not move (footprint stays 280); the expanded rail covers the panel's `border-l` |
|
|
20
|
+
|
|
21
|
+
Rail contents (top→bottom): Logo 32×32 (icon 24) · AccountSwitch · nav items (gap 20) · … · color-mode toggle (pill 36×24, track `var(--muted)`, white 20 px knob, 12 px icon) · settings item · Avatar 32.
|
|
22
|
+
|
|
23
|
+
- **Rail item**: 36×36 (20 px Lucide icon + 8 px padding), radius **4 px** (component `sm`). Active: `bg-[color:var(--primary)]` (mint) with dark foreground icon. Expanded item fills the rail width (176 px inside the 200 px rail).
|
|
24
|
+
- **AccountSwitch**: white card, 1 px `var(--input)`, radius 8; brand logo 24×24 radius 4. Collapsed: logo only (px 8). Expanded: logo + account name (16 px, `var(--muted-foreground)`) + ChevronsUpDown 16.
|
|
25
|
+
|
|
26
|
+
### Secondary panel (216 px)
|
|
27
|
+
|
|
28
|
+
`bg-[color:var(--surface)]` + **`border-l` 1 px `var(--border)`** + padding top 28 / bottom 80 / x 8.
|
|
29
|
+
|
|
30
|
+
- Page title: 16 px Inter Bold, `var(--foreground)`.
|
|
31
|
+
- Group label: 12 px `var(--muted-foreground)` + 12 px chevron (collapsible). Groups separated by 1 px dividers.
|
|
32
|
+
- **Panel item**: height **30 px**, radius 4, text 14 px. Active: `bg-[color:var(--primary-subtle)]` (#d1faeb) with `#052e1f` foreground — NOT full mint (mint fill is rail-only).
|
|
33
|
+
- Indent by level: primary `px-8` · secondary `pl-28` · tertiary `pl-48`. Dropdown items lead with a 12 px chevron.
|
|
34
|
+
|
|
35
|
+
## Topbar (3 states)
|
|
36
|
+
|
|
37
|
+
Root: `bg-[color:var(--surface)]`, padding `32px` horizontal / `8px` vertical, full width, items centered with space-between. **No border, no radius, no shadow on the root.**
|
|
38
|
+
|
|
39
|
+
- **Leading**: Breadcrumb — Home icon 15 px, ChevronRight separators, items 14 px `var(--muted-foreground)`, current page 14 px `var(--foreground)`.
|
|
40
|
+
- **Trailing** (gap 16): DatePicker + Selects as white inputs (1 px `var(--input)`, radius 8, `px-12 py-8`, 14 px text) · Search and Bell as **36×36 outline toggles**: white bg, 1 px `var(--border)`, radius 8, 16 px icon. These bordered rounded controls are what makes the topbar read correctly — a borderless ghost icon row is off-system.
|
|
41
|
+
- **Scrolled** state: adds a 1×17 divider + ghost refresh chip ("Atualizado há 1 min", disabled foreground, RefreshCw 16).
|
|
42
|
+
- **Search focused**: search expands to a 208 px input with mint focus ring (`var(--ring)` border + 4 px `rgba(25,230,153,0.3)` shadow); filters compact to fixed 208 px.
|
|
43
|
+
|
|
44
|
+
## Content area
|
|
45
|
+
|
|
46
|
+
The page content sits next to/below the chrome as **cards on the canvas** — white `var(--background)` surfaces with the workhorse 1 px `var(--border)` (see [product.md](product.md)). The shell never separates itself from content with its own border; the content cards' borders do that work.
|
|
47
|
+
|
|
48
|
+
## @etus/ui mapping
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
import {
|
|
52
|
+
Sidebar, SidebarProvider, SidebarRailContent, SidebarRailButton,
|
|
53
|
+
SidebarPanelContent, SidebarPanelItem, SidebarPanelGroup,
|
|
54
|
+
Topbar, TopbarLeading, TopbarTrailing,
|
|
55
|
+
} from "@etus/ui"
|
|
56
|
+
|
|
57
|
+
<SidebarProvider mode="dual"> {/* rail + secondary panel */}
|
|
58
|
+
<Sidebar>
|
|
59
|
+
<SidebarRailContent>…</SidebarRailContent> {/* borderless; expands on hover as overlay */}
|
|
60
|
+
<SidebarPanelContent>…</SidebarPanelContent> {/* carries the border-l divider */}
|
|
61
|
+
</Sidebar>
|
|
62
|
+
</SidebarProvider>
|
|
63
|
+
|
|
64
|
+
<Topbar variant="default"> {/* or "filters" */}
|
|
65
|
+
<TopbarLeading>{/* Breadcrumb */}</TopbarLeading>
|
|
66
|
+
<TopbarTrailing>{/* filters + search/bell toggles */}</TopbarTrailing>
|
|
67
|
+
</Topbar>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`mode="single"` renders the classic one-panel sidebar (also borderless). Copy in pt-BR: `Visão Geral`, `Configurações`, `Buscar...`, `Tema Claro`.
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
{
|
|
13
13
|
"name": "seven",
|
|
14
14
|
"description": "Seven Design System skill, plugin, and CLI detector for AI coding agents — ETUS Digital",
|
|
15
|
-
"version": "0.1.0-beta.
|
|
15
|
+
"version": "0.1.0-beta.3",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "ETUS Digital",
|
|
18
18
|
"url": "https://github.com/etusdigital"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "seven",
|
|
3
3
|
"description": "Seven Design System skill, plugin, and CLI detector for AI coding agents — ETUS Digital",
|
|
4
|
-
"version": "0.1.0-beta.
|
|
4
|
+
"version": "0.1.0-beta.3",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "ETUS Digital",
|
|
7
7
|
"url": "https://github.com/etusdigital"
|
|
@@ -834,7 +834,7 @@ const TOKEN_DATA = {
|
|
|
834
834
|
"oklch(97.05% 0.0142 254.60)": "--featured-icon-color-info-bg",
|
|
835
835
|
"oklch(62.31% 0.1880 259.81)": "--color-firefox",
|
|
836
836
|
"oklch(54.61% 0.2152 262.88)": "--tag-color-dot-info",
|
|
837
|
-
"oklch(48.82% 0.2172 264.38)": "--
|
|
837
|
+
"oklch(48.82% 0.2172 264.38)": "--icon-color-info",
|
|
838
838
|
"oklch(42.44% 0.1809 265.64)": "--status-info-border",
|
|
839
839
|
"oklch(37.91% 0.1378 265.52)": "--blue-900",
|
|
840
840
|
"oklch(28.23% 0.0874 267.94)": "--status-info-subtle",
|
|
@@ -870,7 +870,7 @@ const TOKEN_DATA = {
|
|
|
870
870
|
"oklch(98.93% 0.0139 138.71)": "--secondary-subtle",
|
|
871
871
|
"oklch(87.82% 0.2037 137.75)": "--tags-input-tag-background",
|
|
872
872
|
"oklch(72.57% 0.1684 137.62)": "--button-secondary-color-border-hover",
|
|
873
|
-
"oklch(58.24% 0.1354 137.66)": "--
|
|
873
|
+
"oklch(58.24% 0.1354 137.66)": "--icon-color-secondary",
|
|
874
874
|
"oklch(42.97% 0.0993 137.99)": "--secondary-hover",
|
|
875
875
|
"oklch(28.73% 0.0661 137.75)": "--secondary",
|
|
876
876
|
"oklch(21.23% 0.0502 138.22)": "--tags-input-tag-foreground",
|
|
@@ -911,7 +911,7 @@ const TOKEN_DATA = {
|
|
|
911
911
|
"oklch(97.02% 0.0000 0)": "--toolbar-button-background-hover",
|
|
912
912
|
"oklch(92.19% 0.0000 0)": "--topbar-root-border-color",
|
|
913
913
|
"oklch(86.99% 0.0000 0)": "--text-disabled",
|
|
914
|
-
"oklch(71.55% 0.0000 0)": "--
|
|
914
|
+
"oklch(71.55% 0.0000 0)": "--icon-color-disabled",
|
|
915
915
|
"oklch(98.51% 0.0000 0)": "--topbar-root-background",
|
|
916
916
|
"oklch(55.55% 0.0000 0)": "--toolbar-button-foreground-muted",
|
|
917
917
|
"oklch(43.86% 0.0000 0)": "--status-disabled-foreground",
|
|
@@ -923,7 +923,7 @@ const TOKEN_DATA = {
|
|
|
923
923
|
"oklch(88.45% 0.0593 18.33)": "--alert-variant-destructive-border",
|
|
924
924
|
"oklch(80.77% 0.1035 19.57)": "--status-destructive-subtle-foreground",
|
|
925
925
|
"oklch(71.06% 0.1661 22.22)": "--status-destructive-hover",
|
|
926
|
-
"oklch(97.05% 0.0129 17.38)": "--
|
|
926
|
+
"oklch(97.05% 0.0129 17.38)": "--notification-bg-destructive",
|
|
927
927
|
"oklch(63.68% 0.2078 25.33)": "--timeline-marker-color-error",
|
|
928
928
|
"oklch(57.71% 0.2152 27.33)": "--asset-palette-type-doc-pdf-color",
|
|
929
929
|
"oklch(50.54% 0.1905 27.52)": "--modal-icon-pill-color-destructive-fg",
|
|
@@ -232,7 +232,7 @@ export const TOKEN_DATA = {
|
|
|
232
232
|
"oklch(97.05% 0.0142 254.60)": "--featured-icon-color-info-bg",
|
|
233
233
|
"oklch(62.31% 0.1880 259.81)": "--color-firefox",
|
|
234
234
|
"oklch(54.61% 0.2152 262.88)": "--tag-color-dot-info",
|
|
235
|
-
"oklch(48.82% 0.2172 264.38)": "--
|
|
235
|
+
"oklch(48.82% 0.2172 264.38)": "--icon-color-info",
|
|
236
236
|
"oklch(42.44% 0.1809 265.64)": "--status-info-border",
|
|
237
237
|
"oklch(37.91% 0.1378 265.52)": "--blue-900",
|
|
238
238
|
"oklch(28.23% 0.0874 267.94)": "--status-info-subtle",
|
|
@@ -268,7 +268,7 @@ export const TOKEN_DATA = {
|
|
|
268
268
|
"oklch(98.93% 0.0139 138.71)": "--secondary-subtle",
|
|
269
269
|
"oklch(87.82% 0.2037 137.75)": "--tags-input-tag-background",
|
|
270
270
|
"oklch(72.57% 0.1684 137.62)": "--button-secondary-color-border-hover",
|
|
271
|
-
"oklch(58.24% 0.1354 137.66)": "--
|
|
271
|
+
"oklch(58.24% 0.1354 137.66)": "--icon-color-secondary",
|
|
272
272
|
"oklch(42.97% 0.0993 137.99)": "--secondary-hover",
|
|
273
273
|
"oklch(28.73% 0.0661 137.75)": "--secondary",
|
|
274
274
|
"oklch(21.23% 0.0502 138.22)": "--tags-input-tag-foreground",
|
|
@@ -309,7 +309,7 @@ export const TOKEN_DATA = {
|
|
|
309
309
|
"oklch(97.02% 0.0000 0)": "--toolbar-button-background-hover",
|
|
310
310
|
"oklch(92.19% 0.0000 0)": "--topbar-root-border-color",
|
|
311
311
|
"oklch(86.99% 0.0000 0)": "--text-disabled",
|
|
312
|
-
"oklch(71.55% 0.0000 0)": "--
|
|
312
|
+
"oklch(71.55% 0.0000 0)": "--icon-color-disabled",
|
|
313
313
|
"oklch(98.51% 0.0000 0)": "--topbar-root-background",
|
|
314
314
|
"oklch(55.55% 0.0000 0)": "--toolbar-button-foreground-muted",
|
|
315
315
|
"oklch(43.86% 0.0000 0)": "--status-disabled-foreground",
|
|
@@ -321,7 +321,7 @@ export const TOKEN_DATA = {
|
|
|
321
321
|
"oklch(88.45% 0.0593 18.33)": "--alert-variant-destructive-border",
|
|
322
322
|
"oklch(80.77% 0.1035 19.57)": "--status-destructive-subtle-foreground",
|
|
323
323
|
"oklch(71.06% 0.1661 22.22)": "--status-destructive-hover",
|
|
324
|
-
"oklch(97.05% 0.0129 17.38)": "--
|
|
324
|
+
"oklch(97.05% 0.0129 17.38)": "--notification-bg-destructive",
|
|
325
325
|
"oklch(63.68% 0.2078 25.33)": "--timeline-marker-color-error",
|
|
326
326
|
"oklch(57.71% 0.2152 27.33)": "--asset-palette-type-doc-pdf-color",
|
|
327
327
|
"oklch(50.54% 0.1905 27.52)": "--modal-icon-pill-color-destructive-fg",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etus/seven-skill",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.3",
|
|
4
4
|
"description": "Seven Design System skill, plugin, and CLI detector for AI coding agents — ETUS Digital",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"tsx": "^4.23.0",
|
|
55
55
|
"typescript": "^5.9.3",
|
|
56
56
|
"vitest": "^4.1.10",
|
|
57
|
-
"@etus/
|
|
58
|
-
"@etus/
|
|
57
|
+
"@etus/tsconfig": "0.0.0",
|
|
58
|
+
"@etus/tokens": "^0.4.0-beta.16"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=24.0.0"
|