diff --git a/.changeset/neat-ducks-wish.md b/.changeset/neat-ducks-wish.md
new file mode 100644
index 0000000000..2568e438c9
--- /dev/null
+++ b/.changeset/neat-ducks-wish.md
@@ -0,0 +1,5 @@
+---
+'@backstage/canon': minor
+---
+
+Improve class name structure using data attributes instead of class names.
diff --git a/.changeset/rich-phones-whisper.md b/.changeset/rich-phones-whisper.md
new file mode 100644
index 0000000000..75f0fc0c35
--- /dev/null
+++ b/.changeset/rich-phones-whisper.md
@@ -0,0 +1,5 @@
+---
+'@backstage/repo-tools': patch
+---
+
+Checking up the files where `createRouter` has been declared and check if `@deprecated` tag exists. If it does not exist then only the message will appear.
diff --git a/canon-docs/public/css-classname-structure.png b/canon-docs/public/css-classname-structure.png
new file mode 100644
index 0000000000..df9894ff2b
Binary files /dev/null and b/canon-docs/public/css-classname-structure.png differ
diff --git a/canon-docs/src/app/(docs)/theme/theming/page.mdx b/canon-docs/src/app/(docs)/theme/theming/page.mdx
index e3fc42da44..665755c268 100644
--- a/canon-docs/src/app/(docs)/theme/theming/page.mdx
+++ b/canon-docs/src/app/(docs)/theme/theming/page.mdx
@@ -29,8 +29,100 @@ Here's an example of how your theme.css file should look like:
+## CSS class name structure
+
+All Canon components come with a set of CSS classes that you can use to style them. To make it
+easier to identify the class name you can use, we use a specific structure for the class names.
+
+
+
+Every component has a unique prefix `.canon-` followed by the component name. Component props
+are represented using the `data-` attribute. That way, class names are easily identifiable.
+
## Available CSS variables
+### Base colors
+
+These colors are used for special purposes like ring, scrollbar, ...
+
+
+
+
+ Prop
+ Description
+
+
+
+
+
+ --canon-black
+
+
+ Pure black color. This one should be the same in light and dark themes.
+
+
+
+
+ --canon-white
+
+
+ Pure white color. This one should be the same in light and dark themes.
+
+
+
+
+ --canon-gray-1
+
+ You can use these mostly for backgrounds colors.
+
+
+
+ --canon-gray-2
+
+ You can use these mostly for backgrounds colors.
+
+
+
+ --canon-gray-3
+
+ You can use these mostly for backgrounds colors.
+
+
+
+ --canon-gray-4
+
+ You can use these mostly for backgrounds colors.
+
+
+
+ --canon-gray-5
+
+ You can use these mostly for backgrounds colors.
+
+
+
+ --canon-gray-6
+
+ You can use these mostly for backgrounds colors.
+
+
+
+ --canon-gray-7
+
+ You can use these mostly for backgrounds colors.
+
+
+
+ --canon-gray-8
+
+ You can use these mostly for backgrounds colors.
+
+
+
+
### Core background colors
These colors are used for the background of your application. We are mostly using for now a
@@ -57,98 +149,60 @@ color of your app.
Use for any panels or elevated surfaces.
-
-
-
-### Component background colors
-
-These colors are meants for interactive components like buttons, callout avatar, chips, ...
-We have two main level of background you can customise. The accent one is mostly used as a primary option
-for interactive components. The tint one is used for secondary components like callouts, avatars, ...
-
-
-
-
- Prop
- Description
-
-
-
- --canon-bg-accent
+ --canon-bg-surface-2
- Used mostly for primary interactive components.
+ Use for any panels or elevated surfaces.
- --canon-bg-accent-hover
-
-
- Used for interactive components when they are hovered.
+ --canon-bg-solid
+ Used for solid background colors.
- --canon-bg-accent-focus
-
-
- Used for interactive components when they are in focus.
+ --canon-bg-solid-hover
+ Used for solid background colors when hovered.
- --canon-bg-accent-disabled
+ --canon-bg-solid-pressed
+ Used for solid background colors when pressed.
+
+
- Used for interactive components when they are disabled.
+ --canon-bg-solid-disabled
+ Used for solid background colors when disabled.--canon-bg-tint
- Used for secondary interactive components.
+ Used for tint background colors.--canon-bg-tint-hover
-
- Used for interactive components when they are hovered.
-
+ Used for tint background colors when hovered.--canon-bg-tint-focus
-
- Used for interactive components when they are active.
-
+ Used for tint background colors when active.--canon-bg-tint-disabled
-
- Used for interactive components when they are disabled.
-
+ Used for tint background colors when disabled.
-
-
-
-### Status background colors
-
-These backgrounds are intended for non-interactive elements to visually convey a specific state.
-
-
-
-
- Prop
- Description
-
-
- --canon-bg-danger
@@ -189,7 +243,7 @@ are prefixed with `fg` to make it easier to identify.
--canon-fg-primary
- It should be used on top of `--canon-bg-app` or `--canon-bg-surface-1`.
+ It should be used on top of main background surfaces.
@@ -197,7 +251,7 @@ are prefixed with `fg` to make it easier to identify.
--canon-fg-secondary
- It should be used on top of `--canon-bg-app` or `--canon-bg-surface-1`.
+ It should be used on top of main background surfaces.
@@ -205,7 +259,7 @@ are prefixed with `fg` to make it easier to identify.
--canon-fg-link
- It should be used on top of `--canon-bg-app` or `--canon-bg-surface-1`.
+ It should be used on top of main background surfaces.
@@ -213,38 +267,64 @@ are prefixed with `fg` to make it easier to identify.
--canon-fg-link-hover
- It should be used on top of `--canon-bg-app` or `--canon-bg-surface-1`.
+ It should be used on top of main background surfaces.
- --canon-fg-accent
+ --canon-fg-disabled
+
+
+ It should be used on top of main background surfaces.
+
+
+
+
+ --canon-fg-solid
+
+
+ It should be used on top of solid background colors.
- It should be used on top of `--canon-bg-accent`.--canon-fg-tint
- It should be used on top of `--canon-bg-tint`.
+
+ It should be used on top of tint background colors.
+
+
+
+
+ --canon-fg-tint-disabled
+
+
+ It should be used on top of tint background colors when disabled.
+ --canon-fg-danger
- It should be used on top of `--canon-bg-danger`.
+
+ It should be used on top of danger background colors.
+ --canon-fg-warning
- It should be used on top of `--canon-bg-warning`.
+
+ It should be used on top of warning background colors.
+ --canon-fg-success
- It should be used on top of `--canon-bg-success`.
+
+ It should be used on top of success background colors.
+
@@ -288,21 +368,9 @@ low contrast to help as a separator with the different background colors.
- --canon-border-tint
+ --canon-border-disabled
- It should be used on top of `--canon-bg-tint`.
-
-
-
- --canon-border-tint-hover
-
- Used when the component is hovered.
-
-
-
- --canon-border-tint-focus
-
- Used when the component is in focus.
+ Used when the component is disabled.
@@ -325,7 +393,40 @@ low contrast to help as a separator with the different background colors.
-## Font families
+### Special colors
+
+These colors are used for special purposes like ring, scrollbar, ...
+
+
+
+
+ Prop
+ Description
+
+
+
+
+
+ --canon-ring
+
+ The color of the ring.
+
+
+
+ --canon-scrollbar
+
+ The color of the scrollbar.
+
+
+
+ --canon-scrollbar-thumb
+
+ The color of the scrollbar thumb.
+
+
+
+
+### Font families
We have two fonts that we use across Canon. The first one is the sans-serif
font that we use for the body of the application. The second one is the
@@ -354,9 +455,9 @@ monospace font that we use for code blocks and tables.
-## Font weights
+### Font weights
-We have two font weights that we use across Canon. Regular or Bold
+We have two font weights that we use across Canon. Regular or Bold.
@@ -381,7 +482,7 @@ We have two font weights that we use across Canon. Regular or Bold
-## Spacing
+### Spacing
We built a spacing system based on a single value `--canon-space`. This value is
used to calculate the spacing for all the components. By default if you would like to
@@ -520,18 +621,9 @@ tokens for pretty much each spacing properties like padding, margin, gaps, ...
-### Radius (Work in progress)
+### Radius
-Our radius system is a little bit different from spacing as we use a factor to calculate the radius values.
-Under the hood different components uses different radius values. For example, button can be set to have full radius
-while a checkbox will have to remain a square.
-
-Here are the different radius factor we recommend to use
-
-- None: `0`
-- Small: `0.75`
-- Medium: `1`
-- Large: `1.5`
+We use a radius system to make sure that the components have a consistent look and feel.
@@ -543,9 +635,59 @@ Here are the different radius factor we recommend to use
- --canon-radius-factor
+ --canon-radius-1
+
+
+ The radius of the component. Default value is `0.125rem`.
+
+
+
+
+ --canon-radius-2
+
+
+ The radius of the component. Default value is `0.25rem`.
+
+
+
+
+ --canon-radius-3
+
+
+ The radius of the component. Default value is `0.5rem`.
+
+
+
+
+ --canon-radius-4
+
+
+ The radius of the component. Default value is `0.75rem`.
+
+
+
+
+ --canon-radius-5
+
+
+ The radius of the component. Default value is `1rem`.
+
+
+
+
+ --canon-radius-6
+
+
+ The radius of the component. Default value is `1.25rem`.
+
+
+
+
+ --canon-radius-full
+
+
+ The radius of the component. Default value is `9999px`.
- By default the value is set to medium `1`.
diff --git a/packages/canon/css/button.css b/packages/canon/css/button.css
index 312f58c5e6..eb0c44ce1b 100644
--- a/packages/canon/css/button.css
+++ b/packages/canon/css/button.css
@@ -16,7 +16,7 @@
}
}
-.canon-Button--variant-primary {
+.canon-Button[data-variant="primary"] {
background-color: var(--canon-bg-solid);
color: var(--canon-fg-solid);
transition: background-color .15s, box-shadow .15s;
@@ -40,7 +40,7 @@
}
}
-.canon-Button--variant-secondary {
+.canon-Button[data-variant="secondary"] {
background-color: var(--canon-bg-surface-1);
box-shadow: inset 0 0 0 1px var(--canon-border);
color: var(--canon-fg-primary);
@@ -66,24 +66,24 @@
}
}
-.canon-Button--size-medium {
+.canon-Button[data-size="medium"] {
font-size: var(--canon-font-size-4);
padding: 0 var(--canon-space-3);
height: 40px;
}
-.canon-Button--size-small {
+.canon-Button[data-size="small"] {
font-size: var(--canon-font-size-3);
padding: 0 var(--canon-space-2);
height: 32px;
}
-.canon-Button--size-small .canon-Button--icon {
+.canon-Button[data-size="small"] .canon-ButtonIcon {
width: 1rem;
height: 1rem;
}
-.canon-Button--size-medium .canon-Button--icon {
+.canon-Button[data-size="medium"] .canon-ButtonIcon {
width: 1.5rem;
height: 1.5rem;
}
diff --git a/packages/canon/css/components.css b/packages/canon/css/components.css
index af4ea8c4f0..bb1ba10018 100644
--- a/packages/canon/css/components.css
+++ b/packages/canon/css/components.css
@@ -22,7 +22,7 @@
}
}
-.canon-Button--variant-primary {
+.canon-Button[data-variant="primary"] {
background-color: var(--canon-bg-solid);
color: var(--canon-fg-solid);
transition: background-color .15s, box-shadow .15s;
@@ -46,7 +46,7 @@
}
}
-.canon-Button--variant-secondary {
+.canon-Button[data-variant="secondary"] {
background-color: var(--canon-bg-surface-1);
box-shadow: inset 0 0 0 1px var(--canon-border);
color: var(--canon-fg-primary);
@@ -72,24 +72,24 @@
}
}
-.canon-Button--size-medium {
+.canon-Button[data-size="medium"] {
font-size: var(--canon-font-size-4);
padding: 0 var(--canon-space-3);
height: 40px;
}
-.canon-Button--size-small {
+.canon-Button[data-size="small"] {
font-size: var(--canon-font-size-3);
padding: 0 var(--canon-space-2);
height: 32px;
}
-.canon-Button--size-small .canon-Button--icon {
+.canon-Button[data-size="small"] .canon-ButtonIcon {
width: 1rem;
height: 1rem;
}
-.canon-Button--size-medium .canon-Button--icon {
+.canon-Button[data-size="medium"] .canon-ButtonIcon {
width: 1.5rem;
height: 1.5rem;
}
@@ -248,56 +248,55 @@
.canon-Text {
font-family: var(--canon-font-regular);
- color: var(--canon-fg-primary);
margin: 0;
padding: 0;
}
-.canon-Text--variant-body {
+.canon-Text[data-variant="body"] {
font-size: var(--canon-font-size-3);
line-height: 140%;
}
-.canon-Text--variant-subtitle {
+.canon-Text[data-variant="subtitle"] {
font-size: var(--canon-font-size-4);
line-height: 140%;
}
-.canon-Text--variant-caption {
+.canon-Text[data-variant="caption"] {
font-size: var(--canon-font-size-2);
line-height: 140%;
}
-.canon-Text--variant-label {
+.canon-Text[data-variant="label"] {
font-size: var(--canon-font-size-1);
line-height: 140%;
}
-.canon-Text--weight-regular {
+.canon-Text[data-weight="regular"] {
font-weight: var(--canon-font-weight-regular);
}
-.canon-Text--weight-bold {
+.canon-Text[data-weight="bold"] {
font-weight: var(--canon-font-weight-bold);
}
-.canon-Text--color-primary {
+.canon-Text[data-color="primary"] {
color: var(--canon-fg-primary);
}
-.canon-Text--color-secondary {
+.canon-Text[data-color="secondary"] {
color: var(--canon-fg-secondary);
}
-.canon-Text--color-danger {
+.canon-Text[data-color="danger"] {
color: var(--canon-fg-danger);
}
-.canon-Text--color-warning {
+.canon-Text[data-color="warning"] {
color: var(--canon-fg-warning);
}
-.canon-Text--color-success {
+.canon-Text[data-color="success"] {
color: var(--canon-fg-success);
}
@@ -309,32 +308,32 @@
line-height: 100%;
}
-.canon-Heading--variant-display {
+.canon-Heading[data-variant="display"] {
font-size: var(--canon-font-size-10);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title1 {
+.canon-Heading[data-variant="title1"] {
font-size: var(--canon-font-size-9);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title2 {
+.canon-Heading[data-variant="title2"] {
font-size: var(--canon-font-size-8);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title3 {
+.canon-Heading[data-variant="title3"] {
font-size: var(--canon-font-size-7);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title4 {
+.canon-Heading[data-variant="title4"] {
font-size: var(--canon-font-size-title4);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title5 {
+.canon-Heading[data-variant="title5"] {
font-size: var(--canon-font-size-5);
font-weight: var(--canon-font-weight-bold);
}
@@ -357,7 +356,7 @@
}
}
-.canon-IconButton--variant-primary {
+.canon-IconButton[data-variant="primary"] {
background-color: var(--canon-bg-solid);
color: var(--canon-fg-solid);
transition: background-color .15s, box-shadow .15s;
@@ -381,7 +380,7 @@
}
}
-.canon-IconButton--variant-secondary {
+.canon-IconButton[data-variant="secondary"] {
background-color: var(--canon-bg-surface-1);
box-shadow: inset 0 0 0 1px var(--canon-border);
color: var(--canon-fg-primary);
@@ -407,24 +406,24 @@
}
}
-.canon-IconButton--size-medium {
+.canon-IconButton[data-size="medium"] {
font-size: var(--canon-font-size-4);
width: 40px;
height: 40px;
}
-.canon-IconButton--size-small {
+.canon-IconButton[data-size="small"] {
font-size: var(--canon-font-size-3);
width: 32px;
height: 32px;
}
-.canon-IconButton--size-small .canon-IconButton--icon {
+.canon-IconButton[data-size="small"] .canon-IconButtonIcon {
width: 1rem;
height: 1rem;
}
-.canon-IconButton--size-medium .canon-IconButton--icon {
+.canon-IconButton[data-size="medium"] .canon-IconButtonIcon {
width: 1.5rem;
height: 1.5rem;
}
@@ -436,14 +435,14 @@
display: flex;
}
-.canon-TextField--label {
+.canon-TextFieldLabel {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-primary);
margin-bottom: var(--canon-space-1_5);
}
-.canon-TextField--description {
+.canon-TextFieldDescription {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-secondary);
@@ -451,7 +450,7 @@
margin: 0;
}
-.canon-TextField--error {
+.canon-TextFieldError {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-danger);
@@ -459,7 +458,7 @@
margin: 0;
}
-.canon-TextField--input {
+.canon-TextFieldInput {
border-radius: var(--canon-radius-3);
border: 1px solid var(--canon-border);
padding: 0 var(--canon-space-4);
@@ -472,39 +471,39 @@
transition: border-color .2s ease-in-out, outline-color .2s ease-in-out;
}
-.canon-TextField--input::placeholder {
+.canon-TextFieldInput::placeholder {
color: var(--canon-fg-secondary);
}
-.canon-TextField--input:hover {
+.canon-TextFieldInput:hover {
border-color: var(--canon-border-hover);
}
-.canon-TextField--input:focus-visible {
+.canon-TextFieldInput:focus-visible {
outline-color: var(--canon-border-pressed);
border-color: var(--canon-border-pressed);
outline-width: 0;
}
-.canon-TextField--input[data-invalid] {
+.canon-TextFieldInput[data-invalid] {
border-color: var(--canon-fg-danger);
}
-.canon-TextField--input[data-disabled] {
+.canon-TextFieldInput[data-disabled] {
opacity: .5;
cursor: not-allowed;
border: 1px solid var(--canon-border-disabled);
}
-.canon-TextField--input-size-small {
+.canon-TextFieldInput[data-size="small"] {
height: 2rem;
}
-.canon-TextField--input-size-medium {
+.canon-TextFieldInput[data-size="medium"] {
height: 2.5rem;
}
-.canon-TextField--required {
+.canon-TextFieldRequired {
color: var(--canon-fg-secondary);
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
@@ -581,31 +580,31 @@
}
}
-.canon-Link--variant-body {
+.canon-Link[data-variant="body"] {
font-size: var(--canon-font-size-3);
line-height: 140%;
}
-.canon-Link--variant-subtitle {
+.canon-Link[data-variant="subtitle"] {
font-size: var(--canon-font-size-4);
line-height: 140%;
}
-.canon-Link--variant-caption {
+.canon-Link[data-variant="caption"] {
font-size: var(--canon-font-size-2);
line-height: 140%;
}
-.canon-Link--variant-label {
+.canon-Link[data-variant="label"] {
font-size: var(--canon-font-size-1);
line-height: 140%;
}
-.canon-Link--weight-regular {
+.canon-Link[data-weight="regular"] {
font-weight: var(--canon-font-weight-regular);
}
-.canon-Link--weight-bold {
+.canon-Link[data-weight="bold"] {
font-weight: var(--canon-font-weight-bold);
}
@@ -729,14 +728,14 @@
display: flex;
}
-.canon-Select--label {
+.canon-SelectLabel {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-primary);
margin-bottom: var(--canon-space-1_5);
}
-.canon-Select--description {
+.canon-SelectDescription {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-secondary);
@@ -744,7 +743,7 @@
margin: 0;
}
-.canon-Select--error {
+.canon-SelectError {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-danger);
@@ -752,7 +751,7 @@
margin: 0;
}
-.canon-Select--trigger {
+.canon-SelectTrigger {
box-sizing: border-box;
border-radius: var(--canon-radius-3);
border: 1px solid var(--canon-border);
@@ -771,38 +770,38 @@
display: flex;
}
-.canon-Select--trigger::placeholder {
+.canon-SelectTrigger::placeholder {
color: var(--canon-fg-secondary);
}
-.canon-Select--trigger:hover {
+.canon-SelectTrigger:hover {
border-color: var(--canon-border-hover);
}
-.canon-Select--trigger:focus-visible {
+.canon-SelectTrigger:focus-visible {
border-color: var(--canon-border-pressed);
outline: 0;
}
-.canon-Select--trigger[data-invalid] {
+.canon-SelectTrigger[data-invalid] {
border-color: var(--canon-fg-danger);
}
-.canon-Select--trigger[data-invalid]:hover, .canon-Select--trigger[data-invalid]:focus-visible {
+.canon-SelectTrigger[data-invalid]:hover, .canon-SelectTrigger[data-invalid]:focus-visible {
border-width: 2px;
}
-.canon-Select--trigger[data-disabled] {
+.canon-SelectTrigger[data-disabled] {
cursor: not-allowed;
border-color: var(--canon-border-disabled);
color: var(--canon-fg-disabled);
}
-.canon-Select--trigger-size-small {
+.canon-SelectTrigger[data-size="small"] {
height: 2rem;
}
-.canon-Select--trigger-size-medium {
+.canon-SelectTrigger[data-size="medium"] {
height: 3rem;
}
@@ -811,11 +810,11 @@
transition: transform .2s;
}
-.canon-Select--trigger[data-popup-open] .canon-SelectIcon {
+.canon-SelectTrigger[data-popup-open] .canon-SelectIcon {
transform: rotate(180deg);
}
-.canon-Select--popup {
+.canon-SelectPopup {
box-sizing: border-box;
max-height: var(--available-height);
background-color: var(--canon-bg-surface-1);
@@ -830,12 +829,12 @@
box-shadow: 0 4px 12px #0003;
}
-.canon-Select--popup[data-starting-style], .canon-Select--popup[data-ending-style] {
+.canon-SelectPopup[data-starting-style], .canon-SelectPopup[data-ending-style] {
opacity: 0;
transform: scale(.9);
}
-.canon-Select--item {
+.canon-SelectItem {
width: var(--anchor-width);
padding-block: var(--canon-space-2);
padding-inline: var(--canon-space-4);
@@ -853,13 +852,13 @@
position: relative;
}
-.canon-Select--item[data-highlighted] {
+.canon-SelectItem[data-highlighted] {
z-index: 0;
color: var(--canon-fg-primary);
position: relative;
}
-.canon-Select--item[data-highlighted]:before {
+.canon-SelectItem[data-highlighted]:before {
content: "";
z-index: -1;
background-color: var(--canon-bg-tint-hover);
@@ -869,37 +868,37 @@
inset-inline: .25rem;
}
-.canon-Select--item[data-disabled] {
+.canon-SelectItem[data-disabled] {
cursor: not-allowed;
color: var(--canon-fg-disabled);
}
-.canon-Select--item-indicator {
+.canon-SelectItemIndicator {
grid-area: icon;
justify-content: center;
align-items: center;
display: flex;
}
-.canon-Select--item-text {
+.canon-SelectItemText {
flex: 1;
grid-area: text;
}
-.canon-Select--required {
+.canon-SelectRequired {
color: var(--canon-fg-secondary);
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
margin-left: var(--canon-space-1);
}
-.canon-Select--icon {
+.canon-SelectIcon {
justify-content: center;
align-items: center;
display: flex;
}
-.canon-Select--value {
+.canon-SelectValue {
text-overflow: ellipsis;
white-space: nowrap;
width: 100%;
diff --git a/packages/canon/css/heading.css b/packages/canon/css/heading.css
index 615e7a6e8b..f1bea873b4 100644
--- a/packages/canon/css/heading.css
+++ b/packages/canon/css/heading.css
@@ -6,32 +6,32 @@
line-height: 100%;
}
-.canon-Heading--variant-display {
+.canon-Heading[data-variant="display"] {
font-size: var(--canon-font-size-10);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title1 {
+.canon-Heading[data-variant="title1"] {
font-size: var(--canon-font-size-9);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title2 {
+.canon-Heading[data-variant="title2"] {
font-size: var(--canon-font-size-8);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title3 {
+.canon-Heading[data-variant="title3"] {
font-size: var(--canon-font-size-7);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title4 {
+.canon-Heading[data-variant="title4"] {
font-size: var(--canon-font-size-title4);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title5 {
+.canon-Heading[data-variant="title5"] {
font-size: var(--canon-font-size-5);
font-weight: var(--canon-font-weight-bold);
}
diff --git a/packages/canon/css/iconbutton.css b/packages/canon/css/iconbutton.css
index 7853c59770..e867a1848e 100644
--- a/packages/canon/css/iconbutton.css
+++ b/packages/canon/css/iconbutton.css
@@ -16,7 +16,7 @@
}
}
-.canon-IconButton--variant-primary {
+.canon-IconButton[data-variant="primary"] {
background-color: var(--canon-bg-solid);
color: var(--canon-fg-solid);
transition: background-color .15s, box-shadow .15s;
@@ -40,7 +40,7 @@
}
}
-.canon-IconButton--variant-secondary {
+.canon-IconButton[data-variant="secondary"] {
background-color: var(--canon-bg-surface-1);
box-shadow: inset 0 0 0 1px var(--canon-border);
color: var(--canon-fg-primary);
@@ -66,24 +66,24 @@
}
}
-.canon-IconButton--size-medium {
+.canon-IconButton[data-size="medium"] {
font-size: var(--canon-font-size-4);
width: 40px;
height: 40px;
}
-.canon-IconButton--size-small {
+.canon-IconButton[data-size="small"] {
font-size: var(--canon-font-size-3);
width: 32px;
height: 32px;
}
-.canon-IconButton--size-small .canon-IconButton--icon {
+.canon-IconButton[data-size="small"] .canon-IconButtonIcon {
width: 1rem;
height: 1rem;
}
-.canon-IconButton--size-medium .canon-IconButton--icon {
+.canon-IconButton[data-size="medium"] .canon-IconButtonIcon {
width: 1.5rem;
height: 1.5rem;
}
diff --git a/packages/canon/css/link.css b/packages/canon/css/link.css
index ddc47c5d04..535beb3d9f 100644
--- a/packages/canon/css/link.css
+++ b/packages/canon/css/link.css
@@ -16,30 +16,30 @@
}
}
-.canon-Link--variant-body {
+.canon-Link[data-variant="body"] {
font-size: var(--canon-font-size-3);
line-height: 140%;
}
-.canon-Link--variant-subtitle {
+.canon-Link[data-variant="subtitle"] {
font-size: var(--canon-font-size-4);
line-height: 140%;
}
-.canon-Link--variant-caption {
+.canon-Link[data-variant="caption"] {
font-size: var(--canon-font-size-2);
line-height: 140%;
}
-.canon-Link--variant-label {
+.canon-Link[data-variant="label"] {
font-size: var(--canon-font-size-1);
line-height: 140%;
}
-.canon-Link--weight-regular {
+.canon-Link[data-weight="regular"] {
font-weight: var(--canon-font-weight-regular);
}
-.canon-Link--weight-bold {
+.canon-Link[data-weight="bold"] {
font-weight: var(--canon-font-weight-bold);
}
diff --git a/packages/canon/css/select.css b/packages/canon/css/select.css
index 29494c634a..cf8c05622b 100644
--- a/packages/canon/css/select.css
+++ b/packages/canon/css/select.css
@@ -5,14 +5,14 @@
display: flex;
}
-.canon-Select--label {
+.canon-SelectLabel {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-primary);
margin-bottom: var(--canon-space-1_5);
}
-.canon-Select--description {
+.canon-SelectDescription {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-secondary);
@@ -20,7 +20,7 @@
margin: 0;
}
-.canon-Select--error {
+.canon-SelectError {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-danger);
@@ -28,7 +28,7 @@
margin: 0;
}
-.canon-Select--trigger {
+.canon-SelectTrigger {
box-sizing: border-box;
border-radius: var(--canon-radius-3);
border: 1px solid var(--canon-border);
@@ -47,38 +47,38 @@
display: flex;
}
-.canon-Select--trigger::placeholder {
+.canon-SelectTrigger::placeholder {
color: var(--canon-fg-secondary);
}
-.canon-Select--trigger:hover {
+.canon-SelectTrigger:hover {
border-color: var(--canon-border-hover);
}
-.canon-Select--trigger:focus-visible {
+.canon-SelectTrigger:focus-visible {
border-color: var(--canon-border-pressed);
outline: 0;
}
-.canon-Select--trigger[data-invalid] {
+.canon-SelectTrigger[data-invalid] {
border-color: var(--canon-fg-danger);
}
-.canon-Select--trigger[data-invalid]:hover, .canon-Select--trigger[data-invalid]:focus-visible {
+.canon-SelectTrigger[data-invalid]:hover, .canon-SelectTrigger[data-invalid]:focus-visible {
border-width: 2px;
}
-.canon-Select--trigger[data-disabled] {
+.canon-SelectTrigger[data-disabled] {
cursor: not-allowed;
border-color: var(--canon-border-disabled);
color: var(--canon-fg-disabled);
}
-.canon-Select--trigger-size-small {
+.canon-SelectTrigger[data-size="small"] {
height: 2rem;
}
-.canon-Select--trigger-size-medium {
+.canon-SelectTrigger[data-size="medium"] {
height: 3rem;
}
@@ -87,11 +87,11 @@
transition: transform .2s;
}
-.canon-Select--trigger[data-popup-open] .canon-SelectIcon {
+.canon-SelectTrigger[data-popup-open] .canon-SelectIcon {
transform: rotate(180deg);
}
-.canon-Select--popup {
+.canon-SelectPopup {
box-sizing: border-box;
max-height: var(--available-height);
background-color: var(--canon-bg-surface-1);
@@ -106,12 +106,12 @@
box-shadow: 0 4px 12px #0003;
}
-.canon-Select--popup[data-starting-style], .canon-Select--popup[data-ending-style] {
+.canon-SelectPopup[data-starting-style], .canon-SelectPopup[data-ending-style] {
opacity: 0;
transform: scale(.9);
}
-.canon-Select--item {
+.canon-SelectItem {
width: var(--anchor-width);
padding-block: var(--canon-space-2);
padding-inline: var(--canon-space-4);
@@ -129,13 +129,13 @@
position: relative;
}
-.canon-Select--item[data-highlighted] {
+.canon-SelectItem[data-highlighted] {
z-index: 0;
color: var(--canon-fg-primary);
position: relative;
}
-.canon-Select--item[data-highlighted]:before {
+.canon-SelectItem[data-highlighted]:before {
content: "";
z-index: -1;
background-color: var(--canon-bg-tint-hover);
@@ -145,37 +145,37 @@
inset-inline: .25rem;
}
-.canon-Select--item[data-disabled] {
+.canon-SelectItem[data-disabled] {
cursor: not-allowed;
color: var(--canon-fg-disabled);
}
-.canon-Select--item-indicator {
+.canon-SelectItemIndicator {
grid-area: icon;
justify-content: center;
align-items: center;
display: flex;
}
-.canon-Select--item-text {
+.canon-SelectItemText {
flex: 1;
grid-area: text;
}
-.canon-Select--required {
+.canon-SelectRequired {
color: var(--canon-fg-secondary);
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
margin-left: var(--canon-space-1);
}
-.canon-Select--icon {
+.canon-SelectIcon {
justify-content: center;
align-items: center;
display: flex;
}
-.canon-Select--value {
+.canon-SelectValue {
text-overflow: ellipsis;
white-space: nowrap;
width: 100%;
diff --git a/packages/canon/css/styles.css b/packages/canon/css/styles.css
index 2230922917..473b8f5d45 100644
--- a/packages/canon/css/styles.css
+++ b/packages/canon/css/styles.css
@@ -9246,7 +9246,7 @@
}
}
-.canon-Button--variant-primary {
+.canon-Button[data-variant="primary"] {
background-color: var(--canon-bg-solid);
color: var(--canon-fg-solid);
transition: background-color .15s, box-shadow .15s;
@@ -9270,7 +9270,7 @@
}
}
-.canon-Button--variant-secondary {
+.canon-Button[data-variant="secondary"] {
background-color: var(--canon-bg-surface-1);
box-shadow: inset 0 0 0 1px var(--canon-border);
color: var(--canon-fg-primary);
@@ -9296,24 +9296,24 @@
}
}
-.canon-Button--size-medium {
+.canon-Button[data-size="medium"] {
font-size: var(--canon-font-size-4);
padding: 0 var(--canon-space-3);
height: 40px;
}
-.canon-Button--size-small {
+.canon-Button[data-size="small"] {
font-size: var(--canon-font-size-3);
padding: 0 var(--canon-space-2);
height: 32px;
}
-.canon-Button--size-small .canon-Button--icon {
+.canon-Button[data-size="small"] .canon-ButtonIcon {
width: 1rem;
height: 1rem;
}
-.canon-Button--size-medium .canon-Button--icon {
+.canon-Button[data-size="medium"] .canon-ButtonIcon {
width: 1.5rem;
height: 1.5rem;
}
@@ -9472,56 +9472,55 @@
.canon-Text {
font-family: var(--canon-font-regular);
- color: var(--canon-fg-primary);
margin: 0;
padding: 0;
}
-.canon-Text--variant-body {
+.canon-Text[data-variant="body"] {
font-size: var(--canon-font-size-3);
line-height: 140%;
}
-.canon-Text--variant-subtitle {
+.canon-Text[data-variant="subtitle"] {
font-size: var(--canon-font-size-4);
line-height: 140%;
}
-.canon-Text--variant-caption {
+.canon-Text[data-variant="caption"] {
font-size: var(--canon-font-size-2);
line-height: 140%;
}
-.canon-Text--variant-label {
+.canon-Text[data-variant="label"] {
font-size: var(--canon-font-size-1);
line-height: 140%;
}
-.canon-Text--weight-regular {
+.canon-Text[data-weight="regular"] {
font-weight: var(--canon-font-weight-regular);
}
-.canon-Text--weight-bold {
+.canon-Text[data-weight="bold"] {
font-weight: var(--canon-font-weight-bold);
}
-.canon-Text--color-primary {
+.canon-Text[data-color="primary"] {
color: var(--canon-fg-primary);
}
-.canon-Text--color-secondary {
+.canon-Text[data-color="secondary"] {
color: var(--canon-fg-secondary);
}
-.canon-Text--color-danger {
+.canon-Text[data-color="danger"] {
color: var(--canon-fg-danger);
}
-.canon-Text--color-warning {
+.canon-Text[data-color="warning"] {
color: var(--canon-fg-warning);
}
-.canon-Text--color-success {
+.canon-Text[data-color="success"] {
color: var(--canon-fg-success);
}
@@ -9533,32 +9532,32 @@
line-height: 100%;
}
-.canon-Heading--variant-display {
+.canon-Heading[data-variant="display"] {
font-size: var(--canon-font-size-10);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title1 {
+.canon-Heading[data-variant="title1"] {
font-size: var(--canon-font-size-9);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title2 {
+.canon-Heading[data-variant="title2"] {
font-size: var(--canon-font-size-8);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title3 {
+.canon-Heading[data-variant="title3"] {
font-size: var(--canon-font-size-7);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title4 {
+.canon-Heading[data-variant="title4"] {
font-size: var(--canon-font-size-title4);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title5 {
+.canon-Heading[data-variant="title5"] {
font-size: var(--canon-font-size-5);
font-weight: var(--canon-font-weight-bold);
}
@@ -9581,7 +9580,7 @@
}
}
-.canon-IconButton--variant-primary {
+.canon-IconButton[data-variant="primary"] {
background-color: var(--canon-bg-solid);
color: var(--canon-fg-solid);
transition: background-color .15s, box-shadow .15s;
@@ -9605,7 +9604,7 @@
}
}
-.canon-IconButton--variant-secondary {
+.canon-IconButton[data-variant="secondary"] {
background-color: var(--canon-bg-surface-1);
box-shadow: inset 0 0 0 1px var(--canon-border);
color: var(--canon-fg-primary);
@@ -9631,24 +9630,24 @@
}
}
-.canon-IconButton--size-medium {
+.canon-IconButton[data-size="medium"] {
font-size: var(--canon-font-size-4);
width: 40px;
height: 40px;
}
-.canon-IconButton--size-small {
+.canon-IconButton[data-size="small"] {
font-size: var(--canon-font-size-3);
width: 32px;
height: 32px;
}
-.canon-IconButton--size-small .canon-IconButton--icon {
+.canon-IconButton[data-size="small"] .canon-IconButtonIcon {
width: 1rem;
height: 1rem;
}
-.canon-IconButton--size-medium .canon-IconButton--icon {
+.canon-IconButton[data-size="medium"] .canon-IconButtonIcon {
width: 1.5rem;
height: 1.5rem;
}
@@ -9660,14 +9659,14 @@
display: flex;
}
-.canon-TextField--label {
+.canon-TextFieldLabel {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-primary);
margin-bottom: var(--canon-space-1_5);
}
-.canon-TextField--description {
+.canon-TextFieldDescription {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-secondary);
@@ -9675,7 +9674,7 @@
margin: 0;
}
-.canon-TextField--error {
+.canon-TextFieldError {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-danger);
@@ -9683,7 +9682,7 @@
margin: 0;
}
-.canon-TextField--input {
+.canon-TextFieldInput {
border-radius: var(--canon-radius-3);
border: 1px solid var(--canon-border);
padding: 0 var(--canon-space-4);
@@ -9696,39 +9695,39 @@
transition: border-color .2s ease-in-out, outline-color .2s ease-in-out;
}
-.canon-TextField--input::placeholder {
+.canon-TextFieldInput::placeholder {
color: var(--canon-fg-secondary);
}
-.canon-TextField--input:hover {
+.canon-TextFieldInput:hover {
border-color: var(--canon-border-hover);
}
-.canon-TextField--input:focus-visible {
+.canon-TextFieldInput:focus-visible {
outline-color: var(--canon-border-pressed);
border-color: var(--canon-border-pressed);
outline-width: 0;
}
-.canon-TextField--input[data-invalid] {
+.canon-TextFieldInput[data-invalid] {
border-color: var(--canon-fg-danger);
}
-.canon-TextField--input[data-disabled] {
+.canon-TextFieldInput[data-disabled] {
opacity: .5;
cursor: not-allowed;
border: 1px solid var(--canon-border-disabled);
}
-.canon-TextField--input-size-small {
+.canon-TextFieldInput[data-size="small"] {
height: 2rem;
}
-.canon-TextField--input-size-medium {
+.canon-TextFieldInput[data-size="medium"] {
height: 2.5rem;
}
-.canon-TextField--required {
+.canon-TextFieldRequired {
color: var(--canon-fg-secondary);
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
@@ -9805,31 +9804,31 @@
}
}
-.canon-Link--variant-body {
+.canon-Link[data-variant="body"] {
font-size: var(--canon-font-size-3);
line-height: 140%;
}
-.canon-Link--variant-subtitle {
+.canon-Link[data-variant="subtitle"] {
font-size: var(--canon-font-size-4);
line-height: 140%;
}
-.canon-Link--variant-caption {
+.canon-Link[data-variant="caption"] {
font-size: var(--canon-font-size-2);
line-height: 140%;
}
-.canon-Link--variant-label {
+.canon-Link[data-variant="label"] {
font-size: var(--canon-font-size-1);
line-height: 140%;
}
-.canon-Link--weight-regular {
+.canon-Link[data-weight="regular"] {
font-weight: var(--canon-font-weight-regular);
}
-.canon-Link--weight-bold {
+.canon-Link[data-weight="bold"] {
font-weight: var(--canon-font-weight-bold);
}
@@ -9953,14 +9952,14 @@
display: flex;
}
-.canon-Select--label {
+.canon-SelectLabel {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-primary);
margin-bottom: var(--canon-space-1_5);
}
-.canon-Select--description {
+.canon-SelectDescription {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-secondary);
@@ -9968,7 +9967,7 @@
margin: 0;
}
-.canon-Select--error {
+.canon-SelectError {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-danger);
@@ -9976,7 +9975,7 @@
margin: 0;
}
-.canon-Select--trigger {
+.canon-SelectTrigger {
box-sizing: border-box;
border-radius: var(--canon-radius-3);
border: 1px solid var(--canon-border);
@@ -9995,38 +9994,38 @@
display: flex;
}
-.canon-Select--trigger::placeholder {
+.canon-SelectTrigger::placeholder {
color: var(--canon-fg-secondary);
}
-.canon-Select--trigger:hover {
+.canon-SelectTrigger:hover {
border-color: var(--canon-border-hover);
}
-.canon-Select--trigger:focus-visible {
+.canon-SelectTrigger:focus-visible {
border-color: var(--canon-border-pressed);
outline: 0;
}
-.canon-Select--trigger[data-invalid] {
+.canon-SelectTrigger[data-invalid] {
border-color: var(--canon-fg-danger);
}
-.canon-Select--trigger[data-invalid]:hover, .canon-Select--trigger[data-invalid]:focus-visible {
+.canon-SelectTrigger[data-invalid]:hover, .canon-SelectTrigger[data-invalid]:focus-visible {
border-width: 2px;
}
-.canon-Select--trigger[data-disabled] {
+.canon-SelectTrigger[data-disabled] {
cursor: not-allowed;
border-color: var(--canon-border-disabled);
color: var(--canon-fg-disabled);
}
-.canon-Select--trigger-size-small {
+.canon-SelectTrigger[data-size="small"] {
height: 2rem;
}
-.canon-Select--trigger-size-medium {
+.canon-SelectTrigger[data-size="medium"] {
height: 3rem;
}
@@ -10035,11 +10034,11 @@
transition: transform .2s;
}
-.canon-Select--trigger[data-popup-open] .canon-SelectIcon {
+.canon-SelectTrigger[data-popup-open] .canon-SelectIcon {
transform: rotate(180deg);
}
-.canon-Select--popup {
+.canon-SelectPopup {
box-sizing: border-box;
max-height: var(--available-height);
background-color: var(--canon-bg-surface-1);
@@ -10054,12 +10053,12 @@
box-shadow: 0 4px 12px #0003;
}
-.canon-Select--popup[data-starting-style], .canon-Select--popup[data-ending-style] {
+.canon-SelectPopup[data-starting-style], .canon-SelectPopup[data-ending-style] {
opacity: 0;
transform: scale(.9);
}
-.canon-Select--item {
+.canon-SelectItem {
width: var(--anchor-width);
padding-block: var(--canon-space-2);
padding-inline: var(--canon-space-4);
@@ -10077,13 +10076,13 @@
position: relative;
}
-.canon-Select--item[data-highlighted] {
+.canon-SelectItem[data-highlighted] {
z-index: 0;
color: var(--canon-fg-primary);
position: relative;
}
-.canon-Select--item[data-highlighted]:before {
+.canon-SelectItem[data-highlighted]:before {
content: "";
z-index: -1;
background-color: var(--canon-bg-tint-hover);
@@ -10093,37 +10092,37 @@
inset-inline: .25rem;
}
-.canon-Select--item[data-disabled] {
+.canon-SelectItem[data-disabled] {
cursor: not-allowed;
color: var(--canon-fg-disabled);
}
-.canon-Select--item-indicator {
+.canon-SelectItemIndicator {
grid-area: icon;
justify-content: center;
align-items: center;
display: flex;
}
-.canon-Select--item-text {
+.canon-SelectItemText {
flex: 1;
grid-area: text;
}
-.canon-Select--required {
+.canon-SelectRequired {
color: var(--canon-fg-secondary);
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
margin-left: var(--canon-space-1);
}
-.canon-Select--icon {
+.canon-SelectIcon {
justify-content: center;
align-items: center;
display: flex;
}
-.canon-Select--value {
+.canon-SelectValue {
text-overflow: ellipsis;
white-space: nowrap;
width: 100%;
diff --git a/packages/canon/css/text.css b/packages/canon/css/text.css
index faa16c7f40..523574f779 100644
--- a/packages/canon/css/text.css
+++ b/packages/canon/css/text.css
@@ -1,54 +1,53 @@
.canon-Text {
font-family: var(--canon-font-regular);
- color: var(--canon-fg-primary);
margin: 0;
padding: 0;
}
-.canon-Text--variant-body {
+.canon-Text[data-variant="body"] {
font-size: var(--canon-font-size-3);
line-height: 140%;
}
-.canon-Text--variant-subtitle {
+.canon-Text[data-variant="subtitle"] {
font-size: var(--canon-font-size-4);
line-height: 140%;
}
-.canon-Text--variant-caption {
+.canon-Text[data-variant="caption"] {
font-size: var(--canon-font-size-2);
line-height: 140%;
}
-.canon-Text--variant-label {
+.canon-Text[data-variant="label"] {
font-size: var(--canon-font-size-1);
line-height: 140%;
}
-.canon-Text--weight-regular {
+.canon-Text[data-weight="regular"] {
font-weight: var(--canon-font-weight-regular);
}
-.canon-Text--weight-bold {
+.canon-Text[data-weight="bold"] {
font-weight: var(--canon-font-weight-bold);
}
-.canon-Text--color-primary {
+.canon-Text[data-color="primary"] {
color: var(--canon-fg-primary);
}
-.canon-Text--color-secondary {
+.canon-Text[data-color="secondary"] {
color: var(--canon-fg-secondary);
}
-.canon-Text--color-danger {
+.canon-Text[data-color="danger"] {
color: var(--canon-fg-danger);
}
-.canon-Text--color-warning {
+.canon-Text[data-color="warning"] {
color: var(--canon-fg-warning);
}
-.canon-Text--color-success {
+.canon-Text[data-color="success"] {
color: var(--canon-fg-success);
}
diff --git a/packages/canon/css/textfield.css b/packages/canon/css/textfield.css
index a542690580..bf21b3bd74 100644
--- a/packages/canon/css/textfield.css
+++ b/packages/canon/css/textfield.css
@@ -5,14 +5,14 @@
display: flex;
}
-.canon-TextField--label {
+.canon-TextFieldLabel {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-primary);
margin-bottom: var(--canon-space-1_5);
}
-.canon-TextField--description {
+.canon-TextFieldDescription {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-secondary);
@@ -20,7 +20,7 @@
margin: 0;
}
-.canon-TextField--error {
+.canon-TextFieldError {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-danger);
@@ -28,7 +28,7 @@
margin: 0;
}
-.canon-TextField--input {
+.canon-TextFieldInput {
border-radius: var(--canon-radius-3);
border: 1px solid var(--canon-border);
padding: 0 var(--canon-space-4);
@@ -41,39 +41,39 @@
transition: border-color .2s ease-in-out, outline-color .2s ease-in-out;
}
-.canon-TextField--input::placeholder {
+.canon-TextFieldInput::placeholder {
color: var(--canon-fg-secondary);
}
-.canon-TextField--input:hover {
+.canon-TextFieldInput:hover {
border-color: var(--canon-border-hover);
}
-.canon-TextField--input:focus-visible {
+.canon-TextFieldInput:focus-visible {
outline-color: var(--canon-border-pressed);
border-color: var(--canon-border-pressed);
outline-width: 0;
}
-.canon-TextField--input[data-invalid] {
+.canon-TextFieldInput[data-invalid] {
border-color: var(--canon-fg-danger);
}
-.canon-TextField--input[data-disabled] {
+.canon-TextFieldInput[data-disabled] {
opacity: .5;
cursor: not-allowed;
border: 1px solid var(--canon-border-disabled);
}
-.canon-TextField--input-size-small {
+.canon-TextFieldInput[data-size="small"] {
height: 2rem;
}
-.canon-TextField--input-size-medium {
+.canon-TextFieldInput[data-size="medium"] {
height: 2.5rem;
}
-.canon-TextField--required {
+.canon-TextFieldRequired {
color: var(--canon-fg-secondary);
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
diff --git a/packages/canon/src/components/Button/Button.tsx b/packages/canon/src/components/Button/Button.tsx
index 179c35323a..ca652013b4 100644
--- a/packages/canon/src/components/Button/Button.tsx
+++ b/packages/canon/src/components/Button/Button.tsx
@@ -44,18 +44,15 @@ export const Button = forwardRef(
);
},
diff --git a/packages/canon/src/components/Button/styles.css b/packages/canon/src/components/Button/styles.css
index b5d6e1dca0..785fbf3b88 100644
--- a/packages/canon/src/components/Button/styles.css
+++ b/packages/canon/src/components/Button/styles.css
@@ -32,7 +32,7 @@
}
}
-.canon-Button--variant-primary {
+.canon-Button[data-variant='primary'] {
background-color: var(--canon-bg-solid);
color: var(--canon-fg-solid);
transition: background-color 150ms ease, box-shadow 150ms ease;
@@ -56,7 +56,7 @@
}
}
-.canon-Button--variant-secondary {
+.canon-Button[data-variant='secondary'] {
background-color: var(--canon-bg-surface-1);
box-shadow: inset 0 0 0 1px var(--canon-border);
color: var(--canon-fg-primary);
@@ -82,24 +82,24 @@
}
}
-.canon-Button--size-medium {
+.canon-Button[data-size='medium'] {
font-size: var(--canon-font-size-4);
padding: 0 var(--canon-space-3);
height: 40px;
}
-.canon-Button--size-small {
+.canon-Button[data-size='small'] {
font-size: var(--canon-font-size-3);
padding: 0 var(--canon-space-2);
height: 32px;
}
-.canon-Button--size-small .canon-Button--icon {
+.canon-Button[data-size='small'] .canon-ButtonIcon {
width: 1rem;
height: 1rem;
}
-.canon-Button--size-medium .canon-Button--icon {
+.canon-Button[data-size='medium'] .canon-ButtonIcon {
width: 1.5rem;
height: 1.5rem;
}
diff --git a/packages/canon/src/components/Heading/Heading.tsx b/packages/canon/src/components/Heading/Heading.tsx
index 5fe69bbc57..994b1de06e 100644
--- a/packages/canon/src/components/Heading/Heading.tsx
+++ b/packages/canon/src/components/Heading/Heading.tsx
@@ -45,11 +45,8 @@ export const Heading = forwardRef(
return (
{children}
diff --git a/packages/canon/src/components/Heading/styles.css b/packages/canon/src/components/Heading/styles.css
index 2db11d7eb2..c85bbca135 100644
--- a/packages/canon/src/components/Heading/styles.css
+++ b/packages/canon/src/components/Heading/styles.css
@@ -22,32 +22,32 @@
margin: 0;
}
-.canon-Heading--variant-display {
+.canon-Heading[data-variant='display'] {
font-size: var(--canon-font-size-10);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title1 {
+.canon-Heading[data-variant='title1'] {
font-size: var(--canon-font-size-9);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title2 {
+.canon-Heading[data-variant='title2'] {
font-size: var(--canon-font-size-8);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title3 {
+.canon-Heading[data-variant='title3'] {
font-size: var(--canon-font-size-7);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title4 {
+.canon-Heading[data-variant='title4'] {
font-size: var(--canon-font-size-title4);
font-weight: var(--canon-font-weight-bold);
}
-.canon-Heading--variant-title5 {
+.canon-Heading[data-variant='title5'] {
font-size: var(--canon-font-size-5);
font-weight: var(--canon-font-weight-bold);
}
diff --git a/packages/canon/src/components/IconButton/IconButton.tsx b/packages/canon/src/components/IconButton/IconButton.tsx
index e05e27e372..b2581844bc 100644
--- a/packages/canon/src/components/IconButton/IconButton.tsx
+++ b/packages/canon/src/components/IconButton/IconButton.tsx
@@ -39,16 +39,13 @@ export const IconButton = forwardRef(
return (
);
},
diff --git a/packages/canon/src/components/IconButton/styles.css b/packages/canon/src/components/IconButton/styles.css
index aa4c2d0523..859c512fd6 100644
--- a/packages/canon/src/components/IconButton/styles.css
+++ b/packages/canon/src/components/IconButton/styles.css
@@ -32,7 +32,7 @@
}
}
-.canon-IconButton--variant-primary {
+.canon-IconButton[data-variant='primary'] {
background-color: var(--canon-bg-solid);
color: var(--canon-fg-solid);
transition: background-color 150ms ease, box-shadow 150ms ease;
@@ -56,7 +56,7 @@
}
}
-.canon-IconButton--variant-secondary {
+.canon-IconButton[data-variant='secondary'] {
background-color: var(--canon-bg-surface-1);
box-shadow: inset 0 0 0 1px var(--canon-border);
color: var(--canon-fg-primary);
@@ -82,24 +82,24 @@
}
}
-.canon-IconButton--size-medium {
+.canon-IconButton[data-size='medium'] {
font-size: var(--canon-font-size-4);
height: 40px;
width: 40px;
}
-.canon-IconButton--size-small {
+.canon-IconButton[data-size='small'] {
font-size: var(--canon-font-size-3);
height: 32px;
width: 32px;
}
-.canon-IconButton--size-small .canon-IconButton--icon {
+.canon-IconButton[data-size='small'] .canon-IconButtonIcon {
width: 1rem;
height: 1rem;
}
-.canon-IconButton--size-medium .canon-IconButton--icon {
+.canon-IconButton[data-size='medium'] .canon-IconButtonIcon {
width: 1.5rem;
height: 1.5rem;
}
diff --git a/packages/canon/src/components/Link/Link.tsx b/packages/canon/src/components/Link/Link.tsx
index a4ccb8428b..8609517bc0 100644
--- a/packages/canon/src/components/Link/Link.tsx
+++ b/packages/canon/src/components/Link/Link.tsx
@@ -38,14 +38,9 @@ export const Link = forwardRef((props, ref) => {
const { renderElement } = useRender({
render,
props: {
- className: clsx(
- 'canon-Link',
- responsiveVariant && `canon-Link--variant-${responsiveVariant}`,
- responsiveWeight && `canon-Link--weight-${responsiveWeight}`,
- className,
- ),
- responsiveVariant,
- responsiveWeight,
+ className: clsx('canon-Link', className),
+ ['data-variant']: responsiveVariant,
+ ['data-weight']: responsiveWeight,
...restProps,
},
refs: [ref, internalRef],
diff --git a/packages/canon/src/components/Link/styles.css b/packages/canon/src/components/Link/styles.css
index 40a4f340ca..8112ae8231 100644
--- a/packages/canon/src/components/Link/styles.css
+++ b/packages/canon/src/components/Link/styles.css
@@ -36,30 +36,30 @@
}
}
-.canon-Link--variant-body {
+.canon-Link[data-variant='body'] {
font-size: var(--canon-font-size-3);
line-height: 140%;
}
-.canon-Link--variant-subtitle {
+.canon-Link[data-variant='subtitle'] {
font-size: var(--canon-font-size-4);
line-height: 140%;
}
-.canon-Link--variant-caption {
+.canon-Link[data-variant='caption'] {
font-size: var(--canon-font-size-2);
line-height: 140%;
}
-.canon-Link--variant-label {
+.canon-Link[data-variant='label'] {
font-size: var(--canon-font-size-1);
line-height: 140%;
}
-.canon-Link--weight-regular {
+.canon-Link[data-weight='regular'] {
font-weight: var(--canon-font-weight-regular);
}
-.canon-Link--weight-bold {
+.canon-Link[data-weight='bold'] {
font-weight: var(--canon-font-weight-bold);
}
diff --git a/packages/canon/src/components/Select/Select.styles.css b/packages/canon/src/components/Select/Select.styles.css
index 2fcdbf7a6a..fa00d81302 100644
--- a/packages/canon/src/components/Select/Select.styles.css
+++ b/packages/canon/src/components/Select/Select.styles.css
@@ -21,14 +21,14 @@
width: 100%;
}
-.canon-Select--label {
+.canon-SelectLabel {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-primary);
margin-bottom: var(--canon-space-1_5);
}
-.canon-Select--description {
+.canon-SelectDescription {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-secondary);
@@ -36,7 +36,7 @@
padding-top: var(--canon-space-1_5);
}
-.canon-Select--error {
+.canon-SelectError {
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
color: var(--canon-fg-danger);
@@ -44,7 +44,7 @@
padding-top: var(--canon-space-1_5);
}
-.canon-Select--trigger {
+.canon-SelectTrigger {
box-sizing: border-box;
border-radius: var(--canon-radius-3);
border: 1px solid var(--canon-border);
@@ -63,41 +63,41 @@
gap: var(--canon-space-2);
}
-.canon-Select--trigger::placeholder {
+.canon-SelectTrigger::placeholder {
color: var(--canon-fg-secondary);
}
-.canon-Select--trigger:hover {
+.canon-SelectTrigger:hover {
border-color: var(--canon-border-hover);
}
-.canon-Select--trigger:focus-visible {
+.canon-SelectTrigger:focus-visible {
border-color: var(--canon-border-pressed);
outline: 0;
}
-.canon-Select--trigger[data-invalid] {
+.canon-SelectTrigger[data-invalid] {
border-color: var(--canon-fg-danger);
}
-.canon-Select--trigger[data-invalid]:hover {
+.canon-SelectTrigger[data-invalid]:hover {
border-width: 2px;
}
-.canon-Select--trigger[data-invalid]:focus-visible {
+.canon-SelectTrigger[data-invalid]:focus-visible {
border-width: 2px;
}
-.canon-Select--trigger[data-disabled] {
+.canon-SelectTrigger[data-disabled] {
cursor: not-allowed;
border-color: var(--canon-border-disabled);
color: var(--canon-fg-disabled);
}
-.canon-Select--trigger-size-small {
+.canon-SelectTrigger[data-size='small'] {
height: 2rem;
}
-.canon-Select--trigger-size-medium {
+.canon-SelectTrigger[data-size='medium'] {
height: 3rem;
}
@@ -106,11 +106,11 @@
transition: transform 0.2s ease;
}
-.canon-Select--trigger[data-popup-open] .canon-SelectIcon {
+.canon-SelectTrigger[data-popup-open] .canon-SelectIcon {
transform: rotate(180deg);
}
-.canon-Select--popup {
+.canon-SelectPopup {
box-sizing: border-box;
max-height: var(--available-height);
overflow-y: auto;
@@ -125,13 +125,13 @@
transition: transform 150ms, opacity 150ms;
}
-.canon-Select--popup[data-starting-style],
-.canon-Select--popup[data-ending-style] {
+.canon-SelectPopup[data-starting-style],
+.canon-SelectPopup[data-ending-style] {
opacity: 0;
transform: scale(0.9);
}
-.canon-Select--item {
+.canon-SelectItem {
position: relative;
width: var(--anchor-width);
display: grid;
@@ -149,13 +149,13 @@
outline: none;
}
-.canon-Select--item[data-highlighted] {
+.canon-SelectItem[data-highlighted] {
z-index: 0;
position: relative;
color: var(--canon-fg-primary);
}
-.canon-Select--item[data-highlighted]::before {
+.canon-SelectItem[data-highlighted]::before {
content: '';
z-index: -1;
position: absolute;
@@ -165,37 +165,37 @@
background-color: var(--canon-bg-tint-hover);
}
-.canon-Select--item[data-disabled] {
+.canon-SelectItem[data-disabled] {
cursor: not-allowed;
color: var(--canon-fg-disabled);
}
-.canon-Select--item-indicator {
+.canon-SelectItemIndicator {
grid-area: icon;
display: flex;
align-items: center;
justify-content: center;
}
-.canon-Select--item-text {
+.canon-SelectItemText {
flex: 1;
grid-area: text;
}
-.canon-Select--required {
+.canon-SelectRequired {
color: var(--canon-fg-secondary);
font-size: var(--canon-font-size-2);
font-weight: var(--canon-font-weight-regular);
margin-left: var(--canon-space-1);
}
-.canon-Select--icon {
+.canon-SelectIcon {
display: flex;
align-items: center;
justify-content: center;
}
-.canon-Select--value {
+.canon-SelectValue {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
diff --git a/packages/canon/src/components/Select/Select.tsx b/packages/canon/src/components/Select/Select.tsx
index 6e28d3a9a0..be8047ca02 100644
--- a/packages/canon/src/components/Select/Select.tsx
+++ b/packages/canon/src/components/Select/Select.tsx
@@ -48,10 +48,10 @@ export const Select = forwardRef((props, ref) => {
return (