@softize/opus 12.9.0 → 12.11.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/CHANGELOG.md +44 -0
- package/bin/lib/check.mjs +1103 -310
- package/bin/lib/copy.mjs +74 -6
- package/docs/adr/0003-dictionary-presentation-is-declared.md +3 -0
- package/docs/adr/0004-page-content-state-is-composed.md +65 -0
- package/docs/adr/0005-structural-surfaces-share-an-explicit-anatomy.md +97 -0
- package/docs/adr/0006-semantic-context-precedes-visual-variant.md +182 -0
- package/docs/code-style.md +6 -2
- package/package.json +1 -1
- package/registry/instructions/opus.md +5 -0
- package/registry/skills/build-opus-ui/SKILL.md +27 -16
- package/registry/skills/build-opus-ui/references/evaluations.md +16 -5
- package/registry/skills/build-opus-ui/references/ui-patterns.md +38 -15
- package/registry/skills/model-opus-dictionary/SKILL.md +4 -2
- package/registry/skills/model-opus-dictionary/references/evaluations.md +4 -3
- package/registry/templates/app/src/App.tsx +1 -1
- package/src/core/dictionary.ts +52 -14
- package/src/core/index.ts +10 -0
- package/src/core/ui-context.ts +29 -0
- package/src/schema/drivers/zod.ts +34 -19
- package/src/ui/components/patterns/action-form-card.tsx +18 -12
- package/src/ui/components/patterns/confirm.tsx +26 -3
- package/src/ui/components/patterns/content-header.tsx +335 -61
- package/src/ui/components/patterns/data-state.tsx +23 -10
- package/src/ui/components/patterns/form.tsx +1 -1
- package/src/ui/components/patterns/list.tsx +1096 -777
- package/src/ui/components/patterns/page-state.tsx +115 -0
- package/src/ui/components/patterns/page.tsx +231 -41
- package/src/ui/components/patterns/sidebar.tsx +354 -80
- package/src/ui/components/patterns/trigger.tsx +13 -9
- package/src/ui/components/patterns/view.tsx +7 -11
- package/src/ui/components/primitives/alert-dialog.tsx +7 -5
- package/src/ui/components/primitives/alert.tsx +298 -80
- package/src/ui/components/primitives/ask.tsx +2 -1
- package/src/ui/components/primitives/badge.tsx +91 -30
- package/src/ui/components/primitives/button.tsx +99 -60
- package/src/ui/components/primitives/calendar.tsx +39 -39
- package/src/ui/components/primitives/card.tsx +96 -23
- package/src/ui/components/primitives/detail.tsx +2 -2
- package/src/ui/components/primitives/dictionary-value.tsx +9 -14
- package/src/ui/components/primitives/dot.tsx +74 -21
- package/src/ui/components/primitives/drawer.tsx +33 -20
- package/src/ui/components/primitives/field.tsx +4 -4
- package/src/ui/components/primitives/item.tsx +137 -81
- package/src/ui/components/primitives/menu.tsx +11 -3
- package/src/ui/components/primitives/metric-card.tsx +133 -0
- package/src/ui/components/primitives/table.tsx +2 -2
- package/src/ui/components/primitives/tooltip.tsx +1 -1
- package/src/ui/docs/DocBrowser.tsx +3 -3
- package/src/ui/docs/changelog.tsx +1 -1
- package/src/ui/docs/content/action-form-card.md +1 -1
- package/src/ui/docs/content/alert-dialog.md +8 -8
- package/src/ui/docs/content/alert.md +54 -23
- package/src/ui/docs/content/badge.md +18 -19
- package/src/ui/docs/content/button.md +12 -9
- package/src/ui/docs/content/card.md +5 -5
- package/src/ui/docs/content/content.md +44 -0
- package/src/ui/docs/content/customization.md +2 -2
- package/src/ui/docs/content/detail.md +5 -2
- package/src/ui/docs/content/dialog.md +2 -2
- package/src/ui/docs/content/dictionary-value.md +11 -10
- package/src/ui/docs/content/dot.md +7 -7
- package/src/ui/docs/content/drawer.md +6 -3
- package/src/ui/docs/content/field.md +1 -1
- package/src/ui/docs/content/input-group.md +3 -2
- package/src/ui/docs/content/item.md +47 -21
- package/src/ui/docs/content/menu.md +5 -4
- package/src/ui/docs/content/metric-card.md +41 -0
- package/src/ui/docs/content/page-state.md +45 -0
- package/src/ui/docs/content/page.md +48 -10
- package/src/ui/docs/content/semantic-context.md +63 -0
- package/src/ui/docs/content/sidebar.md +4 -4
- package/src/ui/docs/content/skeleton.md +2 -2
- package/src/ui/docs/content/table.md +3 -3
- package/src/ui/docs/content/tokens.md +28 -0
- package/src/ui/docs/content/tooltip.md +15 -1
- package/src/ui/docs/doc-client.tsx +2 -2
- package/src/ui/docs/registry.tsx +596 -228
- package/src/ui/lib/semantic-context.ts +30 -0
- package/src/ui/meta.ts +292 -270
- package/src/ui/react.tsx +378 -111
- package/src/ui/theme.css +66 -0
package/src/ui/theme.css
CHANGED
|
@@ -47,6 +47,38 @@
|
|
|
47
47
|
--accent-foreground: hsl(0 0% 9%);
|
|
48
48
|
--destructive: hsl(0 84.2% 60.2%);
|
|
49
49
|
--destructive-foreground: hsl(0 0% 98%);
|
|
50
|
+
/* Contextos semânticos (ADR 0006): família independente do tratamento
|
|
51
|
+
solid/subtle/outline escolhido por cada primitive. */
|
|
52
|
+
--context-neutral: var(--secondary);
|
|
53
|
+
--context-neutral-foreground: var(--secondary-foreground);
|
|
54
|
+
--context-neutral-subtle: var(--muted);
|
|
55
|
+
--context-neutral-emphasis: var(--muted-foreground);
|
|
56
|
+
--context-neutral-border: var(--border);
|
|
57
|
+
--context-primary: var(--primary);
|
|
58
|
+
--context-primary-foreground: var(--primary-foreground);
|
|
59
|
+
--context-primary-subtle: color-mix(in oklab, var(--primary) 8%, transparent);
|
|
60
|
+
--context-primary-emphasis: var(--foreground);
|
|
61
|
+
--context-primary-border: color-mix(in oklab, var(--primary) 25%, transparent);
|
|
62
|
+
--context-info: hsl(217 91% 60%);
|
|
63
|
+
--context-info-foreground: hsl(0 0% 100%);
|
|
64
|
+
--context-info-subtle: hsl(217 91% 60% / 0.1);
|
|
65
|
+
--context-info-emphasis: hsl(221 83% 40%);
|
|
66
|
+
--context-info-border: hsl(217 91% 60% / 0.3);
|
|
67
|
+
--context-success: hsl(142 71% 45%);
|
|
68
|
+
--context-success-foreground: hsl(0 0% 100%);
|
|
69
|
+
--context-success-subtle: hsl(142 71% 45% / 0.1);
|
|
70
|
+
--context-success-emphasis: hsl(142 72% 29%);
|
|
71
|
+
--context-success-border: hsl(142 71% 45% / 0.3);
|
|
72
|
+
--context-warning: hsl(38 92% 50%);
|
|
73
|
+
--context-warning-foreground: hsl(26 83% 14%);
|
|
74
|
+
--context-warning-subtle: hsl(38 92% 50% / 0.12);
|
|
75
|
+
--context-warning-emphasis: hsl(26 90% 32%);
|
|
76
|
+
--context-warning-border: hsl(38 92% 50% / 0.35);
|
|
77
|
+
--context-danger: var(--destructive);
|
|
78
|
+
--context-danger-foreground: var(--destructive-foreground);
|
|
79
|
+
--context-danger-subtle: color-mix(in oklab, var(--destructive) 10%, transparent);
|
|
80
|
+
--context-danger-emphasis: hsl(0 72% 45%);
|
|
81
|
+
--context-danger-border: color-mix(in oklab, var(--destructive) 35%, transparent);
|
|
50
82
|
--border: hsl(0 0% 92.5%);
|
|
51
83
|
--input: hsl(0 0% 92.5%);
|
|
52
84
|
/* Ring de foco LEVE (pedido da casa): aro sutil, não um halo. Com ring-[0.1875rem] + /50,
|
|
@@ -81,6 +113,10 @@
|
|
|
81
113
|
cima, como o shadcn novo. */
|
|
82
114
|
--destructive: hsl(0 72% 58%);
|
|
83
115
|
--destructive-foreground: hsl(0 0% 98%);
|
|
116
|
+
--context-info-emphasis: hsl(213 94% 68%);
|
|
117
|
+
--context-success-emphasis: hsl(142 69% 58%);
|
|
118
|
+
--context-warning-emphasis: hsl(43 96% 56%);
|
|
119
|
+
--context-danger-emphasis: hsl(0 91% 71%);
|
|
84
120
|
--border: hsl(0 0% 16.5%);
|
|
85
121
|
--input: hsl(0 0% 16.5%);
|
|
86
122
|
/* No escuro o 83.1% virava um halo quase branco; ~36% marca o foco sem brilhar. */
|
|
@@ -130,6 +166,36 @@
|
|
|
130
166
|
--color-accent-foreground: var(--accent-foreground);
|
|
131
167
|
--color-destructive: var(--destructive);
|
|
132
168
|
--color-destructive-foreground: var(--destructive-foreground);
|
|
169
|
+
--color-context-neutral: var(--context-neutral);
|
|
170
|
+
--color-context-neutral-foreground: var(--context-neutral-foreground);
|
|
171
|
+
--color-context-neutral-subtle: var(--context-neutral-subtle);
|
|
172
|
+
--color-context-neutral-emphasis: var(--context-neutral-emphasis);
|
|
173
|
+
--color-context-neutral-border: var(--context-neutral-border);
|
|
174
|
+
--color-context-primary: var(--context-primary);
|
|
175
|
+
--color-context-primary-foreground: var(--context-primary-foreground);
|
|
176
|
+
--color-context-primary-subtle: var(--context-primary-subtle);
|
|
177
|
+
--color-context-primary-emphasis: var(--context-primary-emphasis);
|
|
178
|
+
--color-context-primary-border: var(--context-primary-border);
|
|
179
|
+
--color-context-info: var(--context-info);
|
|
180
|
+
--color-context-info-foreground: var(--context-info-foreground);
|
|
181
|
+
--color-context-info-subtle: var(--context-info-subtle);
|
|
182
|
+
--color-context-info-emphasis: var(--context-info-emphasis);
|
|
183
|
+
--color-context-info-border: var(--context-info-border);
|
|
184
|
+
--color-context-success: var(--context-success);
|
|
185
|
+
--color-context-success-foreground: var(--context-success-foreground);
|
|
186
|
+
--color-context-success-subtle: var(--context-success-subtle);
|
|
187
|
+
--color-context-success-emphasis: var(--context-success-emphasis);
|
|
188
|
+
--color-context-success-border: var(--context-success-border);
|
|
189
|
+
--color-context-warning: var(--context-warning);
|
|
190
|
+
--color-context-warning-foreground: var(--context-warning-foreground);
|
|
191
|
+
--color-context-warning-subtle: var(--context-warning-subtle);
|
|
192
|
+
--color-context-warning-emphasis: var(--context-warning-emphasis);
|
|
193
|
+
--color-context-warning-border: var(--context-warning-border);
|
|
194
|
+
--color-context-danger: var(--context-danger);
|
|
195
|
+
--color-context-danger-foreground: var(--context-danger-foreground);
|
|
196
|
+
--color-context-danger-subtle: var(--context-danger-subtle);
|
|
197
|
+
--color-context-danger-emphasis: var(--context-danger-emphasis);
|
|
198
|
+
--color-context-danger-border: var(--context-danger-border);
|
|
133
199
|
--color-border: var(--border);
|
|
134
200
|
--color-input: var(--input);
|
|
135
201
|
--color-ring: var(--ring);
|