jvetrau-ds 0.1.4 → 0.1.6

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/base.css ADDED
@@ -0,0 +1,188 @@
1
+ /* AUTO-GENERATED FILE. DO NOT EDIT MANUALLY. */
2
+
3
+
4
+
5
+ /* src/base/reset.css */
6
+ *,
7
+ *::before,
8
+ *::after {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ html {
13
+ -webkit-text-size-adjust: 100%;
14
+ }
15
+
16
+ body {
17
+ margin: 0;
18
+ }
19
+
20
+ /* src/base/color.css */
21
+ html,
22
+ body {
23
+ /* color */
24
+ --body-bg: var(--color-bg);
25
+ --body-color: var(--color-text);
26
+
27
+ background: var(--body-bg);
28
+ color: var(--body-color);
29
+ }
30
+
31
+ /* src/base/typography.css */
32
+ body {
33
+ /* typography */
34
+ --body-font-family: var(--font-body-family);
35
+ --body-font-size: var(--font-body);
36
+ --body-font-weight: var(--font-body-weight);
37
+ --body-line-height: var(--font-body-line);
38
+ --body-letter-spacing: var(--font-body-letter-spacing);
39
+
40
+ font-family: var(--body-font-family);
41
+ font-size: var(--body-font-size);
42
+ font-weight: var(--body-font-weight);
43
+ line-height: var(--body-line-height);
44
+ letter-spacing: var(--body-letter-spacing);
45
+
46
+ /* size */
47
+
48
+ /* border */
49
+
50
+ /* depth */
51
+
52
+ /* motion */
53
+ font-synthesis: none;
54
+ text-rendering: optimizeLegibility;
55
+ -webkit-font-smoothing: antialiased;
56
+ -moz-osx-font-smoothing: grayscale;
57
+ }
58
+
59
+ h1 {
60
+ /* typography */
61
+ --h1-font-family: var(--font-h1-family);
62
+ --h1-font-size: var(--font-h1);
63
+ --h1-font-weight: var(--font-h1-weight);
64
+ --h1-line-height: var(--font-h1-line);
65
+ --h1-letter-spacing: var(--font-h1-letter-spacing);
66
+
67
+ font-family: var(--h1-font-family);
68
+ font-size: var(--h1-font-size);
69
+ font-weight: var(--h1-font-weight);
70
+ line-height: var(--h1-line-height);
71
+ letter-spacing: var(--h1-letter-spacing);
72
+
73
+ /* size */
74
+ --h1-margin: var(--font-h1-margin);
75
+
76
+ margin: 0 0 var(--h1-margin);
77
+
78
+ /* border */
79
+
80
+ /* depth */
81
+
82
+ /* motion */
83
+ }
84
+
85
+ h2 {
86
+ /* typography */
87
+ --h2-font-family: var(--font-h2-family);
88
+ --h2-font-size: var(--font-h2);
89
+ --h2-font-weight: var(--font-h2-weight);
90
+ --h2-line-height: var(--font-h2-line);
91
+ --h2-letter-spacing: var(--font-h2-letter-spacing);
92
+
93
+ font-family: var(--h2-font-family);
94
+ font-size: var(--h2-font-size);
95
+ font-weight: var(--h2-font-weight);
96
+ line-height: var(--h2-line-height);
97
+ letter-spacing: var(--h2-letter-spacing);
98
+
99
+ /* size */
100
+ --h2-margin: var(--font-h2-margin);
101
+
102
+ margin: 0 0 var(--h2-margin);
103
+
104
+ /* border */
105
+
106
+ /* depth */
107
+
108
+ /* motion */
109
+ }
110
+
111
+ h3 {
112
+ /* typography */
113
+ --h3-font-family: var(--font-h3-family);
114
+ --h3-font-size: var(--font-h3);
115
+ --h3-font-weight: var(--font-h3-weight);
116
+ --h3-line-height: var(--font-h3-line);
117
+ --h3-letter-spacing: var(--font-h3-letter-spacing);
118
+
119
+ font-family: var(--h3-font-family);
120
+ font-size: var(--h3-font-size);
121
+ font-weight: var(--h3-font-weight);
122
+ line-height: var(--h3-line-height);
123
+ letter-spacing: var(--h3-letter-spacing);
124
+
125
+ /* size */
126
+ --h3-margin: var(--font-h3-margin);
127
+
128
+ margin: 0 0 var(--h3-margin);
129
+
130
+ /* border */
131
+
132
+ /* depth */
133
+
134
+ /* motion */
135
+ }
136
+
137
+ h4 {
138
+ /* typography */
139
+ --h4-font-family: var(--font-h4-family);
140
+ --h4-font-size: var(--font-h4);
141
+ --h4-font-weight: var(--font-h4-weight);
142
+ --h4-line-height: var(--font-h4-line);
143
+ --h4-letter-spacing: var(--font-h4-letter-spacing);
144
+
145
+ font-family: var(--h4-font-family);
146
+ font-size: var(--h4-font-size);
147
+ font-weight: var(--h4-font-weight);
148
+ line-height: var(--h4-line-height);
149
+ letter-spacing: var(--h4-letter-spacing);
150
+
151
+ /* size */
152
+ --h4-margin: var(--font-h4-margin);
153
+
154
+ margin: 0 0 var(--h4-margin);
155
+
156
+ /* border */
157
+
158
+ /* depth */
159
+
160
+ /* motion */
161
+ }
162
+
163
+ p {
164
+ /* typography */
165
+ --p-font-family: var(--font-body-family);
166
+ --p-font-size: var(--font-body);
167
+ --p-font-weight: var(--font-body-weight);
168
+ --p-line-height: var(--font-body-line);
169
+ --p-letter-spacing: var(--font-body-letter-spacing);
170
+
171
+ font-family: var(--p-font-family);
172
+ font-size: var(--p-font-size);
173
+ font-weight: var(--p-font-weight);
174
+ line-height: var(--p-line-height);
175
+ letter-spacing: var(--p-letter-spacing);
176
+
177
+ /* size */
178
+ --p-margin: var(--font-body-margin);
179
+
180
+ margin: 0 0 var(--p-margin);
181
+
182
+ /* border */
183
+
184
+ /* depth */
185
+
186
+ /* motion */
187
+ }
188
+
package/index.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { I as IconName } from './public-BFgsu4P2.cjs';
3
3
  export { Footer, FooterProps, Header, HeaderProps, ScreenHeader, ScreenHeaderProps } from './patterns.cjs';
4
+ export { LayoutBase, LayoutBaseProps, LayoutFoundation, LayoutFoundationProps, LayoutFoundationWidth, LayoutSidebar, LayoutSidebarProps } from './layouts.cjs';
4
5
 
5
6
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
6
7
  state?: 'default' | 'primary';
@@ -177,28 +178,6 @@ interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
177
178
  }
178
179
  declare const Avatar: React.FC<AvatarProps>;
179
180
 
180
- type LayoutFoundationWidth = 'narrow' | 'default' | 'wide' | 'full';
181
- interface LayoutFoundationProps extends React.HTMLAttributes<HTMLDivElement> {
182
- width?: LayoutFoundationWidth;
183
- }
184
- declare const LayoutFoundation: React.FC<LayoutFoundationProps>;
185
-
186
- interface LayoutBaseProps extends React.HTMLAttributes<HTMLDivElement> {
187
- width?: LayoutFoundationWidth;
188
- header?: React.ReactNode;
189
- footer?: React.ReactNode;
190
- }
191
- declare const LayoutBase: React.FC<LayoutBaseProps>;
192
-
193
- interface LayoutSidebarProps extends React.HTMLAttributes<HTMLDivElement> {
194
- width?: LayoutFoundationWidth;
195
- header?: React.ReactNode;
196
- screenHeader?: React.ReactNode;
197
- sidebar?: React.ReactNode;
198
- footer?: React.ReactNode;
199
- }
200
- declare const LayoutSidebar: React.FC<LayoutSidebarProps>;
201
-
202
181
  interface AttachmentItem {
203
182
  id: string;
204
183
  name: string;
@@ -214,4 +193,4 @@ interface AttachmentProps extends React.HTMLAttributes<HTMLDivElement> {
214
193
  }
215
194
  declare const Attachment: React.FC<AttachmentProps>;
216
195
 
217
- export { Attachment, type AttachmentItem, type AttachmentProps, Avatar, type AvatarProps, Button, ButtonIcon, type ButtonIconProps, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Dropdown, type DropdownProps, Field, type FieldProps, Input, type InputProps, LayoutBase, type LayoutBaseProps, LayoutFoundation, type LayoutFoundationProps, type LayoutFoundationWidth, LayoutSidebar, type LayoutSidebarProps, Logo, type LogoProps, Menu, type MenuProps, Panel, type PanelProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, RichEdit, type RichEditProps, Search, type SearchProps, Select, type SelectProps, Tabs, type TabsProps, Tag, type TagProps, Textarea, type TextareaProps, Video, type VideoProps };
196
+ export { Attachment, type AttachmentItem, type AttachmentProps, Avatar, type AvatarProps, Button, ButtonIcon, type ButtonIconProps, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Dropdown, type DropdownProps, Field, type FieldProps, Input, type InputProps, Logo, type LogoProps, Menu, type MenuProps, Panel, type PanelProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, RichEdit, type RichEditProps, Search, type SearchProps, Select, type SelectProps, Tabs, type TabsProps, Tag, type TagProps, Textarea, type TextareaProps, Video, type VideoProps };
package/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { I as IconName } from './public-BFgsu4P2.js';
3
3
  export { Footer, FooterProps, Header, HeaderProps, ScreenHeader, ScreenHeaderProps } from './patterns.js';
4
+ export { LayoutBase, LayoutBaseProps, LayoutFoundation, LayoutFoundationProps, LayoutFoundationWidth, LayoutSidebar, LayoutSidebarProps } from './layouts.js';
4
5
 
5
6
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
6
7
  state?: 'default' | 'primary';
@@ -177,28 +178,6 @@ interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
177
178
  }
178
179
  declare const Avatar: React.FC<AvatarProps>;
179
180
 
180
- type LayoutFoundationWidth = 'narrow' | 'default' | 'wide' | 'full';
181
- interface LayoutFoundationProps extends React.HTMLAttributes<HTMLDivElement> {
182
- width?: LayoutFoundationWidth;
183
- }
184
- declare const LayoutFoundation: React.FC<LayoutFoundationProps>;
185
-
186
- interface LayoutBaseProps extends React.HTMLAttributes<HTMLDivElement> {
187
- width?: LayoutFoundationWidth;
188
- header?: React.ReactNode;
189
- footer?: React.ReactNode;
190
- }
191
- declare const LayoutBase: React.FC<LayoutBaseProps>;
192
-
193
- interface LayoutSidebarProps extends React.HTMLAttributes<HTMLDivElement> {
194
- width?: LayoutFoundationWidth;
195
- header?: React.ReactNode;
196
- screenHeader?: React.ReactNode;
197
- sidebar?: React.ReactNode;
198
- footer?: React.ReactNode;
199
- }
200
- declare const LayoutSidebar: React.FC<LayoutSidebarProps>;
201
-
202
181
  interface AttachmentItem {
203
182
  id: string;
204
183
  name: string;
@@ -214,4 +193,4 @@ interface AttachmentProps extends React.HTMLAttributes<HTMLDivElement> {
214
193
  }
215
194
  declare const Attachment: React.FC<AttachmentProps>;
216
195
 
217
- export { Attachment, type AttachmentItem, type AttachmentProps, Avatar, type AvatarProps, Button, ButtonIcon, type ButtonIconProps, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Dropdown, type DropdownProps, Field, type FieldProps, Input, type InputProps, LayoutBase, type LayoutBaseProps, LayoutFoundation, type LayoutFoundationProps, type LayoutFoundationWidth, LayoutSidebar, type LayoutSidebarProps, Logo, type LogoProps, Menu, type MenuProps, Panel, type PanelProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, RichEdit, type RichEditProps, Search, type SearchProps, Select, type SelectProps, Tabs, type TabsProps, Tag, type TagProps, Textarea, type TextareaProps, Video, type VideoProps };
196
+ export { Attachment, type AttachmentItem, type AttachmentProps, Avatar, type AvatarProps, Button, ButtonIcon, type ButtonIconProps, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Dropdown, type DropdownProps, Field, type FieldProps, Input, type InputProps, Logo, type LogoProps, Menu, type MenuProps, Panel, type PanelProps, ProgressBar, type ProgressBarProps, Radio, type RadioProps, RichEdit, type RichEditProps, Search, type SearchProps, Select, type SelectProps, Tabs, type TabsProps, Tag, type TagProps, Textarea, type TextareaProps, Video, type VideoProps };
package/layouts.cjs ADDED
@@ -0,0 +1,100 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // src/components/helpers/classnames.ts
6
+ function classnames(...args) {
7
+ const classes = [];
8
+ args.forEach((arg) => {
9
+ if (!arg) return;
10
+ if (typeof arg === "string") {
11
+ classes.push(arg);
12
+ return;
13
+ }
14
+ for (const key in arg) {
15
+ if (arg[key]) {
16
+ classes.push(key);
17
+ }
18
+ }
19
+ });
20
+ return classes.join(" ");
21
+ }
22
+ var LayoutFoundation = ({
23
+ width = "default",
24
+ className = "",
25
+ children,
26
+ ...props
27
+ }) => {
28
+ const classes = classnames("layout-foundation", className, {
29
+ "layout-foundation--narrow": width === "narrow",
30
+ "layout-foundation--wide": width === "wide",
31
+ "layout-foundation--full": width === "full"
32
+ });
33
+ return /* @__PURE__ */ jsxRuntime.jsx(
34
+ "div",
35
+ {
36
+ className: classes,
37
+ ...props,
38
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "layout-foundation__grid", children })
39
+ }
40
+ );
41
+ };
42
+ var foundation_default = LayoutFoundation;
43
+ var LayoutBase = ({
44
+ width = "default",
45
+ header,
46
+ footer,
47
+ children,
48
+ className = "",
49
+ ...props
50
+ }) => {
51
+ return /* @__PURE__ */ jsxRuntime.jsxs(
52
+ foundation_default,
53
+ {
54
+ width,
55
+ className,
56
+ ...props,
57
+ children: [
58
+ header && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "layout-base__header", children: header }),
59
+ /* @__PURE__ */ jsxRuntime.jsx("main", { className: "layout-base__main", children }),
60
+ footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "layout-base__footer", children: footer })
61
+ ]
62
+ }
63
+ );
64
+ };
65
+ var base_default = LayoutBase;
66
+ var LayoutSidebar = ({
67
+ width = "wide",
68
+ header,
69
+ screenHeader,
70
+ sidebar,
71
+ footer,
72
+ children,
73
+ className = "",
74
+ ...props
75
+ }) => {
76
+ return /* @__PURE__ */ jsxRuntime.jsxs(
77
+ foundation_default,
78
+ {
79
+ width,
80
+ className,
81
+ ...props,
82
+ children: [
83
+ header && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "layout-sidebar__header", children: header }),
84
+ screenHeader && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "layout-sidebar__screen-header", children: screenHeader }),
85
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "layout-sidebar__body", children: [
86
+ /* @__PURE__ */ jsxRuntime.jsx("main", { className: "layout-sidebar__main", children }),
87
+ sidebar && /* @__PURE__ */ jsxRuntime.jsx("aside", { className: "layout-sidebar__side", children: sidebar })
88
+ ] }),
89
+ footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "layout-sidebar__footer", children: footer })
90
+ ]
91
+ }
92
+ );
93
+ };
94
+ var sidebar_default = LayoutSidebar;
95
+
96
+ exports.LayoutBase = base_default;
97
+ exports.LayoutFoundation = foundation_default;
98
+ exports.LayoutSidebar = sidebar_default;
99
+ //# sourceMappingURL=layouts.cjs.map
100
+ //# sourceMappingURL=layouts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/helpers/classnames.ts","../src/layouts/foundation/foundation.tsx","../src/layouts/base/base.tsx","../src/layouts/sidebar/sidebar.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"layouts.cjs","sourcesContent":["type ClassValue = string | undefined | null | false;\n\nexport function classnames(\n ...args: (ClassValue | Record<string, boolean | undefined | null>)[]\n) {\n const classes: string[] = [];\n\n args.forEach(arg => {\n if (!arg) return;\n\n if (typeof arg === 'string') {\n classes.push(arg);\n return;\n }\n\n for (const key in arg) {\n if (arg[key]) {\n classes.push(key);\n }\n }\n });\n\n return classes.join(' ');\n}","import React from 'react';\nimport './foundation.css';\nimport { classnames } from '../../components/helpers/classnames';\n\nexport type LayoutFoundationWidth =\n | 'narrow'\n | 'default'\n | 'wide'\n | 'full';\n\nexport interface LayoutFoundationProps\n extends React.HTMLAttributes<HTMLDivElement> {\n width?: LayoutFoundationWidth;\n}\n\nconst LayoutFoundation: React.FC<LayoutFoundationProps> = ({\n width = 'default',\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames('layout-foundation', className, {\n 'layout-foundation--narrow': width === 'narrow',\n 'layout-foundation--wide': width === 'wide',\n 'layout-foundation--full': width === 'full',\n });\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"layout-foundation__grid\">\n {children}\n </div>\n </div>\n );\n};\n\nexport default LayoutFoundation;","import React from 'react';\nimport LayoutFoundation, {\n type LayoutFoundationWidth,\n} from '../foundation';\nimport './base.css';\n\nexport interface LayoutBaseProps\n extends React.HTMLAttributes<HTMLDivElement> {\n width?: LayoutFoundationWidth;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nconst LayoutBase: React.FC<LayoutBaseProps> = ({\n width = 'default',\n header,\n footer,\n children,\n className = '',\n ...props\n}) => {\n return (\n <LayoutFoundation\n width={width}\n className={className}\n {...props}\n >\n {header && (\n <div className=\"layout-base__header\">\n {header}\n </div>\n )}\n\n <main className=\"layout-base__main\">\n {children}\n </main>\n\n {footer && (\n <div className=\"layout-base__footer\">\n {footer}\n </div>\n )}\n </LayoutFoundation>\n );\n};\n\nexport default LayoutBase;","import React from 'react';\nimport LayoutFoundation, {\n type LayoutFoundationWidth,\n} from '../foundation';\nimport './sidebar.css';\n\nexport interface LayoutSidebarProps\n extends React.HTMLAttributes<HTMLDivElement> {\n width?: LayoutFoundationWidth;\n header?: React.ReactNode;\n screenHeader?: React.ReactNode;\n sidebar?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nconst LayoutSidebar: React.FC<LayoutSidebarProps> = ({\n width = 'wide',\n header,\n screenHeader,\n sidebar,\n footer,\n children,\n className = '',\n ...props\n}) => {\n return (\n <LayoutFoundation\n width={width}\n className={className}\n {...props}\n >\n {header && (\n <div className=\"layout-sidebar__header\">\n {header}\n </div>\n )}\n\n {screenHeader && (\n <div className=\"layout-sidebar__screen-header\">\n {screenHeader}\n </div>\n )}\n\n <div className=\"layout-sidebar__body\">\n <main className=\"layout-sidebar__main\">\n {children}\n </main>\n\n {sidebar && (\n <aside className=\"layout-sidebar__side\">\n {sidebar}\n </aside>\n )}\n </div>\n\n {footer && (\n <div className=\"layout-sidebar__footer\">\n {footer}\n </div>\n )}\n </LayoutFoundation>\n );\n};\n\nexport default LayoutSidebar;"]}
package/layouts.d.cts ADDED
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+
3
+ type LayoutFoundationWidth = 'narrow' | 'default' | 'wide' | 'full';
4
+ interface LayoutFoundationProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ width?: LayoutFoundationWidth;
6
+ }
7
+ declare const LayoutFoundation: React.FC<LayoutFoundationProps>;
8
+
9
+ interface LayoutBaseProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ width?: LayoutFoundationWidth;
11
+ header?: React.ReactNode;
12
+ footer?: React.ReactNode;
13
+ }
14
+ declare const LayoutBase: React.FC<LayoutBaseProps>;
15
+
16
+ interface LayoutSidebarProps extends React.HTMLAttributes<HTMLDivElement> {
17
+ width?: LayoutFoundationWidth;
18
+ header?: React.ReactNode;
19
+ screenHeader?: React.ReactNode;
20
+ sidebar?: React.ReactNode;
21
+ footer?: React.ReactNode;
22
+ }
23
+ declare const LayoutSidebar: React.FC<LayoutSidebarProps>;
24
+
25
+ export { LayoutBase, type LayoutBaseProps, LayoutFoundation, type LayoutFoundationProps, type LayoutFoundationWidth, LayoutSidebar, type LayoutSidebarProps };
package/layouts.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+
3
+ type LayoutFoundationWidth = 'narrow' | 'default' | 'wide' | 'full';
4
+ interface LayoutFoundationProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ width?: LayoutFoundationWidth;
6
+ }
7
+ declare const LayoutFoundation: React.FC<LayoutFoundationProps>;
8
+
9
+ interface LayoutBaseProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ width?: LayoutFoundationWidth;
11
+ header?: React.ReactNode;
12
+ footer?: React.ReactNode;
13
+ }
14
+ declare const LayoutBase: React.FC<LayoutBaseProps>;
15
+
16
+ interface LayoutSidebarProps extends React.HTMLAttributes<HTMLDivElement> {
17
+ width?: LayoutFoundationWidth;
18
+ header?: React.ReactNode;
19
+ screenHeader?: React.ReactNode;
20
+ sidebar?: React.ReactNode;
21
+ footer?: React.ReactNode;
22
+ }
23
+ declare const LayoutSidebar: React.FC<LayoutSidebarProps>;
24
+
25
+ export { LayoutBase, type LayoutBaseProps, LayoutFoundation, type LayoutFoundationProps, type LayoutFoundationWidth, LayoutSidebar, type LayoutSidebarProps };
package/layouts.js ADDED
@@ -0,0 +1,96 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+
3
+ // src/components/helpers/classnames.ts
4
+ function classnames(...args) {
5
+ const classes = [];
6
+ args.forEach((arg) => {
7
+ if (!arg) return;
8
+ if (typeof arg === "string") {
9
+ classes.push(arg);
10
+ return;
11
+ }
12
+ for (const key in arg) {
13
+ if (arg[key]) {
14
+ classes.push(key);
15
+ }
16
+ }
17
+ });
18
+ return classes.join(" ");
19
+ }
20
+ var LayoutFoundation = ({
21
+ width = "default",
22
+ className = "",
23
+ children,
24
+ ...props
25
+ }) => {
26
+ const classes = classnames("layout-foundation", className, {
27
+ "layout-foundation--narrow": width === "narrow",
28
+ "layout-foundation--wide": width === "wide",
29
+ "layout-foundation--full": width === "full"
30
+ });
31
+ return /* @__PURE__ */ jsx(
32
+ "div",
33
+ {
34
+ className: classes,
35
+ ...props,
36
+ children: /* @__PURE__ */ jsx("div", { className: "layout-foundation__grid", children })
37
+ }
38
+ );
39
+ };
40
+ var foundation_default = LayoutFoundation;
41
+ var LayoutBase = ({
42
+ width = "default",
43
+ header,
44
+ footer,
45
+ children,
46
+ className = "",
47
+ ...props
48
+ }) => {
49
+ return /* @__PURE__ */ jsxs(
50
+ foundation_default,
51
+ {
52
+ width,
53
+ className,
54
+ ...props,
55
+ children: [
56
+ header && /* @__PURE__ */ jsx("div", { className: "layout-base__header", children: header }),
57
+ /* @__PURE__ */ jsx("main", { className: "layout-base__main", children }),
58
+ footer && /* @__PURE__ */ jsx("div", { className: "layout-base__footer", children: footer })
59
+ ]
60
+ }
61
+ );
62
+ };
63
+ var base_default = LayoutBase;
64
+ var LayoutSidebar = ({
65
+ width = "wide",
66
+ header,
67
+ screenHeader,
68
+ sidebar,
69
+ footer,
70
+ children,
71
+ className = "",
72
+ ...props
73
+ }) => {
74
+ return /* @__PURE__ */ jsxs(
75
+ foundation_default,
76
+ {
77
+ width,
78
+ className,
79
+ ...props,
80
+ children: [
81
+ header && /* @__PURE__ */ jsx("div", { className: "layout-sidebar__header", children: header }),
82
+ screenHeader && /* @__PURE__ */ jsx("div", { className: "layout-sidebar__screen-header", children: screenHeader }),
83
+ /* @__PURE__ */ jsxs("div", { className: "layout-sidebar__body", children: [
84
+ /* @__PURE__ */ jsx("main", { className: "layout-sidebar__main", children }),
85
+ sidebar && /* @__PURE__ */ jsx("aside", { className: "layout-sidebar__side", children: sidebar })
86
+ ] }),
87
+ footer && /* @__PURE__ */ jsx("div", { className: "layout-sidebar__footer", children: footer })
88
+ ]
89
+ }
90
+ );
91
+ };
92
+ var sidebar_default = LayoutSidebar;
93
+
94
+ export { base_default as LayoutBase, foundation_default as LayoutFoundation, sidebar_default as LayoutSidebar };
95
+ //# sourceMappingURL=layouts.js.map
96
+ //# sourceMappingURL=layouts.js.map
package/layouts.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/helpers/classnames.ts","../src/layouts/foundation/foundation.tsx","../src/layouts/base/base.tsx","../src/layouts/sidebar/sidebar.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"layouts.js","sourcesContent":["type ClassValue = string | undefined | null | false;\n\nexport function classnames(\n ...args: (ClassValue | Record<string, boolean | undefined | null>)[]\n) {\n const classes: string[] = [];\n\n args.forEach(arg => {\n if (!arg) return;\n\n if (typeof arg === 'string') {\n classes.push(arg);\n return;\n }\n\n for (const key in arg) {\n if (arg[key]) {\n classes.push(key);\n }\n }\n });\n\n return classes.join(' ');\n}","import React from 'react';\nimport './foundation.css';\nimport { classnames } from '../../components/helpers/classnames';\n\nexport type LayoutFoundationWidth =\n | 'narrow'\n | 'default'\n | 'wide'\n | 'full';\n\nexport interface LayoutFoundationProps\n extends React.HTMLAttributes<HTMLDivElement> {\n width?: LayoutFoundationWidth;\n}\n\nconst LayoutFoundation: React.FC<LayoutFoundationProps> = ({\n width = 'default',\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames('layout-foundation', className, {\n 'layout-foundation--narrow': width === 'narrow',\n 'layout-foundation--wide': width === 'wide',\n 'layout-foundation--full': width === 'full',\n });\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"layout-foundation__grid\">\n {children}\n </div>\n </div>\n );\n};\n\nexport default LayoutFoundation;","import React from 'react';\nimport LayoutFoundation, {\n type LayoutFoundationWidth,\n} from '../foundation';\nimport './base.css';\n\nexport interface LayoutBaseProps\n extends React.HTMLAttributes<HTMLDivElement> {\n width?: LayoutFoundationWidth;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nconst LayoutBase: React.FC<LayoutBaseProps> = ({\n width = 'default',\n header,\n footer,\n children,\n className = '',\n ...props\n}) => {\n return (\n <LayoutFoundation\n width={width}\n className={className}\n {...props}\n >\n {header && (\n <div className=\"layout-base__header\">\n {header}\n </div>\n )}\n\n <main className=\"layout-base__main\">\n {children}\n </main>\n\n {footer && (\n <div className=\"layout-base__footer\">\n {footer}\n </div>\n )}\n </LayoutFoundation>\n );\n};\n\nexport default LayoutBase;","import React from 'react';\nimport LayoutFoundation, {\n type LayoutFoundationWidth,\n} from '../foundation';\nimport './sidebar.css';\n\nexport interface LayoutSidebarProps\n extends React.HTMLAttributes<HTMLDivElement> {\n width?: LayoutFoundationWidth;\n header?: React.ReactNode;\n screenHeader?: React.ReactNode;\n sidebar?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nconst LayoutSidebar: React.FC<LayoutSidebarProps> = ({\n width = 'wide',\n header,\n screenHeader,\n sidebar,\n footer,\n children,\n className = '',\n ...props\n}) => {\n return (\n <LayoutFoundation\n width={width}\n className={className}\n {...props}\n >\n {header && (\n <div className=\"layout-sidebar__header\">\n {header}\n </div>\n )}\n\n {screenHeader && (\n <div className=\"layout-sidebar__screen-header\">\n {screenHeader}\n </div>\n )}\n\n <div className=\"layout-sidebar__body\">\n <main className=\"layout-sidebar__main\">\n {children}\n </main>\n\n {sidebar && (\n <aside className=\"layout-sidebar__side\">\n {sidebar}\n </aside>\n )}\n </div>\n\n {footer && (\n <div className=\"layout-sidebar__footer\">\n {footer}\n </div>\n )}\n </LayoutFoundation>\n );\n};\n\nexport default LayoutSidebar;"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jvetrau-ds",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Multi-brand React design system with semantic tokens",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -23,6 +23,11 @@
23
23
  "import": "./patterns.js",
24
24
  "require": "./patterns.cjs"
25
25
  },
26
+ "./layouts": {
27
+ "types": "./layouts.d.ts",
28
+ "import": "./layouts.js",
29
+ "require": "./layouts.cjs"
30
+ },
26
31
  "./icons": {
27
32
  "types": "./icons.d.ts",
28
33
  "import": "./icons.js",
@@ -33,6 +38,7 @@
33
38
  "import": "./tokens.js",
34
39
  "require": "./tokens.cjs"
35
40
  },
41
+ "./base.css": "./base.css",
36
42
  "./styles.css": "./styles.css",
37
43
  "./themes/*.css": "./themes/*.css",
38
44
  "./themes/*.scoped.css": "./themes/*.scoped.css",
package/styles.css CHANGED
@@ -198,75 +198,6 @@
198
198
  text-transform: uppercase;
199
199
  }
200
200
 
201
- /* src/components/button-icon/button-icon.css */
202
- .button-icon {
203
- /* color */
204
- --button-icon-bg: transparent;
205
- --button-icon-color: var(--color-text);
206
- --button-icon-bg-disabled: transparent;
207
- --button-icon-color-disabled: var(--color-text-disabled);
208
-
209
- background: var(--button-icon-bg);
210
- color: var(--button-icon-color);
211
-
212
- /* typography */
213
-
214
- /* size */
215
- --button-icon-size: 32px;
216
-
217
- display: inline-flex;
218
- align-items: center;
219
- justify-content: center;
220
- width: var(--button-icon-size);
221
- height: var(--button-icon-size);
222
- padding: 0;
223
-
224
- /* border */
225
- --button-icon-radius: var(--radius-control);
226
- --button-icon-focus-width: var(--size-border-width-min);
227
- --button-icon-focus-offset: 2px;
228
-
229
- border: 0;
230
- border-radius: var(--button-icon-radius);
231
-
232
- /* depth */
233
-
234
- /* motion */
235
- --button-icon-transition-duration: var(--motion-duration1);
236
- --button-icon-opacity-hover: 0.8;
237
- --button-icon-opacity-active: 0.7;
238
-
239
- cursor: pointer;
240
- user-select: none;
241
- transition: opacity var(--button-icon-transition-duration);
242
- }
243
-
244
- .button-icon__icon {
245
- /* size */
246
- flex-shrink: 0;
247
- }
248
-
249
- .button-icon:hover {
250
- opacity: var(--button-icon-opacity-hover);
251
- }
252
-
253
- .button-icon:focus-visible {
254
- outline: var(--button-icon-focus-width) solid currentColor;
255
- outline-offset: var(--button-icon-focus-offset);
256
- }
257
-
258
- .button-icon:active {
259
- opacity: var(--button-icon-opacity-active);
260
- }
261
-
262
- .button-icon:disabled,
263
- .button-icon--disabled {
264
- background: var(--button-icon-bg-disabled);
265
- color: var(--button-icon-color-disabled);
266
- cursor: not-allowed;
267
- opacity: 1;
268
- }
269
-
270
201
  /* src/components/button/button.css */
271
202
  .button {
272
203
  /* color */
@@ -373,6 +304,75 @@
373
304
  padding-inline: var(--button-padding-icon-only);
374
305
  }
375
306
 
307
+ /* src/components/button-icon/button-icon.css */
308
+ .button-icon {
309
+ /* color */
310
+ --button-icon-bg: transparent;
311
+ --button-icon-color: var(--color-text);
312
+ --button-icon-bg-disabled: transparent;
313
+ --button-icon-color-disabled: var(--color-text-disabled);
314
+
315
+ background: var(--button-icon-bg);
316
+ color: var(--button-icon-color);
317
+
318
+ /* typography */
319
+
320
+ /* size */
321
+ --button-icon-size: 32px;
322
+
323
+ display: inline-flex;
324
+ align-items: center;
325
+ justify-content: center;
326
+ width: var(--button-icon-size);
327
+ height: var(--button-icon-size);
328
+ padding: 0;
329
+
330
+ /* border */
331
+ --button-icon-radius: var(--radius-control);
332
+ --button-icon-focus-width: var(--size-border-width-min);
333
+ --button-icon-focus-offset: 2px;
334
+
335
+ border: 0;
336
+ border-radius: var(--button-icon-radius);
337
+
338
+ /* depth */
339
+
340
+ /* motion */
341
+ --button-icon-transition-duration: var(--motion-duration1);
342
+ --button-icon-opacity-hover: 0.8;
343
+ --button-icon-opacity-active: 0.7;
344
+
345
+ cursor: pointer;
346
+ user-select: none;
347
+ transition: opacity var(--button-icon-transition-duration);
348
+ }
349
+
350
+ .button-icon__icon {
351
+ /* size */
352
+ flex-shrink: 0;
353
+ }
354
+
355
+ .button-icon:hover {
356
+ opacity: var(--button-icon-opacity-hover);
357
+ }
358
+
359
+ .button-icon:focus-visible {
360
+ outline: var(--button-icon-focus-width) solid currentColor;
361
+ outline-offset: var(--button-icon-focus-offset);
362
+ }
363
+
364
+ .button-icon:active {
365
+ opacity: var(--button-icon-opacity-active);
366
+ }
367
+
368
+ .button-icon:disabled,
369
+ .button-icon--disabled {
370
+ background: var(--button-icon-bg-disabled);
371
+ color: var(--button-icon-color-disabled);
372
+ cursor: not-allowed;
373
+ opacity: 1;
374
+ }
375
+
376
376
  /* src/components/card/card.css */
377
377
  .card {
378
378
  /* color */
@@ -2265,3 +2265,543 @@
2265
2265
  vertical-align: middle;
2266
2266
  }
2267
2267
 
2268
+ /* src/patterns/footer/footer.css */
2269
+ .footer {
2270
+ /* color */
2271
+ /* color: var(--color-text);
2272
+ background: var(--color-bg);*/
2273
+ border-top:
2274
+ var(--border-size-width-min)
2275
+ solid
2276
+ var(--color-line);
2277
+
2278
+ /* typography */
2279
+ font-family: var(--font-note-family);
2280
+ font-size: var(--font-note);
2281
+ font-weight: var(--font-note-weight);
2282
+ line-height: var(--font-note-line);
2283
+ letter-spacing: var(--font-note-letter-spacing);
2284
+
2285
+ /* size */
2286
+ display: flex;
2287
+ align-items: center;
2288
+ justify-content: space-between;
2289
+ gap: var(--margin-menu);
2290
+
2291
+ width: 100%;
2292
+ min-height: 100px;
2293
+ padding: var(--size-padding-container);
2294
+
2295
+ overflow: hidden;
2296
+ box-sizing: border-box;
2297
+
2298
+ /* border */
2299
+
2300
+ /* depth */
2301
+
2302
+ /* motion */
2303
+ }
2304
+
2305
+ .footer__copyright {
2306
+ /* color */
2307
+
2308
+ /* typography */
2309
+
2310
+ /* size */
2311
+ display: flex;
2312
+ align-items: center;
2313
+ justify-content: center;
2314
+ flex-shrink: 0;
2315
+ white-space: nowrap;
2316
+
2317
+ /* border */
2318
+
2319
+ /* depth */
2320
+
2321
+ /* motion */
2322
+ }
2323
+
2324
+ .footer__links {
2325
+ /* color */
2326
+
2327
+ /* typography */
2328
+
2329
+ /* size */
2330
+ display: flex;
2331
+ align-items: center;
2332
+ gap: var(--margin-menu);
2333
+
2334
+ flex-shrink: 0;
2335
+
2336
+ white-space: nowrap;
2337
+
2338
+ /* border */
2339
+
2340
+ /* depth */
2341
+
2342
+ /* motion */
2343
+ }
2344
+
2345
+ .footer__links > * {
2346
+ display: flex;
2347
+ align-items: center;
2348
+ }
2349
+
2350
+ .footer a {
2351
+ /* color */
2352
+ color: inherit;
2353
+
2354
+ /* typography */
2355
+ text-decoration: underline;
2356
+ text-underline-position: from-font;
2357
+
2358
+ /* size */
2359
+
2360
+ /* border */
2361
+
2362
+ /* depth */
2363
+
2364
+ /* motion */
2365
+ }
2366
+
2367
+ @media (max-width: 1024px) {
2368
+ .footer {
2369
+ align-items: flex-start;
2370
+ flex-direction: column;
2371
+ justify-content: flex-start;
2372
+ }
2373
+
2374
+ .footer__copyright,
2375
+ .footer__links {
2376
+ white-space: normal;
2377
+ }
2378
+
2379
+ .footer__links {
2380
+ flex-wrap: wrap;
2381
+ }
2382
+ }
2383
+
2384
+ /* src/patterns/header/header.css */
2385
+ .header {
2386
+ /* color */
2387
+ color: var(--color-text);
2388
+
2389
+ /* typography */
2390
+
2391
+ /* size */
2392
+ display: flex;
2393
+ align-items: center;
2394
+ justify-content: space-between;
2395
+
2396
+ gap: var(--margin-menu);
2397
+
2398
+ width: 100%;
2399
+ min-height: 80px;
2400
+
2401
+ /* border */
2402
+
2403
+ /* depth */
2404
+
2405
+ /* motion */
2406
+ }
2407
+
2408
+ .header__logo {
2409
+ /* color */
2410
+
2411
+ /* typography */
2412
+
2413
+ /* size */
2414
+ display: flex;
2415
+ align-items: center;
2416
+ justify-content: flex-start;
2417
+
2418
+ flex-shrink: 0;
2419
+
2420
+ /* border */
2421
+
2422
+ /* depth */
2423
+
2424
+ /* motion */
2425
+ }
2426
+
2427
+ .header__menu {
2428
+ /* color */
2429
+
2430
+ /* typography */
2431
+
2432
+ /* size */
2433
+ display: flex;
2434
+ align-items: center;
2435
+ justify-content: center;
2436
+
2437
+ min-width: 0;
2438
+
2439
+ flex: 1;
2440
+
2441
+ /* border */
2442
+
2443
+ /* depth */
2444
+
2445
+ /* motion */
2446
+ }
2447
+
2448
+ .header__avatar {
2449
+ /* color */
2450
+
2451
+ /* typography */
2452
+
2453
+ /* size */
2454
+ display: flex;
2455
+ align-items: center;
2456
+ justify-content: flex-end;
2457
+
2458
+ flex-shrink: 0;
2459
+
2460
+ /* border */
2461
+
2462
+ /* depth */
2463
+
2464
+ /* motion */
2465
+ }
2466
+
2467
+ /* src/patterns/screen-header/screen-header.css */
2468
+ .screen-header {
2469
+ /* color */
2470
+ color: var(--color-text);
2471
+
2472
+ /* typography */
2473
+
2474
+ /* size */
2475
+ display: flex;
2476
+ flex-direction: column;
2477
+
2478
+ /* gap: var(--padding-container); */
2479
+
2480
+ width: 100%;
2481
+
2482
+ padding-bottom:
2483
+ var(--padding-container);
2484
+
2485
+ /* border */
2486
+
2487
+ /* depth */
2488
+
2489
+ /* motion */
2490
+ }
2491
+
2492
+ .screen-header__heading {
2493
+ /* color */
2494
+
2495
+ /* typography */
2496
+
2497
+ /* size */
2498
+ display: flex;
2499
+ flex-direction: column;
2500
+
2501
+ /* gap: var(--padding-tag);*/
2502
+
2503
+ margin-bottom: var(--font-h1-margin);
2504
+
2505
+ width: 100%;
2506
+
2507
+ /* border */
2508
+
2509
+ /* depth */
2510
+
2511
+ /* motion */
2512
+ }
2513
+
2514
+ .screen-header__section {
2515
+ /* color */
2516
+
2517
+ /* typography */
2518
+ font-family: var(--font-body-family);
2519
+ font-size: var(--font-body);
2520
+ font-weight: var(--font-body-weight);
2521
+ line-height: var(--font-body-line);
2522
+ letter-spacing: var(--font-body-letter-spacing);
2523
+
2524
+ /* size */
2525
+ width: 100%;
2526
+ margin: 0 0 var(--margin-descriptor) 0;
2527
+
2528
+ /* border */
2529
+
2530
+ /* depth */
2531
+
2532
+ /* motion */
2533
+ }
2534
+
2535
+ .screen-header__title {
2536
+ /* color */
2537
+
2538
+ /* typography */
2539
+ font-family: var(--font-h1-family);
2540
+ font-size: var(--font-h1);
2541
+ font-weight: var(--font-h1-weight);
2542
+ line-height: var(--font-h1-line);
2543
+ letter-spacing: var(--font-h1-letter-spacing);
2544
+
2545
+ /* size */
2546
+ width: 100%;
2547
+ margin: 0 0 var(--font-h1-margin) 0;
2548
+
2549
+ /* border */
2550
+
2551
+ /* depth */
2552
+
2553
+ /* motion */
2554
+ }
2555
+
2556
+ .screen-header__description {
2557
+ /* color */
2558
+
2559
+ /* typography */
2560
+ font-family: var(--font-lead-family);
2561
+ font-size: var(--font-lead);
2562
+ font-weight: var(--font-lead-weight);
2563
+ line-height: var(--font-lead-line);
2564
+ letter-spacing: var(--font-lead-letter-spacing);
2565
+
2566
+ /* size */
2567
+ width: 100%;
2568
+ margin: 0;
2569
+ /* max-width: 960px; */
2570
+
2571
+ /* border */
2572
+
2573
+ /* depth */
2574
+
2575
+ /* motion */
2576
+ }
2577
+
2578
+ .screen-header__tabs {
2579
+ /* color */
2580
+
2581
+ /* typography */
2582
+
2583
+ /* size */
2584
+ display: flex;
2585
+ align-items: center;
2586
+
2587
+ width: 100%;
2588
+
2589
+ /* border */
2590
+
2591
+ /* depth */
2592
+
2593
+ /* motion */
2594
+ }
2595
+
2596
+ /* src/layouts/base/base.css */
2597
+ .layout-base__header {
2598
+ /* color */
2599
+
2600
+ /* typography */
2601
+
2602
+ /* size */
2603
+ width: 100%;
2604
+
2605
+ /* border */
2606
+
2607
+ /* depth */
2608
+
2609
+ /* motion */
2610
+ }
2611
+
2612
+ .layout-base__main {
2613
+ /* color */
2614
+
2615
+ /* typography */
2616
+
2617
+ /* size */
2618
+ width: 100%;
2619
+
2620
+ /* border */
2621
+
2622
+ /* depth */
2623
+
2624
+ /* motion */
2625
+ }
2626
+
2627
+ .layout-base__footer {
2628
+ /* color */
2629
+
2630
+ /* typography */
2631
+
2632
+ /* size */
2633
+ width: 100%;
2634
+
2635
+ /* border */
2636
+
2637
+ /* depth */
2638
+
2639
+ /* motion */
2640
+ }
2641
+
2642
+ /* src/layouts/foundation/foundation.css */
2643
+ .layout-foundation {
2644
+ /* color */
2645
+ color: var(--color-text);
2646
+
2647
+ /* typography */
2648
+
2649
+ /* size */
2650
+ --layout-foundation-width: 960px;
2651
+ --layout-foundation-padding-horz: var(--size-grid-padding-horz);
2652
+ --layout-foundation-padding-vert: var(--size-grid-padding-vert);
2653
+ --layout-foundation-columns: 12;
2654
+ --layout-foundation-gap: var(--size-grid-margin);
2655
+
2656
+ width: 100%;
2657
+ min-height: 100dvh;
2658
+ max-width: var(--layout-foundation-width);
2659
+ margin: 0 auto;
2660
+ box-sizing: border-box;
2661
+
2662
+ /* border */
2663
+
2664
+ /* depth */
2665
+
2666
+ /* motion */
2667
+ }
2668
+
2669
+ .layout-foundation--narrow {
2670
+ --layout-foundation-width: 720px;
2671
+ }
2672
+
2673
+ .layout-foundation--wide {
2674
+ --layout-foundation-width: 1200px;
2675
+ }
2676
+
2677
+ .layout-foundation--full {
2678
+ max-width: none;
2679
+ }
2680
+
2681
+ .layout-foundation__grid {
2682
+ /* color */
2683
+
2684
+ /* typography */
2685
+
2686
+ /* size */
2687
+ display: grid;
2688
+ grid-template-columns: repeat(var(--layout-foundation-columns), minmax(0, 1fr));
2689
+ gap: var(--layout-foundation-gap);
2690
+ width: 100%;
2691
+ min-height: 100dvh;
2692
+ padding:
2693
+ var(--layout-foundation-padding-vert)
2694
+ var(--layout-foundation-padding-horz);
2695
+ box-sizing: border-box;
2696
+
2697
+ /* border */
2698
+
2699
+ /* depth */
2700
+
2701
+ /* motion */
2702
+ }
2703
+
2704
+ .layout-foundation__grid > * {
2705
+ grid-column: 1 / -1;
2706
+ }
2707
+
2708
+ @media (max-width: 1024px) {
2709
+ .layout-foundation {
2710
+ --layout-foundation-columns: 8;
2711
+ }
2712
+ }
2713
+
2714
+ @media (max-width: 640px) {
2715
+ .layout-foundation {
2716
+ --layout-foundation-columns: 4;
2717
+ }
2718
+ }
2719
+
2720
+ /* src/layouts/sidebar/sidebar.css */
2721
+ .layout-sidebar__header {
2722
+ /* color */
2723
+
2724
+ /* typography */
2725
+
2726
+ /* size */
2727
+ width: 100%;
2728
+
2729
+ /* border */
2730
+
2731
+ /* depth */
2732
+
2733
+ /* motion */
2734
+ }
2735
+
2736
+ .layout-sidebar__body {
2737
+ /* color */
2738
+
2739
+ /* typography */
2740
+
2741
+ /* size */
2742
+ display: grid;
2743
+ grid-template-columns: repeat(var(--layout-foundation-columns), minmax(0, 1fr));
2744
+ gap: var(--layout-foundation-gap);
2745
+ width: 100%;
2746
+
2747
+ /* border */
2748
+
2749
+ /* depth */
2750
+
2751
+ /* motion */
2752
+ }
2753
+
2754
+ .layout-sidebar__main {
2755
+ /* color */
2756
+
2757
+ /* typography */
2758
+
2759
+ /* size */
2760
+ grid-column: span 8;
2761
+ min-width: 0;
2762
+
2763
+ /* border */
2764
+
2765
+ /* depth */
2766
+
2767
+ /* motion */
2768
+ }
2769
+
2770
+ .layout-sidebar__side {
2771
+ /* color */
2772
+
2773
+ /* typography */
2774
+
2775
+ /* size */
2776
+ grid-column: span 4;
2777
+ min-width: 0;
2778
+
2779
+ /* border */
2780
+
2781
+ /* depth */
2782
+
2783
+ /* motion */
2784
+ }
2785
+
2786
+ .layout-sidebar__footer {
2787
+ /* color */
2788
+
2789
+ /* typography */
2790
+
2791
+ /* size */
2792
+ width: 100%;
2793
+
2794
+ /* border */
2795
+
2796
+ /* depth */
2797
+
2798
+ /* motion */
2799
+ }
2800
+
2801
+ @media (max-width: 1024px) {
2802
+ .layout-sidebar__main,
2803
+ .layout-sidebar__side {
2804
+ grid-column: 1 / -1;
2805
+ }
2806
+ }
2807
+