@softize/opus 12.10.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.
Files changed (76) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/bin/lib/check.mjs +1103 -310
  3. package/bin/lib/copy.mjs +11 -0
  4. package/docs/adr/0003-dictionary-presentation-is-declared.md +3 -0
  5. package/docs/adr/0004-page-content-state-is-composed.md +65 -0
  6. package/docs/adr/0005-structural-surfaces-share-an-explicit-anatomy.md +97 -0
  7. package/docs/adr/0006-semantic-context-precedes-visual-variant.md +182 -0
  8. package/package.json +1 -1
  9. package/registry/instructions/opus.md +5 -0
  10. package/registry/skills/build-opus-ui/SKILL.md +27 -16
  11. package/registry/skills/build-opus-ui/references/evaluations.md +16 -5
  12. package/registry/skills/build-opus-ui/references/ui-patterns.md +38 -15
  13. package/registry/skills/model-opus-dictionary/SKILL.md +4 -2
  14. package/registry/skills/model-opus-dictionary/references/evaluations.md +4 -3
  15. package/registry/templates/app/src/App.tsx +1 -1
  16. package/src/core/dictionary.ts +52 -14
  17. package/src/core/index.ts +10 -0
  18. package/src/core/ui-context.ts +29 -0
  19. package/src/schema/drivers/zod.ts +17 -8
  20. package/src/ui/components/patterns/action-form-card.tsx +18 -12
  21. package/src/ui/components/patterns/confirm.tsx +26 -3
  22. package/src/ui/components/patterns/content-header.tsx +335 -61
  23. package/src/ui/components/patterns/data-state.tsx +23 -10
  24. package/src/ui/components/patterns/list.tsx +1096 -777
  25. package/src/ui/components/patterns/page-state.tsx +115 -0
  26. package/src/ui/components/patterns/page.tsx +231 -41
  27. package/src/ui/components/patterns/sidebar.tsx +354 -80
  28. package/src/ui/components/patterns/trigger.tsx +13 -9
  29. package/src/ui/components/patterns/view.tsx +7 -11
  30. package/src/ui/components/primitives/alert-dialog.tsx +7 -5
  31. package/src/ui/components/primitives/alert.tsx +298 -110
  32. package/src/ui/components/primitives/ask.tsx +2 -1
  33. package/src/ui/components/primitives/badge.tsx +91 -30
  34. package/src/ui/components/primitives/button.tsx +99 -60
  35. package/src/ui/components/primitives/calendar.tsx +39 -39
  36. package/src/ui/components/primitives/card.tsx +96 -23
  37. package/src/ui/components/primitives/detail.tsx +2 -2
  38. package/src/ui/components/primitives/dictionary-value.tsx +9 -14
  39. package/src/ui/components/primitives/dot.tsx +74 -21
  40. package/src/ui/components/primitives/drawer.tsx +33 -20
  41. package/src/ui/components/primitives/item.tsx +137 -81
  42. package/src/ui/components/primitives/menu.tsx +11 -3
  43. package/src/ui/components/primitives/metric-card.tsx +133 -0
  44. package/src/ui/components/primitives/table.tsx +2 -2
  45. package/src/ui/docs/DocBrowser.tsx +3 -3
  46. package/src/ui/docs/changelog.tsx +1 -1
  47. package/src/ui/docs/content/action-form-card.md +1 -1
  48. package/src/ui/docs/content/alert-dialog.md +8 -8
  49. package/src/ui/docs/content/alert.md +49 -25
  50. package/src/ui/docs/content/badge.md +18 -19
  51. package/src/ui/docs/content/button.md +12 -9
  52. package/src/ui/docs/content/card.md +5 -5
  53. package/src/ui/docs/content/content.md +44 -0
  54. package/src/ui/docs/content/customization.md +2 -2
  55. package/src/ui/docs/content/detail.md +5 -2
  56. package/src/ui/docs/content/dialog.md +2 -2
  57. package/src/ui/docs/content/dictionary-value.md +11 -10
  58. package/src/ui/docs/content/dot.md +7 -7
  59. package/src/ui/docs/content/drawer.md +6 -3
  60. package/src/ui/docs/content/input-group.md +3 -2
  61. package/src/ui/docs/content/item.md +47 -21
  62. package/src/ui/docs/content/menu.md +5 -4
  63. package/src/ui/docs/content/metric-card.md +41 -0
  64. package/src/ui/docs/content/page-state.md +45 -0
  65. package/src/ui/docs/content/page.md +48 -10
  66. package/src/ui/docs/content/semantic-context.md +63 -0
  67. package/src/ui/docs/content/sidebar.md +4 -4
  68. package/src/ui/docs/content/skeleton.md +2 -2
  69. package/src/ui/docs/content/table.md +3 -3
  70. package/src/ui/docs/content/tokens.md +28 -0
  71. package/src/ui/docs/doc-client.tsx +2 -2
  72. package/src/ui/docs/registry.tsx +596 -228
  73. package/src/ui/lib/semantic-context.ts +30 -0
  74. package/src/ui/meta.ts +292 -270
  75. package/src/ui/react.tsx +378 -111
  76. 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);