Version Packages - #3
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
14 times, most recently
from
July 26, 2026 21:59
ebafee1 to
f588805
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
July 26, 2026 22:54
f588805 to
d15e92f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@reactive/silk@0.1.0
Minor Changes
2b03511: Add a
footerslot toCommentfor a trailing affordance that belongs to the comment rather than to its replies. It renders in the content column after the replies and outside their rail.CommentThreadnow routes its "Continue thread" button there. It previously went through therepliesslot, which always wraps its content in a railed reply stack, so a comment atmaxDepthwith nothing nested inline drew a reply rail beside a lone button.b4fd11a: Cowork-inspired font defaults: first-class
sans/serif/monofamilies.breaking:
TypographyRecord.familyis now aFontFamilyName('sans' | 'serif' | 'mono') instead of a raw CSSfont-familystack.SemanticTokensgains requiredfontFamily: Record<FontFamilyName, string>(CSS stacks). ExhaustiveRecord/ merge helpers must include it.headingXl(display / page H1) usesserif; section/panelheadingLgand other roles staysans.--silk-font-sans,--silk-font-serif,--silk-font-mono; role vars are indirect (--silk-typography-*-family: var(--silk-font-…)).Silk still ships no font files — load the faces yourself or fall through to system. Override via
createTheme({ semantic: { fontFamily: { sans: '…' } } })or the--silk-font-*CSS variables.2c7c49f: Rank the escape hatches and make the cascade contract explicit.
@reactive/silk/styles.layer.cssentry ships the extracted stylesheet wrapped in@layer silk, so unlayered consumer CSS overrides Silk deterministically instead of depending on bundler stylesheet order. The unlayeredstyles.cssis unchanged and still the default, since the layered build also loses to unlayered consumer resets.cssVars()helper types the public component hooks for thestyleprop, replacing theas CSSPropertiescast that custom properties otherwise require (and that silences misspelled variable names).silkComponentVarNamesexports the hook list, guarded by a conformance test against the extracted CSS.--silk-scrollarea-thumbnow follows the samevar(hook, fallback)pattern as every other hook. It was previously assigned on the ScrollArea root, which shadowed consumer overrides of equal specificity.09d876d: Foundation release: platform-neutral tokens/theme/recipes in
@reactive/silk-core, web renderer with Linaria + Radix exemplars (Box, Stack, Text, Button, Avatar, Dialog, Identity), ThemeProvider/SilkProvider, and registry scaffold.3bf1155: Layout flow direction is a property of the component, never a prop:
Stackis vertical,Inlineis horizontal, and neither can flip its axis.A
directionprop would mean the samealign/justifyvalues silently swap visual axis per call site. Fixing the axis per component — rather than renaming the props — keeps the standard flexbox reading ofalignandjustifycorrect everywhere.Stackis vertical-only.stackRecipe.variantsis exactlygap,align,justify,rail. Reach forInlinefor horizontal flow; it additionally carrieswrap,direction(row | row-reverse, order rather than axis), and the web-onlycollapseBelow.Stack, horizontal isInline. Their defaults differ deliberately —Stackisalign="stretch",Inlineisalign="center"andwrap="wrap"— so setalign/wrapexplicitly when a row must stretch to equal heights or must not reflow.align/justifyset to"center".Containerowns max-width measure centering (margin-inline: auto+max-width).Gridhasjustify(start | center | end | stretch, defaultstretch) mapped tojustify-items, pairing withalign→align-items:columnsalways emits1frtracks, so there is no free space forjustify-contentto distribute. OnStackandInline,justifyisjustify-content.7b6407b: Stage 1 layout system:
Inline,Grid,Container,Separator, andBoxpadding; system density viacompactSpace+data-densityspace remaps; web-onlycollapseBelowcontainer queries; ThemeProvider density / nested theme inheritance.338fe46: Stage 2 visual primitives and forms foundation.
breaking:
ToneName: addsuccessto every exhaustiveRecord<ToneName, …>/ switch.InteractionToneColors: add requiredtext,subtleHover, andsubtleActive(old soft/outline/ghost remaps ofborder/hoverare gone — use the new slots).SemanticTokens: addcolor.surfaceSunken,color.overlay,shadow.{raised,overlay}, andfocusRing.{width,offset}; typography addsheadingSm/headingXl.onSolid: #fffmeets WCAG 4.5:1.createSharedSemanticScales()is removed — use thesharedSemanticScalesconstant.MotionNameaddsloop(1200ms, linear) for continuous indeterminate motion;fast/normal/slowstay one-shot transition durations. ExhaustiveRecord<MotionName, …>literals must addloop.hover/activeare now three distinct fills alongsidesolidin both schemes. Lighthoveris blended between palette steps 11 and 12 rather than being step 12 (which collided withactive), and neutralactiveis step 11 rather than step 12 (which collided withsolid). Themes that hardcoded those hex values must re-derive them.FieldContextValuedropscontrolId;inputIdis now the single resolved control id.Field.RootgainscontrolIdfor naming that control — settingidon the control itself no longer retargets LabelhtmlFor, which previously required a post-hydration effect and produced a danglingfor=on the server.Adds
Surface,Card,Heading,Badge,Skeleton,Spinner,Progress,Field,Input,Textarea,Checkbox,RadioGroup,Switch,Slider; settings-form fixture; contrast and theming acceptance tests.2c7c49f: Stage 3 interaction primitives: Popover, Tooltip, DropdownMenu, Select, Tabs, Accordion, ScrollArea, Toast, Toggle/ToggleGroup — shared floating-surface motion, recipes, portal theme reconstitution, InspectorPanel fixture, and CI performance budgets.
3bf1155: Stage 4 composites: product components, serializable models, and composition standard.
@reactive/silk-core/models(Identity/Stat/Media/Post/Comment/Notification/Profile/FeedEntry) and composite recipes.interactivehover elevation, Inlinedirection, Stackrail,StatusDot.docs/COMPOSITES.md.modelprop — non-breaking).e2aa5b9: Stage 5 theming maturity (web): portal variable channels and re-exports.
semanticVars(replaced by nestedtheme/colorScheme) andcustomVars(component hooks that inherit through named children into portals).generateScale,generatePairedPalette,checkThemeContrast, and related types from@reactive/silk.silkComponentVarMeta/formatComponentVarDocsTable.Patch Changes
2c7c49f: Fix
asChildon every part that renders a decoration alongside its children.Select.Trigger,Accordion.Trigger,DropdownMenu.SubTrigger,DropdownMenu.Item, andField.Labeleach threw "Primitive.* failed to slot onto its children" because the chevron / caret / shortcut / required indicator was a second slot child. Their children are now wrapped inSlot.Slottable, so a custom element receives its own children plus the appended decoration. This applies even where the decoration is conditional (DropdownMenu.Item shortcut,Field.Labelon a required field) — thenullbranch counted as a second child, so those parts threw onasChildregardless. The default (non-asChild) render path is unchanged.Two assembled parts cannot support
asChildat all, and now say so at the type level instead of throwing at runtime:asChildis omitted fromSelectItemPropsandSelectContentProps, matchingCheckbox,Switch,Slider,RadioGroup, andProgress.Select.Itemwraps children inRadixSelect.ItemText, andSlottablesubstitutes the consumer's children unwrapped, so no arrangement yields "consumer element is the item, containing indicator +ItemText".Select.Contentassembles a Viewport plus both scroll buttons, so there is likewise no single slot target.The rule and its
null-branch pitfall are documented once in ARCHITECTURE.md.2b03511: Keep
Field.Root orientation="horizontal"correct when slots sit inside a layout wrapper. The grid pinned only directField.Label/Description/Errorchildren to column 2, so aStackorInlinearound the description auto-placed into the control column — even though Field already treats those wrappers as transparent when wiringaria-describedby. Wrappers holding a slot are now pinned too, and the label owns row 1 so the control stays beside it regardless of child order.338fe46: Only wire
aria-labelledbyfrom Field context when aField.Labelis actually rendered, and point it at the label's own id. ASliderin a label-lessField.Rootno longer gets a danglingaria-labelledby, so itsaria-labelnames therole="slider"thumb again.Detect
Field.Label/Description/Erroramong descendants (not only direct children) so layout wrappers likeInline/Stackstill populatearia-labelledby/aria-describedby. NestedField.Rootboundaries are respected.338fe46:
Sliderinside a single-modeField.Rootno longer gets a dangling or non-functional LabelhtmlFor. Field detects labelledby-marked controls (fieldLabelAssociation), omits automatichtmlFor/ controlid, and keeps naming on the thumb viaaria-labelledby. Explicitid/htmlForstill win.Field.Root requiredstill shows the label indicator for Slider fields;required/aria-requiredare not forwarded onto the thumb because range /role="slider"always has a value and does not support those attributes.2c7c49f: Dialog overlay and content now draw their
z-indexfrom the shared floating stacking scale, so page content with a modestz-index(sticky headers, app chrome) no longer paints over the scrim or the panel. The overlay previously had noz-indexat all and content used a localz-index: 1.Dialog sits below popovers, menus, selects, tooltips, and toasts on that scale. Those surfaces portal to the body as siblings of the dialog panel rather than descendants, so they must outrank it to remain visible when opened from inside a dialog.
3f24b2f: Reconstitute the nearest ThemeProvider scope on portaled Dialog content so theme CSS variables resolve outside the provider DOM subtree.
3fd5030: Make ScrollArea viewport keyboard-focusable by default (
tabIndex={0}) so scrollable regions meet axescrollable-region-focusable.338fe46: Name multi-thumb
Sliderthumbs whenthumbLabelsis omitted: fall back to Field label or an indexed rootaria-label, and wirearia-describedbyon every thumb. ExplicitthumbLabelsclear Fieldaria-labelledbyso they win in accessible name computation.Updated dependencies [b4fd11a]
Updated dependencies [09d876d]
Updated dependencies [3bf1155]
Updated dependencies [7b6407b]
Updated dependencies [338fe46]
Updated dependencies [2c7c49f]
Updated dependencies [3bf1155]
Updated dependencies [e2aa5b9]
@reactive/silk-core@0.1.0
Minor Changes
b4fd11a: Cowork-inspired font defaults: first-class
sans/serif/monofamilies.breaking:
TypographyRecord.familyis now aFontFamilyName('sans' | 'serif' | 'mono') instead of a raw CSSfont-familystack.SemanticTokensgains requiredfontFamily: Record<FontFamilyName, string>(CSS stacks). ExhaustiveRecord/ merge helpers must include it.headingXl(display / page H1) usesserif; section/panelheadingLgand other roles staysans.--silk-font-sans,--silk-font-serif,--silk-font-mono; role vars are indirect (--silk-typography-*-family: var(--silk-font-…)).Silk still ships no font files — load the faces yourself or fall through to system. Override via
createTheme({ semantic: { fontFamily: { sans: '…' } } })or the--silk-font-*CSS variables.09d876d: Foundation release: platform-neutral tokens/theme/recipes in
@reactive/silk-core, web renderer with Linaria + Radix exemplars (Box, Stack, Text, Button, Avatar, Dialog, Identity), ThemeProvider/SilkProvider, and registry scaffold.3bf1155: Layout flow direction is a property of the component, never a prop:
Stackis vertical,Inlineis horizontal, and neither can flip its axis.A
directionprop would mean the samealign/justifyvalues silently swap visual axis per call site. Fixing the axis per component — rather than renaming the props — keeps the standard flexbox reading ofalignandjustifycorrect everywhere.Stackis vertical-only.stackRecipe.variantsis exactlygap,align,justify,rail. Reach forInlinefor horizontal flow; it additionally carrieswrap,direction(row | row-reverse, order rather than axis), and the web-onlycollapseBelow.Stack, horizontal isInline. Their defaults differ deliberately —Stackisalign="stretch",Inlineisalign="center"andwrap="wrap"— so setalign/wrapexplicitly when a row must stretch to equal heights or must not reflow.align/justifyset to"center".Containerowns max-width measure centering (margin-inline: auto+max-width).Gridhasjustify(start | center | end | stretch, defaultstretch) mapped tojustify-items, pairing withalign→align-items:columnsalways emits1frtracks, so there is no free space forjustify-contentto distribute. OnStackandInline,justifyisjustify-content.7b6407b: Stage 1 layout system:
Inline,Grid,Container,Separator, andBoxpadding; system density viacompactSpace+data-densityspace remaps; web-onlycollapseBelowcontainer queries; ThemeProvider density / nested theme inheritance.338fe46: Stage 2 visual primitives and forms foundation.
breaking:
ToneName: addsuccessto every exhaustiveRecord<ToneName, …>/ switch.InteractionToneColors: add requiredtext,subtleHover, andsubtleActive(old soft/outline/ghost remaps ofborder/hoverare gone — use the new slots).SemanticTokens: addcolor.surfaceSunken,color.overlay,shadow.{raised,overlay}, andfocusRing.{width,offset}; typography addsheadingSm/headingXl.onSolid: #fffmeets WCAG 4.5:1.createSharedSemanticScales()is removed — use thesharedSemanticScalesconstant.MotionNameaddsloop(1200ms, linear) for continuous indeterminate motion;fast/normal/slowstay one-shot transition durations. ExhaustiveRecord<MotionName, …>literals must addloop.hover/activeare now three distinct fills alongsidesolidin both schemes. Lighthoveris blended between palette steps 11 and 12 rather than being step 12 (which collided withactive), and neutralactiveis step 11 rather than step 12 (which collided withsolid). Themes that hardcoded those hex values must re-derive them.FieldContextValuedropscontrolId;inputIdis now the single resolved control id.Field.RootgainscontrolIdfor naming that control — settingidon the control itself no longer retargets LabelhtmlFor, which previously required a post-hydration effect and produced a danglingfor=on the server.Adds
Surface,Card,Heading,Badge,Skeleton,Spinner,Progress,Field,Input,Textarea,Checkbox,RadioGroup,Switch,Slider; settings-form fixture; contrast and theming acceptance tests.2c7c49f: Stage 3 interaction primitives: Popover, Tooltip, DropdownMenu, Select, Tabs, Accordion, ScrollArea, Toast, Toggle/ToggleGroup — shared floating-surface motion, recipes, portal theme reconstitution, InspectorPanel fixture, and CI performance budgets.
3bf1155: Stage 4 composites: product components, serializable models, and composition standard.
@reactive/silk-core/models(Identity/Stat/Media/Post/Comment/Notification/Profile/FeedEntry) and composite recipes.interactivehover elevation, Inlinedirection, Stackrail,StatusDot.docs/COMPOSITES.md.modelprop — non-breaking).e2aa5b9: Stage 5 theming maturity (core): palette generation, paired dark derivation, and contrast auditing.
generateScale(seedHex, colorScheme)— OKLCH 12-step ramps from canonical sRGB hex.generatePairedPalette(brandHex)— tenant recipe producing full light+dark palettes (accent + brand-tinted gray; optional danger/success seeds).checkThemeContrast,contrastRatio,relativeLuminance, andparseCanonicalHexfor CI/tooling.culorifor OKLCH conversion and gamut mapping (private to the generator).@reactive/silk-native@0.1.0
Minor Changes
@reactive/silk-native: React Native renderer for Silk with context-basedThemeProvider/SilkProvider, style mappers fromsilk-corerecipes, and exemplar componentsBox,Stack,Inline,Text, andButton. Same semantic Theme object and recipe contracts as web; no CSS variables.Patch Changes
@reactive/silk-docs@0.0.1
Patch Changes
@reactive/silk-native-example@0.0.1
Patch Changes