@khanacademy/wonder-blocks-card 0.0.0-PR2816-20251008182823 → 0.0.0-PR2816-20251009191049
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/dist/es/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/src/components/card.tsx +16 -16
package/CHANGELOG.md
CHANGED
package/dist/es/index.js
CHANGED
|
@@ -9,6 +9,6 @@ import { focusStyles } from '@khanacademy/wonder-blocks-styles';
|
|
|
9
9
|
|
|
10
10
|
const DismissButton=props=>{const{onClick,style,testId}=props;return jsx(IconButton,{icon:xIcon,"aria-label":props["aria-label"]||"Close",onClick:onClick,kind:"tertiary",actionType:"neutral",style:[componentStyles.root,style],testId:testId})};const componentStyles=StyleSheet.create({root:{position:"absolute",insetInlineEnd:sizing.size_080,top:sizing.size_080,zIndex:1,":focus":focusStyles.focus[":focus-visible"]}});
|
|
11
11
|
|
|
12
|
-
const Card=React.forwardRef(function Card(props,ref){const{styles,labels,tag,testId,background="base-default",borderRadius="small",paddingSize="small",elevation="none",children,onDismiss,inert}=props;const componentStyles=getComponentStyles({background,borderRadius,paddingSize,elevation});return jsxs(View,{"aria-label":labels?.cardAriaLabel,style:[componentStyles.root,styles?.root],ref:ref,tag:tag,testId:testId,inert:inert?"":undefined,children:[onDismiss?jsx(DismissButton,{"aria-label":labels?.dismissButtonAriaLabel||"Close",onClick:e=>onDismiss?.(e)}):null,children]})});const styleMap={backgroundColor:{"base-subtle":semanticColor.core.background.base.subtle,"base-default":semanticColor.core.background.base.default},borderRadius:{small:border.radius.radius_080,medium:border.radius.radius_120},padding:{none:sizing.size_0,small:sizing.size_160,medium:sizing.size_240},elevation:{none:"none",low:boxShadow.low}};const getComponentStyles=({background="base-default",borderRadius="small",paddingSize="small",elevation="none"})=>{const
|
|
12
|
+
const Card=React.forwardRef(function Card(props,ref){const{styles,labels,tag,testId,background="base-default",borderRadius="small",paddingSize="small",elevation="none",children,onDismiss,inert}=props;const isBackgroundToken=background==="base-default"||background==="base-subtle";const componentStyles=getComponentStyles({background:isBackgroundToken?background:null,borderRadius,paddingSize,elevation});return jsxs(View,{"aria-label":labels?.cardAriaLabel,style:[componentStyles.root,!isBackgroundToken&&{background:`url(${background})`,backgroundSize:"cover"},styles?.root],ref:ref,tag:tag,testId:testId,inert:inert?"":undefined,children:[onDismiss?jsx(DismissButton,{"aria-label":labels?.dismissButtonAriaLabel||"Close",onClick:e=>onDismiss?.(e)}):null,children]})});const styleMap={backgroundColor:{"base-subtle":semanticColor.core.background.base.subtle,"base-default":semanticColor.core.background.base.default},borderRadius:{small:border.radius.radius_080,medium:border.radius.radius_120},padding:{none:sizing.size_0,small:sizing.size_160,medium:sizing.size_240},elevation:{none:"none",low:boxShadow.low}};const getComponentStyles=({background="base-default",borderRadius="small",paddingSize="small",elevation="none"})=>{const bgColor=background;return StyleSheet.create({root:{backgroundColor:bgColor&&styleMap.backgroundColor[bgColor],borderColor:semanticColor.core.border.neutral.subtle,borderStyle:"solid",borderWidth:border.width.thin,fontFamily:font.family.sans,minInlineSize:sizing.size_280,position:"relative",borderRadius:styleMap.borderRadius[borderRadius],boxShadow:styleMap.elevation[elevation],padding:styleMap.padding[paddingSize]}})};
|
|
13
13
|
|
|
14
14
|
export { Card };
|
package/dist/index.js
CHANGED
|
@@ -37,6 +37,6 @@ var IconButton__default = /*#__PURE__*/_interopDefaultLegacy(IconButton);
|
|
|
37
37
|
|
|
38
38
|
const DismissButton=props=>{const{onClick,style,testId}=props;return jsxRuntime.jsx(IconButton__default["default"],{icon:xIcon__default["default"],"aria-label":props["aria-label"]||"Close",onClick:onClick,kind:"tertiary",actionType:"neutral",style:[componentStyles.root,style],testId:testId})};const componentStyles=aphrodite.StyleSheet.create({root:{position:"absolute",insetInlineEnd:wonderBlocksTokens.sizing.size_080,top:wonderBlocksTokens.sizing.size_080,zIndex:1,":focus":wonderBlocksStyles.focusStyles.focus[":focus-visible"]}});
|
|
39
39
|
|
|
40
|
-
const Card=React__namespace.forwardRef(function Card(props,ref){const{styles,labels,tag,testId,background="base-default",borderRadius="small",paddingSize="small",elevation="none",children,onDismiss,inert}=props;const componentStyles=getComponentStyles({background,borderRadius,paddingSize,elevation});return jsxRuntime.jsxs(wonderBlocksCore.View,{"aria-label":labels?.cardAriaLabel,style:[componentStyles.root,styles?.root],ref:ref,tag:tag,testId:testId,inert:inert?"":undefined,children:[onDismiss?jsxRuntime.jsx(DismissButton,{"aria-label":labels?.dismissButtonAriaLabel||"Close",onClick:e=>onDismiss?.(e)}):null,children]})});const styleMap={backgroundColor:{"base-subtle":wonderBlocksTokens.semanticColor.core.background.base.subtle,"base-default":wonderBlocksTokens.semanticColor.core.background.base.default},borderRadius:{small:wonderBlocksTokens.border.radius.radius_080,medium:wonderBlocksTokens.border.radius.radius_120},padding:{none:wonderBlocksTokens.sizing.size_0,small:wonderBlocksTokens.sizing.size_160,medium:wonderBlocksTokens.sizing.size_240},elevation:{none:"none",low:wonderBlocksTokens.boxShadow.low}};const getComponentStyles=({background="base-default",borderRadius="small",paddingSize="small",elevation="none"})=>{const
|
|
40
|
+
const Card=React__namespace.forwardRef(function Card(props,ref){const{styles,labels,tag,testId,background="base-default",borderRadius="small",paddingSize="small",elevation="none",children,onDismiss,inert}=props;const isBackgroundToken=background==="base-default"||background==="base-subtle";const componentStyles=getComponentStyles({background:isBackgroundToken?background:null,borderRadius,paddingSize,elevation});return jsxRuntime.jsxs(wonderBlocksCore.View,{"aria-label":labels?.cardAriaLabel,style:[componentStyles.root,!isBackgroundToken&&{background:`url(${background})`,backgroundSize:"cover"},styles?.root],ref:ref,tag:tag,testId:testId,inert:inert?"":undefined,children:[onDismiss?jsxRuntime.jsx(DismissButton,{"aria-label":labels?.dismissButtonAriaLabel||"Close",onClick:e=>onDismiss?.(e)}):null,children]})});const styleMap={backgroundColor:{"base-subtle":wonderBlocksTokens.semanticColor.core.background.base.subtle,"base-default":wonderBlocksTokens.semanticColor.core.background.base.default},borderRadius:{small:wonderBlocksTokens.border.radius.radius_080,medium:wonderBlocksTokens.border.radius.radius_120},padding:{none:wonderBlocksTokens.sizing.size_0,small:wonderBlocksTokens.sizing.size_160,medium:wonderBlocksTokens.sizing.size_240},elevation:{none:"none",low:wonderBlocksTokens.boxShadow.low}};const getComponentStyles=({background="base-default",borderRadius="small",paddingSize="small",elevation="none"})=>{const bgColor=background;return aphrodite.StyleSheet.create({root:{backgroundColor:bgColor&&styleMap.backgroundColor[bgColor],borderColor:wonderBlocksTokens.semanticColor.core.border.neutral.subtle,borderStyle:"solid",borderWidth:wonderBlocksTokens.border.width.thin,fontFamily:wonderBlocksTokens.font.family.sans,minInlineSize:wonderBlocksTokens.sizing.size_280,position:"relative",borderRadius:styleMap.borderRadius[borderRadius],boxShadow:styleMap.elevation[elevation],padding:styleMap.padding[paddingSize]}})};
|
|
41
41
|
|
|
42
42
|
exports.Card = Card;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@khanacademy/wonder-blocks-card",
|
|
3
|
-
"version": "0.0.0-PR2816-
|
|
3
|
+
"version": "0.0.0-PR2816-20251009191049",
|
|
4
4
|
"design": "v1",
|
|
5
5
|
"description": "Card component for Wonder Blocks.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@khanacademy/wonder-blocks-core": "12.4.0",
|
|
17
|
-
"@khanacademy/wonder-blocks-
|
|
18
|
-
"@khanacademy/wonder-blocks-
|
|
17
|
+
"@khanacademy/wonder-blocks-tokens": "14.0.0",
|
|
18
|
+
"@khanacademy/wonder-blocks-icon-button": "10.5.2"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"aphrodite": "^1.2.5",
|
package/src/components/card.tsx
CHANGED
|
@@ -86,7 +86,7 @@ type StyleProps = {
|
|
|
86
86
|
*
|
|
87
87
|
* Default: `"base-default"`
|
|
88
88
|
*/
|
|
89
|
-
background?: "base-subtle" | "base-default" | typeof Image;
|
|
89
|
+
background?: "base-subtle" | "base-default" | typeof Image | null;
|
|
90
90
|
/**
|
|
91
91
|
* The border radius of the card, as a string identifier that matches a border.radius token.
|
|
92
92
|
* This can be one of:
|
|
@@ -166,16 +166,26 @@ const Card = React.forwardRef(function Card(
|
|
|
166
166
|
inert,
|
|
167
167
|
} = props;
|
|
168
168
|
|
|
169
|
+
const isBackgroundToken =
|
|
170
|
+
background === "base-default" || background === "base-subtle";
|
|
169
171
|
const componentStyles = getComponentStyles({
|
|
170
|
-
background,
|
|
172
|
+
background: isBackgroundToken ? background : null,
|
|
171
173
|
borderRadius,
|
|
172
174
|
paddingSize,
|
|
173
175
|
elevation,
|
|
174
176
|
});
|
|
177
|
+
|
|
175
178
|
return (
|
|
176
179
|
<View
|
|
177
180
|
aria-label={labels?.cardAriaLabel}
|
|
178
|
-
style={[
|
|
181
|
+
style={[
|
|
182
|
+
componentStyles.root,
|
|
183
|
+
!isBackgroundToken && {
|
|
184
|
+
background: `url(${background})`,
|
|
185
|
+
backgroundSize: "cover",
|
|
186
|
+
},
|
|
187
|
+
styles?.root,
|
|
188
|
+
]}
|
|
179
189
|
ref={ref}
|
|
180
190
|
tag={tag}
|
|
181
191
|
testId={testId}
|
|
@@ -222,25 +232,15 @@ const getComponentStyles = ({
|
|
|
222
232
|
paddingSize = "small",
|
|
223
233
|
elevation = "none",
|
|
224
234
|
}: StyleProps) => {
|
|
225
|
-
const
|
|
226
|
-
background === "base-subtle" || background === "base-default";
|
|
227
|
-
|
|
235
|
+
const bgColor = background as keyof typeof styleMap.backgroundColor;
|
|
228
236
|
return StyleSheet.create({
|
|
229
237
|
root: {
|
|
230
|
-
|
|
231
|
-
...(isBackgroundColorStyle && {
|
|
232
|
-
backgroundColor: styleMap.backgroundColor[background],
|
|
233
|
-
}),
|
|
234
|
-
// Background image styles
|
|
235
|
-
...(!isBackgroundColorStyle &&
|
|
236
|
-
background && {
|
|
237
|
-
background: `url(${background})`,
|
|
238
|
-
backgroundSize: "cover",
|
|
239
|
-
}),
|
|
238
|
+
backgroundColor: bgColor && styleMap.backgroundColor[bgColor],
|
|
240
239
|
// Common styles
|
|
241
240
|
borderColor: semanticColor.core.border.neutral.subtle,
|
|
242
241
|
borderStyle: "solid",
|
|
243
242
|
borderWidth: border.width.thin,
|
|
243
|
+
// Apply the system font to cards by default
|
|
244
244
|
fontFamily: font.family.sans,
|
|
245
245
|
minInlineSize: sizing.size_280,
|
|
246
246
|
position: "relative",
|