jvetrau-ds 0.2.6 → 0.2.7

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.
Files changed (50) hide show
  1. package/catalog/types.d.ts +12 -0
  2. package/components/action-group/action-group.meta.d.ts +2 -0
  3. package/components/attach/attach.meta.d.ts +2 -0
  4. package/components/avatar/avatar.meta.d.ts +2 -0
  5. package/components/avatar-upload/avatar-upload.meta.d.ts +2 -0
  6. package/components/breadcrumbs/breadcrumbs.meta.d.ts +2 -0
  7. package/components/button/button.meta.d.ts +2 -0
  8. package/components/calendar-month/calendar-month.meta.d.ts +2 -0
  9. package/components/card/card.meta.d.ts +2 -0
  10. package/components/card-group/card-group.meta.d.ts +2 -0
  11. package/components/checkbox/checkbox.meta.d.ts +2 -0
  12. package/components/course-outline/course-outline.meta.d.ts +2 -0
  13. package/components/discussion/discussion.meta.d.ts +2 -0
  14. package/components/dropdown/dropdown.meta.d.ts +2 -0
  15. package/components/field/field.meta.d.ts +2 -0
  16. package/components/field-group/field-group.meta.d.ts +2 -0
  17. package/components/flip-list/flip-list.meta.d.ts +2 -0
  18. package/components/helpers/helpers.meta.d.ts +2 -0
  19. package/components/input/input.meta.d.ts +2 -0
  20. package/components/logo/logo.meta.d.ts +10 -0
  21. package/components/markdown/markdown.meta.d.ts +2 -0
  22. package/components/menu/menu.meta.d.ts +2 -0
  23. package/components/panel/panel.cjs +20 -17
  24. package/components/panel/panel.cjs.map +1 -1
  25. package/components/panel/panel.css +39 -5
  26. package/components/panel/panel.d.ts +1 -0
  27. package/components/panel/panel.js +20 -17
  28. package/components/panel/panel.js.map +1 -1
  29. package/components/panel/panel.meta.d.ts +2 -0
  30. package/components/progressbar/progressbar.meta.d.ts +2 -0
  31. package/components/radio/radio.meta.d.ts +2 -0
  32. package/components/richedit/richedit.meta.d.ts +2 -0
  33. package/components/search/search.meta.d.ts +2 -0
  34. package/components/select/select.meta.d.ts +2 -0
  35. package/components/tabs/tabs.meta.d.ts +2 -0
  36. package/components/tag/tag.meta.d.ts +2 -0
  37. package/components/textarea/textarea.meta.d.ts +2 -0
  38. package/components/video/video.meta.d.ts +2 -0
  39. package/icons/icons.meta.d.ts +2 -0
  40. package/package.json +1 -1
  41. package/patterns/form/form.meta.d.ts +2 -0
  42. package/patterns/header/header.meta.d.ts +2 -0
  43. package/patterns/masthead/masthead.meta.d.ts +2 -0
  44. package/patterns/modal/modal.cjs +1 -0
  45. package/patterns/modal/modal.cjs.map +1 -1
  46. package/patterns/modal/modal.css +56 -7
  47. package/patterns/modal/modal.js +1 -0
  48. package/patterns/modal/modal.js.map +1 -1
  49. package/patterns/modal/modal.meta.d.ts +2 -0
  50. package/styles.css +95 -12
@@ -0,0 +1,12 @@
1
+ export type ComponentState = 'default' | 'primary' | 'hover' | 'focus' | 'active' | 'disabled' | 'error' | 'success' | 'checked' | 'unchecked' | 'loading' | 'idle' | 'playing' | 'paused' | string;
2
+ export interface ComponentMeta {
3
+ name: string;
4
+ purpose: string;
5
+ anatomy: string[];
6
+ states: ComponentState[];
7
+ props: string[];
8
+ usage: string[];
9
+ llmDescription: string;
10
+ example: string;
11
+ isPlaceholder?: boolean;
12
+ }
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const actionGroupMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const attachMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const avatarMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const avatarUploadMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const breadcrumbsMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const buttonMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const calendarMonthMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const cardMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const cardGroupMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const checkboxMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const courseOutlineMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const discussionMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const dropdownMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const fieldMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const fieldGroupMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const flipListMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const helpersMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const inputMeta: ComponentMeta;
@@ -0,0 +1,10 @@
1
+ export declare const logoMeta: {
2
+ name: string;
3
+ purpose: string;
4
+ anatomy: string[];
5
+ states: string[];
6
+ props: string[];
7
+ usage: string[];
8
+ llmDescription: string;
9
+ example: string;
10
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const markdownMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const menuMeta: ComponentMeta;
@@ -9,6 +9,7 @@ function hasContent(value) {
9
9
  }
10
10
  const Panel = ({
11
11
  layout = "card",
12
+ overflow = "visible",
12
13
  heading,
13
14
  headingLevel = 2,
14
15
  description,
@@ -20,34 +21,36 @@ const Panel = ({
20
21
  "panel",
21
22
  className,
22
23
  {
23
- "panel--transparent": layout === "transparent"
24
+ "panel--transparent": layout === "transparent",
25
+ "panel--content-overflow": overflow === "content"
24
26
  }
25
27
  );
26
28
  const HeadingTag = `h${headingLevel}`;
27
29
  const hasHeading = hasContent(heading);
28
30
  const hasDescription = hasContent(description);
29
- const hasHeader = hasHeading || hasDescription;
31
+ const hasChildren = hasContent(children);
32
+ const hasBody = hasDescription || hasChildren;
30
33
  return /* @__PURE__ */ jsxRuntime.jsxs(
31
34
  "section",
32
35
  {
33
36
  className: classes,
34
37
  ...props,
35
38
  children: [
36
- hasHeader && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "panel__header", children: [
37
- hasHeading && /* @__PURE__ */ jsxRuntime.jsx(
38
- HeadingTag,
39
- {
40
- className: classnames.classnames(
41
- "panel__heading",
42
- `panel__heading--h${headingLevel}`,
43
- {}
44
- ),
45
- children: heading
46
- }
47
- ),
48
- hasDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "panel__description", children: description })
49
- ] }),
50
- hasContent(children) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "panel__content", children })
39
+ hasHeading && /* @__PURE__ */ jsxRuntime.jsx(
40
+ HeadingTag,
41
+ {
42
+ className: classnames.classnames(
43
+ "panel__heading",
44
+ `panel__heading--h${headingLevel}`,
45
+ {}
46
+ ),
47
+ children: heading
48
+ }
49
+ ),
50
+ hasBody && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "panel__body", children: [
51
+ hasDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "panel__description", children: description }),
52
+ hasChildren && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "panel__content", children })
53
+ ] })
51
54
  ]
52
55
  }
53
56
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/panel/panel.tsx"],"names":["classnames","jsxs","jsx"],"mappings":";;;;;;AAaA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,QAA8B,CAAC;AAAA,EACnC,MAAA,GAAS,MAAA;AAAA,EACT,OAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,WAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,sBACE,MAAA,KAAW;AAAA;AACf,GACF;AAEA,EAAA,MAAM,UAAA,GACJ,IAAI,YAAY,CAAA,CAAA;AAElB,EAAA,MAAM,UAAA,GACJ,WAAW,OAAO,CAAA;AAEpB,EAAA,MAAM,cAAA,GACJ,WAAW,WAAW,CAAA;AAExB,EAAA,MAAM,YACJ,UAAA,IACA,cAAA;AAEF,EAAA,uBACEC,eAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,SAAA,oBACCA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACZ,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCC,cAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWF,qBAAA;AAAA,gBACT,gBAAA;AAAA,gBACA,oBAAoB,YAAY,CAAA,CAAA;AAAA,gBAChC;AAAC,eACH;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,cAAA,oBACCE,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sBACV,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QAGD,WAAW,QAAQ,CAAA,mCACjB,KAAA,EAAA,EAAI,SAAA,EAAU,kBACZ,QAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"panel.cjs","sourcesContent":["import React from 'react';\n\nimport './panel.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLElement> {\n layout?: 'card' | 'transparent';\n heading?: React.ReactNode;\n headingLevel?: 2 | 3;\n description?: React.ReactNode;\n}\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return (\n value !== null &&\n value !== undefined\n );\n}\n\nconst Panel: React.FC<PanelProps> = ({\n layout = 'card',\n heading,\n headingLevel = 2,\n description,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'panel',\n className,\n {\n 'panel--transparent':\n layout === 'transparent',\n },\n );\n\n const HeadingTag =\n `h${headingLevel}` as 'h2' | 'h3';\n\n const hasHeading =\n hasContent(heading);\n\n const hasDescription =\n hasContent(description);\n\n const hasHeader =\n hasHeading ||\n hasDescription;\n\n return (\n <section\n className={classes}\n {...props}\n >\n {hasHeader && (\n <div className=\"panel__header\">\n {hasHeading && (\n <HeadingTag\n className={classnames(\n 'panel__heading',\n `panel__heading--h${headingLevel}`,\n {},\n )}\n >\n {heading}\n </HeadingTag>\n )}\n\n {hasDescription && (\n <p className=\"panel__description\">\n {description}\n </p>\n )}\n </div>\n )}\n\n {hasContent(children) && (\n <div className=\"panel__content\">\n {children}\n </div>\n )}\n </section>\n );\n};\n\nexport default Panel;\n"]}
1
+ {"version":3,"sources":["../../../src/components/panel/panel.tsx"],"names":["classnames","jsxs","jsx"],"mappings":";;;;;;AAcA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,QAA8B,CAAC;AAAA,EACnC,MAAA,GAAS,MAAA;AAAA,EACT,QAAA,GAAW,SAAA;AAAA,EACX,OAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,WAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,sBACE,MAAA,KAAW,aAAA;AAAA,MACb,2BACE,QAAA,KAAa;AAAA;AACjB,GACF;AAEA,EAAA,MAAM,UAAA,GACJ,IAAI,YAAY,CAAA,CAAA;AAElB,EAAA,MAAM,UAAA,GACJ,WAAW,OAAO,CAAA;AAEpB,EAAA,MAAM,cAAA,GACJ,WAAW,WAAW,CAAA;AAExB,EAAA,MAAM,WAAA,GACJ,WAAW,QAAQ,CAAA;AAErB,EAAA,MAAM,UACJ,cAAA,IACA,WAAA;AAEF,EAAA,uBACEC,eAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,UAAA,oBACCC,cAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWF,qBAAA;AAAA,cACT,gBAAA;AAAA,cACA,oBAAoB,YAAY,CAAA,CAAA;AAAA,cAChC;AAAC,aACH;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAGD,OAAA,oBACCC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA;AAAA,UAAA,cAAA,oBACCC,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oBAAA,EACV,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,UAGD,WAAA,oBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBACZ,QAAA,EACH;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"panel.cjs","sourcesContent":["import React from 'react';\n\nimport './panel.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLElement> {\n layout?: 'card' | 'transparent';\n overflow?: 'visible' | 'content';\n heading?: React.ReactNode;\n headingLevel?: 2 | 3;\n description?: React.ReactNode;\n}\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return (\n value !== null &&\n value !== undefined\n );\n}\n\nconst Panel: React.FC<PanelProps> = ({\n layout = 'card',\n overflow = 'visible',\n heading,\n headingLevel = 2,\n description,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'panel',\n className,\n {\n 'panel--transparent':\n layout === 'transparent',\n 'panel--content-overflow':\n overflow === 'content',\n },\n );\n\n const HeadingTag =\n `h${headingLevel}` as 'h2' | 'h3';\n\n const hasHeading =\n hasContent(heading);\n\n const hasDescription =\n hasContent(description);\n\n const hasChildren =\n hasContent(children);\n\n const hasBody =\n hasDescription ||\n hasChildren;\n\n return (\n <section\n className={classes}\n {...props}\n >\n {hasHeading && (\n <HeadingTag\n className={classnames(\n 'panel__heading',\n `panel__heading--h${headingLevel}`,\n {},\n )}\n >\n {heading}\n </HeadingTag>\n )}\n\n {hasBody && (\n <div className=\"panel__body\">\n {hasDescription && (\n <p className=\"panel__description\">\n {description}\n </p>\n )}\n\n {hasChildren && (\n <div className=\"panel__content\">\n {children}\n </div>\n )}\n </div>\n )}\n </section>\n );\n};\n\nexport default Panel;\n"]}
@@ -50,16 +50,13 @@
50
50
  /* motion */
51
51
  }
52
52
 
53
- .panel__header {
53
+ .panel--content-overflow {
54
54
  /* color */
55
55
 
56
56
  /* typography */
57
57
 
58
58
  /* size */
59
- display: flex;
60
- flex-direction: column;
61
- gap: var(--panel-title-gap);
62
- width: 100%;
59
+ overflow: hidden;
63
60
 
64
61
  /* border */
65
62
 
@@ -75,6 +72,7 @@
75
72
  /* typography */
76
73
 
77
74
  /* size */
75
+ flex: 0 0 auto;
78
76
  margin: 0;
79
77
 
80
78
  /* border */
@@ -122,6 +120,24 @@
122
120
  /* motion */
123
121
  }
124
122
 
123
+ .panel__body {
124
+ /* color */
125
+
126
+ /* typography */
127
+
128
+ /* size */
129
+ display: flex;
130
+ flex-direction: column;
131
+ gap: var(--panel-title-gap);
132
+ width: 100%;
133
+
134
+ /* border */
135
+
136
+ /* depth */
137
+
138
+ /* motion */
139
+ }
140
+
125
141
  .panel__description {
126
142
  /* color */
127
143
  color: inherit;
@@ -155,5 +171,23 @@
155
171
 
156
172
  /* depth */
157
173
 
174
+ /* motion */
175
+ }
176
+
177
+ .panel--content-overflow .panel__body {
178
+ /* color */
179
+
180
+ /* typography */
181
+
182
+ /* size */
183
+ flex: 1;
184
+ min-height: 0;
185
+
186
+ overflow: auto;
187
+
188
+ /* border */
189
+
190
+ /* depth */
191
+
158
192
  /* motion */
159
193
  }
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import './panel.css';
3
3
  export interface PanelProps extends React.HTMLAttributes<HTMLElement> {
4
4
  layout?: 'card' | 'transparent';
5
+ overflow?: 'visible' | 'content';
5
6
  heading?: React.ReactNode;
6
7
  headingLevel?: 2 | 3;
7
8
  description?: React.ReactNode;
@@ -7,6 +7,7 @@ function hasContent(value) {
7
7
  }
8
8
  const Panel = ({
9
9
  layout = "card",
10
+ overflow = "visible",
10
11
  heading,
11
12
  headingLevel = 2,
12
13
  description,
@@ -18,34 +19,36 @@ const Panel = ({
18
19
  "panel",
19
20
  className,
20
21
  {
21
- "panel--transparent": layout === "transparent"
22
+ "panel--transparent": layout === "transparent",
23
+ "panel--content-overflow": overflow === "content"
22
24
  }
23
25
  );
24
26
  const HeadingTag = `h${headingLevel}`;
25
27
  const hasHeading = hasContent(heading);
26
28
  const hasDescription = hasContent(description);
27
- const hasHeader = hasHeading || hasDescription;
29
+ const hasChildren = hasContent(children);
30
+ const hasBody = hasDescription || hasChildren;
28
31
  return /* @__PURE__ */ jsxs(
29
32
  "section",
30
33
  {
31
34
  className: classes,
32
35
  ...props,
33
36
  children: [
34
- hasHeader && /* @__PURE__ */ jsxs("div", { className: "panel__header", children: [
35
- hasHeading && /* @__PURE__ */ jsx(
36
- HeadingTag,
37
- {
38
- className: classnames(
39
- "panel__heading",
40
- `panel__heading--h${headingLevel}`,
41
- {}
42
- ),
43
- children: heading
44
- }
45
- ),
46
- hasDescription && /* @__PURE__ */ jsx("p", { className: "panel__description", children: description })
47
- ] }),
48
- hasContent(children) && /* @__PURE__ */ jsx("div", { className: "panel__content", children })
37
+ hasHeading && /* @__PURE__ */ jsx(
38
+ HeadingTag,
39
+ {
40
+ className: classnames(
41
+ "panel__heading",
42
+ `panel__heading--h${headingLevel}`,
43
+ {}
44
+ ),
45
+ children: heading
46
+ }
47
+ ),
48
+ hasBody && /* @__PURE__ */ jsxs("div", { className: "panel__body", children: [
49
+ hasDescription && /* @__PURE__ */ jsx("p", { className: "panel__description", children: description }),
50
+ hasChildren && /* @__PURE__ */ jsx("div", { className: "panel__content", children })
51
+ ] })
49
52
  ]
50
53
  }
51
54
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/panel/panel.tsx"],"names":[],"mappings":";;;;AAaA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,QAA8B,CAAC;AAAA,EACnC,MAAA,GAAS,MAAA;AAAA,EACT,OAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,WAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,sBACE,MAAA,KAAW;AAAA;AACf,GACF;AAEA,EAAA,MAAM,UAAA,GACJ,IAAI,YAAY,CAAA,CAAA;AAElB,EAAA,MAAM,UAAA,GACJ,WAAW,OAAO,CAAA;AAEpB,EAAA,MAAM,cAAA,GACJ,WAAW,WAAW,CAAA;AAExB,EAAA,MAAM,YACJ,UAAA,IACA,cAAA;AAEF,EAAA,uBACE,IAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,SAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACZ,QAAA,EAAA;AAAA,UAAA,UAAA,oBACC,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,UAAA;AAAA,gBACT,gBAAA;AAAA,gBACA,oBAAoB,YAAY,CAAA,CAAA;AAAA,gBAChC;AAAC,eACH;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,cAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sBACV,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QAGD,WAAW,QAAQ,CAAA,wBACjB,KAAA,EAAA,EAAI,SAAA,EAAU,kBACZ,QAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"panel.js","sourcesContent":["import React from 'react';\n\nimport './panel.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLElement> {\n layout?: 'card' | 'transparent';\n heading?: React.ReactNode;\n headingLevel?: 2 | 3;\n description?: React.ReactNode;\n}\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return (\n value !== null &&\n value !== undefined\n );\n}\n\nconst Panel: React.FC<PanelProps> = ({\n layout = 'card',\n heading,\n headingLevel = 2,\n description,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'panel',\n className,\n {\n 'panel--transparent':\n layout === 'transparent',\n },\n );\n\n const HeadingTag =\n `h${headingLevel}` as 'h2' | 'h3';\n\n const hasHeading =\n hasContent(heading);\n\n const hasDescription =\n hasContent(description);\n\n const hasHeader =\n hasHeading ||\n hasDescription;\n\n return (\n <section\n className={classes}\n {...props}\n >\n {hasHeader && (\n <div className=\"panel__header\">\n {hasHeading && (\n <HeadingTag\n className={classnames(\n 'panel__heading',\n `panel__heading--h${headingLevel}`,\n {},\n )}\n >\n {heading}\n </HeadingTag>\n )}\n\n {hasDescription && (\n <p className=\"panel__description\">\n {description}\n </p>\n )}\n </div>\n )}\n\n {hasContent(children) && (\n <div className=\"panel__content\">\n {children}\n </div>\n )}\n </section>\n );\n};\n\nexport default Panel;\n"]}
1
+ {"version":3,"sources":["../../../src/components/panel/panel.tsx"],"names":[],"mappings":";;;;AAcA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,QAA8B,CAAC;AAAA,EACnC,MAAA,GAAS,MAAA;AAAA,EACT,QAAA,GAAW,SAAA;AAAA,EACX,OAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,WAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,sBACE,MAAA,KAAW,aAAA;AAAA,MACb,2BACE,QAAA,KAAa;AAAA;AACjB,GACF;AAEA,EAAA,MAAM,UAAA,GACJ,IAAI,YAAY,CAAA,CAAA;AAElB,EAAA,MAAM,UAAA,GACJ,WAAW,OAAO,CAAA;AAEpB,EAAA,MAAM,cAAA,GACJ,WAAW,WAAW,CAAA;AAExB,EAAA,MAAM,WAAA,GACJ,WAAW,QAAQ,CAAA;AAErB,EAAA,MAAM,UACJ,cAAA,IACA,WAAA;AAEF,EAAA,uBACE,IAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,UAAA,oBACC,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,UAAA;AAAA,cACT,gBAAA;AAAA,cACA,oBAAoB,YAAY,CAAA,CAAA;AAAA,cAChC;AAAC,aACH;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAGD,OAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA;AAAA,UAAA,cAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oBAAA,EACV,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,UAGD,WAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBACZ,QAAA,EACH;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"panel.js","sourcesContent":["import React from 'react';\n\nimport './panel.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLElement> {\n layout?: 'card' | 'transparent';\n overflow?: 'visible' | 'content';\n heading?: React.ReactNode;\n headingLevel?: 2 | 3;\n description?: React.ReactNode;\n}\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return (\n value !== null &&\n value !== undefined\n );\n}\n\nconst Panel: React.FC<PanelProps> = ({\n layout = 'card',\n overflow = 'visible',\n heading,\n headingLevel = 2,\n description,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'panel',\n className,\n {\n 'panel--transparent':\n layout === 'transparent',\n 'panel--content-overflow':\n overflow === 'content',\n },\n );\n\n const HeadingTag =\n `h${headingLevel}` as 'h2' | 'h3';\n\n const hasHeading =\n hasContent(heading);\n\n const hasDescription =\n hasContent(description);\n\n const hasChildren =\n hasContent(children);\n\n const hasBody =\n hasDescription ||\n hasChildren;\n\n return (\n <section\n className={classes}\n {...props}\n >\n {hasHeading && (\n <HeadingTag\n className={classnames(\n 'panel__heading',\n `panel__heading--h${headingLevel}`,\n {},\n )}\n >\n {heading}\n </HeadingTag>\n )}\n\n {hasBody && (\n <div className=\"panel__body\">\n {hasDescription && (\n <p className=\"panel__description\">\n {description}\n </p>\n )}\n\n {hasChildren && (\n <div className=\"panel__content\">\n {children}\n </div>\n )}\n </div>\n )}\n </section>\n );\n};\n\nexport default Panel;\n"]}
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const panelMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const progressBarMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const radioMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const richEditMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const searchMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const selectMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const tabsMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const tagMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const textareaMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const videoMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../catalog/types';
2
+ export declare const iconMeta: ComponentMeta;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jvetrau-ds",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "Multi-brand React design system with semantic tokens",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const formMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const headerMeta: ComponentMeta;
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const mastheadMeta: ComponentMeta;
@@ -79,6 +79,7 @@ const Modal = ({
79
79
  Panel__default.default,
80
80
  {
81
81
  layout: panelLayout,
82
+ overflow: "content",
82
83
  heading,
83
84
  description,
84
85
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/patterns/modal/modal.tsx"],"names":["useRef","classnames","useEffect","jsx","jsxs","Panel","Button"],"mappings":";;;;;;;;;;;;;;AA0CA,MAAM,QAA8B,CAAC;AAAA,EACnC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA,GAAe,QAAA;AAAA,EACf,IAAA,GAAO,SAAA;AAAA,EACP,eAAA,GAAkB,IAAA;AAAA,EAClB,aAAA,GAAgB,IAAA;AAAA,EAChB,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,SAAA,GACJA,aAA0B,IAAI,CAAA;AAEhC,EAAA,MAAM,OAAA,GAAUC,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,eACE,IAAA,KAAS,MAAA;AAAA,MACX,qBACE,YAAA,KACA;AAAA;AACJ,GACF;AAEA,EAAA,MAAM,WAAA,GACJ,YAAA,KAAiB,YAAA,GACb,aAAA,GACA,MAAA;AAEN,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,SACJ,SAAA,CAAU,OAAA;AAEZ,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAI,CAAC,OAAO,IAAA,EAAM;AAChB,QAAA,MAAA,CAAO,SAAA,EAAU;AAAA,MACnB;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,YAAA,GAAe,CACnB,KAAA,KAGG;AACH,IAAA,KAAA,CAAM,cAAA,EAAe;AAErB,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAClB,KAAA,KAGG;AACH,IAAA,OAAA,GAAU,KAAK,CAAA;AAEf,IAAA,IACE,MAAM,gBAAA,IACN,CAAC,mBACD,KAAA,CAAM,MAAA,KACJ,MAAM,aAAA,EACR;AACA,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MACX,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MAET,QAAA,kBAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,cAAA;AAAA,UAACE,sBAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,WAAA;AAAA,YACR,OAAA;AAAA,YACA,WAAA;AAAA,YAIC;AAAA;AAAA,SACH;AAAA,wBAEAF,cAAA;AAAA,UAACG,uBAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,SAAA;AAAA,YACL,IAAA,EAAK,OAAA;AAAA,YACL,SAAA,EAAU,cAAA;AAAA,YACV,YAAA,EAAY,UAAA;AAAA,YACZ,OAAA,EAAS;AAAA;AAAA;AACX,OAAA,EACF;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"modal.cjs","sourcesContent":["import React, {\n useEffect,\n useRef,\n} from 'react';\n\nimport './modal.css';\nimport Button from '../../components/button';\nimport { classnames } from '../../components/helpers/classnames';\nimport Panel from '../../components/panel';\n\ntype ModalNativeProps = Omit<\n React.DialogHTMLAttributes<HTMLDialogElement>,\n | 'children'\n | 'onCancel'\n | 'onClose'\n | 'open'\n>;\n\nexport interface ModalProps\n extends ModalNativeProps {\n open: boolean;\n onClose: () => void;\n\n heading?: React.ReactNode;\n description?: React.ReactNode;\n\n closeLabel: string;\n\n presentation?:\n | 'dialog'\n | 'fullscreen';\n\n size?:\n | 'default'\n | 'wide';\n\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n\n children?: React.ReactNode;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n heading,\n description,\n closeLabel,\n presentation = 'dialog',\n size = 'default',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className = '',\n children,\n onClick,\n ...props\n}) => {\n const dialogRef =\n useRef<HTMLDialogElement>(null);\n\n const classes = classnames(\n 'modal',\n className,\n {\n 'modal--wide':\n size === 'wide',\n 'modal--fullscreen':\n presentation ===\n 'fullscreen',\n },\n );\n\n const panelLayout =\n presentation === 'fullscreen'\n ? 'transparent'\n : 'card';\n\n useEffect(() => {\n const dialog =\n dialogRef.current;\n\n if (!dialog) {\n return;\n }\n\n if (open) {\n if (!dialog.open) {\n dialog.showModal();\n }\n\n return;\n }\n\n if (dialog.open) {\n dialog.close();\n }\n }, [open]);\n\n const handleCancel = (\n event: React.SyntheticEvent<\n HTMLDialogElement\n >,\n ) => {\n event.preventDefault();\n\n if (!closeOnEscape) {\n return;\n }\n\n onClose();\n };\n\n const handleClick = (\n event: React.MouseEvent<\n HTMLDialogElement\n >,\n ) => {\n onClick?.(event);\n\n if (\n event.defaultPrevented ||\n !closeOnBackdrop ||\n event.target !==\n event.currentTarget\n ) {\n return;\n }\n\n onClose();\n };\n\n return (\n <dialog\n {...props}\n ref={dialogRef}\n className={classes}\n onCancel={handleCancel}\n onClick={handleClick}\n >\n <div className=\"modal__surface\">\n <Panel\n layout={panelLayout}\n heading={heading}\n description={\n description\n }\n >\n {children}\n </Panel>\n\n <Button\n type=\"button\"\n mode=\"toolbar\"\n icon=\"close\"\n className=\"modal__close\"\n aria-label={closeLabel}\n onClick={onClose}\n />\n </div>\n </dialog>\n );\n};\n\nexport default Modal;\n"]}
1
+ {"version":3,"sources":["../../../src/patterns/modal/modal.tsx"],"names":["useRef","classnames","useEffect","jsx","jsxs","Panel","Button"],"mappings":";;;;;;;;;;;;;;AA0CA,MAAM,QAA8B,CAAC;AAAA,EACnC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA,GAAe,QAAA;AAAA,EACf,IAAA,GAAO,SAAA;AAAA,EACP,eAAA,GAAkB,IAAA;AAAA,EAClB,aAAA,GAAgB,IAAA;AAAA,EAChB,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,SAAA,GACJA,aAA0B,IAAI,CAAA;AAEhC,EAAA,MAAM,OAAA,GAAUC,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,eACE,IAAA,KAAS,MAAA;AAAA,MACX,qBACE,YAAA,KACA;AAAA;AACJ,GACF;AAEA,EAAA,MAAM,WAAA,GACJ,YAAA,KAAiB,YAAA,GACb,aAAA,GACA,MAAA;AAEN,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,SACJ,SAAA,CAAU,OAAA;AAEZ,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAI,CAAC,OAAO,IAAA,EAAM;AAChB,QAAA,MAAA,CAAO,SAAA,EAAU;AAAA,MACnB;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,YAAA,GAAe,CACnB,KAAA,KAGG;AACH,IAAA,KAAA,CAAM,cAAA,EAAe;AAErB,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAClB,KAAA,KAGG;AACH,IAAA,OAAA,GAAU,KAAK,CAAA;AAEf,IAAA,IACE,MAAM,gBAAA,IACN,CAAC,mBACD,KAAA,CAAM,MAAA,KACJ,MAAM,aAAA,EACR;AACA,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MACX,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MAET,QAAA,kBAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,cAAA;AAAA,UAACE,sBAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,WAAA;AAAA,YACR,QAAA,EAAS,SAAA;AAAA,YACT,OAAA;AAAA,YACA,WAAA;AAAA,YAIC;AAAA;AAAA,SACH;AAAA,wBAEAF,cAAA;AAAA,UAACG,uBAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,SAAA;AAAA,YACL,IAAA,EAAK,OAAA;AAAA,YACL,SAAA,EAAU,cAAA;AAAA,YACV,YAAA,EAAY,UAAA;AAAA,YACZ,OAAA,EAAS;AAAA;AAAA;AACX,OAAA,EACF;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"modal.cjs","sourcesContent":["import React, {\n useEffect,\n useRef,\n} from 'react';\n\nimport './modal.css';\nimport Button from '../../components/button';\nimport { classnames } from '../../components/helpers/classnames';\nimport Panel from '../../components/panel';\n\ntype ModalNativeProps = Omit<\n React.DialogHTMLAttributes<HTMLDialogElement>,\n | 'children'\n | 'onCancel'\n | 'onClose'\n | 'open'\n>;\n\nexport interface ModalProps\n extends ModalNativeProps {\n open: boolean;\n onClose: () => void;\n\n heading?: React.ReactNode;\n description?: React.ReactNode;\n\n closeLabel: string;\n\n presentation?:\n | 'dialog'\n | 'fullscreen';\n\n size?:\n | 'default'\n | 'wide';\n\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n\n children?: React.ReactNode;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n heading,\n description,\n closeLabel,\n presentation = 'dialog',\n size = 'default',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className = '',\n children,\n onClick,\n ...props\n}) => {\n const dialogRef =\n useRef<HTMLDialogElement>(null);\n\n const classes = classnames(\n 'modal',\n className,\n {\n 'modal--wide':\n size === 'wide',\n 'modal--fullscreen':\n presentation ===\n 'fullscreen',\n },\n );\n\n const panelLayout =\n presentation === 'fullscreen'\n ? 'transparent'\n : 'card';\n\n useEffect(() => {\n const dialog =\n dialogRef.current;\n\n if (!dialog) {\n return;\n }\n\n if (open) {\n if (!dialog.open) {\n dialog.showModal();\n }\n\n return;\n }\n\n if (dialog.open) {\n dialog.close();\n }\n }, [open]);\n\n const handleCancel = (\n event: React.SyntheticEvent<\n HTMLDialogElement\n >,\n ) => {\n event.preventDefault();\n\n if (!closeOnEscape) {\n return;\n }\n\n onClose();\n };\n\n const handleClick = (\n event: React.MouseEvent<\n HTMLDialogElement\n >,\n ) => {\n onClick?.(event);\n\n if (\n event.defaultPrevented ||\n !closeOnBackdrop ||\n event.target !==\n event.currentTarget\n ) {\n return;\n }\n\n onClose();\n };\n\n return (\n <dialog\n {...props}\n ref={dialogRef}\n className={classes}\n onCancel={handleCancel}\n onClick={handleClick}\n >\n <div className=\"modal__surface\">\n <Panel\n layout={panelLayout}\n overflow=\"content\"\n heading={heading}\n description={\n description\n }\n >\n {children}\n </Panel>\n\n <Button\n type=\"button\"\n mode=\"toolbar\"\n icon=\"close\"\n className=\"modal__close\"\n aria-label={closeLabel}\n onClick={onClose}\n />\n </div>\n </dialog>\n );\n};\n\nexport default Modal;\n"]}
@@ -1,7 +1,8 @@
1
1
  .modal {
2
2
  /* color */
3
- --modal-backdrop-bg: rgb(0 0 0 / 40%);
3
+ --modal-color: var(--color-text-container);
4
4
 
5
+ background: transparent;
5
6
  color: inherit;
6
7
 
7
8
  /* typography */
@@ -20,11 +21,39 @@
20
21
  margin: 0;
21
22
  padding: var(--modal-padding);
22
23
 
24
+ align-items: center;
25
+ justify-content: center;
26
+
27
+ /* border */
23
28
  border: 0;
24
29
 
30
+ /* depth */
31
+
32
+ /* motion */
33
+ }
34
+
35
+ .modal:not([open]) {
36
+ /* color */
37
+
38
+ /* typography */
39
+
40
+ /* size */
41
+ display: none;
42
+
43
+ /* border */
44
+
45
+ /* depth */
46
+
47
+ /* motion */
48
+ }
49
+
50
+ .modal[open] {
51
+ /* color */
52
+
53
+ /* typography */
54
+
55
+ /* size */
25
56
  display: flex;
26
- align-items: center;
27
- justify-content: center;
28
57
 
29
58
  /* border */
30
59
 
@@ -35,7 +64,7 @@
35
64
 
36
65
  .modal::backdrop {
37
66
  /* color */
38
- background: var(--modal-backdrop-bg);
67
+ background: rgb(0 0 0 / 40%);
39
68
 
40
69
  /* typography */
41
70
 
@@ -56,10 +85,28 @@
56
85
  /* size */
57
86
  position: relative;
58
87
 
88
+ display: flex;
89
+ flex-direction: column;
90
+
59
91
  width: var(--modal-content-width);
60
92
  max-height: 100%;
61
93
 
62
- overflow: auto;
94
+ overflow: hidden;
95
+
96
+ /* border */
97
+
98
+ /* depth */
99
+
100
+ /* motion */
101
+ }
102
+
103
+ .modal__surface > .panel {
104
+ /* color */
105
+
106
+ /* typography */
107
+
108
+ /* size */
109
+ min-height: 0;
63
110
 
64
111
  /* border */
65
112
 
@@ -70,6 +117,7 @@
70
117
 
71
118
  .modal__close {
72
119
  /* color */
120
+ color: var(--modal-color);
73
121
 
74
122
  /* typography */
75
123
 
@@ -102,6 +150,7 @@
102
150
 
103
151
  .modal--fullscreen {
104
152
  /* color */
153
+ --modal-color: var(--color-text);
105
154
 
106
155
  /* typography */
107
156
 
@@ -131,7 +180,7 @@
131
180
  height: 100%;
132
181
  max-height: none;
133
182
 
134
- overflow: auto;
183
+ overflow: hidden;
135
184
 
136
185
  /* border */
137
186
 
@@ -147,7 +196,7 @@
147
196
 
148
197
  /* size */
149
198
  flex: 1;
150
- min-height: 100%;
199
+ min-height: 0;
151
200
 
152
201
  /* border */
153
202
 
@@ -72,6 +72,7 @@ const Modal = ({
72
72
  Panel,
73
73
  {
74
74
  layout: panelLayout,
75
+ overflow: "content",
75
76
  heading,
76
77
  description,
77
78
  children
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/patterns/modal/modal.tsx"],"names":[],"mappings":";;;;;;;AA0CA,MAAM,QAA8B,CAAC;AAAA,EACnC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA,GAAe,QAAA;AAAA,EACf,IAAA,GAAO,SAAA;AAAA,EACP,eAAA,GAAkB,IAAA;AAAA,EAClB,aAAA,GAAgB,IAAA;AAAA,EAChB,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,SAAA,GACJ,OAA0B,IAAI,CAAA;AAEhC,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,eACE,IAAA,KAAS,MAAA;AAAA,MACX,qBACE,YAAA,KACA;AAAA;AACJ,GACF;AAEA,EAAA,MAAM,WAAA,GACJ,YAAA,KAAiB,YAAA,GACb,aAAA,GACA,MAAA;AAEN,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,SACJ,SAAA,CAAU,OAAA;AAEZ,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAI,CAAC,OAAO,IAAA,EAAM;AAChB,QAAA,MAAA,CAAO,SAAA,EAAU;AAAA,MACnB;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,YAAA,GAAe,CACnB,KAAA,KAGG;AACH,IAAA,KAAA,CAAM,cAAA,EAAe;AAErB,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAClB,KAAA,KAGG;AACH,IAAA,OAAA,GAAU,KAAK,CAAA;AAEf,IAAA,IACE,MAAM,gBAAA,IACN,CAAC,mBACD,KAAA,CAAM,MAAA,KACJ,MAAM,aAAA,EACR;AACA,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MACX,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MAET,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,WAAA;AAAA,YACR,OAAA;AAAA,YACA,WAAA;AAAA,YAIC;AAAA;AAAA,SACH;AAAA,wBAEA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,SAAA;AAAA,YACL,IAAA,EAAK,OAAA;AAAA,YACL,SAAA,EAAU,cAAA;AAAA,YACV,YAAA,EAAY,UAAA;AAAA,YACZ,OAAA,EAAS;AAAA;AAAA;AACX,OAAA,EACF;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"modal.js","sourcesContent":["import React, {\n useEffect,\n useRef,\n} from 'react';\n\nimport './modal.css';\nimport Button from '../../components/button';\nimport { classnames } from '../../components/helpers/classnames';\nimport Panel from '../../components/panel';\n\ntype ModalNativeProps = Omit<\n React.DialogHTMLAttributes<HTMLDialogElement>,\n | 'children'\n | 'onCancel'\n | 'onClose'\n | 'open'\n>;\n\nexport interface ModalProps\n extends ModalNativeProps {\n open: boolean;\n onClose: () => void;\n\n heading?: React.ReactNode;\n description?: React.ReactNode;\n\n closeLabel: string;\n\n presentation?:\n | 'dialog'\n | 'fullscreen';\n\n size?:\n | 'default'\n | 'wide';\n\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n\n children?: React.ReactNode;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n heading,\n description,\n closeLabel,\n presentation = 'dialog',\n size = 'default',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className = '',\n children,\n onClick,\n ...props\n}) => {\n const dialogRef =\n useRef<HTMLDialogElement>(null);\n\n const classes = classnames(\n 'modal',\n className,\n {\n 'modal--wide':\n size === 'wide',\n 'modal--fullscreen':\n presentation ===\n 'fullscreen',\n },\n );\n\n const panelLayout =\n presentation === 'fullscreen'\n ? 'transparent'\n : 'card';\n\n useEffect(() => {\n const dialog =\n dialogRef.current;\n\n if (!dialog) {\n return;\n }\n\n if (open) {\n if (!dialog.open) {\n dialog.showModal();\n }\n\n return;\n }\n\n if (dialog.open) {\n dialog.close();\n }\n }, [open]);\n\n const handleCancel = (\n event: React.SyntheticEvent<\n HTMLDialogElement\n >,\n ) => {\n event.preventDefault();\n\n if (!closeOnEscape) {\n return;\n }\n\n onClose();\n };\n\n const handleClick = (\n event: React.MouseEvent<\n HTMLDialogElement\n >,\n ) => {\n onClick?.(event);\n\n if (\n event.defaultPrevented ||\n !closeOnBackdrop ||\n event.target !==\n event.currentTarget\n ) {\n return;\n }\n\n onClose();\n };\n\n return (\n <dialog\n {...props}\n ref={dialogRef}\n className={classes}\n onCancel={handleCancel}\n onClick={handleClick}\n >\n <div className=\"modal__surface\">\n <Panel\n layout={panelLayout}\n heading={heading}\n description={\n description\n }\n >\n {children}\n </Panel>\n\n <Button\n type=\"button\"\n mode=\"toolbar\"\n icon=\"close\"\n className=\"modal__close\"\n aria-label={closeLabel}\n onClick={onClose}\n />\n </div>\n </dialog>\n );\n};\n\nexport default Modal;\n"]}
1
+ {"version":3,"sources":["../../../src/patterns/modal/modal.tsx"],"names":[],"mappings":";;;;;;;AA0CA,MAAM,QAA8B,CAAC;AAAA,EACnC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA,GAAe,QAAA;AAAA,EACf,IAAA,GAAO,SAAA;AAAA,EACP,eAAA,GAAkB,IAAA;AAAA,EAClB,aAAA,GAAgB,IAAA;AAAA,EAChB,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,SAAA,GACJ,OAA0B,IAAI,CAAA;AAEhC,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,eACE,IAAA,KAAS,MAAA;AAAA,MACX,qBACE,YAAA,KACA;AAAA;AACJ,GACF;AAEA,EAAA,MAAM,WAAA,GACJ,YAAA,KAAiB,YAAA,GACb,aAAA,GACA,MAAA;AAEN,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,SACJ,SAAA,CAAU,OAAA;AAEZ,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAI,CAAC,OAAO,IAAA,EAAM;AAChB,QAAA,MAAA,CAAO,SAAA,EAAU;AAAA,MACnB;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,YAAA,GAAe,CACnB,KAAA,KAGG;AACH,IAAA,KAAA,CAAM,cAAA,EAAe;AAErB,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAClB,KAAA,KAGG;AACH,IAAA,OAAA,GAAU,KAAK,CAAA;AAEf,IAAA,IACE,MAAM,gBAAA,IACN,CAAC,mBACD,KAAA,CAAM,MAAA,KACJ,MAAM,aAAA,EACR;AACA,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,EAAQ;AAAA,EACV,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,OAAA;AAAA,MACX,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MAET,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,WAAA;AAAA,YACR,QAAA,EAAS,SAAA;AAAA,YACT,OAAA;AAAA,YACA,WAAA;AAAA,YAIC;AAAA;AAAA,SACH;AAAA,wBAEA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,SAAA;AAAA,YACL,IAAA,EAAK,OAAA;AAAA,YACL,SAAA,EAAU,cAAA;AAAA,YACV,YAAA,EAAY,UAAA;AAAA,YACZ,OAAA,EAAS;AAAA;AAAA;AACX,OAAA,EACF;AAAA;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"modal.js","sourcesContent":["import React, {\n useEffect,\n useRef,\n} from 'react';\n\nimport './modal.css';\nimport Button from '../../components/button';\nimport { classnames } from '../../components/helpers/classnames';\nimport Panel from '../../components/panel';\n\ntype ModalNativeProps = Omit<\n React.DialogHTMLAttributes<HTMLDialogElement>,\n | 'children'\n | 'onCancel'\n | 'onClose'\n | 'open'\n>;\n\nexport interface ModalProps\n extends ModalNativeProps {\n open: boolean;\n onClose: () => void;\n\n heading?: React.ReactNode;\n description?: React.ReactNode;\n\n closeLabel: string;\n\n presentation?:\n | 'dialog'\n | 'fullscreen';\n\n size?:\n | 'default'\n | 'wide';\n\n closeOnBackdrop?: boolean;\n closeOnEscape?: boolean;\n\n children?: React.ReactNode;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n open,\n onClose,\n heading,\n description,\n closeLabel,\n presentation = 'dialog',\n size = 'default',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className = '',\n children,\n onClick,\n ...props\n}) => {\n const dialogRef =\n useRef<HTMLDialogElement>(null);\n\n const classes = classnames(\n 'modal',\n className,\n {\n 'modal--wide':\n size === 'wide',\n 'modal--fullscreen':\n presentation ===\n 'fullscreen',\n },\n );\n\n const panelLayout =\n presentation === 'fullscreen'\n ? 'transparent'\n : 'card';\n\n useEffect(() => {\n const dialog =\n dialogRef.current;\n\n if (!dialog) {\n return;\n }\n\n if (open) {\n if (!dialog.open) {\n dialog.showModal();\n }\n\n return;\n }\n\n if (dialog.open) {\n dialog.close();\n }\n }, [open]);\n\n const handleCancel = (\n event: React.SyntheticEvent<\n HTMLDialogElement\n >,\n ) => {\n event.preventDefault();\n\n if (!closeOnEscape) {\n return;\n }\n\n onClose();\n };\n\n const handleClick = (\n event: React.MouseEvent<\n HTMLDialogElement\n >,\n ) => {\n onClick?.(event);\n\n if (\n event.defaultPrevented ||\n !closeOnBackdrop ||\n event.target !==\n event.currentTarget\n ) {\n return;\n }\n\n onClose();\n };\n\n return (\n <dialog\n {...props}\n ref={dialogRef}\n className={classes}\n onCancel={handleCancel}\n onClick={handleClick}\n >\n <div className=\"modal__surface\">\n <Panel\n layout={panelLayout}\n overflow=\"content\"\n heading={heading}\n description={\n description\n }\n >\n {children}\n </Panel>\n\n <Button\n type=\"button\"\n mode=\"toolbar\"\n icon=\"close\"\n className=\"modal__close\"\n aria-label={closeLabel}\n onClick={onClose}\n />\n </div>\n </dialog>\n );\n};\n\nexport default Modal;\n"]}
@@ -0,0 +1,2 @@
1
+ import type { ComponentMeta } from '../../catalog/types';
2
+ export declare const modalMeta: ComponentMeta;
package/styles.css CHANGED
@@ -3614,16 +3614,13 @@
3614
3614
  /* motion */
3615
3615
  }
3616
3616
 
3617
- .panel__header {
3617
+ .panel--content-overflow {
3618
3618
  /* color */
3619
3619
 
3620
3620
  /* typography */
3621
3621
 
3622
3622
  /* size */
3623
- display: flex;
3624
- flex-direction: column;
3625
- gap: var(--panel-title-gap);
3626
- width: 100%;
3623
+ overflow: hidden;
3627
3624
 
3628
3625
  /* border */
3629
3626
 
@@ -3639,6 +3636,7 @@
3639
3636
  /* typography */
3640
3637
 
3641
3638
  /* size */
3639
+ flex: 0 0 auto;
3642
3640
  margin: 0;
3643
3641
 
3644
3642
  /* border */
@@ -3686,6 +3684,24 @@
3686
3684
  /* motion */
3687
3685
  }
3688
3686
 
3687
+ .panel__body {
3688
+ /* color */
3689
+
3690
+ /* typography */
3691
+
3692
+ /* size */
3693
+ display: flex;
3694
+ flex-direction: column;
3695
+ gap: var(--panel-title-gap);
3696
+ width: 100%;
3697
+
3698
+ /* border */
3699
+
3700
+ /* depth */
3701
+
3702
+ /* motion */
3703
+ }
3704
+
3689
3705
  .panel__description {
3690
3706
  /* color */
3691
3707
  color: inherit;
@@ -3722,6 +3738,24 @@
3722
3738
  /* motion */
3723
3739
  }
3724
3740
 
3741
+ .panel--content-overflow .panel__body {
3742
+ /* color */
3743
+
3744
+ /* typography */
3745
+
3746
+ /* size */
3747
+ flex: 1;
3748
+ min-height: 0;
3749
+
3750
+ overflow: auto;
3751
+
3752
+ /* border */
3753
+
3754
+ /* depth */
3755
+
3756
+ /* motion */
3757
+ }
3758
+
3725
3759
  /* src/components/progressbar/progressbar.css */
3726
3760
  .progressbar {
3727
3761
  /* color */
@@ -5220,8 +5254,9 @@
5220
5254
  /* src/patterns/modal/modal.css */
5221
5255
  .modal {
5222
5256
  /* color */
5223
- --modal-backdrop-bg: rgb(0 0 0 / 40%);
5257
+ --modal-color: var(--color-text-container);
5224
5258
 
5259
+ background: transparent;
5225
5260
  color: inherit;
5226
5261
 
5227
5262
  /* typography */
@@ -5240,11 +5275,39 @@
5240
5275
  margin: 0;
5241
5276
  padding: var(--modal-padding);
5242
5277
 
5278
+ align-items: center;
5279
+ justify-content: center;
5280
+
5281
+ /* border */
5243
5282
  border: 0;
5244
5283
 
5284
+ /* depth */
5285
+
5286
+ /* motion */
5287
+ }
5288
+
5289
+ .modal:not([open]) {
5290
+ /* color */
5291
+
5292
+ /* typography */
5293
+
5294
+ /* size */
5295
+ display: none;
5296
+
5297
+ /* border */
5298
+
5299
+ /* depth */
5300
+
5301
+ /* motion */
5302
+ }
5303
+
5304
+ .modal[open] {
5305
+ /* color */
5306
+
5307
+ /* typography */
5308
+
5309
+ /* size */
5245
5310
  display: flex;
5246
- align-items: center;
5247
- justify-content: center;
5248
5311
 
5249
5312
  /* border */
5250
5313
 
@@ -5255,7 +5318,7 @@
5255
5318
 
5256
5319
  .modal::backdrop {
5257
5320
  /* color */
5258
- background: var(--modal-backdrop-bg);
5321
+ background: rgb(0 0 0 / 40%);
5259
5322
 
5260
5323
  /* typography */
5261
5324
 
@@ -5276,10 +5339,28 @@
5276
5339
  /* size */
5277
5340
  position: relative;
5278
5341
 
5342
+ display: flex;
5343
+ flex-direction: column;
5344
+
5279
5345
  width: var(--modal-content-width);
5280
5346
  max-height: 100%;
5281
5347
 
5282
- overflow: auto;
5348
+ overflow: hidden;
5349
+
5350
+ /* border */
5351
+
5352
+ /* depth */
5353
+
5354
+ /* motion */
5355
+ }
5356
+
5357
+ .modal__surface > .panel {
5358
+ /* color */
5359
+
5360
+ /* typography */
5361
+
5362
+ /* size */
5363
+ min-height: 0;
5283
5364
 
5284
5365
  /* border */
5285
5366
 
@@ -5290,6 +5371,7 @@
5290
5371
 
5291
5372
  .modal__close {
5292
5373
  /* color */
5374
+ color: var(--modal-color);
5293
5375
 
5294
5376
  /* typography */
5295
5377
 
@@ -5322,6 +5404,7 @@
5322
5404
 
5323
5405
  .modal--fullscreen {
5324
5406
  /* color */
5407
+ --modal-color: var(--color-text);
5325
5408
 
5326
5409
  /* typography */
5327
5410
 
@@ -5351,7 +5434,7 @@
5351
5434
  height: 100%;
5352
5435
  max-height: none;
5353
5436
 
5354
- overflow: auto;
5437
+ overflow: hidden;
5355
5438
 
5356
5439
  /* border */
5357
5440
 
@@ -5367,7 +5450,7 @@
5367
5450
 
5368
5451
  /* size */
5369
5452
  flex: 1;
5370
- min-height: 100%;
5453
+ min-height: 0;
5371
5454
 
5372
5455
  /* border */
5373
5456