Changelog
Release history for TW-Classed React
@tw-classed/react
1.8.1
Patch Changes
- #159
e50f63aThanks @sannajammeh! - Fix defaultProps type narrowing
1.8.0
Minor Changes
f8a2721Thanks @sannajammeh! - Feat - ensure React 19 compatibility by using React.JSX, thanks @justinadkins
1.7.0
Minor Changes
-
#132
6fd3d61Thanks @sannajammeh! - AddgetVariantConfig()utility tocore&reactapi's. This extracts the entire parsed variant config from a classed component, also supports nested variants from component composition.Usage:
const Button = classed("button", { variants: { color: { blue: "bg-blue-500", }, }, }); const { variants } = getVariantConfig(Button); variants.color.blue; // "bg-blue-500"
Patch Changes
-
#133
97130ecThanks @sannajammeh! - Ensure compatibility withexactOptionalPropertyTypes:truein tsconfig.json -
Updated dependencies [
97130ec,6fd3d61]:- @tw-classed/core@1.7.0
1.7.0-canary.0
Minor Changes
-
#132
6fd3d61Thanks @sannajammeh! - AddgetVariantConfig()utility tocore&reactapi's. This extracts the entire parsed variant config from a classed component, also supports nested variants from component composition.Usage:
const Button = classed("button", { variants: { color: { blue: "bg-blue-500", }, }, }); const { variants } = getVariantConfig(Button); variants.color.blue; // "bg-blue-500"
Patch Changes
-
#133
97130ecThanks @sannajammeh! - Ensure compatibility withexactOptionalPropertyTypes:truein tsconfig.json -
Updated dependencies [
97130ec,6fd3d61]:- @tw-classed/core@1.7.0-canary.0
1.6.1
Patch Changes
- #127
50e69a7eThanks @emmanuelchucks! - add proper autocompletion for default props
1.6.0
Minor Changes
-
#125
e3b9d61eThanks @sannajammeh! - - (Feat): Add support for defaultProps in React api Components can now have default props in the React apiconst Button = classed.button({ defaultProps: { someProp: "someValue", }, });This change is considered unstable, for now defaultProps will not populate when using composition nor affect variants or classname generation.
- (Fix): Data attributes are now correctly generated for composition
Patch Changes
- Updated dependencies [
e3b9d61e]:- @tw-classed/core@1.6.0
1.5.2
Patch Changes
-
#119
67ec8d98Thanks @sannajammeh! - This release exports the default merger ascx, adds additional test cases for cx & react props, bumps all packages to latest -
Updated dependencies [
67ec8d98]:- @tw-classed/core@1.5.2
1.5.1
Patch Changes
-
#114
52abded9Thanks @sannajammeh! - Add support for array matching compound variants- Add support for matched variants to appear as dataAttributes
- Update dependencies
chore(core): update parser and types to support array compound variants
- Update parser to handle array compound variants
- Update types to handle array compound variants
feat(react): update types to support array compound variants
- Update types to handle array compound variants
test(core): add tests for array compound variants
- Add tests for array compound variants
test(compound.spec.tsx): add tests for array compound variants to improve test coverage
-
Updated dependencies [
52abded9]:- @tw-classed/core@1.5.1
1.5.0
Minor Changes
-
#105
233bddfdThanks @Xiot! - Adds support for matched variants to appear as dataAttributesExample
const Button = classed("button", { variants: { color: { blue: "bg-blue-100", red: "bg-red-100", }, }, defaultVariants: { color: "red", }, dataAttributes: ["color"], }); <Button color="blue" /> // Rendered html will be <button data-color="blue" /> <Button> // Rendered html will be <button data-color="red /> // From default variants
Patch Changes
-
#109
d46b615fThanks @sannajammeh! - Add documentation for Data attributes -
Updated dependencies [
233bddfd]:- @tw-classed/core@1.5.0
1.5.0-canary.1
Patch Changes
d46b615fThanks @sannajammeh! - Add documentation for Data attributes
1.5.0-canary.0
Minor Changes
-
#105
233bddfdThanks @Xiot! - Adds support for matched variants to appear as dataAttributesExample
const Button = classed("button", { variants: { color: { blue: "bg-blue-100", red: "bg-red-100", }, }, defaultVariants: { color: "red", }, dataAttributes: ["color"], }); <Button color="blue" /> // Rendered html will be <button data-color="blue" /> <Button> // Rendered html will be <button data-color="red /> // From default variants
Patch Changes
- Updated dependencies [
233bddfd]:- @tw-classed/core@1.5.0-canary.0
1.4.4
Patch Changes
- Updated dependencies [
f19df61f]:- @tw-classed/core@1.4.4
1.4.3
Patch Changes
- #96
714d2389Thanks @sannajammeh! - Fixes the merged className order from classed->component->variants to classed->variants->component
1.4.2
Patch Changes
1715d071Thanks @sannajammeh! - Refactors displayName set in #a382966 to use .name and .displayName raw when set on parent component
1.4.1
Patch Changes
db2effb5Thanks @sannajammeh! - Extend inherited components displayName if not classed component
1.4.0
Minor Changes
- #82
0f5f46faThanks @sannajammeh! - Adds support forderiveClassed&makeStrict. Updated core internal typing for compatibility.
Patch Changes
-
#89
785bcaaaThanks @sannajammeh! - Adds support for compoundVariants to be inherit via the composition API.Example:
const Button = classed.button({ base: "bg-blue-500 text-white", variants: { size: { sm: "px-2 py-1 text-sm", md: "px-4 py-2 text-base", }, color: { red: "bg-red-500", green: "bg-green-500", }, }, compoundVariants: [ { size: "sm", color: "green" class: "super-special-class-modifyer" }, ], }); const GreenButton = classed(Button, { defaultVariants: { color: "green", // This now triggers the compoundVariant }, }); -
#89
fc48bf56Thanks @sannajammeh! - Sets target to es2018 in tsconfig to allow bundling to newer syntax -
#89
d392ab1cThanks @sannajammeh! - Export Classed Proxy type due to TS error on pnpm -
#89
b183d8abThanks @sannajammeh! - Reverse insert order of first element composition to allow overriding of defaultVariants & other variant properties when re-classing -
#89
81a77612Thanks @sannajammeh! - Fixes As prop usage inside a derived component's render method by implicitly requiringAsgeneric.NOTE: Use only when manually setting
asinside derive's render method. Otherwise, let the compiler infer theAsgeneric.deriveClassed<Comp, Props, "div">((props, ref) => ( <BaseComp as="div" {...props} ref={ref} /> )); -
Updated dependencies [
785bcaaa,0f5f46fa]:- @tw-classed/core@1.4.0
1.4.0-canary.6
Patch Changes
fc48bf56Thanks @sannajammeh! - Sets target to es2018 in tsconfig to allow bundling to newer syntax
1.4.0-canary.5
Patch Changes
-
785bcaaaThanks @sannajammeh! - Adds support for compoundVariants to be inherit via the composition API.Example:
const Button = classed.button({ base: "bg-blue-500 text-white", variants: { size: { sm: "px-2 py-1 text-sm", md: "px-4 py-2 text-base", }, color: { red: "bg-red-500", green: "bg-green-500", }, }, compoundVariants: [ { size: "sm", color: "green" class: "super-special-class-modifyer" }, ], }); const GreenButton = classed(Button, { defaultVariants: { color: "green", // This now triggers the compoundVariant }, }); -
Updated dependencies [
785bcaaa]:- @tw-classed/core@1.4.0-canary.5
1.4.0-canary.4
Patch Changes
b183d8abThanks @sannajammeh! - Reverse insert order of first element composition to allow overriding of defaultVariants & other variant properties when re-classing
1.4.0-canary.3
Patch Changes
d392ab1cThanks @sannajammeh! - Export Classed Proxy type due to TS error on pnpm
1.4.0-canary.2
Patch Changes
-
81a77612Thanks @sannajammeh! - Fixes As prop usage inside a derived component's render method by implicitly requiringAsgeneric.NOTE: Use only when manually setting
asinside derive's render method. Otherwise, let the compiler infer theAsgeneric.deriveClassed<Comp, Props, "div">((props, ref) => ( <BaseComp as="div" {...props} ref={ref} /> ));
1.4.0-canary.1
Minor Changes
- #82
0f5f46faThanks @sannajammeh! - Adds support forderiveClassed&makeStrict. Updated core internal typing for compatibility.
Patch Changes
- Updated dependencies [
0f5f46fa]:- @tw-classed/core@1.4.0-canary.1
1.3.2
Patch Changes
-
#68
091ef6a4Thanks @sannajammeh! - Adds support in core lib forclass&classNamewhen calling a class producer functionExample:
const button = classed("bg-blue-500"); // LitHTML html`<button class=${button({ class: "text-white" })}>Click me</button>`; -
#65
df315431Thanks @sannajammeh! - This patch adds support for Typescriptinteroperabilitybetween the@tw-classed/coreand@tw-classed/reactpackages. This makes it possible to use the@tw-classed/corein a framework agnostic design system and then use the@tw-classed/reactin a React application.// Design system import { classed } from "@tw-classed/core"; export const button = classed({ base: "bg-blue-500 text-white", variants: { size: { sm: "px-2 py-1 text-sm", md: "px-3 py-2 text-base", lg: "px-4 py-3 text-lg", }, }, }); // React application import { button } from "design-system"; import { classed } from "@tw-classed/react"; export const Button = classed.button(button); // Variants are automatically inferred -
Updated dependencies [
091ef6a4]:- @tw-classed/core@1.3.2
1.3.2-canary.1
Patch Changes
-
091ef6a4Thanks @sannajammeh! - Adds support in core lib forclass&classNamewhen calling a class producer functionExample:
const button = classed("bg-blue-500"); // LitHTML html`<button class=${button({ class: "text-white" })}>Click me</button>`; -
Updated dependencies [
091ef6a4]:- @tw-classed/core@1.3.2-canary.1
1.3.2-canary.0
Patch Changes
-
#65
df315431Thanks @sannajammeh! - This patch adds support for Typescriptinteroperabilitybetween the@tw-classed/coreand@tw-classed/reactpackages. This makes it possible to use the@tw-classed/corein a framework agnostic design system and then use the@tw-classed/reactin a React application.// Design system import { classed } from "@tw-classed/core"; export const button = classed({ base: "bg-blue-500 text-white", variants: { size: { sm: "px-2 py-1 text-sm", md: "px-3 py-2 text-base", lg: "px-4 py-3 text-lg", }, }, }); // React application import { button } from "design-system"; import { classed } from "@tw-classed/react"; export const Button = classed.button(button); // Variants are automatically inferred
1.3.1
Patch Changes
4ffde042Thanks @sannajammeh! - Export ClassedConfig type
1.3.0
Minor Changes
- #52
47437bcaThanks @sannajammeh! - Add createClassed API to extend the classed function with additional functionality. Currently only "merger" prop is supported
Patch Changes
-
#61
79be37a2Thanks @sannajammeh! - This release extends core to support the createClassed API, adds improvements to the documentation -
#61
29570c7eThanks @sannajammeh! - Export DerivedComponentType to handle as prop in derived components -
#61
e7596bb9Thanks @sannajammeh! - Fixes "This module is a CJS module" in node.js with type:"module" -
Updated dependencies [
79be37a2,29570c7e,f328e321,e7596bb9]:- @tw-classed/core@1.3.0
1.3.0-canary.4
Patch Changes
-
e7596bb9Thanks @sannajammeh! - Fixes "This module is a CJS module" in node.js with type:"module" -
Updated dependencies [
e7596bb9]:- @tw-classed/core@1.3.0-canary.4
1.3.0-canary.3
Patch Changes
- Updated dependencies [
f328e321]:- @tw-classed/core@1.3.0-canary.3
1.3.0-canary.2
Patch Changes
-
29570c7eThanks @sannajammeh! - Export DerivedComponentType to handle as prop in derived components -
Updated dependencies [
29570c7e]:- @tw-classed/core@1.3.0-canary.2
1.3.0-canary.1
Patch Changes
-
79be37a2Thanks @sannajammeh! - This release extends core to support the createClassed API, adds improvements to the documentation -
Updated dependencies [
79be37a2]:- @tw-classed/core@1.3.0-canary.1
1.3.0-canary.0
Minor Changes
- #52
47437bcaThanks @sannajammeh! - Add createClassed API to extend the classed function with additional functionality. Currently only "merger" prop is supported
1.2.5
Patch Changes
-
9d8f12f4Thanks @sannajammeh! - Widen types of boolean variants -
Updated dependencies [
9d8f12f4]:- @tw-classed/core@1.2.5
1.2.4
Patch Changes
- Updated dependencies [
413c87d1]:- @tw-classed/core@1.2.4
1.2.3
Patch Changes
-
#39
55e8b2b8Thanks @sannajammeh! - ES2018 build spec, code refactor, readme updates -
#33
92617148Thanks @sannajammeh! - Fix numeric variants -
Updated dependencies [
55e8b2b8,92617148]:- @tw-classed/core@1.2.3
1.2.3-canary.1
Patch Changes
-
55e8b2b8Thanks @sannajammeh! - ES2018 build spec, code refactor, readme updates -
Updated dependencies [
55e8b2b8]:- @tw-classed/core@1.2.3-canary.1
1.2.3-canary.0
Patch Changes
-
#33
92617148Thanks @sannajammeh! - Fix numeric variants -
Updated dependencies [
92617148]:- @tw-classed/core@1.2.3-canary.0
1.2.2
Patch Changes
-
#30
1cc8c2e6Thanks @sannajammeh! - Fix core require -
Updated dependencies [
1cc8c2e6]:- @tw-classed/core@1.2.2
1.2.1
Patch Changes
-
#27
c6d76b9eThanks @sannajammeh! - Fixes Reflect.has api bug -
Updated dependencies [
c6d76b9e]:- @tw-classed/core@1.2.1
1.2.0
Minor Changes
- #17
dd615ec4Thanks @sannajammeh! - Added support for Proxy API i.eclassed.button(...args). Regular classed api is unchanged and will use the proxy API to call the main method
Patch Changes
-
#21
da54b916Thanks @sannajammeh! - Document proxy API -
#19
2d24a386Thanks @sannajammeh! - Switch core bundler to unbuild for bundleless exports -
#21
01c1a8b3Thanks @sannajammeh! - Final Proxty API & base property -
Updated dependencies [
2d24a386,01c1a8b3]:- @tw-classed/core@1.2.0
1.2.0-canary.3
Patch Changes
-
#21
01c1a8b3Thanks @sannajammeh! - Final Proxty API & base property -
Updated dependencies [
01c1a8b3]:- @tw-classed/core@1.2.0-canary.3
1.2.0-canary.2
Patch Changes
-
#19
2d24a386Thanks @sannajammeh! - Switch core bundler to unbuild for bundleless exports -
Updated dependencies [
2d24a386]:- @tw-classed/core@1.2.0-canary.2
1.2.0-canary.1
Patch Changes
da54b916Thanks @sannajammeh! - Document proxy API
1.2.0-canary.0
Minor Changes
dd615ec4Thanks @sannajammeh! - Added support for Proxy API i.eclassed.button(...args). Regular classed api is unchanged and will use the proxy API to call the main method
1.1.1
Patch Changes
- #15
cd2d9e28Thanks @sannajammeh! - Removed use-client directive from ESM
1.1.0
Minor Changes
- #12
c6e1ae2Thanks @sannajammeh! - Added full support for compoundVariants, base property in config object
Patch Changes
- Updated dependencies [
c6e1ae2]:- @tw-classed/core@1.1.0
1.0.0
Major Changes
- Final v1 release of all packages. Breaking from alpha: both core and react no longer export default and switched to classed.
Patch Changes
- Updated dependencies []:
- @tw-classed/core@1.0.0