jvetrau-ds 0.2.22 → 0.2.24

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 (176) hide show
  1. package/components/avatar-upload/avatar-upload.cjs +2 -1
  2. package/components/avatar-upload/avatar-upload.cjs.map +1 -1
  3. package/components/avatar-upload/avatar-upload.js +2 -1
  4. package/components/avatar-upload/avatar-upload.js.map +1 -1
  5. package/components/card/card.cjs +3 -1
  6. package/components/card/card.cjs.map +1 -1
  7. package/components/card/card.css +0 -10
  8. package/components/card/card.d.ts +2 -0
  9. package/components/card/card.js +3 -1
  10. package/components/card/card.js.map +1 -1
  11. package/components/panel/panel.cjs +4 -0
  12. package/components/panel/panel.cjs.map +1 -1
  13. package/components/panel/panel.css +1 -14
  14. package/components/panel/panel.d.ts +2 -0
  15. package/components/panel/panel.js +4 -0
  16. package/components/panel/panel.js.map +1 -1
  17. package/components/surface/surface-presentation.cjs +16 -0
  18. package/components/surface/surface-presentation.cjs.map +1 -0
  19. package/components/surface/surface-presentation.d.ts +3 -0
  20. package/components/surface/surface-presentation.js +14 -0
  21. package/components/surface/surface-presentation.js.map +1 -0
  22. package/components/surface/surface.css +126 -0
  23. package/index.d.ts +1 -0
  24. package/layouts/base/base.cjs +3 -1
  25. package/layouts/base/base.cjs.map +1 -1
  26. package/layouts/base/base.css +18 -1
  27. package/layouts/base/base.d.ts +2 -0
  28. package/layouts/base/base.js +3 -1
  29. package/layouts/base/base.js.map +1 -1
  30. package/layouts/sidebar/sidebar.cjs +6 -1
  31. package/layouts/sidebar/sidebar.cjs.map +1 -1
  32. package/layouts/sidebar/sidebar.css +18 -1
  33. package/layouts/sidebar/sidebar.d.ts +2 -0
  34. package/layouts/sidebar/sidebar.js +6 -1
  35. package/layouts/sidebar/sidebar.js.map +1 -1
  36. package/package.json +1 -1
  37. package/patterns/modal/modal.cjs +1 -0
  38. package/patterns/modal/modal.cjs.map +1 -1
  39. package/patterns/modal/modal.js +1 -0
  40. package/patterns/modal/modal.js.map +1 -1
  41. package/styles.css +163 -24
  42. package/themes/base/desktop.css +4 -0
  43. package/themes/base/desktop.md +4 -0
  44. package/themes/base/desktop.scoped.css +4 -0
  45. package/themes/base/diagram.css +4 -0
  46. package/themes/base/diagram.md +4 -0
  47. package/themes/base/diagram.scoped.css +4 -0
  48. package/themes/base/mobile.css +4 -0
  49. package/themes/base/mobile.md +4 -0
  50. package/themes/base/mobile.scoped.css +4 -0
  51. package/themes/brandcopilot/desktop.css +4 -0
  52. package/themes/brandcopilot/desktop.md +4 -0
  53. package/themes/brandcopilot/desktop.scoped.css +4 -0
  54. package/themes/brandcopilot/diagram.css +4 -0
  55. package/themes/brandcopilot/diagram.md +4 -0
  56. package/themes/brandcopilot/diagram.scoped.css +4 -0
  57. package/themes/brandcopilot/mobile.css +4 -0
  58. package/themes/brandcopilot/mobile.md +4 -0
  59. package/themes/brandcopilot/mobile.scoped.css +4 -0
  60. package/themes/dmpatterns/desktop.css +4 -0
  61. package/themes/dmpatterns/desktop.md +4 -0
  62. package/themes/dmpatterns/desktop.scoped.css +4 -0
  63. package/themes/dmpatterns/diagram.css +4 -0
  64. package/themes/dmpatterns/diagram.md +4 -0
  65. package/themes/dmpatterns/diagram.scoped.css +4 -0
  66. package/themes/dmpatterns/mobile.css +4 -0
  67. package/themes/dmpatterns/mobile.md +4 -0
  68. package/themes/dmpatterns/mobile.scoped.css +4 -0
  69. package/themes/pdigest/desktop.css +4 -0
  70. package/themes/pdigest/desktop.md +4 -0
  71. package/themes/pdigest/desktop.scoped.css +4 -0
  72. package/themes/pdigest/diagram.css +4 -0
  73. package/themes/pdigest/diagram.md +4 -0
  74. package/themes/pdigest/diagram.scoped.css +4 -0
  75. package/themes/pdigest/mobile.css +4 -0
  76. package/themes/pdigest/mobile.md +4 -0
  77. package/themes/pdigest/mobile.scoped.css +4 -0
  78. package/themes/retrack/desktop.css +4 -0
  79. package/themes/retrack/desktop.md +4 -0
  80. package/themes/retrack/desktop.scoped.css +4 -0
  81. package/themes/retrack/diagram.css +4 -0
  82. package/themes/retrack/diagram.md +4 -0
  83. package/themes/retrack/diagram.scoped.css +4 -0
  84. package/themes/retrack/mobile.css +4 -0
  85. package/themes/retrack/mobile.md +4 -0
  86. package/themes/retrack/mobile.scoped.css +4 -0
  87. package/tokens/runtime/tokens.base.desktop.runtime.cjs +4 -0
  88. package/tokens/runtime/tokens.base.desktop.runtime.cjs.map +1 -1
  89. package/tokens/runtime/tokens.base.desktop.runtime.d.ts +4 -0
  90. package/tokens/runtime/tokens.base.desktop.runtime.js +4 -0
  91. package/tokens/runtime/tokens.base.desktop.runtime.js.map +1 -1
  92. package/tokens/runtime/tokens.base.diagram.runtime.cjs +4 -0
  93. package/tokens/runtime/tokens.base.diagram.runtime.cjs.map +1 -1
  94. package/tokens/runtime/tokens.base.diagram.runtime.d.ts +4 -0
  95. package/tokens/runtime/tokens.base.diagram.runtime.js +4 -0
  96. package/tokens/runtime/tokens.base.diagram.runtime.js.map +1 -1
  97. package/tokens/runtime/tokens.base.mobile.runtime.cjs +4 -0
  98. package/tokens/runtime/tokens.base.mobile.runtime.cjs.map +1 -1
  99. package/tokens/runtime/tokens.base.mobile.runtime.d.ts +4 -0
  100. package/tokens/runtime/tokens.base.mobile.runtime.js +4 -0
  101. package/tokens/runtime/tokens.base.mobile.runtime.js.map +1 -1
  102. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.cjs +4 -0
  103. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.cjs.map +1 -1
  104. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.d.ts +4 -0
  105. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.js +4 -0
  106. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.js.map +1 -1
  107. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.cjs +4 -0
  108. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.cjs.map +1 -1
  109. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.d.ts +4 -0
  110. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.js +4 -0
  111. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.js.map +1 -1
  112. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.cjs +4 -0
  113. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.cjs.map +1 -1
  114. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.d.ts +4 -0
  115. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.js +4 -0
  116. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.js.map +1 -1
  117. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.cjs +4 -0
  118. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.cjs.map +1 -1
  119. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.d.ts +4 -0
  120. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.js +4 -0
  121. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.js.map +1 -1
  122. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.cjs +4 -0
  123. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.cjs.map +1 -1
  124. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.d.ts +4 -0
  125. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.js +4 -0
  126. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.js.map +1 -1
  127. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.cjs +4 -0
  128. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.cjs.map +1 -1
  129. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.d.ts +4 -0
  130. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.js +4 -0
  131. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.js.map +1 -1
  132. package/tokens/runtime/tokens.pdigest.desktop.runtime.cjs +4 -0
  133. package/tokens/runtime/tokens.pdigest.desktop.runtime.cjs.map +1 -1
  134. package/tokens/runtime/tokens.pdigest.desktop.runtime.d.ts +4 -0
  135. package/tokens/runtime/tokens.pdigest.desktop.runtime.js +4 -0
  136. package/tokens/runtime/tokens.pdigest.desktop.runtime.js.map +1 -1
  137. package/tokens/runtime/tokens.pdigest.diagram.runtime.cjs +4 -0
  138. package/tokens/runtime/tokens.pdigest.diagram.runtime.cjs.map +1 -1
  139. package/tokens/runtime/tokens.pdigest.diagram.runtime.d.ts +4 -0
  140. package/tokens/runtime/tokens.pdigest.diagram.runtime.js +4 -0
  141. package/tokens/runtime/tokens.pdigest.diagram.runtime.js.map +1 -1
  142. package/tokens/runtime/tokens.pdigest.mobile.runtime.cjs +4 -0
  143. package/tokens/runtime/tokens.pdigest.mobile.runtime.cjs.map +1 -1
  144. package/tokens/runtime/tokens.pdigest.mobile.runtime.d.ts +4 -0
  145. package/tokens/runtime/tokens.pdigest.mobile.runtime.js +4 -0
  146. package/tokens/runtime/tokens.pdigest.mobile.runtime.js.map +1 -1
  147. package/tokens/runtime/tokens.retrack.desktop.runtime.cjs +4 -0
  148. package/tokens/runtime/tokens.retrack.desktop.runtime.cjs.map +1 -1
  149. package/tokens/runtime/tokens.retrack.desktop.runtime.d.ts +4 -0
  150. package/tokens/runtime/tokens.retrack.desktop.runtime.js +4 -0
  151. package/tokens/runtime/tokens.retrack.desktop.runtime.js.map +1 -1
  152. package/tokens/runtime/tokens.retrack.diagram.runtime.cjs +4 -0
  153. package/tokens/runtime/tokens.retrack.diagram.runtime.cjs.map +1 -1
  154. package/tokens/runtime/tokens.retrack.diagram.runtime.d.ts +4 -0
  155. package/tokens/runtime/tokens.retrack.diagram.runtime.js +4 -0
  156. package/tokens/runtime/tokens.retrack.diagram.runtime.js.map +1 -1
  157. package/tokens/runtime/tokens.retrack.mobile.runtime.cjs +4 -0
  158. package/tokens/runtime/tokens.retrack.mobile.runtime.cjs.map +1 -1
  159. package/tokens/runtime/tokens.retrack.mobile.runtime.d.ts +4 -0
  160. package/tokens/runtime/tokens.retrack.mobile.runtime.js +4 -0
  161. package/tokens/runtime/tokens.retrack.mobile.runtime.js.map +1 -1
  162. package/tokens/themes/base/dist/desktop.json +32 -0
  163. package/tokens/themes/base/dist/diagram.json +32 -0
  164. package/tokens/themes/base/dist/mobile.json +32 -0
  165. package/tokens/themes/brandcopilot/dist/desktop.json +32 -0
  166. package/tokens/themes/brandcopilot/dist/diagram.json +32 -0
  167. package/tokens/themes/brandcopilot/dist/mobile.json +32 -0
  168. package/tokens/themes/dmpatterns/dist/desktop.json +32 -0
  169. package/tokens/themes/dmpatterns/dist/diagram.json +32 -0
  170. package/tokens/themes/dmpatterns/dist/mobile.json +32 -0
  171. package/tokens/themes/pdigest/dist/desktop.json +32 -0
  172. package/tokens/themes/pdigest/dist/diagram.json +32 -0
  173. package/tokens/themes/pdigest/dist/mobile.json +32 -0
  174. package/tokens/themes/retrack/dist/desktop.json +32 -0
  175. package/tokens/themes/retrack/dist/diagram.json +32 -0
  176. package/tokens/themes/retrack/dist/mobile.json +32 -0
@@ -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"]}
@@ -3,11 +3,13 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  require('./card.css');
5
5
  var classnames = require('../helpers/classnames');
6
+ var surfacePresentation = require('../surface/surface-presentation');
6
7
 
7
8
  function hasContent(value) {
8
9
  return value !== null && value !== void 0;
9
10
  }
10
11
  const Card = ({
12
+ rank = "primary",
11
13
  heading,
12
14
  headingLevel = 2,
13
15
  description,
@@ -19,7 +21,7 @@ const Card = ({
19
21
  const classes = classnames.classnames(
20
22
  "card",
21
23
  className,
22
- {}
24
+ surfacePresentation.surfacePresentation(rank)
23
25
  );
24
26
  const HeadingTag = `h${headingLevel}`;
25
27
  const hasHeading = hasContent(heading);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/card/card.tsx"],"names":["classnames","jsxs","jsx"],"mappings":";;;;;;AAaA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,OAA4B,CAAC;AAAA,EACjC,OAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,WAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,MAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAC,GACH;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,cAAA,EACZ,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCC,cAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWF,qBAAA;AAAA,gBACT,eAAA;AAAA,gBACA,mBAAmB,YAAY,CAAA,CAAA;AAAA,gBAC/B;AAAC,eACH;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,cAAA,oBACCE,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBACV,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QAGD,WAAW,QAAQ,CAAA,mCACjB,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EACH,CAAA;AAAA,QAGD,WAAW,OAAO,CAAA,mCAChB,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EAAA,OAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"card.cjs","sourcesContent":["import React from 'react';\n\nimport './card.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLElement> {\n heading?: React.ReactNode;\n headingLevel?: 2 | 3;\n description?: React.ReactNode;\n actions?: 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 Card: React.FC<CardProps> = ({\n heading,\n headingLevel = 2,\n description,\n actions,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'card',\n className,\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=\"card__header\">\n {hasHeading && (\n <HeadingTag\n className={classnames(\n 'card__heading',\n `card__heading--h${headingLevel}`,\n {},\n )}\n >\n {heading}\n </HeadingTag>\n )}\n\n {hasDescription && (\n <p className=\"card__description\">\n {description}\n </p>\n )}\n </div>\n )}\n\n {hasContent(children) && (\n <div className=\"card__content\">\n {children}\n </div>\n )}\n\n {hasContent(actions) && (\n <div className=\"card__actions\">\n {actions}\n </div>\n )}\n </section>\n );\n};\n\nexport default Card;\n"]}
1
+ {"version":3,"sources":["../../../src/components/card/card.tsx"],"names":["classnames","surfacePresentation","jsxs","jsx"],"mappings":";;;;;;;AAkBA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,OAA4B,CAAC;AAAA,EACjC,IAAA,GAAO,SAAA;AAAA,EACP,OAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,WAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,MAAA;AAAA,IACA,SAAA;AAAA,IACAC,wCAAoB,IAAI;AAAA,GAC1B;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,cAAA,EACZ,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCC,cAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWH,qBAAA;AAAA,gBACT,eAAA;AAAA,gBACA,mBAAmB,YAAY,CAAA,CAAA;AAAA,gBAC/B;AAAC,eACH;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,cAAA,oBACCG,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBACV,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QAGD,WAAW,QAAQ,CAAA,mCACjB,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EACH,CAAA;AAAA,QAGD,WAAW,OAAO,CAAA,mCAChB,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EAAA,OAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"card.cjs","sourcesContent":["import React from 'react';\n\nimport './card.css';\nimport { classnames } from '../helpers/classnames';\nimport {\n surfacePresentation,\n type SurfaceRank,\n} from '../surface/surface-presentation';\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLElement> {\n rank?: SurfaceRank;\n heading?: React.ReactNode;\n headingLevel?: 2 | 3;\n description?: React.ReactNode;\n actions?: 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 Card: React.FC<CardProps> = ({\n rank = 'primary',\n heading,\n headingLevel = 2,\n description,\n actions,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'card',\n className,\n surfacePresentation(rank),\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=\"card__header\">\n {hasHeading && (\n <HeadingTag\n className={classnames(\n 'card__heading',\n `card__heading--h${headingLevel}`,\n {},\n )}\n >\n {heading}\n </HeadingTag>\n )}\n\n {hasDescription && (\n <p className=\"card__description\">\n {description}\n </p>\n )}\n </div>\n )}\n\n {hasContent(children) && (\n <div className=\"card__content\">\n {children}\n </div>\n )}\n\n {hasContent(actions) && (\n <div className=\"card__actions\">\n {actions}\n </div>\n )}\n </section>\n );\n};\n\nexport default Card;\n"]}
@@ -1,16 +1,10 @@
1
1
  .card {
2
2
  /* color */
3
- --card-bg: var(--color-bg-container);
4
- --card-color: var(--color-text-container);
5
-
6
- background: var(--card-bg);
7
- color: var(--card-color);
8
3
 
9
4
  /* typography */
10
5
 
11
6
  /* size */
12
7
  --card-width: 100%;
13
- --card-padding: var(--padding-container);
14
8
  --card-gap: var(--margin-container-item);
15
9
  --card-title-gap: var(--font-h2-margin);
16
10
 
@@ -20,12 +14,8 @@
20
14
  justify-content: flex-start;
21
15
  gap: var(--card-gap);
22
16
  width: var(--card-width);
23
- padding: var(--card-padding);
24
17
 
25
18
  /* border */
26
- --card-radius: var(--radius-container);
27
-
28
- border-radius: var(--card-radius);
29
19
 
30
20
  /* depth */
31
21
 
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import './card.css';
3
+ import { type SurfaceRank } from '../surface/surface-presentation';
3
4
  export interface CardProps extends React.HTMLAttributes<HTMLElement> {
5
+ rank?: SurfaceRank;
4
6
  heading?: React.ReactNode;
5
7
  headingLevel?: 2 | 3;
6
8
  description?: React.ReactNode;
@@ -1,11 +1,13 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import './card.css';
3
3
  import { classnames } from '../helpers/classnames';
4
+ import { surfacePresentation } from '../surface/surface-presentation';
4
5
 
5
6
  function hasContent(value) {
6
7
  return value !== null && value !== void 0;
7
8
  }
8
9
  const Card = ({
10
+ rank = "primary",
9
11
  heading,
10
12
  headingLevel = 2,
11
13
  description,
@@ -17,7 +19,7 @@ const Card = ({
17
19
  const classes = classnames(
18
20
  "card",
19
21
  className,
20
- {}
22
+ surfacePresentation(rank)
21
23
  );
22
24
  const HeadingTag = `h${headingLevel}`;
23
25
  const hasHeading = hasContent(heading);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/card/card.tsx"],"names":[],"mappings":";;;;AAaA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,OAA4B,CAAC;AAAA,EACjC,OAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,WAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,MAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAC,GACH;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,cAAA,EACZ,QAAA,EAAA;AAAA,UAAA,UAAA,oBACC,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,UAAA;AAAA,gBACT,eAAA;AAAA,gBACA,mBAAmB,YAAY,CAAA,CAAA;AAAA,gBAC/B;AAAC,eACH;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,cAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBACV,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QAGD,WAAW,QAAQ,CAAA,wBACjB,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EACH,CAAA;AAAA,QAGD,WAAW,OAAO,CAAA,wBAChB,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EAAA,OAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"card.js","sourcesContent":["import React from 'react';\n\nimport './card.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLElement> {\n heading?: React.ReactNode;\n headingLevel?: 2 | 3;\n description?: React.ReactNode;\n actions?: 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 Card: React.FC<CardProps> = ({\n heading,\n headingLevel = 2,\n description,\n actions,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'card',\n className,\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=\"card__header\">\n {hasHeading && (\n <HeadingTag\n className={classnames(\n 'card__heading',\n `card__heading--h${headingLevel}`,\n {},\n )}\n >\n {heading}\n </HeadingTag>\n )}\n\n {hasDescription && (\n <p className=\"card__description\">\n {description}\n </p>\n )}\n </div>\n )}\n\n {hasContent(children) && (\n <div className=\"card__content\">\n {children}\n </div>\n )}\n\n {hasContent(actions) && (\n <div className=\"card__actions\">\n {actions}\n </div>\n )}\n </section>\n );\n};\n\nexport default Card;\n"]}
1
+ {"version":3,"sources":["../../../src/components/card/card.tsx"],"names":[],"mappings":";;;;;AAkBA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,OAA4B,CAAC;AAAA,EACjC,IAAA,GAAO,SAAA;AAAA,EACP,OAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,WAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,MAAA;AAAA,IACA,SAAA;AAAA,IACA,oBAAoB,IAAI;AAAA,GAC1B;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,cAAA,EACZ,QAAA,EAAA;AAAA,UAAA,UAAA,oBACC,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,UAAA;AAAA,gBACT,eAAA;AAAA,gBACA,mBAAmB,YAAY,CAAA,CAAA;AAAA,gBAC/B;AAAC,eACH;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAGD,cAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qBACV,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QAGD,WAAW,QAAQ,CAAA,wBACjB,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EACH,CAAA;AAAA,QAGD,WAAW,OAAO,CAAA,wBAChB,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EAAA,OAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"card.js","sourcesContent":["import React from 'react';\n\nimport './card.css';\nimport { classnames } from '../helpers/classnames';\nimport {\n surfacePresentation,\n type SurfaceRank,\n} from '../surface/surface-presentation';\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLElement> {\n rank?: SurfaceRank;\n heading?: React.ReactNode;\n headingLevel?: 2 | 3;\n description?: React.ReactNode;\n actions?: 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 Card: React.FC<CardProps> = ({\n rank = 'primary',\n heading,\n headingLevel = 2,\n description,\n actions,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'card',\n className,\n surfacePresentation(rank),\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=\"card__header\">\n {hasHeading && (\n <HeadingTag\n className={classnames(\n 'card__heading',\n `card__heading--h${headingLevel}`,\n {},\n )}\n >\n {heading}\n </HeadingTag>\n )}\n\n {hasDescription && (\n <p className=\"card__description\">\n {description}\n </p>\n )}\n </div>\n )}\n\n {hasContent(children) && (\n <div className=\"card__content\">\n {children}\n </div>\n )}\n\n {hasContent(actions) && (\n <div className=\"card__actions\">\n {actions}\n </div>\n )}\n </section>\n );\n};\n\nexport default Card;\n"]}
@@ -3,11 +3,13 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  require('./panel.css');
5
5
  var classnames = require('../helpers/classnames');
6
+ var surfacePresentation = require('../surface/surface-presentation');
6
7
 
7
8
  function hasContent(value) {
8
9
  return value !== null && value !== void 0;
9
10
  }
10
11
  const Panel = ({
12
+ rank = "primary",
11
13
  layout = "card",
12
14
  overflow = "visible",
13
15
  heading,
@@ -17,10 +19,12 @@ const Panel = ({
17
19
  children,
18
20
  ...props
19
21
  }) => {
22
+ const surfaceClasses = layout === "transparent" ? {} : surfacePresentation.surfacePresentation(rank);
20
23
  const classes = classnames.classnames(
21
24
  "panel",
22
25
  className,
23
26
  {
27
+ ...surfaceClasses,
24
28
  "panel--transparent": layout === "transparent",
25
29
  "panel--content-overflow": overflow === "content"
26
30
  }
@@ -1 +1 @@
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"]}
1
+ {"version":3,"sources":["../../../src/components/panel/panel.tsx"],"names":["surfacePresentation","classnames","jsxs","jsx"],"mappings":";;;;;;;AAmBA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,QAA8B,CAAC;AAAA,EACnC,IAAA,GAAO,SAAA;AAAA,EACP,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,iBACJ,MAAA,KAAW,aAAA,GACP,EAAC,GACDA,wCAAoB,IAAI,CAAA;AAE9B,EAAA,MAAM,OAAA,GAAUC,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,GAAG,cAAA;AAAA,MACH,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';\nimport {\n surfacePresentation,\n type SurfaceRank,\n} from '../surface/surface-presentation';\n\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLElement> {\n rank?: SurfaceRank;\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 rank = 'primary',\n layout = 'card',\n overflow = 'visible',\n heading,\n headingLevel = 2,\n description,\n className = '',\n children,\n ...props\n}) => {\n const surfaceClasses =\n layout === 'transparent'\n ? {}\n : surfacePresentation(rank);\n\n const classes = classnames(\n 'panel',\n className,\n {\n ...surfaceClasses,\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"]}
@@ -1,16 +1,10 @@
1
1
  .panel {
2
2
  /* color */
3
- --panel-bg: var(--color-bg-container);
4
- --panel-color: var(--color-text-container);
5
-
6
- background: var(--panel-bg);
7
- color: var(--panel-color);
8
3
 
9
4
  /* typography */
10
5
 
11
6
  /* size */
12
7
  --panel-width: 100%;
13
- --panel-padding: var(--padding-container);
14
8
  --panel-gap: var(--margin-container-item);
15
9
  --panel-title-gap: var(--font-h2-margin);
16
10
 
@@ -20,12 +14,8 @@
20
14
  justify-content: flex-start;
21
15
  gap: var(--panel-gap);
22
16
  width: var(--panel-width);
23
- padding: var(--panel-padding);
24
17
 
25
18
  /* border */
26
- --panel-radius: var(--radius-container);
27
-
28
- border-radius: var(--panel-radius);
29
19
 
30
20
  /* depth */
31
21
 
@@ -34,16 +24,13 @@
34
24
 
35
25
  .panel--transparent {
36
26
  /* color */
37
- --panel-bg: transparent;
38
- --panel-color: var(--color-text);
27
+ color: var(--color-text);
39
28
 
40
29
  /* typography */
41
30
 
42
31
  /* size */
43
- padding: 0;
44
32
 
45
33
  /* border */
46
- border-radius: 0;
47
34
 
48
35
  /* depth */
49
36
 
@@ -1,6 +1,8 @@
1
1
  import React from 'react';
2
2
  import './panel.css';
3
+ import { type SurfaceRank } from '../surface/surface-presentation';
3
4
  export interface PanelProps extends React.HTMLAttributes<HTMLElement> {
5
+ rank?: SurfaceRank;
4
6
  layout?: 'card' | 'transparent';
5
7
  overflow?: 'visible' | 'content';
6
8
  heading?: React.ReactNode;
@@ -1,11 +1,13 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import './panel.css';
3
3
  import { classnames } from '../helpers/classnames';
4
+ import { surfacePresentation } from '../surface/surface-presentation';
4
5
 
5
6
  function hasContent(value) {
6
7
  return value !== null && value !== void 0;
7
8
  }
8
9
  const Panel = ({
10
+ rank = "primary",
9
11
  layout = "card",
10
12
  overflow = "visible",
11
13
  heading,
@@ -15,10 +17,12 @@ const Panel = ({
15
17
  children,
16
18
  ...props
17
19
  }) => {
20
+ const surfaceClasses = layout === "transparent" ? {} : surfacePresentation(rank);
18
21
  const classes = classnames(
19
22
  "panel",
20
23
  className,
21
24
  {
25
+ ...surfaceClasses,
22
26
  "panel--transparent": layout === "transparent",
23
27
  "panel--content-overflow": overflow === "content"
24
28
  }
@@ -1 +1 @@
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"]}
1
+ {"version":3,"sources":["../../../src/components/panel/panel.tsx"],"names":[],"mappings":";;;;;AAmBA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OACE,KAAA,KAAU,QACV,KAAA,KAAU,MAAA;AAEd;AAEA,MAAM,QAA8B,CAAC;AAAA,EACnC,IAAA,GAAO,SAAA;AAAA,EACP,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,iBACJ,MAAA,KAAW,aAAA,GACP,EAAC,GACD,oBAAoB,IAAI,CAAA;AAE9B,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,GAAG,cAAA;AAAA,MACH,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';\nimport {\n surfacePresentation,\n type SurfaceRank,\n} from '../surface/surface-presentation';\n\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLElement> {\n rank?: SurfaceRank;\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 rank = 'primary',\n layout = 'card',\n overflow = 'visible',\n heading,\n headingLevel = 2,\n description,\n className = '',\n children,\n ...props\n}) => {\n const surfaceClasses =\n layout === 'transparent'\n ? {}\n : surfacePresentation(rank);\n\n const classes = classnames(\n 'panel',\n className,\n {\n ...surfaceClasses,\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,16 @@
1
+ 'use strict';
2
+
3
+ require('./surface.css');
4
+
5
+ function surfacePresentation(rank) {
6
+ return {
7
+ surface: true,
8
+ "surface--secondary": rank === "secondary",
9
+ "surface--tertiary": rank === "tertiary",
10
+ "surface--outline": rank === "outline"
11
+ };
12
+ }
13
+
14
+ exports.surfacePresentation = surfacePresentation;
15
+ //# sourceMappingURL=surface-presentation.cjs.map
16
+ //# sourceMappingURL=surface-presentation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/surface/surface-presentation.ts"],"names":[],"mappings":";;;;AAQO,SAAS,oBACd,IAAA,EACyB;AACzB,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,IAAA;AAAA,IACT,sBACE,IAAA,KAAS,WAAA;AAAA,IACX,qBACE,IAAA,KAAS,UAAA;AAAA,IACX,oBACE,IAAA,KAAS;AAAA,GACb;AACF","file":"surface-presentation.cjs","sourcesContent":["import './surface.css';\n\nexport type SurfaceRank =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'outline';\n\nexport function surfacePresentation(\n rank: SurfaceRank,\n): Record<string, boolean> {\n return {\n surface: true,\n 'surface--secondary':\n rank === 'secondary',\n 'surface--tertiary':\n rank === 'tertiary',\n 'surface--outline':\n rank === 'outline',\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import './surface.css';
2
+ export type SurfaceRank = 'primary' | 'secondary' | 'tertiary' | 'outline';
3
+ export declare function surfacePresentation(rank: SurfaceRank): Record<string, boolean>;
@@ -0,0 +1,14 @@
1
+ import './surface.css';
2
+
3
+ function surfacePresentation(rank) {
4
+ return {
5
+ surface: true,
6
+ "surface--secondary": rank === "secondary",
7
+ "surface--tertiary": rank === "tertiary",
8
+ "surface--outline": rank === "outline"
9
+ };
10
+ }
11
+
12
+ export { surfacePresentation };
13
+ //# sourceMappingURL=surface-presentation.js.map
14
+ //# sourceMappingURL=surface-presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/surface/surface-presentation.ts"],"names":[],"mappings":";;AAQO,SAAS,oBACd,IAAA,EACyB;AACzB,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,IAAA;AAAA,IACT,sBACE,IAAA,KAAS,WAAA;AAAA,IACX,qBACE,IAAA,KAAS,UAAA;AAAA,IACX,oBACE,IAAA,KAAS;AAAA,GACb;AACF","file":"surface-presentation.js","sourcesContent":["import './surface.css';\n\nexport type SurfaceRank =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'outline';\n\nexport function surfacePresentation(\n rank: SurfaceRank,\n): Record<string, boolean> {\n return {\n surface: true,\n 'surface--secondary':\n rank === 'secondary',\n 'surface--tertiary':\n rank === 'tertiary',\n 'surface--outline':\n rank === 'outline',\n };\n}\n"]}
@@ -0,0 +1,126 @@
1
+ .surface {
2
+ /* color */
3
+ --surface-bg: var(--color-bg-container);
4
+ --surface-color: var(--color-text-container);
5
+
6
+ background: var(--surface-bg);
7
+ color: var(--surface-color);
8
+
9
+ /* typography */
10
+
11
+ /* size */
12
+ --surface-padding: var(--padding-container);
13
+
14
+ padding: var(--surface-padding);
15
+
16
+ /* border */
17
+ --surface-radius: var(--radius-container);
18
+
19
+ border-radius: var(--surface-radius);
20
+
21
+ /* depth */
22
+
23
+ /* motion */
24
+ }
25
+
26
+ .surface--secondary {
27
+ /* color */
28
+ --surface-bg: var(--color-bg-container-secondary);
29
+ --surface-color: var(--color-text-container-secondary);
30
+
31
+ /* typography */
32
+
33
+ /* size */
34
+
35
+ /* border */
36
+
37
+ /* depth */
38
+
39
+ /* motion */
40
+ }
41
+
42
+ .surface--secondary .button--primary {
43
+ /* color */
44
+ --button-bg: var(--color-primary-1);
45
+ --button-color: var(--color-text-primary-1);
46
+ --button-focus-color: var(--color-primary-1);
47
+
48
+ /* typography */
49
+
50
+ /* size */
51
+
52
+ /* border */
53
+
54
+ /* depth */
55
+
56
+ /* motion */
57
+ }
58
+
59
+ .surface--secondary .button--link {
60
+ /* color */
61
+ --button-color: var(--color-primary-1);
62
+ --button-focus-color: var(--color-primary-1);
63
+
64
+ /* typography */
65
+
66
+ /* size */
67
+
68
+ /* border */
69
+
70
+ /* depth */
71
+
72
+ /* motion */
73
+ }
74
+
75
+ .surface--tertiary {
76
+ /* color */
77
+ --surface-bg: var(--color-bg-container-tertiary);
78
+ --surface-color: var(--color-text-container-tertiary);
79
+
80
+ /* typography */
81
+
82
+ /* size */
83
+
84
+ /* border */
85
+
86
+ /* depth */
87
+
88
+ /* motion */
89
+ }
90
+
91
+ .surface--tertiary
92
+ .button:not(.button--primary):not(.button--link):not(.button--toolbar) {
93
+ /* color */
94
+ --button-bg: var(--color-bg);
95
+ --button-color: var(--color-text);
96
+ --button-focus-color: var(--color-bg);
97
+
98
+ /* typography */
99
+
100
+ /* size */
101
+
102
+ /* border */
103
+
104
+ /* depth */
105
+
106
+ /* motion */
107
+ }
108
+
109
+ .surface--outline {
110
+ /* color */
111
+ background: transparent;
112
+ color: inherit;
113
+
114
+ /* typography */
115
+
116
+ /* size */
117
+
118
+ /* border */
119
+ border-color: var(--color-line);
120
+ border-style: dashed;
121
+ border-width: var(--size-border-width-base);
122
+
123
+ /* depth */
124
+
125
+ /* motion */
126
+ }
package/index.d.ts CHANGED
@@ -44,6 +44,7 @@ export { default as Card } from './components/card';
44
44
  export type { CardProps } from './components/card';
45
45
  export { default as Panel } from './components/panel';
46
46
  export type { PanelProps } from './components/panel';
47
+ export type { SurfaceRank } from './components/surface/surface-presentation';
47
48
  export { default as Logo } from './components/logo';
48
49
  export type { LogoBrand, LogoMode, LogoProps, } from './components/logo';
49
50
  export { default as Avatar } from './components/avatar';
@@ -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",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/layouts/base/base.tsx"],"names":["classnames","jsxs","LayoutFoundation","jsx"],"mappings":";;;;;;;;;;;AA0BA,MAAM,aAAwC,CAAC;AAAA,EAC7C,KAAA,GAAQ,SAAA;AAAA,EACR,WAAA,GAAc,OAAA;AAAA,EACd,SAAA,GAAY,OAAA;AAAA,EACZ,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA,CAAW,aAAA,EAAe,SAAA,EAAW,EAAE,CAAA;AAEvD,EAAA,MAAM,cAAA,GAAiBA,qBAAA,CAAW,sBAAA,EAAwB,EAAA,EAAI;AAAA,IAC5D,gCAAgC,KAAA,KAAU,QAAA;AAAA,IAC1C,8BAA8B,KAAA,KAAU,MAAA;AAAA,IACxC,8BAA8B,KAAA,KAAU;AAAA,GACzC,CAAA;AAED,EAAA,MAAM,aAAA,GAAgBA,qBAAA,CAAW,qBAAA,EAAuB,EAAA,EAAI;AAAA,IAC1D,qCAAqC,WAAA,KAAgB,QAAA;AAAA,IACrD,kCAAkC,WAAA,KAAgB;AAAA,GACnD,CAAA;AAED,EAAA,MAAM,WAAA,GAAcA,qBAAA,CAAW,mBAAA,EAAqB,EAAA,EAAI;AAAA,IACtD,mCAAmC,SAAA,KAAc,QAAA;AAAA,IACjD,gCAAgC,SAAA,KAAc;AAAA,GAC/C,CAAA;AAED,EAAA,uBACEC,eAAA;AAAA,IAACC,iCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,MAAA;AAAA,MACN,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,MAAA,oBACCC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,EACb,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,wBAGFA,cAAA,CAAC,UAAK,SAAA,EAAW,WAAA,EACf,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAA,EACb,QAAA,EACH,CAAA,EACF,CAAA;AAAA,QAEC,MAAA,oBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBACZ,QAAA,EAAA,MAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"base.cjs","sourcesContent":["import React from 'react';\nimport LayoutFoundation, {\n type LayoutFoundationWidth,\n} from '../foundation';\nimport './base.css';\nimport { classnames } from '../../components/helpers/classnames';\n\nexport type LayoutBaseHeaderAlign =\n | 'start'\n | 'center'\n | 'end';\n\nexport type LayoutBaseMainAlign =\n | 'start'\n | 'center'\n | 'end';\n\nexport interface LayoutBaseProps\n extends React.HTMLAttributes<HTMLDivElement> {\n width?: LayoutFoundationWidth;\n headerAlign?: LayoutBaseHeaderAlign;\n mainAlign?: LayoutBaseMainAlign;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nconst LayoutBase: React.FC<LayoutBaseProps> = ({\n width = 'default',\n headerAlign = 'start',\n mainAlign = 'start',\n header,\n footer,\n children,\n className = '',\n ...props\n}) => {\n const classes = classnames('layout-base', className, {});\n\n const contentClasses = classnames('layout-base__content', '', {\n 'layout-base__content--narrow': width === 'narrow',\n 'layout-base__content--wide': width === 'wide',\n 'layout-base__content--full': width === 'full',\n });\n\n const headerClasses = classnames('layout-base__header', '', {\n 'layout-base__header--align-center': headerAlign === 'center',\n 'layout-base__header--align-end': headerAlign === 'end',\n });\n\n const mainClasses = classnames('layout-base__main', '', {\n 'layout-base__main--align-center': mainAlign === 'center',\n 'layout-base__main--align-end': mainAlign === 'end',\n });\n\n return (\n <LayoutFoundation\n width=\"full\"\n className={classes}\n {...props}\n >\n {header && (\n <div className={headerClasses}>\n {header}\n </div>\n )}\n\n <main className={mainClasses}>\n <div className={contentClasses}>\n {children}\n </div>\n </main>\n\n {footer && (\n <div className=\"layout-base__footer\">\n {footer}\n </div>\n )}\n </LayoutFoundation>\n );\n};\n\nexport default LayoutBase;"]}
1
+ {"version":3,"sources":["../../../src/layouts/base/base.tsx"],"names":["classnames","jsxs","LayoutFoundation","jsx"],"mappings":";;;;;;;;;;;AA+BA,MAAM,aAAwC,CAAC;AAAA,EAC7C,KAAA,GAAQ,SAAA;AAAA,EACR,WAAA,GAAc,OAAA;AAAA,EACd,SAAA,GAAY,OAAA;AAAA,EACZ,YAAA,GAAe,OAAA;AAAA,EACf,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA,CAAW,aAAA,EAAe,SAAA,EAAW,EAAE,CAAA;AAEvD,EAAA,MAAM,cAAA,GAAiBA,qBAAA,CAAW,sBAAA,EAAwB,EAAA,EAAI;AAAA,IAC5D,gCAAgC,KAAA,KAAU,QAAA;AAAA,IAC1C,8BAA8B,KAAA,KAAU,MAAA;AAAA,IACxC,8BAA8B,KAAA,KAAU,MAAA;AAAA,IACxC,sCAAsC,YAAA,KAAiB;AAAA,GACxD,CAAA;AAED,EAAA,MAAM,aAAA,GAAgBA,qBAAA,CAAW,qBAAA,EAAuB,EAAA,EAAI;AAAA,IAC1D,qCAAqC,WAAA,KAAgB,QAAA;AAAA,IACrD,kCAAkC,WAAA,KAAgB;AAAA,GACnD,CAAA;AAED,EAAA,MAAM,WAAA,GAAcA,qBAAA,CAAW,mBAAA,EAAqB,EAAA,EAAI;AAAA,IACtD,mCAAmC,SAAA,KAAc,QAAA;AAAA,IACjD,gCAAgC,SAAA,KAAc;AAAA,GAC/C,CAAA;AAED,EAAA,uBACEC,eAAA;AAAA,IAACC,iCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,MAAA;AAAA,MACN,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,MAAA,oBACCC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,EACb,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,wBAGFA,cAAA,CAAC,UAAK,SAAA,EAAW,WAAA,EACf,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAA,EACb,QAAA,EACH,CAAA,EACF,CAAA;AAAA,QAEC,MAAA,oBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBACZ,QAAA,EAAA,MAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"base.cjs","sourcesContent":["import React from 'react';\nimport LayoutFoundation, {\n type LayoutFoundationWidth,\n} from '../foundation';\nimport './base.css';\nimport { classnames } from '../../components/helpers/classnames';\n\nexport type LayoutBaseHeaderAlign =\n | 'start'\n | 'center'\n | 'end';\n\nexport type LayoutBaseMainAlign =\n | 'start'\n | 'center'\n | 'end';\n\nexport type LayoutBaseContentAlign =\n | 'start'\n | 'center';\n\nexport interface LayoutBaseProps\n extends React.HTMLAttributes<HTMLDivElement> {\n width?: LayoutFoundationWidth;\n headerAlign?: LayoutBaseHeaderAlign;\n mainAlign?: LayoutBaseMainAlign;\n contentAlign?: LayoutBaseContentAlign;\n header?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\nconst LayoutBase: React.FC<LayoutBaseProps> = ({\n width = 'default',\n headerAlign = 'start',\n mainAlign = 'start',\n contentAlign = 'start',\n header,\n footer,\n children,\n className = '',\n ...props\n}) => {\n const classes = classnames('layout-base', className, {});\n\n const contentClasses = classnames('layout-base__content', '', {\n 'layout-base__content--narrow': width === 'narrow',\n 'layout-base__content--wide': width === 'wide',\n 'layout-base__content--full': width === 'full',\n 'layout-base__content--align-center': contentAlign === 'center',\n });\n\n const headerClasses = classnames('layout-base__header', '', {\n 'layout-base__header--align-center': headerAlign === 'center',\n 'layout-base__header--align-end': headerAlign === 'end',\n });\n\n const mainClasses = classnames('layout-base__main', '', {\n 'layout-base__main--align-center': mainAlign === 'center',\n 'layout-base__main--align-end': mainAlign === 'end',\n });\n\n return (\n <LayoutFoundation\n width=\"full\"\n className={classes}\n {...props}\n >\n {header && (\n <div className={headerClasses}>\n {header}\n </div>\n )}\n\n <main className={mainClasses}>\n <div className={contentClasses}>\n {children}\n </div>\n </main>\n\n {footer && (\n <div className=\"layout-base__footer\">\n {footer}\n </div>\n )}\n </LayoutFoundation>\n );\n};\n\nexport default LayoutBase;\n"]}
@@ -123,6 +123,23 @@
123
123
  max-width: none;
124
124
  }
125
125
 
126
+ .layout-base__content--align-center {
127
+ /* color */
128
+
129
+ /* typography */
130
+
131
+ /* size */
132
+ display: flex;
133
+ flex-direction: column;
134
+ align-items: center;
135
+
136
+ /* border */
137
+
138
+ /* depth */
139
+
140
+ /* motion */
141
+ }
142
+
126
143
  .layout-base__footer {
127
144
  /* color */
128
145
 
@@ -136,4 +153,4 @@
136
153
  /* depth */
137
154
 
138
155
  /* motion */
139
- }
156
+ }
@@ -3,10 +3,12 @@ import { type LayoutFoundationWidth } from '../foundation';
3
3
  import './base.css';
4
4
  export type LayoutBaseHeaderAlign = 'start' | 'center' | 'end';
5
5
  export type LayoutBaseMainAlign = 'start' | 'center' | 'end';
6
+ export type LayoutBaseContentAlign = 'start' | 'center';
6
7
  export interface LayoutBaseProps extends React.HTMLAttributes<HTMLDivElement> {
7
8
  width?: LayoutFoundationWidth;
8
9
  headerAlign?: LayoutBaseHeaderAlign;
9
10
  mainAlign?: LayoutBaseMainAlign;
11
+ contentAlign?: LayoutBaseContentAlign;
10
12
  header?: React.ReactNode;
11
13
  footer?: React.ReactNode;
12
14
  }