@codecademy/styleguide 79.2.0-alpha.262211.0 → 79.2.0-alpha.2b9208.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/theming/GamutThemeProvider.tsx +2 -0
- package/CHANGELOG.md +9 -1
- package/package.json +2 -2
- package/src/lib/Foundations/System/Props/Layout.mdx +10 -0
- package/src/lib/Foundations/System/Props/Layout.stories.tsx +39 -0
- package/src/lib/Foundations/System/Props/Positioning.mdx +7 -2
- package/src/lib/Foundations/System/Props/Positioning.stories.tsx +32 -0
- package/src/lib/Meta/Installation.mdx +14 -2
|
@@ -12,6 +12,8 @@ import {
|
|
|
12
12
|
} from '@codecademy/gamut-styles/src';
|
|
13
13
|
import { Theme } from '@emotion/react';
|
|
14
14
|
|
|
15
|
+
const STORYBOOK_CSP_NONCE = 'storybook-csp-nonce';
|
|
16
|
+
|
|
15
17
|
/**
|
|
16
18
|
* Story functions must be called as a regular function to avoid full-remounts
|
|
17
19
|
* See: https://github.com/storybookjs/storybook/issues/12255
|
package/CHANGELOG.md
CHANGED
|
@@ -3,13 +3,21 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [79.2.0-alpha.
|
|
6
|
+
## [79.2.0-alpha.2b9208.0](https://github.com/Codecademy/gamut/compare/@codecademy/styleguide@79.1.3...@codecademy/styleguide@79.2.0-alpha.2b9208.0) (2026-03-05)
|
|
7
7
|
|
|
8
8
|
### Features
|
|
9
9
|
|
|
10
|
+
- Layout related logical CSS props ([#3267](https://github.com/Codecademy/gamut/issues/3267)) ([b43cbf1](https://github.com/Codecademy/gamut/commit/b43cbf1256fbf292a141c77a3251fd95f0085a04))
|
|
11
|
+
- logical properties for inset and overflow ([#3269](https://github.com/Codecademy/gamut/issues/3269)) ([18a4d7f](https://github.com/Codecademy/gamut/commit/18a4d7fa7e203b847a9f2b7defdd91345bb30194))
|
|
10
12
|
- Updates to ThemeProvider, tokens, and transform to allow Logical vs Physical prop resolution ([#3234](https://github.com/Codecademy/gamut/issues/3234)) ([7efbb9a](https://github.com/Codecademy/gamut/commit/7efbb9aabcd07dc6429432d007eaa5603ac1d70c))
|
|
11
13
|
- Updates to ThemeProvider, tokens, and transform to allow Logical vs Physical prop resolution ([#3234](https://github.com/Codecademy/gamut/issues/3234)) ([567a6ae](https://github.com/Codecademy/gamut/commit/567a6aeffb3e8628db4b5c9a37dab965b716d969))
|
|
12
14
|
|
|
15
|
+
### [79.1.3](https://github.com/Codecademy/gamut/compare/@codecademy/styleguide@79.1.2...@codecademy/styleguide@79.1.3) (2026-03-02)
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
- **GamutProvider:** CSP improvements ([1026353](https://github.com/Codecademy/gamut/commit/10263537c190aff0e5686872da2be2a30b1d9201)), closes [/github.com/adobe/react-spectrum/issues/8273#issuecomment-3897820426](https://github.com/Codecademy//github.com/adobe/react-spectrum/issues/8273/issues/issuecomment-3897820426)
|
|
20
|
+
|
|
13
21
|
### [79.1.2](https://github.com/Codecademy/gamut/compare/@codecademy/styleguide@79.1.1...@codecademy/styleguide@79.1.2) (2026-02-12)
|
|
14
22
|
|
|
15
23
|
**Note:** Version bump only for package @codecademy/styleguide
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codecademy/styleguide",
|
|
3
3
|
"description": "Styleguide & Component library for codecademy.com",
|
|
4
|
-
"version": "79.2.0-alpha.
|
|
4
|
+
"version": "79.2.0-alpha.2b9208.0",
|
|
5
5
|
"author": "Codecademy Engineering",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
10
10
|
"repository": "git@github.com:Codecademy/gamut.git",
|
|
11
|
-
"gitHead": "
|
|
11
|
+
"gitHead": "586e5a0c80b43ae67c14441e76eca1d4b04e3999"
|
|
12
12
|
}
|
|
@@ -18,6 +18,16 @@ export const parameters = {
|
|
|
18
18
|
|
|
19
19
|
Layout props control the visual structure and dimensions of elements. These properties determine how components take up space, their display behavior, and how they align within their containers. Use these props to set widths, heights, overflow behavior, and container types for responsive layouts.
|
|
20
20
|
|
|
21
|
+
## Examples
|
|
22
|
+
|
|
23
|
+
### Overflow X
|
|
24
|
+
|
|
25
|
+
<Canvas of={LayoutStories.OverflowXExample} />
|
|
26
|
+
|
|
27
|
+
### Overflow Y
|
|
28
|
+
|
|
29
|
+
<Canvas of={LayoutStories.OverflowYExample} />
|
|
30
|
+
|
|
21
31
|
```tsx
|
|
22
32
|
import styled from '@emotion/styled';
|
|
23
33
|
import { system } from '@codecademy/gamut-styles';
|
|
@@ -9,6 +9,45 @@ const meta: Meta<typeof Box> = {
|
|
|
9
9
|
export default meta;
|
|
10
10
|
type Story = StoryObj<typeof Box>;
|
|
11
11
|
|
|
12
|
+
export const OverflowXExample: Story = {
|
|
13
|
+
render: () => (
|
|
14
|
+
<Box
|
|
15
|
+
bg="background-selected"
|
|
16
|
+
overflowX="scroll"
|
|
17
|
+
p={16}
|
|
18
|
+
whiteSpace="nowrap"
|
|
19
|
+
width="200px"
|
|
20
|
+
>
|
|
21
|
+
<Box
|
|
22
|
+
bg="primary"
|
|
23
|
+
color="background-contrast"
|
|
24
|
+
display="inline-block"
|
|
25
|
+
p={8}
|
|
26
|
+
>
|
|
27
|
+
This content is wider than its container and has{' '}
|
|
28
|
+
<Markdown text="`overflowX='scroll'`." /> Inspect the example to see
|
|
29
|
+
what CSS properties are rendered.
|
|
30
|
+
</Box>
|
|
31
|
+
</Box>
|
|
32
|
+
),
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const OverflowYExample: Story = {
|
|
36
|
+
render: () => (
|
|
37
|
+
<Box bg="background-selected" height="100px" overflowY="scroll" p={16}>
|
|
38
|
+
<Box bg="primary" color="background-contrast" p={8}>
|
|
39
|
+
This content is taller than its container and has{' '}
|
|
40
|
+
<Markdown text="`overflowY='scroll'`." /> Inspect the example to see
|
|
41
|
+
what CSS properties are rendered.
|
|
42
|
+
<Box mt={16}>Line 2</Box>
|
|
43
|
+
<Box mt={16}>Line 3</Box>
|
|
44
|
+
<Box mt={16}>Line 4</Box>
|
|
45
|
+
<Box mt={16}>Line 5</Box>
|
|
46
|
+
</Box>
|
|
47
|
+
</Box>
|
|
48
|
+
),
|
|
49
|
+
};
|
|
50
|
+
|
|
12
51
|
export const WidthExample: Story = {
|
|
13
52
|
render: () => (
|
|
14
53
|
<Box bg="background-selected" p={16}>
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Meta } from '@storybook/blocks';
|
|
1
|
+
import { Canvas, Meta } from '@storybook/blocks';
|
|
2
2
|
|
|
3
3
|
import { AboutHeader, TokenTable } from '~styleguide/blocks';
|
|
4
4
|
|
|
5
5
|
import { defaultColumns, getPropRows } from '../../shared/elements';
|
|
6
|
+
import * as PositioningStories from './Positioning.stories';
|
|
6
7
|
|
|
7
8
|
export const parameters = {
|
|
8
9
|
title: 'Positioning',
|
|
@@ -11,7 +12,7 @@ export const parameters = {
|
|
|
11
12
|
status: 'updating',
|
|
12
13
|
};
|
|
13
14
|
|
|
14
|
-
<Meta title="Foundations/System/Props/Positioning" />
|
|
15
|
+
<Meta title="Foundations/System/Props/Positioning" of={PositioningStories} />
|
|
15
16
|
|
|
16
17
|
<AboutHeader {...parameters} />
|
|
17
18
|
|
|
@@ -26,4 +27,8 @@ const PositioningExample = styled.div(system.positioning);
|
|
|
26
27
|
<PositioningExample position="absolute" zIndex={2} top="0" left="0" />;
|
|
27
28
|
```
|
|
28
29
|
|
|
30
|
+
These positioning props support both physical and logical CSS properties and will render the appropriate properties based on `useLogicalProperties`'s value passed into the `<GamutProvider>` at the root of your application.
|
|
31
|
+
|
|
32
|
+
<Canvas of={PositioningStories.PositionExample} />
|
|
33
|
+
|
|
29
34
|
<TokenTable rows={getPropRows('positioning')} columns={defaultColumns} />
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Box, Markdown } from '@codecademy/gamut';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
+
|
|
4
|
+
const meta: Meta<typeof Box> = {
|
|
5
|
+
title: 'Foundations/System/Props/Positioning',
|
|
6
|
+
component: Box,
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default meta;
|
|
10
|
+
type Story = StoryObj<typeof Box>;
|
|
11
|
+
|
|
12
|
+
export const PositionExample: Story = {
|
|
13
|
+
render: () => (
|
|
14
|
+
<Box bg="background-selected" height="250px" position="relative">
|
|
15
|
+
<Box
|
|
16
|
+
bg="primary"
|
|
17
|
+
color="background-contrast"
|
|
18
|
+
left={16}
|
|
19
|
+
p={16}
|
|
20
|
+
position="absolute"
|
|
21
|
+
top={16}
|
|
22
|
+
>
|
|
23
|
+
This box has{' '}
|
|
24
|
+
<Markdown text="`position='absolute'`, `top={16}`, and `left={16}`." />{' '}
|
|
25
|
+
Inspect the example to see what CSS properties are rendered. You can
|
|
26
|
+
also change the value of{' '}
|
|
27
|
+
<Markdown text="`useLogicalProperties` and `direction`" /> in the
|
|
28
|
+
toolbar to see how the box renders differently.
|
|
29
|
+
</Box>
|
|
30
|
+
</Box>
|
|
31
|
+
),
|
|
32
|
+
};
|
|
@@ -68,7 +68,7 @@ GamutProvider handles a few critical tasks that need to happen in order for comp
|
|
|
68
68
|
- **Next** `_app.tsx`
|
|
69
69
|
- **Gatsby** `gatsby-ssr.js` `gatsby-browser.js` and use `wrapRootElement` in each.
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
5. Add required types for your theme, which will determine what props Gamut components allow.
|
|
72
72
|
|
|
73
73
|
```tsx
|
|
74
74
|
// theme.d.ts
|
|
@@ -84,7 +84,7 @@ declare module '@emotion/react' {
|
|
|
84
84
|
|
|
85
85
|
For more information this declaration please checkout the [official emotion documentation](https://emotion.sh/docs/typescript#define-a-theme)!
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
6. Start Building!
|
|
88
88
|
|
|
89
89
|
```tsx
|
|
90
90
|
import { Background } from '@codecademy/gamut-styles';
|
|
@@ -96,3 +96,15 @@ export const App = () => (
|
|
|
96
96
|
</Background>
|
|
97
97
|
);
|
|
98
98
|
```
|
|
99
|
+
|
|
100
|
+
### Content Security Policy (CSP)
|
|
101
|
+
|
|
102
|
+
If your app uses a strict Content-Security-Policy (e.g. `style-src` without `'unsafe-inline'`), pass a nonce to `GamutProvider` so Emotion and other Gamut-managed style tags are allowed:
|
|
103
|
+
|
|
104
|
+
```tsx
|
|
105
|
+
<GamutProvider nonce={yourCspNonce}>
|
|
106
|
+
<App />
|
|
107
|
+
</GamutProvider>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Your nonce should be the same value you use in your CSP header (e.g. `style-src 'self' 'nonce-{value}'`).
|