The Placer Toolkit alpha has
arrived! 🎉
Plenty of changes are coming your
way—some big, some breaking, some
even nuclear! Beware the changelog…
Changelog
Placer Toolkit follows Semantic Versioning. Breaking changes to components marked with the
Components with the
During the alpha period, things might break! We take breaking changes very seriously, but sometimes they’re necessary to make the final product better.
Breaking change ratings#
In Placer Toolkit changelogs, we use consistent ratings to clearly communicate the scope and impact of every breaking change. The usage and description of each rating is detailed below.
☢️ Nuclear breaking change#
This rating applies to critical, large‐scale structural changes that affect almost all Placer Toolkit users. Migration time is often extensive, and in many cases, a dedicated migration guide may not be immediately available. We always provide an ETA for migration completion. These changes typically unlock significant new features (e.g., the theming API rewrite in v1.0.0-alpha.1).
🚨 Major breaking change#
This rating applies to impactful changes that affect most Placer Toolkit users. A detailed migration guide is always provided, and the process is typically quick (e.g., the CSS path refactor in v1.0.0-alpha.1).
⚠️ Breaking change#
This rating applies to smaller, localised changes that affect only a minority of users. A simple migration guide is always provided (e.g., the Storybook to Astro site migration in v0.5.1).
🔮 Future usage warnings#
This rating flags minor changes that impact consistency or adherence to future API standards. It affects component usage going forward but does not break current functionality. A simple migration guide is always provided (e.g., the focus ring animation update in v1.0.0-alpha.1).
1.0.0-alpha.1#
Milestones#
-
Rewritten the theming API of Placer Toolkit.
☢️ Nuclear breaking change (≈ 1 month): The theming API is now semantic, so a simple migration guide isn’t available. We recommend reading the design token docs to further understand the new system and adapt to it. -
Added localisation with 70 locales, covering 99,1 % of languages used on the web, across all components.
-
Added seven new components: Dropdown Item, Format Bytes, Format Date, Format Number, Mutation Observer, Scroller and Textarea.
-
Added the Utility and Serene themes alongside the Vibrant and Muted palettes to Placer Toolkit as a result of the new theming API.
-
Switched from Google Fonts to Bunny Fonts to ensure GDPR compliance.
-
Rebuilt the entire Placer Toolkit homepage with a theming playground and other stuff.
-
Removed the Menu, Menu Item and Menu Label components, as they are replaced with the already existing Dropdown component and the new Dropdown Item component. The Menu Label component is replaced with a slotted
<h1>,<h2>,<h3>,<h4>,<h5>and<h6>element.
🚨 Major breaking change: If you use any of these components, they must be removed and be replaced with the new equivalent. -
Replaced the Icon Button component with the Button component with icon button support.
🚨 Major breaking change: If you use the Icon Button component, you must replace it with the Button and Icon components as well as a few attributes to match it up as close as possible.-<pc-icon-button - library="default" - icon-style="solid" - name="home" - label="Home" -></pc-icon-button> +<pc-button size="small" variant="plain"> + <pc-icon + library="default" + icon-style="solid" + name="home" + label="Home" + ></pc-icon> +</pc-button>You may have to adjust the spacing of related elements due to this change.
-
Rewritten the Dialog and Drawer component to use the native
<dialog>element. This has been done for better accessibility and to fix clipping issues.
🚨 Major breaking change: Since we have rewritten these two components, you need to make some changes to make it work as expected.- The dialog/drawer must be opened/closed by toggling the
openproperty instead of calling theshow()andhide()methods. We recommend closing the dialog/drawer by attachingdata-dialog="close"to the close button in the dialog/drawer. - Replaced the
overlayandpanelCSS parts with a singledialog/drawerpart (alongside the native::backdroppseudo‐element). - Replaced the
pc-request-closeevent with the already existingpc-hideevent, which now has the ability to be cancelled. event.detail.sourcemust now target an HTML element instead of a limited set of strings. This makes it more flexible.- Removed the
containedattribute/property in the Drawer component. There currently is no replacement due to restrictions with the<dialog>element. - When preventing the dialog/drawer from closing when clicking the overlay, use the
no-light-dismissattribute instead of cancelling the associated event with JavaScript.
- The dialog/drawer must be opened/closed by toggling the
-
Bumped the minimum supported Node.js version to Node.js v20.
⚠️ Breaking change: Users must now use Node.js v20 or later (v21 is not supported) to install and use Placer Toolkit. This aligns with the EOL status of previous Node.js versions. -
Added the brand assets page for proper usage of Placer Toolkit’s brand assets.
-
Updated the Code of Conduct to be based on the Contributor Covenant version 3.0.
Security vulnerability fixes#
- Updated
@ctrl/tinycolor’s version to 4.2.0 after v4.1.1 and v4.1.2 being known to include malware. Details on the supply‐chain compromise.
Enhancements#
-
Refactored the paths of where CSS files are placed.
🚨 Major breaking change: You’ll immediately notice that your CSS wouldn’t load after updating to v1.0.0-alpha.1. Update your CSS paths accordingly with the help of this diff. This diff was made for the CDN, but we assume that you know how to do the same for the npm imports (usedistinstead ofcdn).-<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/placer-toolkit@0.5.1/dist/default.css" /> -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/placer-toolkit@0.5.1/dist/native-styles.css" /> -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/placer-toolkit@0.5.1/dist/style-utilities/style-utilities.css" /> -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/placer-toolkit@0.5.1/dist/style-utilities/visually-hidden.css" /> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/placer-toolkit@1.0.0-alpha.1/cdn/styles/default.css" /> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/placer-toolkit@1.0.0-alpha.1/cdn/styles/native.css" /> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/placer-toolkit@1.0.0-alpha.1/cdn/styles/utilities.css" /> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/placer-toolkit@1.0.0-alpha.1/cdn/styles/utilities/visually-hidden.css" />We instead recommend loading
placer.css; if you want to do so, check out the Installation docs. -
Removed Rollup from our build pipeline and replaced it with our custom build script powered by esbuild. With this change, we separated CDN and npm builds:
cdnfor CDN users,distfor npm users.
⚠️ Breaking change: If you use the CDN, refactor all links to/cdn/, as it improves performance. You may need to reclone this repository to apply this change correctly if you have your own custom Placer Toolkit build. -
Bumped the Font Awesome version in the Icon component from 6.7.2 to 7.1.0.
⚠️ Breaking change: Some refactoring must be done on our end to fit the breaking changes in Font Awesome 7. If you’re using thefixed-widthattribute, that can now be safely removed, as FA icons now are fixed width by default. A new attribute has been introduced instead calledauto-width. That reverts to the old style of only taking up as much horizontal space as the icon needs. -
Updated all CSS directional properties to use logical properties for better internationalisation support (e.g.,
margin-right→margin-inline-end,width→inline-size). -
Replaced all units and numbers that are used in English with the ones used in SI in the Placer Toolkit docs.
-
Added variants to some components. This is because of the updated theming API that allows for more flexibility within our components.
-
Removed the Radio Button component.
⚠️ Breaking change: This component currently does not have a one‐to‐one replacement yet, as we’re trying to rewrite the radio‐related components; it will surface with a replacement in the future, in the meanwhile, use the Radio component instead. -
Added the experimental
use-siattribute to the new Format Bytes and Format Number components to force them to follow SI conventions instead of local ones. -
Removed the feature that automatically stripped em-dashes (
—) from JSDoc descriptions.
⚠️ Breaking change: Descriptions for tags within a declaration’s JSDoc comment (e.g.,@csspart,@slot,@event) should be separated from the tag name by a hyphen‐minus (-) instead of an em‐dash (—). -
Changed the default sans‐serif font in the Default theme from Quicksand to Nunito for legibility reasons.
-
Added a
PlacerElementclass to extend when creating new components.
🔮 Future usage warnings: If you extendLitElementbut usePlacerElement‐specific features, it won’t work and cause errors. -
Adjusted the button sizes to be the height of the equivalent input fields, so it would align correctly in flank layouts.
⚠️ Breaking change: Buttons will be larger than before, you may need to change thesizeattribute/property to achieve what you’re looking for. -
Added terminal title bars to the internal code block when the language is set to
bash,shellorsh. -
Changed the code block and code demo syntax to follow GitHub-flavored Markdown more closely.
🔮 Future usage warnings: If you contribute to some of Placer Toolkit’s docs, make sure to read the updated section on the Contributing page to use the correct syntax. It does not require importing the Astro component anymore. -
Removed the
hoistattribute/property from the Copy Button, Select and Tooltip components.
⚠️ Breaking change: Thehoistattribute/property has been removed from these three components. You can no longer control hoisting on these components directly. To manage popover positioning, use the Popup component and itspopoverattribute. For example, addingboundary="scroll"anchors the popup to the parent container while still using fixed positioning. On older browsers that do not support thepopoverattribute, the previous behaviour is used automatically. -
Renamed some CSS parts in the Input and Radio Group components to match its purpose better and be more concise.
⚠️ Breaking change: Please refactor the part name of these two components fromform-control-inputtoinput. In the Input component, the oldinputpart has been renamed tobase; the oldbasepart was removed. -
Replaced the
verticalattribute in the Divider component withorientation="vertical".
⚠️ Breaking change: The oldverticalattribute does not work anymore as it is replaced with the new one. This makes it consistent with the Scroller component’sorientationattribute. -
Made the focus ring animation more lively and fun.
🔮 Future usage warnings: If you create or style some elements, you may want to update it to the new animation so it is consistent with other components. You have to apply this animation to the:focus,:focus-withinor:focus-visiblepseudo‐class, depending on context..some-element:focus-visible { animation: focus-ring-animation var(--pc-transition-medium) cubic-bezier(0.33, 1, 0.68, 1); } @keyframes focus-ring-animation { 0% { outline-width: 0; } 50% { outline-width: calc(var(--pc-focus-ring-width) * 2); } 100% { outline-width: var(--pc-focus-ring-width); } } -
Moved
custom-elements.jsonto the compiledcdnanddistfolders. -
Removed the
base,triggerandpanelparts in the Dropdown component during the refactor, as it doesn’t make any sense to style these elements.
⚠️ Breaking change: These parts have been removed and need to be removed from your CSS by retargeting the parts to the contents of the slots that these parts are originally targeted to. -
Renamed the colour scheme classes from
pc-theme-lightandpc-theme-darktopc-lightandpc-darkto not conflict with the new theming API features.
⚠️ Breaking change: The colour scheme theming will not work as expected anymore. You have to update the colour scheme classes. -
Swapped the sides in the Comparer component to make sense.
⚠️ Breaking change: This changes the order of the compared elements. Swap the slot names of both elements to make it look like before. -
Updated the animation when the tooltip pops in and out in the Tooltip component.
-
Removed the
aria-live="assertive"emphasis for the Warning and Danger appearances in the Callout component. -
Made the tags in a multi‐option select concentric to the select combobox.
-
Renamed a bunch of exported parts of internal components to follow the new naming scheme conventions.
⚠️ Breaking change: Please refactor these part names if you’re using them.- Copy Button
tooltip__base→tooltip-basetooltip__base__popup→tooltip-base-popuptooltip__base__arrow→tooltip-base-arrowtooltip__body→tooltip-body
- Dialog
close-button__base→close-button-base
- Drawer
close-button__base→close-button-base
- Dropdown
base__popup→base-popup
- Menu Item
spinner__base→ ❌ The Menu Item component was removed.
- Radio Group
button-group__base→ ❌ The Radio Button component was removed.
- Select
tag__base→tag-basetag__content→tag-contenttag__remove-button→tag-remove-buttontag__remove-button__base→tag-remove-button-base
- Tab
close-button__base→close-button-base
- Tab Group
scroll-button__base→scroll-button-base
- Tag
remove-button__base→remove-button-base
- Tooltip
base__popup→base-popupbase__arrow→base-arrow
- Copy Button
-
Renamed the
imageslot in the Card component tomedia.
⚠️ Breaking change: Cards using theimageslot must be renamed tomedia. -
Moved a content spacing‐related CSS rule to
native.css. -
Updated the colour palette of the default theme.
-
Redesigned the look of many components.
-
Removed the base path utility and replaced it with
kit-code.ts/kit-code.js.
⚠️ Breaking change: The base path utilities aren’t useful anymore, hence they are removed. If you use them, remove them and replace it with a safe equivalent, or recreate it yourself based off an older version of Placer Toolkit. -
Added the native styles documentation, placed in the Style utilities section.
-
Updated the native styles for better accessibility and user experience.
-
Added MathML styling in correspondence to the new
--pc-font-mathcustom property. -
Added
min-block-sizeto the Divider component when its orientation is vertical, so no height needs to be set on its parent flex container. -
Removed the
labelattribute and property from the Spinner component.
⚠️ Breaking change: This is now handled automatically by the localisation utility, but you won’t be able to customise the label for assistive devices anymore. -
Added a Privacy Policy to comply with the GDPR.
-
Removed all component files ending in
.component.tsand combined them into the main.tsfile. This will compile to.jsinstead of.component.js.
⚠️ Breaking change: If you’re importing.component.jsfiles in your code, which you shouldn’t anyways, refactor these imports to.js. -
Refactored component CSS from
.styles.ts/.styles.jsto.css.
⚠️ Breaking change: The exclusions for.styles.ts/.styles.jshave been removed, it may not behave as expected if you don’t refactor. You must extend thePlacerElementclass and usestatic cssinstead ofstatic stylesto refactor. Use other components’ code as a template for your refactor. -
Added an Edit button in the internal Code Demo component to edit the code in CodePen.
-
Added heading links to headings 2–6 in the Placer Toolkit docs.
Bug fixes#
- Fixed all CDN files to inline the
tsliblibrary by refactoring CDN files to be in/cdn/instead of/dist/. - Fixed the auto‐loader to import components from the correct path.
- Fixed unintended scrolling behaviour caused by the
<main>element. Previously intended but shown to have adverse effects. - Fixed a ghost link to the Support page in the mobile sidebar.
- Fixed the new component link for the Comparer component in the v0.5.1 changelog pointing to a different component.
- Changed the possible values of the
autocorrectproperty in the Input and Textarea components from"on"/"off"to a boolean. This does not apply to theautocorrectattribute.
⚠️ Breaking change: This aligns with the HTML spec, but may break your code. This was done to fix type issues in TypeScript. - Changed the possible values of the
spellcheckattribute in the Input and Textarea components from"true"/"false"to"on"/"off". This does not apply to thespellcheckproperty.
⚠️ Breaking change: This aligns with the HTML spec, but may break your code. This change was made to follow the HTML spec more closely. - Normalised the padding in the Dialog and Drawer component if there’s no footer and/or if there’s no header.
- Fixed extra padding added when there isn’t an icon in the Callout component because the internal icon container wasn’t properly removed.
- Replaced a Byte Order Mark character, designed to prevent an empty title from collapsing in the Dialog and Drawer components, with the Zero Width Space character. This change was done to prevent rendering issues when copying the plain text contents of the Dialog and Drawer components.
- Fixed many non‐working exported parts due to confusion with part names.
⚠️ Breaking change: The breaking change is listed in the Enhancements entry with the list of CSS part refactors. - Wrapped all
:hoverstates in a@media (hover: hover)at‐rule to fix sticky hover states on mobile devices.
Need the full commit history? View it right here.
0.5.1#
Enhancements#
-
Removed the Storybook dependency and migrated to custom setup powered by Astro.
⚠️ Breaking change: This may disrupt some custom builds of Placer Toolkit. We recommend recloning the repository when upgrading from earlier versions to 0.5.1. -
After the migration to Astro, paths changed from parameter‐based syntax to real paths.
⚠️ Breaking change: If you click on older bookmarks or similar, you may encounter a 404, as that page no longer exists. -
Added 14 new components: Callout, Comparer, Copy Button, Details, Dialog, Divider, Drawer, Dropdown, Menu, Menu Item, Menu Label, Option, Select and Tag.
-
Moved style utilities to the
style-utilities/folder fromutilities/.
⚠️ Breaking change: If you’re using a style utility, please refactor paths fromutilities/tostyle-utilities/. -
Removed the
<pc-visually-hidden>component in favour of the Visually Hidden style utility.
⚠️ Breaking change: If you’re using<pc-visually-hidden>, please refactor your code.-<pc-visually-hidden>Lorem ipsum dolor sit amet…</pc-visually-hidden> +<span class="pc-visually-hidden">Lorem ipsum dolor sit amet…</span>You may need to import
visually-hidden.cssfrom thestyle-utilities/folder. -
Reworked some native styles and adjusted tables slightly.
-
Renamed all
--pc-input-hint-text-*custom properties to--pc-input-hint-*.
⚠️ Breaking change: If you’re using any of these custom properties in your code, please refactor them to the new name. -
Changed colours to use OKLCH instead of HSL and the new CSS Color Module Level 4 syntax.
-
Rounded the corners of the Button component more to feel more friendly.
-
Added a new
events/folder for event types. -
All components using the
CSSResultGrouptype is explicitly imported as a type. -
Added a
.tgzfile for testing as a local npm package. -
Published the package on npm as
placer-toolkit. -
Replaced all instances of the
:hover:activepseudo‐classes with the:activepseudo‐class; this fixes the pressed state in mobile browsers. -
Added the system icon library for Placer Toolkit components. All components have been refactored to use the new system icon library.
-
Added an official logo for Placer Toolkit: a stylised puzzle piece with a squircular shape featuring a sparkle and a gradient.
-
Added the
fixed-widthandswap-opacityattribute as well as some more CSS custom properties for Font Awesome Pro. -
Added JSDoc comments to some components. Will soon be extended to be added to all components for auto‐generated API docs.
-
Added a
labelattribute and property to the Spinner component. -
Changed the padding of the Badge component to better match the purpose of it.
-
Changed the default easing curve of the Animation component to
ease-in-outfromlinear.
🔮 Future usage warnings: This may impact how animations feel like if you are relying on the default value of theeasingattribute/property. -
Updated the README to be more comprehensive and useful.
Bug fixes#
- Fixed the disabled state in the Button component when it’s a link.
- Remove type
Booleanfrom thetypeattribute/property in the internal@propertydecorator used in the Button component, as it’s not a boolean. - Fix prefix and suffix icon alignment in the Button component.
- Changed the classes of the Badge component to match other components.
Known bugs#
- Submenus in the Menu component are clipped in the base menu and/or other submenus.
Need the full commit history? View it right here.
0.5.0#
Due to npm publishing restrictions, this version was unpublished shortly after release and should be considered invalid. Please upgrade to version 0.5.1 or later.
0.4.0#
Enhancements#
- Added four new components: Animation, Input, Popup and Tooltip.
- Integrated built‐in animations inspired by Animate.css in correspondence to the addition of the Animation component.
- Introduced native styles to some native HTML elements to make them more appealing.
- Added the Reduce FOUCE style utility.
- Included important metadata to the
package.jsonfile. - Renamed the
iconStyleattribute (not property) in the Icon and Icon Button components toicon-style.
⚠️ Breaking change: If you specify a different icon style other thansolid, you will see noticeable changes to the icon style being displayed. Either way, we recommend you to refactor all of your code to use theicon-styleattribute. - Shipped important metadata, configuration and maintenance files (
.prettierrc,.prettierignore,.editorconfig, etc.) for improved developer experience. - Swapped out Georgia with Playfair Display as the default serif font in the Default theme.
- Added the
--pc-font-weight-mediumdesign token for the Medium font weight (500). - Cleaned up the
activestate‐related form control design tokens. - Created the
activestate to the form control icon design tokens. - Removed the unused
--pc-input-focus-ring-colorand--pc-input-focus-ring-offsetdesign tokens. - Adjusted the values of the tooltip design tokens, as they weren’t fitting for the new component.
- Placed Storybook‐related files into
.gitignore.
Bug fixes#
- Fixed icons in the Icon component from clipping when overflowing out of the icon grid by adding
overflow: visible.
Known bugs#
- During the
iconStyletoicon-styleattribute rename, we’ve later spotted some stories not including the attribute name but its value.
Need the full commit history? View it right here.
0.3.0#
Enhancements#
- Added three new components: Button Group, Radio Button and Radio Group.
- Upgraded Storybook and its related dependencies from version 8 to version 9.
- Renamed the
getSymbolproperty togetIconin the Rating component.
⚠️ Breaking change: Your custom icons for the rating may not work anymore, you have to replace all instances of thegetSymbolproperty withgetIcon. - Finished remaining component stories.
Bug fixes#
- Fixed the missing indicator in the
endplacement of the Tab Group component.
Need the full commit history? View it right here.
0.2.0 (re‐draft)#
This is a re‐draft of the previous releases. Versions 0.1.0 and 0.2.0 were redrafted with new data because of a security leak.
Enhancements#
- Added the Radio component. This component is unusable in v0.2.0, as there isn’t a Radio Group component in 0.2.0.
- Slowed down the transition speed on the Icon Button component from
var(--pc-transition-extra-fast)(0,075 s) tovar(--pc-transition-fast)(0,15 s). - Added the Icon Button story.
- Added the docs add‐on and enabled auto‐docs in Storybook.
- Added corresponding
activestates to the form control design tokens. - Reorganised the
tsconfig.jsonfile to be easier to comprehend and understand.
Need the full commit history? View it right here.
0.1.0 (re‐draft)#
This is a re‐draft of the previous releases. Versions 0.1.0 and 0.2.0 were redrafted with new data because of a security leak.
This is the first official release of Placer Toolkit! We’re not going to get into the tiny details here, we’re just going to list the main features added in 0.1.0.
Milestones#
- Built all components with Web Components with Lit, a lightweight library to make building web components easier.
- Added 16 new components: Avatar, Badge, Button, Card, Checkbox, Icon, Icon Button, QR Code, Rating, Resize Observer, Spinner, Switch, Tab Group, Tab, Tab Panel and Visually Hidden.
- Added Storybook for UI testing and documentation.
- Used Rollup to compile the Placer Toolkit library written in TypeScript into JavaScript.
Need the full commit history? View it right here.