synthesisui 0.16.80 → 0.16.82
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/dist/commands/import.js +230 -11
- package/dist/doctor/architecture.js +134 -0
- package/dist/doctor/call-sites.js +171 -0
- package/dist/doctor/component-gate.js +235 -0
- package/dist/doctor/transcribe.js +116 -17
- package/dist/doctor/variant-read.js +584 -0
- package/dist/progress.js +71 -0
- package/dist/skill-import.js +94 -1
- package/package.json +1 -1
package/dist/skill-import.js
CHANGED
|
@@ -467,6 +467,13 @@ here", which is exactly what the file says.
|
|
|
467
467
|
Good \`expects\`: \`"the cells"\`, \`"one row per item"\`, \`"the form"\`, \`"the page body"\`. Leave it
|
|
468
468
|
out rather than writing \`"children"\` - the field is for what a person would call it.
|
|
469
469
|
|
|
470
|
+
**A part can carry its own variants and states**, not only a flat class string. Send
|
|
471
|
+
\`classes\` for the resting look and let the prefixes travel inside it - \`hover:\`,
|
|
472
|
+
\`focus-visible:\`, \`disabled:\`, \`group-hover:\`, \`md:\`, \`data-[state=open]:\` are all read
|
|
473
|
+
and land where they belong. \`group-hover:\` in particular now has somewhere to go: it
|
|
474
|
+
means "when the component around me is hovered", which is what a real table row is built
|
|
475
|
+
on and what nothing could express before.
|
|
476
|
+
|
|
470
477
|
**\`name\` is the part name**, and it is what carries the styles - flat, lowercase, kebab. Never
|
|
471
478
|
nested: \`"actions.generate"\` compiles to two CSS classes and is invalid, so name it
|
|
472
479
|
\`"generate-action"\`. Name what it IS - \`label\`, \`value\`, \`delta\`, \`cover\`, \`toolbar\` - because the
|
|
@@ -530,6 +537,72 @@ extensions are configured at construction, not toggled later
|
|
|
530
537
|
of their manifest and attaches it (\`"^2.1.0 in packages/ui"\`), so the rule does not go stale the
|
|
531
538
|
day they upgrade and the information is not lost either.
|
|
532
539
|
|
|
540
|
+
### The floor: what a preview needs before it can draw anything
|
|
541
|
+
|
|
542
|
+
The owner asked this directly - "to render the button, what do I need to have?" - and the
|
|
543
|
+
honest answer per kind is short. **Work the list for the component's kind and say which
|
|
544
|
+
ones their code answers.** A reader holding this knows that a button read with no hover
|
|
545
|
+
means the hover has not been found yet, and goes back for it.
|
|
546
|
+
|
|
547
|
+
\`\`\`
|
|
548
|
+
action the resting fill and the text colour on it · padding and radius ·
|
|
549
|
+
text size and weight · hover, focus-visible AND disabled - three looks,
|
|
550
|
+
not one · gap and alignment if it can carry an icon
|
|
551
|
+
field the fill of the typing area and the text colour in it · the edge at rest
|
|
552
|
+
and the edge when focused · padding and radius · the placeholder colour
|
|
553
|
+
(a different decision) · the invalid look if their code has one
|
|
554
|
+
control the off look and the on look, which IS the component · the size · the
|
|
555
|
+
focus ring, since a control is reached by keyboard · the disabled look
|
|
556
|
+
surface the fill, and the edge or the elevation that separates it from the page ·
|
|
557
|
+
radius and inner padding · the gap between what it holds · whether it
|
|
558
|
+
changes at a breakpoint
|
|
559
|
+
pill the fill and text colour, per status if it has statuses · radius and
|
|
560
|
+
horizontal padding · the text size
|
|
561
|
+
indicator the colour, or the two if it has a track and a fill · the size or ratio ·
|
|
562
|
+
WHAT DRIVES IT - which prop moves the number
|
|
563
|
+
text the colour · the size and line height, or a note that both are inherited ·
|
|
564
|
+
the weight and family if they differ from body
|
|
565
|
+
\`\`\`
|
|
566
|
+
|
|
567
|
+
**A component genuinely has none of something, and saying so is a real answer.** This is a
|
|
568
|
+
list to work through, not a gate: nothing is blocked for failing it, and inventing a
|
|
569
|
+
background to satisfy it would be the exact opposite of the point.
|
|
570
|
+
|
|
571
|
+
There is one hard line under all of it: a recipe that declares NO colour, NO edge and NO
|
|
572
|
+
size cannot be told apart from the page. The platform says so rather than printing a
|
|
573
|
+
score, and it follows the root first - a component whose surface belongs to the \`Card\` it
|
|
574
|
+
returns is complete.
|
|
575
|
+
|
|
576
|
+
### Media is not a style question
|
|
577
|
+
|
|
578
|
+
An \`image\` node draws a grey region and carries nothing about how to use it, so an agent
|
|
579
|
+
composing with it invents the answer. Send these as \`rules\` on that component:
|
|
580
|
+
|
|
581
|
+
\`\`\`
|
|
582
|
+
a ratio or an explicit size a region with neither collapses before the image loads,
|
|
583
|
+
and the page jumps when it arrives
|
|
584
|
+
an object-fit cover crops and contain letterboxes; which one is right
|
|
585
|
+
is about the content, not a default
|
|
586
|
+
a corner radius an image inside a rounded surface has to say whether it
|
|
587
|
+
follows the curve
|
|
588
|
+
what shows while it loads a skeleton, a blur, or the surface colour
|
|
589
|
+
what shows when it is missing a missing asset must never look broken
|
|
590
|
+
\`\`\`
|
|
591
|
+
|
|
592
|
+
### What the CLI now reads for you, so do not spend a turn on it
|
|
593
|
+
|
|
594
|
+
Four things are read deterministically from the source. Reporting them back as if you
|
|
595
|
+
found them wastes a turn and risks contradicting the measurement:
|
|
596
|
+
|
|
597
|
+
- **variant and state styles** out of \`cva\`, \`tv\` and \`cond === "x" && "classes"\` -
|
|
598
|
+
including a hover PER variant, compound variants, and \`[var(--their-token)]\`
|
|
599
|
+
- **whether a component forwards the rest of its props**, and which it names
|
|
600
|
+
- **which components appear inside which** at their call sites, as pairs
|
|
601
|
+
- **the folder architecture**, and it will ask you which one has priority
|
|
602
|
+
|
|
603
|
+
What is still yours: the anatomy tree, the part names, the frontiers, the roles, the
|
|
604
|
+
concept, and the rules that are not about a class name.
|
|
605
|
+
|
|
533
606
|
### How much to send
|
|
534
607
|
|
|
535
608
|
Send an anatomy for **every component with visible structure**, which is nearly all of them. A
|
|
@@ -559,7 +632,7 @@ spec view has no nesting to draw.
|
|
|
559
632
|
|
|
560
633
|
### 3. Walk them through the decisions, one at a time
|
|
561
634
|
|
|
562
|
-
|
|
635
|
+
Six decisions are theirs. **Ask them as separate questions with selectable options** - use your
|
|
563
636
|
question tool, one call per decision, so they pick instead of reading a wall and composing a
|
|
564
637
|
reply. A single block containing everything is a report, and a report gets read, not answered.
|
|
565
638
|
|
|
@@ -673,6 +746,26 @@ Two things to be straight about, because both are true and neither is obvious:
|
|
|
673
746
|
\`badge\` needs those to exist. Choosing *mine alone* keeps the layouts whose recipes they
|
|
674
747
|
happen to have and drops the rest - a layout pointing at a recipe nobody has renders as holes.
|
|
675
748
|
|
|
749
|
+
**3e-ter. Which architecture has priority** - ask only when the CLI reported more than
|
|
750
|
+
one, which it does under "How this project is organised".
|
|
751
|
+
|
|
752
|
+
A project having two shapes is not a project with a mistake: a library organised
|
|
753
|
+
atomically inside a monorepo whose apps are organised by feature is two true answers.
|
|
754
|
+
Say that before you ask, or the question reads as an accusation.
|
|
755
|
+
|
|
756
|
+
\`\`\`
|
|
757
|
+
Two shapes, and neither is wrong:
|
|
758
|
+
|
|
759
|
+
atomic under packages/ui (recommended) 114 files - atoms/molecules/organisms,
|
|
760
|
+
and this is where the system comes from
|
|
761
|
+
feature under apps/web-dashboard 900 files - features/, where the app
|
|
762
|
+
consumes it
|
|
763
|
+
\`\`\`
|
|
764
|
+
|
|
765
|
+
The one they pick becomes a rule that reaches \`CLAUDE.md\`, so **every prompt after this
|
|
766
|
+
knows where a new component goes** - not what the folders are called, but which rung or
|
|
767
|
+
which feature a new file belongs to. Recommend the one the system came from.
|
|
768
|
+
|
|
676
769
|
**3f. Fonts** - do not ask at all. Report and move on:
|
|
677
770
|
|
|
678
771
|
\`\`\`
|
package/package.json
CHANGED