Skip to content

Releases: FastChickensHR/coop

Coop v1.0.0-beta.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 15:27

The first release the compatibility promise applies to. Everything below is
measured against v0.1.0 — the July snapshot, published before the versioning
policy existed — by diffing the generated API.md surface report: 114 exported
names then, 162 now, and none removed
. Upgrading from that snapshot is a rename
exercise, not a rewrite.

Breaking

  • The package is now @fastchickenshr/coop. It was coop. Change the
    install target and every import specifier:

    - yarn add FastChickensHR/coop#v0.1.0
    + yarn add FastChickensHR/coop#v1.0.0-beta.1
    - import { Button, lightTheme } from 'coop'
    + import { Button, lightTheme } from '@fastchickenshr/coop'
  • Transient $-prefixed props are gone from the public API. $-prefixing is
    styled-components' escape syntax for "do not forward this to the DOM" — an
    implementation detail that should never have reached consumers. It is now
    internal-only, and 23 props across 17 exported components take clean names.
    Passing the old name is silently ignored, so this is a compile error only if
    you typecheck; grep for $ in your JSX either way.

    Component Renamed
    Alert, Badge $variantvariant
    Button $variantvariant, $sizesize
    Card $interactiveinteractive
    Combobox, DatePicker, DateRangePicker, Input, Select, Textarea $hasErrorhasError
    Skeleton (and SkeletonCircle, SkeletonText) $radiusradius
    Spinner $sizesize, $colorcolor
    DropdownMenuItem $dangerdanger
    StatusMessage $statusstatus
    Tr $interactiveinteractive
    Th $noBordernoBorder, $alignalign
    Td $noBordernoBorder, $alignalign, $monomono, $mutedmuted
  • The theme shape gained keys. Purely additive — no key was removed or
    retyped — so reading the theme is unaffected. This breaks you only if you hand
    author a theme object typed as DefaultTheme, which must now also supply:
    a top-level letterSpacing group (normal, tight, wide); lineHeight.flat
    and lineHeight.snugTight; colors.onFill; and ink50 / ink300 / ink400
    on both colors and fixed. Token values remain outside the promise.

Added

  • Three components, taking the surface from 35 to 38: ConfirmDialog,
    PasswordInput, and Text. All three existed in the source at 0.1.0 but never
    reached a published build.
  • The date foundations are public. lib/date (formatDate, formatDateTime,
    formatInstant, parseUserDate, toISO, fromISO, todayISO, todayDate,
    todayDateIn, dayOfInstant, outOfRange, Timeline) and lib/quickPicks
    (QuickPick, QuickPickMatch, QuickPickToken, RangePeriod, RangePick,
    quickPicksFor, rangePicksFor, resolveQuickPick, resolveRangePeriod,
    matchQuickPick, ALWAYS, ANYTIME, ONGOING) now export from the entry
    barrel. They were already load-bearing — DateEdge and DateRangeValue appear
    inside the picker components' public props — so shipping them unexported made
    those props unusable.
  • The typography role tokens (h1Type, h2Type, pageTitleType,
    sectionTitleType, panelHeadingType, cardHeadingType, displayType,
    bodyType, bodyLargeType, bodySmallType, captionType, eyebrowType,
    overlineType, monoType) export from the theme barrel.
  • A typed theme for installed consumers. The DefaultTheme augmentation of
    styled-components now compiles into dist/. At 0.1.0 it lived in a
    .d.ts that the build did not emit, so anyone installing the package got an
    untyped theme inside their own styled components.
  • PasswordInputProps is exported.
  • Combobox gained creatable, multiple, loading, debounceMs,
    onSearch, onCreate, onValuesChange, and values.
  • API.md — a normalized snapshot of the public type surface, generated from
    the types and shipped with the package. Diff it between two releases to see
    exactly what moved.
  • CHANGELOG.md ships inside the package, so the versioning and deprecation
    policy travels with the code.

Fixed

  • The published build is whole again. The 0.1.0 publishing machinery assembled
    its tree from a hand-maintained manifest that omitted lib/quickPicks, which
    the date pickers import — a republish from it would not have compiled. The
    manifest is gone; the entry barrel and the package's own build are now the only
    definition of what ships, so a file the surface reaches cannot be left behind.

Changed

  • The compatibility promise starts here. Two tiers: the exported type surface
    is gated by API.md in CI, and documented prop behavior is covered by policy.
    DOM structure, class names, visuals, and token values are not covered. The full
    statement is in CHANGELOG.md, which ships inside the package.

Full changelog: CHANGELOG.md

v0.1.0

Choose a tag to compare

@mandyMooreFan mandyMooreFan released this 20 Aug 15:07

The first public snapshot, published before the versioning policy above existed
and retro-tagged for the record. Kept as history: the 1.0.0-beta.N line is
the versioned surface, and no compatibility promise attaches to this release.

Added

  • 35 components and the typed theme, installable from GitHub under MIT.