jvetrau-ds 0.2.20 → 0.2.23

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 (170) hide show
  1. package/base.css +31 -11
  2. package/components/action-group/action-group.css +43 -4
  3. package/components/action-group/index.cjs +10 -1
  4. package/components/action-group/index.d.ts +1 -1
  5. package/components/action-group/index.js +1 -1
  6. package/components/attach/attach.css +17 -0
  7. package/components/avatar/avatar.cjs +4 -1
  8. package/components/avatar/avatar.cjs.map +1 -1
  9. package/components/avatar/avatar.css +31 -1
  10. package/components/avatar/avatar.d.ts +2 -0
  11. package/components/avatar/avatar.js +4 -1
  12. package/components/avatar/avatar.js.map +1 -1
  13. package/components/avatar/index.d.ts +1 -1
  14. package/components/avatar-upload/avatar-upload.cjs +2 -1
  15. package/components/avatar-upload/avatar-upload.cjs.map +1 -1
  16. package/components/avatar-upload/avatar-upload.js +2 -1
  17. package/components/avatar-upload/avatar-upload.js.map +1 -1
  18. package/components/index.d.ts +1 -1
  19. package/components/markdown/markdown.css +0 -209
  20. package/fonts/fonts.css +2 -2
  21. package/index.d.ts +1 -1
  22. package/layouts/base/base.cjs +3 -1
  23. package/layouts/base/base.cjs.map +1 -1
  24. package/layouts/base/base.css +33 -1
  25. package/layouts/base/base.d.ts +2 -0
  26. package/layouts/base/base.js +3 -1
  27. package/layouts/base/base.js.map +1 -1
  28. package/layouts/sidebar/sidebar.cjs +6 -1
  29. package/layouts/sidebar/sidebar.cjs.map +1 -1
  30. package/layouts/sidebar/sidebar.css +33 -1
  31. package/layouts/sidebar/sidebar.d.ts +2 -0
  32. package/layouts/sidebar/sidebar.js +6 -1
  33. package/layouts/sidebar/sidebar.js.map +1 -1
  34. package/package.json +1 -1
  35. package/styles.css +155 -214
  36. package/themes/base/desktop.css +19 -7
  37. package/themes/base/desktop.md +19 -7
  38. package/themes/base/desktop.scoped.css +19 -7
  39. package/themes/base/diagram.css +18 -6
  40. package/themes/base/diagram.md +18 -6
  41. package/themes/base/diagram.scoped.css +18 -6
  42. package/themes/base/mobile.css +19 -7
  43. package/themes/base/mobile.md +19 -7
  44. package/themes/base/mobile.scoped.css +19 -7
  45. package/themes/brandcopilot/desktop.css +19 -7
  46. package/themes/brandcopilot/desktop.md +19 -7
  47. package/themes/brandcopilot/desktop.scoped.css +19 -7
  48. package/themes/brandcopilot/diagram.css +18 -6
  49. package/themes/brandcopilot/diagram.md +18 -6
  50. package/themes/brandcopilot/diagram.scoped.css +18 -6
  51. package/themes/brandcopilot/mobile.css +19 -7
  52. package/themes/brandcopilot/mobile.md +19 -7
  53. package/themes/brandcopilot/mobile.scoped.css +19 -7
  54. package/themes/dmpatterns/desktop.css +19 -7
  55. package/themes/dmpatterns/desktop.md +19 -7
  56. package/themes/dmpatterns/desktop.scoped.css +19 -7
  57. package/themes/dmpatterns/diagram.css +18 -6
  58. package/themes/dmpatterns/diagram.md +18 -6
  59. package/themes/dmpatterns/diagram.scoped.css +18 -6
  60. package/themes/dmpatterns/mobile.css +19 -7
  61. package/themes/dmpatterns/mobile.md +19 -7
  62. package/themes/dmpatterns/mobile.scoped.css +19 -7
  63. package/themes/pdigest/desktop.css +19 -7
  64. package/themes/pdigest/desktop.md +19 -7
  65. package/themes/pdigest/desktop.scoped.css +19 -7
  66. package/themes/pdigest/diagram.css +18 -6
  67. package/themes/pdigest/diagram.md +18 -6
  68. package/themes/pdigest/diagram.scoped.css +18 -6
  69. package/themes/pdigest/mobile.css +19 -7
  70. package/themes/pdigest/mobile.md +19 -7
  71. package/themes/pdigest/mobile.scoped.css +19 -7
  72. package/themes/retrack/desktop.css +19 -7
  73. package/themes/retrack/desktop.md +19 -7
  74. package/themes/retrack/desktop.scoped.css +19 -7
  75. package/themes/retrack/diagram.css +18 -6
  76. package/themes/retrack/diagram.md +18 -6
  77. package/themes/retrack/diagram.scoped.css +18 -6
  78. package/themes/retrack/mobile.css +19 -7
  79. package/themes/retrack/mobile.md +19 -7
  80. package/themes/retrack/mobile.scoped.css +19 -7
  81. package/tokens/runtime/tokens.base.desktop.runtime.cjs +12 -0
  82. package/tokens/runtime/tokens.base.desktop.runtime.cjs.map +1 -1
  83. package/tokens/runtime/tokens.base.desktop.runtime.d.ts +12 -0
  84. package/tokens/runtime/tokens.base.desktop.runtime.js +12 -0
  85. package/tokens/runtime/tokens.base.desktop.runtime.js.map +1 -1
  86. package/tokens/runtime/tokens.base.diagram.runtime.cjs +12 -0
  87. package/tokens/runtime/tokens.base.diagram.runtime.cjs.map +1 -1
  88. package/tokens/runtime/tokens.base.diagram.runtime.d.ts +12 -0
  89. package/tokens/runtime/tokens.base.diagram.runtime.js +12 -0
  90. package/tokens/runtime/tokens.base.diagram.runtime.js.map +1 -1
  91. package/tokens/runtime/tokens.base.mobile.runtime.cjs +12 -0
  92. package/tokens/runtime/tokens.base.mobile.runtime.cjs.map +1 -1
  93. package/tokens/runtime/tokens.base.mobile.runtime.d.ts +12 -0
  94. package/tokens/runtime/tokens.base.mobile.runtime.js +12 -0
  95. package/tokens/runtime/tokens.base.mobile.runtime.js.map +1 -1
  96. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.cjs +12 -0
  97. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.cjs.map +1 -1
  98. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.d.ts +12 -0
  99. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.js +12 -0
  100. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.js.map +1 -1
  101. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.cjs +12 -0
  102. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.cjs.map +1 -1
  103. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.d.ts +12 -0
  104. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.js +12 -0
  105. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.js.map +1 -1
  106. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.cjs +12 -0
  107. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.cjs.map +1 -1
  108. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.d.ts +12 -0
  109. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.js +12 -0
  110. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.js.map +1 -1
  111. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.cjs +12 -0
  112. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.cjs.map +1 -1
  113. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.d.ts +12 -0
  114. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.js +12 -0
  115. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.js.map +1 -1
  116. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.cjs +12 -0
  117. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.cjs.map +1 -1
  118. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.d.ts +12 -0
  119. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.js +12 -0
  120. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.js.map +1 -1
  121. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.cjs +12 -0
  122. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.cjs.map +1 -1
  123. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.d.ts +12 -0
  124. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.js +12 -0
  125. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.js.map +1 -1
  126. package/tokens/runtime/tokens.pdigest.desktop.runtime.cjs +12 -0
  127. package/tokens/runtime/tokens.pdigest.desktop.runtime.cjs.map +1 -1
  128. package/tokens/runtime/tokens.pdigest.desktop.runtime.d.ts +12 -0
  129. package/tokens/runtime/tokens.pdigest.desktop.runtime.js +12 -0
  130. package/tokens/runtime/tokens.pdigest.desktop.runtime.js.map +1 -1
  131. package/tokens/runtime/tokens.pdigest.diagram.runtime.cjs +12 -0
  132. package/tokens/runtime/tokens.pdigest.diagram.runtime.cjs.map +1 -1
  133. package/tokens/runtime/tokens.pdigest.diagram.runtime.d.ts +12 -0
  134. package/tokens/runtime/tokens.pdigest.diagram.runtime.js +12 -0
  135. package/tokens/runtime/tokens.pdigest.diagram.runtime.js.map +1 -1
  136. package/tokens/runtime/tokens.pdigest.mobile.runtime.cjs +12 -0
  137. package/tokens/runtime/tokens.pdigest.mobile.runtime.cjs.map +1 -1
  138. package/tokens/runtime/tokens.pdigest.mobile.runtime.d.ts +12 -0
  139. package/tokens/runtime/tokens.pdigest.mobile.runtime.js +12 -0
  140. package/tokens/runtime/tokens.pdigest.mobile.runtime.js.map +1 -1
  141. package/tokens/runtime/tokens.retrack.desktop.runtime.cjs +12 -0
  142. package/tokens/runtime/tokens.retrack.desktop.runtime.cjs.map +1 -1
  143. package/tokens/runtime/tokens.retrack.desktop.runtime.d.ts +12 -0
  144. package/tokens/runtime/tokens.retrack.desktop.runtime.js +12 -0
  145. package/tokens/runtime/tokens.retrack.desktop.runtime.js.map +1 -1
  146. package/tokens/runtime/tokens.retrack.diagram.runtime.cjs +12 -0
  147. package/tokens/runtime/tokens.retrack.diagram.runtime.cjs.map +1 -1
  148. package/tokens/runtime/tokens.retrack.diagram.runtime.d.ts +12 -0
  149. package/tokens/runtime/tokens.retrack.diagram.runtime.js +12 -0
  150. package/tokens/runtime/tokens.retrack.diagram.runtime.js.map +1 -1
  151. package/tokens/runtime/tokens.retrack.mobile.runtime.cjs +12 -0
  152. package/tokens/runtime/tokens.retrack.mobile.runtime.cjs.map +1 -1
  153. package/tokens/runtime/tokens.retrack.mobile.runtime.d.ts +12 -0
  154. package/tokens/runtime/tokens.retrack.mobile.runtime.js +12 -0
  155. package/tokens/runtime/tokens.retrack.mobile.runtime.js.map +1 -1
  156. package/tokens/themes/base/dist/desktop.json +98 -2
  157. package/tokens/themes/base/dist/diagram.json +97 -1
  158. package/tokens/themes/base/dist/mobile.json +98 -2
  159. package/tokens/themes/brandcopilot/dist/desktop.json +98 -2
  160. package/tokens/themes/brandcopilot/dist/diagram.json +97 -1
  161. package/tokens/themes/brandcopilot/dist/mobile.json +98 -2
  162. package/tokens/themes/dmpatterns/dist/desktop.json +98 -2
  163. package/tokens/themes/dmpatterns/dist/diagram.json +97 -1
  164. package/tokens/themes/dmpatterns/dist/mobile.json +98 -2
  165. package/tokens/themes/pdigest/dist/desktop.json +98 -2
  166. package/tokens/themes/pdigest/dist/diagram.json +97 -1
  167. package/tokens/themes/pdigest/dist/mobile.json +98 -2
  168. package/tokens/themes/retrack/dist/desktop.json +98 -2
  169. package/tokens/themes/retrack/dist/diagram.json +97 -1
  170. package/tokens/themes/retrack/dist/mobile.json +98 -2
package/base.css CHANGED
@@ -181,17 +181,6 @@ h4 {
181
181
 
182
182
  p {
183
183
  /* typography */
184
- --p-font-family: var(--font-body-family);
185
- --p-font-size: var(--font-body);
186
- --p-font-weight: var(--font-body-weight);
187
- --p-line-height: var(--font-body-line);
188
- --p-letter-spacing: var(--font-body-letter-spacing);
189
-
190
- font-family: var(--p-font-family);
191
- font-size: var(--p-font-size);
192
- font-weight: var(--p-font-weight);
193
- line-height: var(--p-line-height);
194
- letter-spacing: var(--p-letter-spacing);
195
184
 
196
185
  /* size */
197
186
  --p-margin: var(--font-body-margin);
@@ -205,3 +194,34 @@ p {
205
194
  /* motion */
206
195
  }
207
196
 
197
+ ul,
198
+ ol {
199
+ /* typography */
200
+
201
+ /* size */
202
+ --list-margin: var(--font-list-margin);
203
+
204
+ margin: 0 0 var(--list-margin);
205
+
206
+ /* border */
207
+
208
+ /* depth */
209
+
210
+ /* motion */
211
+ }
212
+
213
+ li {
214
+ /* typography */
215
+
216
+ /* size */
217
+ --li-margin: var(--font-list-item-margin);
218
+
219
+ margin: 0 0 var(--li-margin);
220
+
221
+ /* border */
222
+
223
+ /* depth */
224
+
225
+ /* motion */
226
+ }
227
+
@@ -1,24 +1,63 @@
1
1
  .action-group {
2
+ /* color */
3
+
4
+ /* typography */
5
+
6
+ /* size */
2
7
  display: flex;
3
8
  gap: var(--margin-control);
9
+
10
+ /* border */
11
+
12
+ /* depth */
13
+
14
+ /* motion */
4
15
  }
5
16
 
6
17
  .action-group--row {
18
+ /* color */
19
+
20
+ /* typography */
21
+
22
+ /* size */
7
23
  flex-direction: row;
8
24
  align-items: center;
9
25
  flex-wrap: wrap;
26
+
27
+ /* border */
28
+
29
+ /* depth */
30
+
31
+ /* motion */
10
32
  }
11
33
 
12
34
  .action-group--column {
35
+ /* color */
36
+
37
+ /* typography */
38
+
39
+ /* size */
13
40
  flex-direction: column;
14
41
  align-items: flex-start;
42
+
43
+ /* border */
44
+
45
+ /* depth */
46
+
47
+ /* motion */
15
48
  }
16
49
 
17
50
  .action-group--end {
51
+ /* color */
52
+
53
+ /* typography */
54
+
55
+ /* size */
18
56
  justify-content: flex-end;
19
- }
20
57
 
21
- .action-group--column.action-group--end {
22
- align-items: flex-end;
23
- justify-content: flex-start;
58
+ /* border */
59
+
60
+ /* depth */
61
+
62
+ /* motion */
24
63
  }
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
3
5
  var actionGroup = require('./action-group');
4
6
 
5
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -8,6 +10,13 @@ var actionGroup__default = /*#__PURE__*/_interopDefault(actionGroup);
8
10
 
9
11
 
10
12
 
11
- module.exports = actionGroup__default.default;
13
+ Object.defineProperty(exports, "ActionGroup", {
14
+ enumerable: true,
15
+ get: function () { return actionGroup__default.default; }
16
+ });
17
+ Object.defineProperty(exports, "default", {
18
+ enumerable: true,
19
+ get: function () { return actionGroup__default.default; }
20
+ });
12
21
  //# sourceMappingURL=index.cjs.map
13
22
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export { default } from './action-group';
1
+ export { default, default as ActionGroup, } from './action-group';
2
2
  export type { ActionGroupProps } from './action-group';
@@ -1,3 +1,3 @@
1
- export { default } from './action-group';
1
+ export { default as ActionGroup, default } from './action-group';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -37,6 +37,23 @@
37
37
  /* motion */
38
38
  }
39
39
 
40
+ .panel:not(.panel--transparent) .attach {
41
+ /* color */
42
+ --attachment-item-bg: var(--color-bg-contrast);
43
+ --attachment-item-color: var(--color-text-contrast);
44
+ --attachment-item-meta-color: var(--color-text-contrast);
45
+
46
+ /* typography */
47
+
48
+ /* size */
49
+
50
+ /* border */
51
+
52
+ /* depth */
53
+
54
+ /* motion */
55
+ }
56
+
40
57
  .attach__list {
41
58
  /* color */
42
59
 
@@ -13,6 +13,7 @@ const Avatar = ({
13
13
  src,
14
14
  alt = "",
15
15
  initials,
16
+ size = "base",
16
17
  className = "",
17
18
  onClick,
18
19
  ...props
@@ -21,7 +22,9 @@ const Avatar = ({
21
22
  const isInteractive = !!onClick;
22
23
  const showImage = Boolean(src) && src !== failedSrc;
23
24
  const classes = classnames.classnames("avatar", className, {
24
- "avatar--button": isInteractive
25
+ "avatar--button": isInteractive,
26
+ "avatar--preview": size === "preview",
27
+ "avatar--full": size === "full"
25
28
  });
26
29
  const content = showImage ? /* @__PURE__ */ jsxRuntime.jsx(
27
30
  "img",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/avatar/avatar.tsx"],"names":["React","classnames","jsx"],"mappings":";;;;;;;;;;;AA2BA,MAAM,SAAgC,CAAC;AAAA,EACrC,GAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAC5BA,uBAAM,QAAA,EAA6B;AAErC,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAC,OAAA;AAExB,EAAA,MAAM,SAAA,GACJ,OAAA,CAAQ,GAAG,CAAA,IAAK,GAAA,KAAQ,SAAA;AAE1B,EAAA,MAAM,OAAA,GAAUC,qBAAA,CAAW,QAAA,EAAU,SAAA,EAAW;AAAA,IAC9C,gBAAA,EAAkB;AAAA,GACnB,CAAA;AAED,EAAA,MAAM,UAAU,SAAA,mBACdC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,eAAA;AAAA,MACV,GAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAS,MAAM;AACb,QAAA,YAAA,CAAa,GAAG,CAAA;AAAA,MAClB;AAAA;AAAA,GACF,mBAEAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBACb,QAAA,EAAA,QAAA,EACH,CAAA;AAGF,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,uBACEA,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,OAAA;AAAA,QACX,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA,CAAM,YAAY,CAAA,IAAK,GAAA;AAAA,QACnC,OAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAY,GAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,cAAA,GAAQ","file":"avatar.cjs","sourcesContent":["import React from 'react';\nimport './avatar.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface AvatarBaseProps\n extends React.HTMLAttributes<HTMLDivElement> {\n src?: string;\n alt?: string;\n initials?: string;\n}\n\ntype AvatarStaticProps =\n AvatarBaseProps &\n React.HTMLAttributes<HTMLDivElement> & {\n onClick?: undefined;\n };\n\ntype AvatarButtonProps =\n AvatarBaseProps &\n React.ButtonHTMLAttributes<HTMLButtonElement> & {\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n };\n\nexport type AvatarProps =\n | AvatarStaticProps\n | AvatarButtonProps;\n\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n alt = '',\n initials,\n className = '',\n onClick,\n ...props\n}) => {\n const [failedSrc, setFailedSrc] =\n React.useState<string | undefined>();\n\n const isInteractive = !!onClick;\n\n const showImage =\n Boolean(src) && src !== failedSrc;\n\n const classes = classnames('avatar', className, {\n 'avatar--button': isInteractive,\n });\n\n const content = showImage ? (\n <img\n className=\"avatar__image\"\n src={src}\n alt={alt}\n onError={() => {\n setFailedSrc(src);\n }}\n />\n ) : (\n <span className=\"avatar__initials\">\n {initials}\n </span>\n );\n\n if (isInteractive) {\n return (\n <button\n className={classes}\n type=\"button\"\n aria-label={props['aria-label'] ?? alt}\n onClick={onClick}\n {...props as React.ButtonHTMLAttributes<HTMLButtonElement>}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div\n className={classes}\n aria-label={alt}\n {...props as React.HTMLAttributes<HTMLDivElement>}\n >\n {content}\n </div>\n );\n};\n\nexport default Avatar;\n"]}
1
+ {"version":3,"sources":["../../../src/components/avatar/avatar.tsx"],"names":["React","classnames","jsx"],"mappings":";;;;;;;;;;;AAiCA,MAAM,SAAgC,CAAC;AAAA,EACrC,GAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN,QAAA;AAAA,EACA,IAAA,GAAO,MAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAC5BA,uBAAM,QAAA,EAA6B;AAErC,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAC,OAAA;AAExB,EAAA,MAAM,SAAA,GACJ,OAAA,CAAQ,GAAG,CAAA,IAAK,GAAA,KAAQ,SAAA;AAE1B,EAAA,MAAM,OAAA,GAAUC,qBAAA,CAAW,QAAA,EAAU,SAAA,EAAW;AAAA,IAC9C,gBAAA,EAAkB,aAAA;AAAA,IAClB,mBAAmB,IAAA,KAAS,SAAA;AAAA,IAC5B,gBAAgB,IAAA,KAAS;AAAA,GAC1B,CAAA;AAED,EAAA,MAAM,UAAU,SAAA,mBACdC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,eAAA;AAAA,MACV,GAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAS,MAAM;AACb,QAAA,YAAA,CAAa,GAAG,CAAA;AAAA,MAClB;AAAA;AAAA,GACF,mBAEAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBACb,QAAA,EAAA,QAAA,EACH,CAAA;AAGF,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,uBACEA,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,OAAA;AAAA,QACX,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA,CAAM,YAAY,CAAA,IAAK,GAAA;AAAA,QACnC,OAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAY,GAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,cAAA,GAAQ","file":"avatar.cjs","sourcesContent":["import React from 'react';\nimport './avatar.css';\nimport { classnames } from '../helpers/classnames';\n\nexport type AvatarSize =\n | 'base'\n | 'preview'\n | 'full';\n\nexport interface AvatarBaseProps\n extends React.HTMLAttributes<HTMLDivElement> {\n src?: string;\n alt?: string;\n initials?: string;\n size?: AvatarSize;\n}\n\ntype AvatarStaticProps =\n AvatarBaseProps &\n React.HTMLAttributes<HTMLDivElement> & {\n onClick?: undefined;\n };\n\ntype AvatarButtonProps =\n AvatarBaseProps &\n React.ButtonHTMLAttributes<HTMLButtonElement> & {\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n };\n\nexport type AvatarProps =\n | AvatarStaticProps\n | AvatarButtonProps;\n\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n alt = '',\n initials,\n size = 'base',\n className = '',\n onClick,\n ...props\n}) => {\n const [failedSrc, setFailedSrc] =\n React.useState<string | undefined>();\n\n const isInteractive = !!onClick;\n\n const showImage =\n Boolean(src) && src !== failedSrc;\n\n const classes = classnames('avatar', className, {\n 'avatar--button': isInteractive,\n 'avatar--preview': size === 'preview',\n 'avatar--full': size === 'full',\n });\n\n const content = showImage ? (\n <img\n className=\"avatar__image\"\n src={src}\n alt={alt}\n onError={() => {\n setFailedSrc(src);\n }}\n />\n ) : (\n <span className=\"avatar__initials\">\n {initials}\n </span>\n );\n\n if (isInteractive) {\n return (\n <button\n className={classes}\n type=\"button\"\n aria-label={props['aria-label'] ?? alt}\n onClick={onClick}\n {...props as React.ButtonHTMLAttributes<HTMLButtonElement>}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div\n className={classes}\n aria-label={alt}\n {...props as React.HTMLAttributes<HTMLDivElement>}\n >\n {content}\n </div>\n );\n};\n\nexport default Avatar;\n"]}
@@ -20,7 +20,7 @@
20
20
  letter-spacing: var(--avatar-letter-spacing);
21
21
 
22
22
  /* size */
23
- --avatar-size: 48px;
23
+ --avatar-size: var(--size-avatar-base);
24
24
 
25
25
  display: inline-flex;
26
26
  align-items: center;
@@ -39,6 +39,36 @@
39
39
  /* motion */
40
40
  }
41
41
 
42
+ .avatar--preview {
43
+ /* color */
44
+
45
+ /* typography */
46
+
47
+ /* size */
48
+ --avatar-size: var(--size-avatar-preview);
49
+
50
+ /* border */
51
+
52
+ /* depth */
53
+
54
+ /* motion */
55
+ }
56
+
57
+ .avatar--full {
58
+ /* color */
59
+
60
+ /* typography */
61
+
62
+ /* size */
63
+ --avatar-size: var(--size-avatar-full);
64
+
65
+ /* border */
66
+
67
+ /* depth */
68
+
69
+ /* motion */
70
+ }
71
+
42
72
  .avatar--button {
43
73
  /* color */
44
74
 
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
2
  import './avatar.css';
3
+ export type AvatarSize = 'base' | 'preview' | 'full';
3
4
  export interface AvatarBaseProps extends React.HTMLAttributes<HTMLDivElement> {
4
5
  src?: string;
5
6
  alt?: string;
6
7
  initials?: string;
8
+ size?: AvatarSize;
7
9
  }
8
10
  type AvatarStaticProps = AvatarBaseProps & React.HTMLAttributes<HTMLDivElement> & {
9
11
  onClick?: undefined;
@@ -7,6 +7,7 @@ const Avatar = ({
7
7
  src,
8
8
  alt = "",
9
9
  initials,
10
+ size = "base",
10
11
  className = "",
11
12
  onClick,
12
13
  ...props
@@ -15,7 +16,9 @@ const Avatar = ({
15
16
  const isInteractive = !!onClick;
16
17
  const showImage = Boolean(src) && src !== failedSrc;
17
18
  const classes = classnames("avatar", className, {
18
- "avatar--button": isInteractive
19
+ "avatar--button": isInteractive,
20
+ "avatar--preview": size === "preview",
21
+ "avatar--full": size === "full"
19
22
  });
20
23
  const content = showImage ? /* @__PURE__ */ jsx(
21
24
  "img",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/avatar/avatar.tsx"],"names":[],"mappings":";;;;;AA2BA,MAAM,SAAgC,CAAC;AAAA,EACrC,GAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAC5B,MAAM,QAAA,EAA6B;AAErC,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAC,OAAA;AAExB,EAAA,MAAM,SAAA,GACJ,OAAA,CAAQ,GAAG,CAAA,IAAK,GAAA,KAAQ,SAAA;AAE1B,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,QAAA,EAAU,SAAA,EAAW;AAAA,IAC9C,gBAAA,EAAkB;AAAA,GACnB,CAAA;AAED,EAAA,MAAM,UAAU,SAAA,mBACd,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,eAAA;AAAA,MACV,GAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAS,MAAM;AACb,QAAA,YAAA,CAAa,GAAG,CAAA;AAAA,MAClB;AAAA;AAAA,GACF,mBAEA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBACb,QAAA,EAAA,QAAA,EACH,CAAA;AAGF,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,OAAA;AAAA,QACX,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA,CAAM,YAAY,CAAA,IAAK,GAAA;AAAA,QACnC,OAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAY,GAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,cAAA,GAAQ","file":"avatar.js","sourcesContent":["import React from 'react';\nimport './avatar.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface AvatarBaseProps\n extends React.HTMLAttributes<HTMLDivElement> {\n src?: string;\n alt?: string;\n initials?: string;\n}\n\ntype AvatarStaticProps =\n AvatarBaseProps &\n React.HTMLAttributes<HTMLDivElement> & {\n onClick?: undefined;\n };\n\ntype AvatarButtonProps =\n AvatarBaseProps &\n React.ButtonHTMLAttributes<HTMLButtonElement> & {\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n };\n\nexport type AvatarProps =\n | AvatarStaticProps\n | AvatarButtonProps;\n\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n alt = '',\n initials,\n className = '',\n onClick,\n ...props\n}) => {\n const [failedSrc, setFailedSrc] =\n React.useState<string | undefined>();\n\n const isInteractive = !!onClick;\n\n const showImage =\n Boolean(src) && src !== failedSrc;\n\n const classes = classnames('avatar', className, {\n 'avatar--button': isInteractive,\n });\n\n const content = showImage ? (\n <img\n className=\"avatar__image\"\n src={src}\n alt={alt}\n onError={() => {\n setFailedSrc(src);\n }}\n />\n ) : (\n <span className=\"avatar__initials\">\n {initials}\n </span>\n );\n\n if (isInteractive) {\n return (\n <button\n className={classes}\n type=\"button\"\n aria-label={props['aria-label'] ?? alt}\n onClick={onClick}\n {...props as React.ButtonHTMLAttributes<HTMLButtonElement>}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div\n className={classes}\n aria-label={alt}\n {...props as React.HTMLAttributes<HTMLDivElement>}\n >\n {content}\n </div>\n );\n};\n\nexport default Avatar;\n"]}
1
+ {"version":3,"sources":["../../../src/components/avatar/avatar.tsx"],"names":[],"mappings":";;;;;AAiCA,MAAM,SAAgC,CAAC;AAAA,EACrC,GAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN,QAAA;AAAA,EACA,IAAA,GAAO,MAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAC5B,MAAM,QAAA,EAA6B;AAErC,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAC,OAAA;AAExB,EAAA,MAAM,SAAA,GACJ,OAAA,CAAQ,GAAG,CAAA,IAAK,GAAA,KAAQ,SAAA;AAE1B,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,QAAA,EAAU,SAAA,EAAW;AAAA,IAC9C,gBAAA,EAAkB,aAAA;AAAA,IAClB,mBAAmB,IAAA,KAAS,SAAA;AAAA,IAC5B,gBAAgB,IAAA,KAAS;AAAA,GAC1B,CAAA;AAED,EAAA,MAAM,UAAU,SAAA,mBACd,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,eAAA;AAAA,MACV,GAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAS,MAAM;AACb,QAAA,YAAA,CAAa,GAAG,CAAA;AAAA,MAClB;AAAA;AAAA,GACF,mBAEA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBACb,QAAA,EAAA,QAAA,EACH,CAAA;AAGF,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,OAAA;AAAA,QACX,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA,CAAM,YAAY,CAAA,IAAK,GAAA;AAAA,QACnC,OAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAY,GAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,cAAA,GAAQ","file":"avatar.js","sourcesContent":["import React from 'react';\nimport './avatar.css';\nimport { classnames } from '../helpers/classnames';\n\nexport type AvatarSize =\n | 'base'\n | 'preview'\n | 'full';\n\nexport interface AvatarBaseProps\n extends React.HTMLAttributes<HTMLDivElement> {\n src?: string;\n alt?: string;\n initials?: string;\n size?: AvatarSize;\n}\n\ntype AvatarStaticProps =\n AvatarBaseProps &\n React.HTMLAttributes<HTMLDivElement> & {\n onClick?: undefined;\n };\n\ntype AvatarButtonProps =\n AvatarBaseProps &\n React.ButtonHTMLAttributes<HTMLButtonElement> & {\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n };\n\nexport type AvatarProps =\n | AvatarStaticProps\n | AvatarButtonProps;\n\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n alt = '',\n initials,\n size = 'base',\n className = '',\n onClick,\n ...props\n}) => {\n const [failedSrc, setFailedSrc] =\n React.useState<string | undefined>();\n\n const isInteractive = !!onClick;\n\n const showImage =\n Boolean(src) && src !== failedSrc;\n\n const classes = classnames('avatar', className, {\n 'avatar--button': isInteractive,\n 'avatar--preview': size === 'preview',\n 'avatar--full': size === 'full',\n });\n\n const content = showImage ? (\n <img\n className=\"avatar__image\"\n src={src}\n alt={alt}\n onError={() => {\n setFailedSrc(src);\n }}\n />\n ) : (\n <span className=\"avatar__initials\">\n {initials}\n </span>\n );\n\n if (isInteractive) {\n return (\n <button\n className={classes}\n type=\"button\"\n aria-label={props['aria-label'] ?? alt}\n onClick={onClick}\n {...props as React.ButtonHTMLAttributes<HTMLButtonElement>}\n >\n {content}\n </button>\n );\n }\n\n return (\n <div\n className={classes}\n aria-label={alt}\n {...props as React.HTMLAttributes<HTMLDivElement>}\n >\n {content}\n </div>\n );\n};\n\nexport default Avatar;\n"]}
@@ -1,2 +1,2 @@
1
1
  export { default } from './avatar';
2
- export type { AvatarProps } from './avatar';
2
+ export type { AvatarProps, AvatarSize, } from './avatar';
@@ -71,7 +71,8 @@ const AvatarUpload = ({
71
71
  className: "avatar-upload__avatar",
72
72
  src,
73
73
  initials,
74
- alt
74
+ alt,
75
+ size: "preview"
75
76
  }
76
77
  ),
77
78
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/avatar-upload/avatar-upload.tsx"],"names":["React","classnames","jsxs","jsx","Avatar","Button"],"mappings":"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","file":"avatar-upload.cjs","sourcesContent":["import React from 'react';\n\nimport './avatar-upload.css';\nimport Avatar from '../avatar/avatar';\nimport Button from '../button/button';\nimport { classnames } from '../helpers/classnames';\n\nexport interface AvatarUploadProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n src?: string;\n initials?: string;\n alt?: string;\n accept?: string;\n disabled?: boolean;\n loading?: boolean;\n error?: React.ReactNode;\n selectLabel: React.ReactNode;\n onFileSelect: (file: File) => void;\n}\n\nconst AvatarUpload: React.FC<\n AvatarUploadProps\n> = ({\n src,\n initials,\n alt,\n accept,\n disabled = false,\n loading = false,\n error,\n selectLabel,\n onFileSelect,\n className = '',\n ...props\n}) => {\n const inputRef =\n React.useRef<HTMLInputElement>(\n null,\n );\n\n const reactId = React.useId();\n\n const errorId = `${reactId}-error`;\n\n const hasError =\n error !== null &&\n error !== undefined;\n\n const isDisabled =\n disabled || loading;\n\n const classes = classnames(\n 'avatar-upload',\n className,\n {\n 'avatar-upload--disabled':\n isDisabled,\n 'avatar-upload--loading':\n loading,\n 'avatar-upload--error':\n hasError,\n },\n );\n\n const handleSelectClick = () => {\n if (isDisabled) {\n return;\n }\n\n inputRef.current?.click();\n };\n\n const handleFileChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n /*\n * Reset the native input after reading\n * the selected file so the same file\n * can be selected again later.\n */\n input.value = '';\n\n if (!file) {\n return;\n }\n\n onFileSelect(file);\n };\n\n const resolvedAriaBusy = loading\n ? true\n : props['aria-busy'];\n\n return (\n <div\n {...props}\n className={classes}\n aria-busy={resolvedAriaBusy}\n >\n <Avatar\n className=\"avatar-upload__avatar\"\n src={src}\n initials={initials}\n alt={alt}\n />\n\n <input\n ref={inputRef}\n className=\"avatar-upload__input\"\n type=\"file\"\n accept={accept}\n disabled={isDisabled}\n onChange={handleFileChange}\n />\n\n <Button\n className=\"avatar-upload__button\"\n type=\"button\"\n rank=\"link\"\n disabled={isDisabled}\n aria-describedby={\n hasError\n ? errorId\n : undefined\n }\n onClick={handleSelectClick}\n >\n {selectLabel}\n </Button>\n\n {hasError && (\n <div\n className=\"avatar-upload__error\"\n id={errorId}\n role=\"alert\"\n >\n {error}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarUpload;\n"]}
1
+ {"version":3,"sources":["../../../src/components/avatar-upload/avatar-upload.tsx"],"names":["React","classnames","jsxs","jsx","Avatar","Button"],"mappings":"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","file":"avatar-upload.cjs","sourcesContent":["import React from 'react';\n\nimport './avatar-upload.css';\nimport Avatar from '../avatar/avatar';\nimport Button from '../button/button';\nimport { classnames } from '../helpers/classnames';\n\nexport interface AvatarUploadProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n src?: string;\n initials?: string;\n alt?: string;\n accept?: string;\n disabled?: boolean;\n loading?: boolean;\n error?: React.ReactNode;\n selectLabel: React.ReactNode;\n onFileSelect: (file: File) => void;\n}\n\nconst AvatarUpload: React.FC<\n AvatarUploadProps\n> = ({\n src,\n initials,\n alt,\n accept,\n disabled = false,\n loading = false,\n error,\n selectLabel,\n onFileSelect,\n className = '',\n ...props\n}) => {\n const inputRef =\n React.useRef<HTMLInputElement>(\n null,\n );\n\n const reactId = React.useId();\n\n const errorId = `${reactId}-error`;\n\n const hasError =\n error !== null &&\n error !== undefined;\n\n const isDisabled =\n disabled || loading;\n\n const classes = classnames(\n 'avatar-upload',\n className,\n {\n 'avatar-upload--disabled':\n isDisabled,\n 'avatar-upload--loading':\n loading,\n 'avatar-upload--error':\n hasError,\n },\n );\n\n const handleSelectClick = () => {\n if (isDisabled) {\n return;\n }\n\n inputRef.current?.click();\n };\n\n const handleFileChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n /*\n * Reset the native input after reading\n * the selected file so the same file\n * can be selected again later.\n */\n input.value = '';\n\n if (!file) {\n return;\n }\n\n onFileSelect(file);\n };\n\n const resolvedAriaBusy = loading\n ? true\n : props['aria-busy'];\n\n return (\n <div\n {...props}\n className={classes}\n aria-busy={resolvedAriaBusy}\n >\n <Avatar\n className=\"avatar-upload__avatar\"\n src={src}\n initials={initials}\n alt={alt}\n size=\"preview\"\n />\n\n <input\n ref={inputRef}\n className=\"avatar-upload__input\"\n type=\"file\"\n accept={accept}\n disabled={isDisabled}\n onChange={handleFileChange}\n />\n\n <Button\n className=\"avatar-upload__button\"\n type=\"button\"\n rank=\"link\"\n disabled={isDisabled}\n aria-describedby={\n hasError\n ? errorId\n : undefined\n }\n onClick={handleSelectClick}\n >\n {selectLabel}\n </Button>\n\n {hasError && (\n <div\n className=\"avatar-upload__error\"\n id={errorId}\n role=\"alert\"\n >\n {error}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarUpload;\n"]}
@@ -63,7 +63,8 @@ const AvatarUpload = ({
63
63
  className: "avatar-upload__avatar",
64
64
  src,
65
65
  initials,
66
- alt
66
+ alt,
67
+ size: "preview"
67
68
  }
68
69
  ),
69
70
  /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/avatar-upload/avatar-upload.tsx"],"names":[],"mappings":";;;;;;;AAuBA,MAAM,eAEF,CAAC;AAAA,EACH,GAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,WACJ,KAAA,CAAM,MAAA;AAAA,IACJ;AAAA,GACF;AAEF,EAAA,MAAM,OAAA,GAAU,MAAM,KAAA,EAAM;AAE5B,EAAA,MAAM,OAAA,GAAU,GAAG,OAAO,CAAA,MAAA,CAAA;AAE1B,EAAA,MAAM,QAAA,GACJ,KAAA,KAAU,IAAA,IACV,KAAA,KAAU,MAAA;AAEZ,EAAA,MAAM,aACJ,QAAA,IAAY,OAAA;AAEd,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,eAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,yBAAA,EACE,UAAA;AAAA,MACF,wBAAA,EACE,OAAA;AAAA,MACF,sBAAA,EACE;AAAA;AACJ,GACF;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,UAAA,EAAY;AACd,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CACvB,KAAA,KACG;AACH,IAAA,MAAM,QAAQ,KAAA,CAAM,aAAA;AACpB,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,GAAQ,CAAC,CAAA;AAO5B,IAAA,KAAA,CAAM,KAAA,GAAQ,EAAA;AAEd,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AAEA,IAAA,YAAA,CAAa,IAAI,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,OAAA,GACrB,IAAA,GACA,KAAA,CAAM,WAAW,CAAA;AAErB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,MACX,WAAA,EAAW,gBAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,uBAAA;AAAA,YACV,GAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,wBAEA,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,sBAAA;AAAA,YACV,IAAA,EAAK,MAAA;AAAA,YACL,MAAA;AAAA,YACA,QAAA,EAAU,UAAA;AAAA,YACV,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBAEA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,uBAAA;AAAA,YACV,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,MAAA;AAAA,YACL,QAAA,EAAU,UAAA;AAAA,YACV,kBAAA,EACE,WACI,OAAA,GACA,MAAA;AAAA,YAEN,OAAA,EAAS,iBAAA;AAAA,YAER,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAEC,QAAA,oBACC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,sBAAA;AAAA,YACV,EAAA,EAAI,OAAA;AAAA,YACJ,IAAA,EAAK,OAAA;AAAA,YAEJ,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,qBAAA,GAAQ","file":"avatar-upload.js","sourcesContent":["import React from 'react';\n\nimport './avatar-upload.css';\nimport Avatar from '../avatar/avatar';\nimport Button from '../button/button';\nimport { classnames } from '../helpers/classnames';\n\nexport interface AvatarUploadProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n src?: string;\n initials?: string;\n alt?: string;\n accept?: string;\n disabled?: boolean;\n loading?: boolean;\n error?: React.ReactNode;\n selectLabel: React.ReactNode;\n onFileSelect: (file: File) => void;\n}\n\nconst AvatarUpload: React.FC<\n AvatarUploadProps\n> = ({\n src,\n initials,\n alt,\n accept,\n disabled = false,\n loading = false,\n error,\n selectLabel,\n onFileSelect,\n className = '',\n ...props\n}) => {\n const inputRef =\n React.useRef<HTMLInputElement>(\n null,\n );\n\n const reactId = React.useId();\n\n const errorId = `${reactId}-error`;\n\n const hasError =\n error !== null &&\n error !== undefined;\n\n const isDisabled =\n disabled || loading;\n\n const classes = classnames(\n 'avatar-upload',\n className,\n {\n 'avatar-upload--disabled':\n isDisabled,\n 'avatar-upload--loading':\n loading,\n 'avatar-upload--error':\n hasError,\n },\n );\n\n const handleSelectClick = () => {\n if (isDisabled) {\n return;\n }\n\n inputRef.current?.click();\n };\n\n const handleFileChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n /*\n * Reset the native input after reading\n * the selected file so the same file\n * can be selected again later.\n */\n input.value = '';\n\n if (!file) {\n return;\n }\n\n onFileSelect(file);\n };\n\n const resolvedAriaBusy = loading\n ? true\n : props['aria-busy'];\n\n return (\n <div\n {...props}\n className={classes}\n aria-busy={resolvedAriaBusy}\n >\n <Avatar\n className=\"avatar-upload__avatar\"\n src={src}\n initials={initials}\n alt={alt}\n />\n\n <input\n ref={inputRef}\n className=\"avatar-upload__input\"\n type=\"file\"\n accept={accept}\n disabled={isDisabled}\n onChange={handleFileChange}\n />\n\n <Button\n className=\"avatar-upload__button\"\n type=\"button\"\n rank=\"link\"\n disabled={isDisabled}\n aria-describedby={\n hasError\n ? errorId\n : undefined\n }\n onClick={handleSelectClick}\n >\n {selectLabel}\n </Button>\n\n {hasError && (\n <div\n className=\"avatar-upload__error\"\n id={errorId}\n role=\"alert\"\n >\n {error}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarUpload;\n"]}
1
+ {"version":3,"sources":["../../../src/components/avatar-upload/avatar-upload.tsx"],"names":[],"mappings":"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","file":"avatar-upload.js","sourcesContent":["import React from 'react';\n\nimport './avatar-upload.css';\nimport Avatar from '../avatar/avatar';\nimport Button from '../button/button';\nimport { classnames } from '../helpers/classnames';\n\nexport interface AvatarUploadProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n src?: string;\n initials?: string;\n alt?: string;\n accept?: string;\n disabled?: boolean;\n loading?: boolean;\n error?: React.ReactNode;\n selectLabel: React.ReactNode;\n onFileSelect: (file: File) => void;\n}\n\nconst AvatarUpload: React.FC<\n AvatarUploadProps\n> = ({\n src,\n initials,\n alt,\n accept,\n disabled = false,\n loading = false,\n error,\n selectLabel,\n onFileSelect,\n className = '',\n ...props\n}) => {\n const inputRef =\n React.useRef<HTMLInputElement>(\n null,\n );\n\n const reactId = React.useId();\n\n const errorId = `${reactId}-error`;\n\n const hasError =\n error !== null &&\n error !== undefined;\n\n const isDisabled =\n disabled || loading;\n\n const classes = classnames(\n 'avatar-upload',\n className,\n {\n 'avatar-upload--disabled':\n isDisabled,\n 'avatar-upload--loading':\n loading,\n 'avatar-upload--error':\n hasError,\n },\n );\n\n const handleSelectClick = () => {\n if (isDisabled) {\n return;\n }\n\n inputRef.current?.click();\n };\n\n const handleFileChange = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const input = event.currentTarget;\n const file = input.files?.[0];\n\n /*\n * Reset the native input after reading\n * the selected file so the same file\n * can be selected again later.\n */\n input.value = '';\n\n if (!file) {\n return;\n }\n\n onFileSelect(file);\n };\n\n const resolvedAriaBusy = loading\n ? true\n : props['aria-busy'];\n\n return (\n <div\n {...props}\n className={classes}\n aria-busy={resolvedAriaBusy}\n >\n <Avatar\n className=\"avatar-upload__avatar\"\n src={src}\n initials={initials}\n alt={alt}\n size=\"preview\"\n />\n\n <input\n ref={inputRef}\n className=\"avatar-upload__input\"\n type=\"file\"\n accept={accept}\n disabled={isDisabled}\n onChange={handleFileChange}\n />\n\n <Button\n className=\"avatar-upload__button\"\n type=\"button\"\n rank=\"link\"\n disabled={isDisabled}\n aria-describedby={\n hasError\n ? errorId\n : undefined\n }\n onClick={handleSelectClick}\n >\n {selectLabel}\n </Button>\n\n {hasError && (\n <div\n className=\"avatar-upload__error\"\n id={errorId}\n role=\"alert\"\n >\n {error}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarUpload;\n"]}
@@ -40,7 +40,7 @@ export type { EmbedViewerProps } from './embed-viewer';
40
40
  export { default as Logo } from './logo/logo';
41
41
  export type { LogoBrand, LogoMode, LogoProps, } from './logo/logo';
42
42
  export { default as Avatar } from './avatar/avatar';
43
- export type { AvatarProps } from './avatar/avatar';
43
+ export type { AvatarProps, AvatarSize, } from './avatar/avatar';
44
44
  export { default as Attach } from './attach/attach';
45
45
  export type { AttachItem, AttachItemKind, AttachProps, } from './attach/attach';
46
46
  export { default as ActionGroup } from './action-group/action-group';
@@ -1,211 +1,2 @@
1
1
  .markdown {
2
- /* color */
3
-
4
- /* typography */
5
-
6
- /* size */
7
- --markdown-block-gap: var(--margin-container-item);
8
- --markdown-list-gap: var(--margin-control);
9
- --markdown-list-padding: var(--padding-container);
10
- --markdown-code-padding-inline: var(--padding-control-horz);
11
- --markdown-code-padding-block: var(--padding-control-vert);
12
- --markdown-table-cell-padding: var(--padding-control-vert);
13
-
14
- /* border */
15
- --markdown-border-width: var(--size-border-width-base);
16
- --markdown-radius: var(--radius-control);
17
-
18
- /* depth */
19
-
20
- /* motion */
21
- }
22
-
23
- .markdown > * {
24
- /* size */
25
- margin: 0;
26
- }
27
-
28
- .markdown > :not(:first-child) {
29
- /* size */
30
- margin-top: var(--markdown-block-gap);
31
- }
32
-
33
- .markdown h1,
34
- .markdown h2,
35
- .markdown h3,
36
- .markdown h4,
37
- .markdown h5,
38
- .markdown h6,
39
- .markdown p {
40
- /* size */
41
- margin: 0;
42
- }
43
-
44
- .markdown h5,
45
- .markdown h6 {
46
- /* typography */
47
- font-family: var(--font-h4-family);
48
- font-size: var(--font-h4);
49
- font-weight: var(--font-h4-weight);
50
- line-height: var(--font-h4-line);
51
- letter-spacing: var(--font-h4-letter-spacing);
52
- }
53
-
54
- .markdown ul,
55
- .markdown ol {
56
- /* size */
57
- display: flex;
58
- flex-direction: column;
59
- gap: var(--markdown-list-gap);
60
- margin: 0;
61
- padding-left: var(--markdown-list-padding);
62
- }
63
-
64
- .markdown ul {
65
- /* border */
66
- list-style: disc;
67
- }
68
-
69
- .markdown ol {
70
- /* border */
71
- list-style: decimal;
72
- }
73
-
74
- .markdown li {
75
- /* size */
76
- margin: 0;
77
- }
78
-
79
- .markdown li > ul,
80
- .markdown li > ol {
81
- /* size */
82
- margin-top: var(--markdown-list-gap);
83
- }
84
-
85
- .markdown blockquote {
86
- /* color */
87
- color: var(--color-text-note);
88
-
89
- /* size */
90
- margin: 0;
91
- padding-left: var(--padding-container);
92
-
93
- /* border */
94
- border-left:
95
- var(--markdown-border-width)
96
- solid
97
- var(--color-line);
98
- }
99
-
100
- .markdown img {
101
- /* size */
102
- display: block;
103
- max-width: 100%;
104
- height: auto;
105
-
106
- /* border */
107
- border-radius: var(--markdown-radius);
108
- }
109
-
110
- .markdown hr {
111
- /* size */
112
- margin: 0;
113
-
114
- /* border */
115
- border: 0;
116
- border-top:
117
- var(--markdown-border-width)
118
- solid
119
- var(--color-line);
120
- }
121
-
122
- .markdown code {
123
- /* color */
124
- background: var(--color-control);
125
- color: var(--color-text-control);
126
-
127
- /* typography */
128
- font-family: monospace;
129
- font-size: 0.9em;
130
-
131
- /* size */
132
- padding:
133
- 0
134
- var(--markdown-code-padding-inline);
135
-
136
- /* border */
137
- border-radius: var(--markdown-radius);
138
- }
139
-
140
- .markdown pre {
141
- /* color */
142
- background: var(--color-control);
143
- color: var(--color-text-control);
144
-
145
- /* size */
146
- margin: 0;
147
- padding:
148
- var(--markdown-code-padding-block)
149
- var(--markdown-code-padding-inline);
150
- overflow-x: auto;
151
-
152
- /* border */
153
- border-radius: var(--markdown-radius);
154
- }
155
-
156
- .markdown pre code {
157
- /* color */
158
- background: transparent;
159
- color: inherit;
160
-
161
- /* typography */
162
- font-size: inherit;
163
-
164
- /* size */
165
- padding: 0;
166
-
167
- /* border */
168
- border-radius: 0;
169
- }
170
-
171
- .markdown table {
172
- /* size */
173
- width: 100%;
174
-
175
- /* border */
176
- border-collapse: collapse;
177
- }
178
-
179
- .markdown th,
180
- .markdown td {
181
- /* color */
182
- color: inherit;
183
-
184
- /* typography */
185
- text-align: left;
186
- vertical-align: top;
187
-
188
- /* size */
189
- padding: var(--markdown-table-cell-padding);
190
-
191
- /* border */
192
- border:
193
- var(--markdown-border-width)
194
- solid
195
- var(--color-line);
196
- }
197
-
198
- .markdown th {
199
- /* typography */
200
- font-weight: var(--font-body-weight);
201
- }
202
-
203
- .markdown input[type='checkbox'] {
204
- /* size */
205
- margin: 0;
206
- }
207
-
208
- .markdown--excerpt > p {
209
- /* size */
210
- margin: 0;
211
2
  }
package/fonts/fonts.css CHANGED
@@ -3,6 +3,6 @@
3
3
  font-family: 'PP Object Sans Variable';
4
4
  src: url('./pp-object-sans/PP Object Sans Variable.woff2') format('woff2');
5
5
  font-style: normal;
6
- font-weight: 300 900;
6
+ font-weight: 143 900;
7
7
  font-display: swap;
8
- }
8
+ }
package/index.d.ts CHANGED
@@ -47,7 +47,7 @@ export type { PanelProps } from './components/panel';
47
47
  export { default as Logo } from './components/logo';
48
48
  export type { LogoBrand, LogoMode, LogoProps, } from './components/logo';
49
49
  export { default as Avatar } from './components/avatar';
50
- export type { AvatarProps } from './components/avatar';
50
+ export type { AvatarProps, AvatarSize, } from './components/avatar';
51
51
  export { default as Attach } from './components/attach';
52
52
  export type { AttachItem, AttachItemKind, AttachProps, } from './components/attach';
53
53
  export { default as ActionGroup } from './components/action-group';
@@ -13,6 +13,7 @@ const LayoutBase = ({
13
13
  width = "default",
14
14
  headerAlign = "start",
15
15
  mainAlign = "start",
16
+ contentAlign = "start",
16
17
  header,
17
18
  footer,
18
19
  children,
@@ -23,7 +24,8 @@ const LayoutBase = ({
23
24
  const contentClasses = classnames.classnames("layout-base__content", "", {
24
25
  "layout-base__content--narrow": width === "narrow",
25
26
  "layout-base__content--wide": width === "wide",
26
- "layout-base__content--full": width === "full"
27
+ "layout-base__content--full": width === "full",
28
+ "layout-base__content--align-center": contentAlign === "center"
27
29
  });
28
30
  const headerClasses = classnames.classnames("layout-base__header", "", {
29
31
  "layout-base__header--align-center": headerAlign === "center",