From 95e08d175d03723f4242ad9f26c83405a4aa12bd Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Sat, 12 Apr 2025 10:01:37 +0200 Subject: [PATCH] Improve Theming docs Signed-off-by: Charles de Dreuille --- canon-docs/public/css-classname-structure.png | Bin 0 -> 43849 bytes .../src/app/(docs)/theme/theming/page.mdx | 332 +++++++++++++----- 2 files changed, 237 insertions(+), 95 deletions(-) create mode 100644 canon-docs/public/css-classname-structure.png diff --git a/canon-docs/public/css-classname-structure.png b/canon-docs/public/css-classname-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..df9894ff2b7c511fa9f439a6a7fcde5d4f903732 GIT binary patch literal 43849 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%0A?n$6(Iz|bvJ3c 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 +## 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`.