A customizable and extensible Design System framework for React.js projects
MIT License
Bot releases are visible (Hide)
Published by github-actions[bot] 9 months ago
Published by github-actions[bot] 9 months ago
Published by github-actions[bot] 10 months ago
Published by github-actions[bot] 11 months ago
Published by github-actions[bot] 11 months ago
New versions of input components have been added.
NumberInput
has been renamed to BaseNumberInput
.NumberInput
, TextInput
and SelectInput
components have been added, providing the same functionality as the *Field
component, but without automatically having a label or support for error and descriptive messages.BaseTextInput
and BaseSelect
components have been added, which include only the graphical part of the previous components, allowing the user to manually control the input functionality (similarly to BaseNumberInput
).Published by github-actions[bot] 11 months ago
Published by github-actions[bot] almost 1 year ago
Published by github-actions[bot] about 1 year ago
The DateField
has been rewritten from scratch using react-aria
, which greatly improves the accessibility, by better supporting the wide range of possible inputs (mouse, keyboard, touch, screen reader).
We introduced some subtle changes in the UI and UX of the field, to better align with the rest of Bento. These changes are breaking in the sense that there's no way to get the old UI and UX back, but we don't expect to have a disruptive impact, in practice.
From a technical stanpoint, the only breaking change is the value accepted by the DateField
when type="range"
.
Previously, the value
(and the matching onChange
) would be of type [Date | null, Date | null]
, meaning each of the ranges could be independently null
at any point, to represent a partially selected range. This transient state is now managed internally to the component, and the type of value
(and the matching onChange
) is now [Date, Date] | null
. In other words, DateField
will not accept nor return a partial range, when in "range" mode.
Again, we don't expect this to be particularly disruptive, but if this is causing unexpected troubles, let us know by opening an issue.
Published by github-actions[bot] about 1 year ago
Published by github-actions[bot] about 1 year ago
Published by github-actions[bot] about 1 year ago
Published by github-actions[bot] over 1 year ago
Published by github-actions[bot] over 1 year ago
#658 introduces some minor changes to the DS tokens used for List items when hovered/focused. The changes make the component more consistent with the rest of Bento and do not have a retro-compatible workaround.
#645 drops the compatibility with React 17. This enables us to leverage some React 18 specific features more easily. React 17 may still work, but it's no longer supported or tested.
#646 builds on #645: we've upgraded react-aria, which now uses React 18's native useId
hook to generate ids (for example, there are the ids generated to match a label to its field in a form). Previously, react-aria used a custom id generator which ultimately required Bento users to pass the ssr={true}
prop to BentoProvider
if they were using Bento in a SSR app. Thanks to our internal use of useId
, this is no longer necessary, so we just dropped the ssr
prop from BentoProvider
. You can safely remove it without a change in functionality.
#642 removes createDefineBentoSprinkles
. This used to be the primary mechanism for extending Bento with custom tokens, but it turned out to be a TS performance foot gun: using createDefineBentoSprinkles
would increase compilation time by an order of magnitude, causing even tsserver to respond very slowly. We now advise using createSprinkles
from @vanilla-extract/sprinkles
directly, you can read the updated guide for more information: https://developer.bento-ds.com/Customization/atoms-augmentation. The migration from createDefineBentoSprinkles
should be relatively straightforward and only require a little more boilerplate. Feel free to reach out in the Discussions on GitHub if you face issues.
Published by github-actions[bot] over 1 year ago
Published by github-actions[bot] over 1 year ago
⛔️ This release is broken, please use 0.19.3 instead
Published by github-actions[bot] over 1 year ago
Published by github-actions[bot] over 1 year ago
#603 and #604 introduce changes to the default config, to better align with the new default theme introduced in v0.18.0.
If you want to upgrade without noticeable changes you can reset to the previous defaults by adding
{
field: {
tip: {
iconSize: 12,
}
},
navigation: {
radius: {
medium: 0,
large: 0,
},
},
}
to the config override in BentoProvider
.
Published by gabro over 1 year ago
Published by github-actions[bot] over 1 year ago
In this release, we drastically changed the default appearance of the Bento DS, to provide a more modern look&feel to users who want to use the DS with little or no customizations.
If you were relying on the default Bento settings, you may want to override the changes we applied so that you application will not be impacted.
We're providing a completely new default theme. If you were already using your own theme, this change will not affect you. If, instead, you were relying on the defaultTheme.css
exported by the library, you may decide to keep the new style or download and use the CSS file attached to this changelog, containing the original default theme.
We decided to completely get rid of Illustrations, since we found they were not so flexible as we thought in the beginning. The Bento DS library is no longer exporting any illustration, and all the props or config entries accepting illustrations have been removed too.
In many cases, you can replace illustrations with icons, or you can work around this limitation by passing the old illustration to the icon
prop, as in icon={() => <MyIllustration size={24} kind="outline" />}
Icons have been completely revised too. All the exported icons now include a margin around the actual icon. A few icons have also been renamed:
We also changed the default configuration for many of the components included in Bento. If you want to keep the same appearance as before, you may want to provide a bento config which overrides the config parameters that have been changed in this version, by setting them to the old value. All the config parameters that changed can be seen in this diff.
Please, note that due to the changes to icons and illustrations, you may not be able to reach the same visual aspect as before, even using the old configurations.
For simplicity, here you can find the config overrides you can apply to reset the configuration to the previous state:
{
areaLoader: {
scrimColor: "light",
readabilityAreaBorderRadius: undefined,
},
avatar: {
width: 40,
height: 40,
iconSize: 16,
},
banner: {
titleSize: "small",
descriptionSize: "small",
radius: 8,
closeIconSize: 12,
semanticIconSize: {
withoutTitle: 16,
},
},
breadcrumb: {
separatorSize: 8,
},
button: {
paddingX: {
small: 8,
large: 16,
},
paddingY: {
small: 4,
medium: 8,
},
radius: 4,
internalSpacing: 8,
iconSize: {
small: 12,
medium: 12,
large: 16,
},
uppercaseLabel: true,
},
card: {
defaultRadius: 8,
},
chip: {
paddingX: 8,
iconSize: 12,
closeIconSize: 8,
uppercase: true,
},
disclosure: {
iconSize: {
1: 16,
},
},
fileUploaderField: {
buttonKind: "solid",
},
input: {
radius: 4,
paddingY: 16,
},
selectionControl: {
element: {
labelPaddingTop: 2,
checkboxBorderRadius: 4,
},
},
formLayout: {
form: {
defaultActionsSize: "large",
},
},
iconButton: {
radius: 4,
},
list: {
item: {
borderRadius: 0,
paddingX: {
medium: 16,
large: 16,
},
paddingY: {
large: 16,
},
internalSpacing: 16,
iconSize: {
trailing: 16,
},
},
spacing: 0,
},
menu: {
paddingX: 0,
radius: 8,
headerPaddingX: 16,
headerPaddingY: 16,
},
modal: {
radius: 8,
actionsSize: "large",
},
navigation: {
destinationPaddingY: {
medium: 8,
},
iconSize: {
medium: 16,
large: 16,
},
labelSize: {
medium: "large",
},
activeVisualElement: {
lineColor: "brandPrimary",
lineHeight: {
medium: 2,
large: 2,
},
},
},
searchBar: {
clearIconSize: 12,
searchIconSize: 16,
},
dropdown: {
radius: 8,
list: {
item: {
borderRadius: 0,
paddingX: {
medium: 16,
large: 16,
},
paddingY: {
large: 16,
},
internalSpacing: 16,
iconSize: {
trailing: 16,
},
},
spacing: 0,
},
defaultMenuSize: "medium",
openIndicatorIconSize: 16,
chipColor: "blue",
chipSpacing: 8,
},
table: {
padding: {
textCell: undefined,
textWithIconCell: undefined,
chipCell: undefined,
labelCell: undefined,
linkCell: undefined,
iconCell: undefined,
iconButtonCell: undefined,
},
},
toast: {
paddingX: 16,
paddingY: 16,
radius: 8,
closeIconSize: 12,
},
tabs: {
iconSize: 16,
notificationSize: 6,
},
slider: {
internalSpacing: 24,
},
tooltip: {
radius: 4,
labelSize: "medium",
},
dateField: {
radius: 8,
dayRadius: 4,
},
}
Published by github-actions[bot] over 1 year ago