[6.2.0] - 2024-09-09
- Relaxed NodeJS version requirement.
- New section-header component (
.o-section-header) at organism level. Encapsulates what was previously built using utility classes.
[6.1.0] - 2024-02-14
- Updated the required node version number be more permissive. Should stop warnings about this in projects that use bitstyles
- New Pageheader Organism-level component, that encapsulates what was previously an example component built using utility classes.
- Updates the layout of the Sidebar component, improvements to the scrolling behavior and uses the invisible button variant.
- Badge with Label, added an example showing a text label rendered next to a badge component, to the badge docs.
- A new layout component at
atoms/switcher, that lays out its children in a horizontal row with consistent spacing between children. The layout switches to a vertical stack once the width of the component passes below a threshold, or the number of children goes over a limit. - A new layout component at
atoms/stack, that lays out its children vertically, with consistent spacing between children.
[6.0.0] - 2023-06-08
- Buttons now show their
pressedstate when they havearia-expanded='true', so it’s usable with dropdowns, and other show/hide UI. - Colors in the default configuration have been refreshed following our new design system. If you wish to retain the old color scheme, you can copy the configuration from older versions. You may need to also update the settings for any components you’re using from bitstyles to use the colors you have defined, in cases where the components expect the new colors. If you were already overriding the color palette, you don’t need to do anything (though, see next point on naming).
- The naming scheme for color variations has changed. If you’re using the default color configuration, update the color names when you use either
palette.get()or the equivalent CSS Custom Properties:lightesttolight-3lightertolight-2lighttolight-1darktodark-1darkertodark-2darkesttodark-3
- The sizing scale now spans from
s7(smallest) tol7(largest), withmbeing the mid point. If you change the names used in the sizing scale in your configuration, you may need to override some instances of the new size names where they are used in the default configuration of bitstyles. If you use the default configuration, and are using thesize.get()Sass helper or one of the padding & margin utility classes, you’ll need to update those to use the new sizes (pick whatever is closest in size). - Default visual design for buttons has been updated — colors have been refreshed utilizing the new palette, and we’ve added a new
outlinebutton that has a border. Thelargeshape variant has been removed — the sizes are nowdefault,small, andx-small. If you were overriding the default configuration for buttons, you may see no change. - New atoms/badge component, an overhaul of the existing component that you’ll need to update your codebase to continue using. It also features a new visual design. The colors for each variant are created using the theming system, meaning that buttons inside a badge have their colors fit the color of the badge. If you were using badges without customization, the only thing that needs to change in your component markup is that the color variant is now specified using
class="a-badge" data-theme="variant"instead of with the modifier classclass="a-badge a-badge--variant". The same variants exist (brand-1,brand-2,positive,warning,danger). The previousgrayscalevariant is now the default, no need for any modifiers. See documentation for a guide on how to customize the variants. .a-badge__buttonhas been renamed.a-badge__prependto reflect that it appears before the main content of the badge, and that it could not be a button.- Default configuration for shadows design tokens now includes shadows for
brand-1,brand-1-center,brand-2,brand-2-center,grayscale,positive,warning, anddanger. Thedefaultshadow has been removed — if you were making use ofshadows.get('default'), rename that toshadows.get('brand-1'). Similarly for either of the utility classesu-shadow-defaultis nowu-shadow-brand-1, andu-drop-shadow-defaultis nowu-drop-shadow-brand-1. - Updated the default configuration for typography. If you want to keep the old typographic scale (font-sizes and line-heights), you can re-instate the old configuration.
- Default visual appearance of Atoms/Dropdown component has been updated. If you were already overriding this, you may see no difference
- Bitstyles can no longer be imported using Sass’s
@importstatements — you’ll need to either switch to using@usestatements, or use bitstyles v5.0.1. - Default visual design for links (anchor elements and the
.a-linkclass) has been updated. If you were overriding the default configuration for links, you may see no change. - New atoms/flash component, an overhaul of the existing component that you’ll need to update your codebase to continue using. The colors for each variant are created using the theming system, meaning that buttons inside can have their colors fit the color of the badge. If you were using flashes without customization, the only thing that needs to change in your component markup is that the color variant is now specified using
class="a-flash" data-theme="variant"instead of with the modifier classclass="a-flash a-flash--variant". The same variants exist (grayscale,brand-1,positive,warning,danger). See documentation for a guide on how to customize the variants. - Renames the
.o-ui-groupcomponent to.o-joined-ui, and removes the need for extra child classes on your elements. You’ll need to replace all instances of.o-ui-groupwitho-joined-ui, and remove all instances of.o-ui-group__item,.o-ui-group__first, and.o-ui-group__last. Any instances ofu-border-radius-0classes on these components must also be removed, as this is now handled in pure CSS. - The separate helper functions for design tokens have been replaced with a single function
design-token.get(), found intools/design-token. If you were using any of these functions in your codebase, you’ll need to replace them:size.get($size-name)todesign-token.get('size', $size-name)palette.get($color-name)todesign-token.get('color', $color-name)line-height.get($line-height-name)todesign-token.get('line-height', $line-height-name)font-size.get($font-size-name)todesign-token.get('font-size', $font-size-name)shadows.get($shadow-name)todesign-token.get('shadow', $shadow-name)custom-property.get()todesign-token.get()
- Updated design for
.a-skip-link. If you were overriding the appearance before, the only difference you’ll notice is that the skip-link now has a focus indicator, and a hover state. There are extra Sass variables available for customizing the hover state — see the docs for details.
- The storybook now includes the
storybook-zeplinplugin, for which you’ll need to provide your Zeplin personal access token, otherwise the plugin will not work. No other functionality will be affected. - The atoms/badge component is now available with a
smallsize variant. - It is now possible to import bitstyles on a per-layer basis, instead of per-module or all at once. It is still possible to override all modules inside each layer in the normal way.
- There are now design tokens as
design-tokens/focusto describe a consistent:focusappearance, that are currently used inbase/anchor/,atoms/buttons, andatoms/links. - Anchor elements and
atoms/linkcomponents now have a disabled state, applied using thearia-disabledattribute.
[5.0.0] - 2023-01-03
- Radios and checkboxes no longer get distorted when placed in a flex layout, and the sibling content has a min-content width larger than the available space
- New helper function
custom-property.get()for generating names of CSS custom properties that respect the namespace and layer-prefix configuration. - Most design tokens are now output as CSS Custom Properties in a
:rootblock. All are prefixed withbsin the default configuration (customize that usingsetup.$custom-property-namespace), with names matching their Sass variable e.g.--bs-color-brand-1-base,--bs-color-brand-1-light,--bs-size-xs,--bs-size-s. - Most design tokens are now available in JS environments by importing the relevant file from
exports/. See the documentation for each set of design tokens for more details. - Use
setup.$viewport-elementsto define which elements should be considered equal to the viewport in size. These elements’ heights will match the viewport (including any variable sizing on mobile browsers). Make sure to add a selector for any wrapper elements your framework may be wrapping around your app/content. - Adds a utility class for the
widthproperty. Defaults to providingwidth: 100%under the nameu-width-full. This can be customized using$bitstyles-width-valuesand$bitstyles-width-breakpoints. - Adds utility classes to specify white-space property. Defaults to just
nowrap, and is configurable with$bitstyles-white-space-values, and$bitstyles-white-space-breakpoints. - Adds a new set of utility classes for specifying the
text-decoration-lineproperty. Default configuration givesunderlineandline-throughas values, and is not available at any breakpoints. This can be configured using$valuesand$breakpoints. - Adds utility classes for specifying
justify-selfandjustify-items. - A new utility class
u-listto specify thelist-style-typeproperty. Default values available arenone,decimal,disc. Configuration is possible using$bitstyles-list-valuesand$bitstyles-list-breakpoints. - Two generators for button variants:
button.colors($colors)allows variations of color properties (color, background-color, shadow, border-color, etc);button.sizes.($sizes)allows variations of size- and shape-related properties (padding, border-width, border-radius, font-size etc.).
properties.join-with-dashesis nowstring.join-with-dashes, and does not accept an$at-prefix. If you were using this for generating CSS property names, or some other dash-separated string, you need to importtools/stringinstead oftools/properties, and update the namespace at the point of usage fromproperties.join-with-dashestostring.join-with-dashes. If you were using the$at-prefix, you should switch to usingclassname.get().- Names of CSS custom properties used for styling the icon buttons inside badge components have been renamed from
--button-fg,--button-bg,--button-fg-hover,--button-bg-hoverto--bs-a-button-color,--bs-a-button-background-color,--bs-a-button-color-hover,--bs-a-button-background-color-hoverrespectively. If you were using these variables in your own codebase, you’ll need to update the names. - Order of line-heights in
settings/typography.$line-heightsis now in order of size. If you were using the utility classes based on these values, line-heights1and2have swapped places, as have4and5. If you were using those values withline-height.get(), you’ll need to change the value you request to match. If you were using the utility classesu-line-height, you’ll need to renameu-line-height-1tou-line-height-2,u-line-height-2tou-line-height-1,u-line-height-4tou-line-height-5, andu-line-height-5tou-line-height-4. settings/typography.$line-height-basehas been removed. Usetools/line-height.get('5')instead.<body>is now givenheight: stretchinstead of 100%. In all likelihood, this is what was intended by the previous declaration ofheight: 100%, so you shouldn’t need to change anything.- The variables for the
justifyutility class (which specifiesjustify-content) have been renamed to from$valuesto$content-values, and$breakpointsto$content-breakpoints. If you were overriding these variables, you’ll need to rename them. - The variables for the
utilities/flexclasses have been updated to match the pattern used by theutilities/justifyclasses.$directionbecomes$direction-values,$wrapbecomes$wrap-values,$growbecomes$grow-values, and$shrinkbecomes$shrink-values. The single$breakpointsvariable has been broken out into individual variables for specifying breakpoints for each property:$direction-breakpoints,$wrap-breakpoints,$grow-breakpoints, and$shrink-breakpoints. If you were overriding any of these variables, you’ll need to rename them. - The following mixins have been moved from
tools/tomixins/:aspect-ratio,clearfix,link,object-cover,truncate. - Removes the class
a-list-reset. Replace uses of this class withu-list-none. - Removes existing button types:
icon,icon-reversed,menu,mode,nav,nav-large,ui. These are replaced with buttons variants of size & shape, and of color, which can be combined to create a similar set of visual appearances:small,medium,large,square,round, andprimary,secondary,transparent,danger,tab. You’ll need to update any button classes you were using to use the new classes in combination, or use the button variantcolor()andsize()generators intools/buttonto recreate the button classes you were previously using.
- Removes the following mixins:
list-reset,absolute-center,absolute-cover,break-text,icon,list-inline,sr-only, andvertical-center. - All
ulelements have their margins & padding removed. If you need that for some instances, use theu-marginoru-paddingutility classes.
[5.0.0-alpha-1] - 2022-09-12
- A new variable
setup.$no-media-queryis available. In case you use the nameno-mqfor one of your breakpoints, you can change this value to avoid conflict - The
properties.join-with-dashes()function now handles adding the breakpoint suffix with a preceding@symbol, when you pass$at-suffix media-query.get()will now output the content block you pass it without a media-query wrapping them, if the media-query name matchessettings.no-media-query. This is useful for outputting base CSS with media-query wrapped CSS in one loop- The
overflowutility classes can now be output at breakpoints, configurable with the$bitstyles-overflow-breakpointsvariable - A new typography configuration
typography.$line-heightsis available with additional setup config for line-heights. - Renamed
typography-responsive.$font-sizestotypography-responsive.$typographic-scale, which now expects the font-size for each to be paired with line-height - A new helper function
base-palette.get()that returns colors from your base palette, to be used when setting up your color palette - Classname layer prefixes for indicating whether a class is at atom/molecule/organism/utility level can now be configured or even removed by overriding
setup.$layer-prefixes. - New helper function
classname.get()for generating classnames that respect the namespace and layer-prefix configuration. If you were previously usingproperties.join-with-dashes()to generate classnames, you should migrate to usingclassname.get()instead. - Added a new theming system, with the default configuration offering
defaultanddarkthemes. These specify thecolorandbackground-colorfor the element to which they’re applied. The themes are available in Sass usingthemes.get(), which behaves similarly tomedia-query.get(). - Button color variations are now configured per-theme. Default configuration provides colors for default and dark themes.
typography.$font-sizesnow expects a single Sass map of font-sizes. This is the base set of design tokens for your font-sizes, from which the responsive typographic scale is created.- Newly configured
line-heightutility classes to include the basetypography.$line-heights - The
output-responsive-font-sizesmixin expects a map data structure which includesfont-sizeandline-height. If you were using the mixin you would have to change the parameter passed. - We now have a two-tier typography design token system. A single Sass map
$bitstyles-typography-font-sizesis used to create the existing responsive typography system forh1–h6elements, and the corresponding.u-h1–.u-h6responsive typography utility classes. The responsive typography for the base heading elements and the corresponding utility classes is built on top of these base design tokens. To update, all your unique font-sizes should be defined in the base scale insettings/typography, then referenced usingfont-size.get()to build your responsive typography scale insettings/typography-responsive. - The color palette generator in
tools/coloris renamed fromcolor.generate-palettetocolor.generate-scale, and now produces a more evenly-spread range of colors, with more accurate saturation and hue than before - By default there are now two tiers of color palettes — the one used in your codebase and in all bitstyles components (the “semantic palette”) is generated from a base palette. In the default configuration, this base palette is generated from the base colors provided. See https://bitcrowd.github.io/bitstyles/?path=/docs/design-tokens-color-palette--page for details on customizing this.
- Default naming of color variants has switched from using numbers, to using meaningful names like
light,dark,base. If you override the palette in your codebase, you may need to override the colors used by other bitstyles components. - Changes to color names in the default configuration’s global palette mean the classnames in the default configuration of the
fgandbgutility classes has also changed, since they match naming scheme e.g..u-fg-gray-30has becomeu-fg-text-light. If you are overriding the global color palette, you’ll also need to override thefgandbgconfigurations to use your own colors. If you’re using the default configuration, you’ll need to update your classnames to use the new naming scheme. We suggest a transition below, but as the colors are not the same in both versions, and there are now fewer color utility classes, the transition cannot be correct in all instances. Please check all your color changes to be sure your UI is correct and accessible, and make adjustments as needed:u-bg-black-80->u-bg-gray-darkeru-bg-white->u-bg-backgroundu-bg-gray-90->u-bg-gray-darkeru-bg-gray-80->u-bg-gray-darkeru-bg-gray-50->u-bg-gray-darku-bg-gray-20->u-bg-text-lightu-bg-gray-10->u-bg-text-lightu-bg-gray-5->u-bg-gray-lightu-fg-gray-50->u-fg-textu-fg-gray-40->u-fg-textu-fg-gray-30->u-fg-text
- Sizes scale naming has been updated to use to following convention
s,xs,2xs,3xs, andl,xl,2xl,3xl. Any utility classnames in your codebase containing the sizes (e.g.u-margin-xxs-bottom,u-padding-xxxl) will need to be updated to use the new naming scheme (e.g.u-margin-2xs-bottom,u-padding-3xl). Any uses ofsize.get()in your codebase will need to be updated to use the new naming scheme. - Badge component color variant
grayhas been renamed totext, changing the classname from.a-badge--grayto.a-badge--text - The default configuration for the gap utilities changed. The result is that classnames were renamed to match the size from the sizing scale they output as a gap. Previously the gap sizes were named on a scale internal to the gap module, not necessarily matching the global sizing scale e.g. a “large” gap (
.u-gap-l) was using sizexlon the global scale. This change renames the class from.u-gap-lto.u-gap-xl, since its value issize-xl. You can either rename your classnames in HTML templates to match the new classnames (renameu-gap-ltou-gap-xl, andu-gap-mtou-gap-l), or override the new configuration to set the old names. If you were already overriding the module’s configuration, you don’t need to change anything.
- All classnames of atoms and organisms now correctly insert a minus character between the global namespace and the rest of the classname. If you were using
setup.$namespace, you’ll need to update those classnames to include a minus e.g..namespacea-buttonbecomes.namespace-a-button - Settings for
utilities/textcan now be overridden
[4.3.0] - 2022-05-25
- Adds utility classes for specifying inset — top/right/bottom/left CSS properties. Defaults to just classes specifying
0for each, customizable using$bitstyles-inset-values,$bitstyles-inset-directions, and$bitstyles-inset-breakpoints - Adds utility class to specify max-height property, with
100vhandstretchas default values. Customizable using$bitstyles-max-height-valuesand$bitstyles-max-height-breakpoints a-linkand<a>elements now have variables to specify the active state- Position classes are now available for
static,absolute,fixed, andsticky, as well as the existingrelative. These classes are available at thembreakpoint by default, and are customizable using$bitstyles-position-values - New
u-max-widthutility class, with0and100vwas default values. Customizable using$bitstyles-max-width-valuesand$bitstyles-max-width-breakpoints u-line-heightclass can now be configured using$bitstyles-line-height-valuesand$bitstyles-line-height-breakpoints
properties.get-classname()has been renamed toproperties.join-with-dashes()to reflect its more generic usage. The list of strings passed as a parameter is renamed from$classname-itemsto$string-items. If you were using this function, rename the function call and the parameter (if using named parameters in your call)
- Prefixing of utility classnames with
setup.$namespaceis now working correctly, with the exception of line-height and the font-size utility classes. These will be done in another PR. If you were using namespacing, you’ll need to update the classnames for all utilities (apart from line-height & font-size) in your HTML to the correct format , with-dashes between each part of the name e.g..<namespace>-u-<classname>instead of.<namespace>u-<classname>
[4.2.0] - 2022-02-09
- Configuration of the border-radius utility class is now possible:
$bitstyles-border-radius-values,$bitstyles-border-radius-breakpoints,$bitstyles-border-radius-directions - New
u-min-heightutility class u-heightutility class is now configurable using$bitstyles-height-valuesand$bitstyles-height-breakpoints- New
u-min-widthutility class - New atom component
a-skip-link, for skip-to-content links
u-roundclasses have been renamedu-border-radius
[4.1.0] - 2022-02-22
- New Sass map
$bitstyles-shadows-shadowsfor holding global shadow design tokens as a Sass list, and ashadows.get()function for accessing them in your Sass - New helper function
shadow.generate()to generate multi-layered “natural” shadows based on the color and distances you give - Two functions (
shadow.to-box-shadow()andshadow.to-drop-shadow()) for translating those shadows (which are specified in Sass' list format) into either CSSbox-shadowformat, or CSS filterdrop-shadowformat. Not necessary for the shadows accessed usingshadows.get() - New
u-shadowandu-drop-shadowutility classes to set box-shadows and drop-shadows respectively - The smallscreen version of the Sidebar organism can now be positioned to the left or right side of the screen by overriding
$bitstyles-sidebar-small-location(defaults toleft)
u-bgclasses will now be output with the correct breakpoint suffix$bitstyles-font-family-breakpointswill now correctly output media-queries
- Renames
tools/_directional-properties.scss->tools/_properties.scss, so any imports of those files will need to be updated to reflect that - Renames
output-properties()->output() - Renames
output-directional-properties()->output-directional()
-
If you were overriding
bitstyles-padding-valuesand providing your sizes nested inside apositivekey, you will need to remove that, and provide the values directly e.g.$sizes: ( 'positive': ( '0': 0, 'xxs': size.get('xxs'), 'xs': size.get('xs'), 's': size.get('s'), 'm': size.get('m'), 'l': size.get('l'), 'xl': size.get('xl'), 'xxl': size.get('xxl'), ), );
becomes
$sizes: ( '0': 0, 'xxs': size.get('xxs'), 'xs': size.get('xs'), 's': size.get('s'), 'm': size.get('m'), 'l': size.get('l'), 'xl': size.get('xl'), 'xxl': size.get('xxl'), );
[4.0.0] - 2021-12-20
u-bgclasses can now be made available at different breakpoints by overriding the$bitstyles-bg-breakpointsvariableu-fgclasses can now be made available at different breakpoints by overriding the$bitstyles-fg-breakpointsvariable- Default settings for
u-fgclasses now includewhiteas an option u-fontclasses can now be customized by overriding the$bitstyles-font-weight-valuesand$bitstyles-font-style-valuesvariables. They can be made available at different breakpoints by overriding the$bitstyles-font-weight-breakpointsand$bitstyles-font-style-breakpointsvariablesu-textclasses can now be customized by overriding the$bitstyles-text-valuesvariable. They can be made available at different breakpoints by overriding the$bitstyles-text-breakpointsvariableu-overflowclasses are now also available forscroll,hidden, andautoby default, and can be set by overriding$bitstyles-overflow-values- You can now override the font styles for
input-texts,selects, andbuttons. - New
u-fontclasses to specify font-family. Defaults tou-font-headerandu-font-body, which apply the respective font stack as specified insettings/typography. This can be overridden using$bitstyles-font-family-values, and can be made responsive by specifying breakpoints in$bitstyles-font-family-breakpoints - Color & background-color of the
htmlelement can now be specified using$bitstyles-html-colorand$bitstyles-html-background-color, and default to thetextandbackgroundcolors specified in your global color-palette - Default key-name to return when asking for a color without specifying it (e.g.
palette.get('white')) can now be set using$bitstyles-color-palette-default-key - There’s now a helper function
font-size.get($font-size, $breakpoint)which returns font-sizes from the global map
- The height of inputs, selects, and
.a-buttons now matches regardless of the border-width - Modals now only show scrollbars (on OSes/configs where scrollbars are shown) when they’re needed
- Typographic scale of base elements is no longer prefixed when a prefix is specified
- The font-sizes specified in
settings/typography$font-sizesmap should now useremunits instead ofpx. The Sass will still compile if you specify usingpxas before, but the resulting CSS will not follow current best practices (to useremunits for specifying font-size)
- All utility classes which had a double dash in their classname (
--) now only have a single dash. You’ll need to rename all these classes to use single dashes e.g..u-bg--brand-1becomes.u-bg-brand-1. The following classes are affected:u-bgu-fgu-fontu-line-heightu-overflowu-textu-round
- Values for the display classes (
u-block,u-flexetc.) will now need to be set unquoted. If you previously were overriding the$bitstyles-display-valuesvariable, make sure all the values on the right hand side are unquoted CSS values e.g.'block': blockinstead of'block': 'block', as was previously possible - If you were using the
$bitstyles-input-paddingvariable, you’ll now need to set$bitstyles-input-padding-verticaland$bitstyles-input-padding-horizontalseparately - The
u-overflow-xandu-overflow-yclasses were renamed tou-overflow-x-autoandu-overflow-y-auto, respectively - The media-query/breakpoint mixin is no longer called using
media-query.media-query(). You’ll need to update all uses of this tomedia-query.get() typography.$font-sizesmust now be specified usingremif you want to useremunits (recommended), instead ofpxunits, as was previously possible- Removes the
unit-conversionsfunctions
[3.1.0] - 2021-12-20
- There are now variables to specify the
color,text-decoration,background-color, andbox-shadowof links in each state - Default margins for heading elements and paragraphs can now be specified with the
$margin-headingand$margin-paragraphvariables respectively - An extra size was added to the default gap classes:
u-gap-xs
- The
border-widthandborder-styleare no longer hardcoded in the dropdown separator styles. The existing default value for the$separator-bordervariable already set those properties, so you so not need to change anything unless you override that variable in your project. This fixes the issue of an invalidborderproperty when your build does not get automatically fixed by the build tools (in the case of bitstyles, postcss was correcting the border property) - Link variables can all now be overridden using any of the four import/use methods
dlexamples are now aligned to the baseline, using theu-items-baselineclass. Updatedlclassnames in your project to match$font-family-webfontis now$webfont-family-name. If you’ve overridden this variable, you will need to rename it. The variable should only contain the filename (no filename extensions, as before), as the path to your fonts is now set with the$webfont-base-urlvariable (which defaults to../assets/fonts/). If you host your fonts in a different location, you should change this value to match
imgandiframenow default todisplay: block. Use the utility classu-inlineif you need to replace the old behavior- The default margin for paragraphs is now
0. Use the$margin-paragraphvariable in typography settings to change this, or use margin utility classes on the HTML elements - Variable names for links have changed — the word
linkis now omitted, resulting in e.g.$color-linkbecoming$color,$link-color, or$bitstyles-link-color, and$color-link-hoverbecoming$color-hover,$link-color-hover, or$bitstyles-link-color-hover, depending on how you use bitstyles - Variable names for breakpoints have changed — the word
breakpointis now omittted, resulting in e.g.$breakpoint-boundary-widthbecoming$boundary-width,$breakpoints-boundary-width, or$bitstyles-breakpoint-boundary-width, depending on how you use bitstyles
[3.0.0] - 2021-11-17
- The entire library is now compatible with the Sass module system, and backwards compatibile with the existing Sass import system. This means you can import the whole library or its parts with
@use/@forwardor@import, and override variables in all of the available ways. The functions and mixins are all available in both systems - The breakpoints at which
.a-cardis output can now be specified with the$bitstyles-card-breakpointsSass variable. Default is atm, andlbreakpoints - Padding for
.a-cards is specifiable with the$bitstyles-card-sizesSass variable. By default there is a base size, and a large size - A new
.a-card__headerelement allows edge-to-edge header sections for cards of all sizes - Adds row-start utility classes
.u-row-start-xwherexis a number, to specify which row an element should start in
.u-col-span-and.u-col-start-classes are available at@lbreakpoint again. Fixes the complex form example$bitstyles-col-span-breakpointsvariable has been corrected to$bitstyles-col-start-breakpoints. If you were using this variable, you’ll need to rename it
- As
.a-cardelements now set their own padding, remove any utility padding classes. If the padding does not match your requirements, it can be customized using the cards’ sass variables - If you output any flashes or other content at the top of an
.a-cardelement using negative-margin utility classes to cancel out the padding, these classes should now be replaced with the.a-card__headerclass
[2.0.0] - 2021-07-22
- Added
$bitstyles-grays-hint-color-mixand$bitstyles-grays-hint-colorvariables to allow control over how thegraycolor palette is generated - Added
$bitstyles-color-mix-percentageslist variable, giving control over which percentage intervals are generated in each color’s palette - There’s now the
generate-palette($base-color, $mix-color, $percentages)function to automate generating palettes of individual colors - Color scales based on the semantic colors (
brand-1,warningetc.) are now available in shades as well as tints (brand-1-shades,warning-shadesetc.) - Inputs’ placeholder text font-weight and font-style can now be customized using
$bitstyles-input-placeholder-font-weightand$bitstyles-input-placeholder-font-stylevariables respectively - The
.u-gapclasses are now available atmandxlbreakpoints - The
.u-align,.u-self, and.u-justifysets of utility classes are now all available atmbreakpoint. The available breakpoints can be customized - The various
.u-flex-classes are now available at thembreakpoint. The available breakpoints can be customized by overriding$bitstyles-flex-breakpoints - Adds
.u-flex-nowrapand.u-flex-rowclasses - Adds
url-encode-colorfunction to our color tools, to encode hex colors correctly
- Background color of the
htmlelement is now thebackgroundcolor at 100% instead of 95% - Default color scales are now generated with colors at more percentage mixes:
1, 2, 3, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 97, 98, 99, 100
- Adds a
Design Tokenssection to the storybook, and lists all available colors
- Selects now correctly display the icon specified as a background in Sass, even when postcss isn’t being used (note that you’ll have to deal with the prefixing of the
appearanceproperty, prefereably using autoprefixer) avatarvariables are now able to be overridden- All
dropdownvariables are now able to be overridden - All
ui-groupvariables are now able to be overridden
- Renamed
u-flex__shrink-x(wherexis a number) tou-flex-shrink-x - Renamed
u-flex__grow-x(wherexis a number) tou-flex-grow-x - Renamed
u-flex--wraptou-flex-wrap - Renamed
u-flex--coltou-flex-col - The
palette()function has been renamed topalette.get() - The
spacing()function has been renamed tospacing.get()
[1.5.0] - 2021-06-28
.u-grid-colsclasses are available at thexlbreakpoint- All
.u-grid-cols,.u-col-span, and.u-col-startclasses are now specified using Sass variables, and can therefore be overridden
- All
.u-grid--x-colclasses, wherexis a number, have been renamed tou-grid-cols-x - All
.u-grid__col-span-xclasses, wherexis a number, have been renamed to.u-col-span-x - All
.u-grid__col-xclasses, wherexis a number, have been renamed to.u-col-start-x
[1.4.0] - 2021-06-24
- We have a new media-query available in
$bitstyles-breakpoints:motion-ok. It’s available using themedia-querymixin, and applies when the user has not set a preference to reduce motion in their UIs, allowing a no-motion-first approach to animations - All dropdown, sidebar, and navbar examples in our storybook documentation have JS behaviour using alpinejs
- Modal behavior is implemented using
a11y-dialog - Margin utility classes now include
autoas a size
- The
topbaratom is now not fixed by default. Set the variable$bitstyles-topbar-positiontofixedto replace that behavior
- The
topbaratom no longer sets a background and foreground color, and the corresponding variables ($bitstyles-topbar-colorand$bitstyles-topbar-background-color) have been removed. If you were using that functionality, use theu-fgandu-bgutility classes instead
[1.3.0] - 2021-06-17
- The size of gap generated by
.u-gap-mis now1rem, not0.8rem
- Dropdown atom has a new variant
.a-dropdown--full-widththat causes the dropdown to span the full width of its nearestposition: relativeparent element. Combinable witha-dropdown--top - Gap sizes can now be specified, and the class suffixes named, using a Sass variable
- You can now override which directions the margin and padding utility classes are output for (
top,bottom, etc.), and what those classes are named independently of the CSS property, using$bitstyles-margin-directionsand$bitstyles-padding-directionsrespectively - You can now override the sizes the margin & padding utility classes are output for, using
$bitstyles-margin-sizesand$bitstyles-padding-sizesrespectively - Border utility classes are now available at all four directions, and on a per-color basis. Currectly only
gray-10andgray-70, this can now be customized using sass variables. - Border utility classes can now be available at breakpoints by overriding the
$bitstyles-border-breakpointsvariable - Default breakpoints now include
xl, for ultra-widescreens .a-contentmax-width and padding is now customisable using Sass variables, and by default now includes a 100% option- A new
.u-zutility class for settingz-index - New examples of full app layouts
- The checkbox checkmark is now correctly centered, and only rendered once
- The double-dashes have been removed from the
.u-marginand.u-paddingclasses (e.g..u-margin-m--top). To migrate, replace the--in the classnames with- - The
.u-border--top.u-border--bottomclasses have been replaced with.u-border-gray-70-topand.u-border-gray-10-bottomrespectively .u-fixed-ratiois renamed.u-aspect-ratio, and the double-dashes are replaced with single. Please rename all uses e.g..u-fixed-ratio--16-9becomes.u-aspect-ratio-16-9.u-fixed-ratio__innerhas been removed, and is no longer necessary. To migrate, move other classes that may be on that element to the.u-fixed-ratioelement, and remove the.u-fixed-ratio__innerelement- If you were relying on
.u-fixed-ratioapplying non-static positioning, you’ll need to apply.u-relativeor.u-absoluteto the.u-aspect-ratioelement - Now requires version
^1.34.0ofdart-sass, in order to use the newMath.divfunction, and remove all the division using/characters. - Removes the
contentmixin. If you need thecontentfunctionality, use the.a-contentclassname instead (it’s customisable using Sass variables, see the settings.scss file) .u-flex--inlinehas been renamed.u-inline-flexto match the name of the display property, and is no longer a variant of.u-flex, but can be used alone. Where.u-flex--inlineis paired with.u-flexremove the latter, and rename it to.u-inline-flex
[1.2.0] - 2021-05-04
- More aspects of the sidebar organism can now be specified in Sass variables
a-dropdown--topvariant of dropdown component
- Sidebar examples now include the closed state, so that it can be seen on small-viewports
- Every classname is now prefixed with
$bitstyles-namespace, if specified
- Sidebar Sass variables have been renamed, so if you were using or overriding those variables in your project, you’ll need to rename
$sidebar-widthto$bitstyles-sidebar-large-width - Renames
.a-dropdown--reverseto.a-dropdown--right - Classnames for the modal component are now prefixed with
.o-instead of.c-, you’ll need to updatec-modal__overlaytoo-modal__overlay, andc-modal__contenttoo-modal__content
[1.1.0] - 2021-04-15
- New component in UI layer: sidebar
- Added this changelog
- [Docs] Improved documentation: added links to classes used in the storybook examples
- [Docs] Navbar examples are now in iframes of fixed height, so the examples are clearly visible in docs view
- Webfonts are now included in the release
- Updated the modal component visual styles, and added examples for dialogs, alerts, and informational modals
- Breadcrumbs & pagination components are now wrapped in labelled
<nav>elements - Imports of Sass partials are now alphabetized within each layer
- Navbar component (largescreen version) now scrolls instead of wrapping when the links inside take up more space than available
a-button--navanda-button--nav-largeare no longer centered
- Node version bumped to LTS (14.16.0)
[1.0.6] - 2021-03-31
- The releases now contain compiled CSS. The CSS is also available at https://cdn.jsdelivr.net/npm/bitstyles@1.0.6/build/bitstyles.css. [#436] Add npmignore file (#437).
[1.0.5] - 2021-03-29
- Adds a complex multi-section form example, and a better layout for simple forms. [#429] Improve form examples
- Breadcrumb UI component now has its arrow icons to the right of each breadcrumb-item. [#431] Breadcrumb arrows to the right
<legend>elements no longer have padding as default- The
.a-bordered-headeratom is now left-aligned rather than centered
- Selects, buttons, and inputs all have the same height, and share colors
.u-gridclasses no longer setgrid-gap. Responsibility forgrid-gaphas been moved to.u-gap. You’ll need to add relevant grid-gap classes to your grid elements. Adding.u-gap-mto all your grid containers will result in an equivalent layout as before this change
[1.0.4] - 2021-03-17
- A filter component built using the existing dropdown and checkboxes
- A filter component for applying free-text filters
- An new icon page in our documentation, giving examples of all the icons used in our documentation
.a-button--dangerno longer overrides base colors (only does so on hover/focus etc.), so you can use it in conjunction with other button types to make them “dangerous”- All icons in our documentation are now built with symbols from a centralised SVG file using
<use> - All our button types now only alter the base button’s
border-color, not the shorthandborder, to ensure equal heights of buttons .a-button--navnow responds toaria-expanded, so it can be used for dropdowns.a-button--tabnow responds toaria-current, so a tab-like interface can be presented when the tab switching involves navigating to a new URL.a-button--uinow responds toaria-current- buttons now all use regular font-weight
- The
overflow-xandoverflow-ymixins no longer set the max width and height respectively. If you were making direct use of the mixins, you’ll need to add max widths or heights to your CSS, as needed.
[1.0.3] - 2021-03-15
.o-notification-centercomponent, that handles layout of notifications in the top right of the viewport, overlaying other content.a-flashcomponent to be used for displaying global updates at the top of the viewport, or at the top of a form, in the document flow- Negative margin utility classes
.u-margin-neg-#{$size}
- Most of our button types now only alter the base button’s
border-color, not the shorthandborder, to ensure equal heights of buttons - Input elements now only alter the base style’s
border-color, not the shorthandborder, to ensure equal heights and consistent appearance - Simplifies the way we import webfonts, and allows easier setup and overriding, using a more explicit
$bitstyles-webfont-variantsnested map. Filenames no longer need to match the previous format, though it’s advised
[1.0.2] - 2021-03-11
.u-borderutility classes- Storybook documentation now includes the
a11y-addonfor in-browser checking of some a11y low-hanging fruit selectelements can now display different border-color, background-color etc when they are invalid. There are examples showing how to correctly markup invalidselects (it is quite specific due to browser implementations)- There’s a new section-heading component in the documentation, with variants containing buttons
- Flex and box-alignment classes are now available at various breakpoints
.a-button--tabindicator color is now set by a specific$bitstyles-button-tab-border-colorsass variable instead of using the border variable. Borders can now be set ona-button--tabs, whereas before they could not (by default they’re all transparent, so there will be no visual change)- Webfonts are now imported using a base URL and several variants specified in $bitstyles-webfont-variants. The filenames of the webfont files need to match the convention
${base-url}-${variant}.${woff|woff2} - As per the current state of Assistive Technology’s interpretation of forms, examples of select element usage now place the label as sibling to (not parent of) the select. If you were using the previous structure, please switch
[1.0.1] - 2021-03-04
.u-roundfor applying rounded corners to elements.o-ui-groupfor visually binding several closely-related interactive elements (buttons or inputs).a-button--ui, for buttons that are not the primary action of a screen.a-cardis now available at thembreakpoint- Example form layouts for login & signup flows
.u-gridand variants are now available atlbreakpoint.u-paddingand variants are now available at various breakpoints
- Specifies the newly-published documentation as our homepage
.u-list-resetis replaced with.a-list-reset. You’ll need to update your usage, and check instances where you use other classes on the same element, as the location of this class in the source order has changed
[1.0.0] - 2021-03-04
- new
.o-navbarorganism - new
.o-tableorganism - new
.a-badgeatom - new
.a-avataratom - new
.a-dropdown(menu) atom - new collection of button types
- new
.a-cardatom for sectioning or highlighting content - new
.a-dlatom
- updates storybook one major version
- all documentation and stories are converted to the MDX format
- build Sass with the now-canonical dart-sass instead of node-sass
- labels, inputs, textareas, and selects are selected by element name instead of a classname. If you have
.input--textclassnames on your elements, they should be removed
- developing or building bitstyles now requires
node v14.15.5or higher - all
object-level classes are nowatoms. Classnames have therefore changed, you’ll need to update all uses of those classnames layout-level classes have become either atoms or utility classes. As the classnames have changed, you’ll need to update all instances where you use those classes.u-no-marginand.u-no-paddinghave become.u-margin-0and.u-padding-0respectively.u-visuallyhiddenhas become.u-sr-only.u-break-long-wordshas become.u-break-words.u-truncate-with-ellipsishas become.u-truncate.u-color--${color}classes have become.u-fg--${color}.u-background-color--${color}classes have become.u-bg--${color}.c-expanderhas been removed- spacing is now using a
s,m,l,xlscale instead ofsmall,base,medium,large. If you use thespacingfunction in your Sass, you will need to update to the new names (the sizes remain the same) - the HTML grid system has been removed, and replaced with a CSS Grid-based system. All instances of
.l-width--${size}andl-grid__itemshould be removed. The number of columns is now specified on the grid container (see the grid docs)