@khanacademy/wonder-blocks-card 1.4.30 → 1.5.1
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 +19 -0
- package/dist/components/card.d.ts +6 -6
- package/dist/components/dismiss-button.d.ts +4 -1
- package/dist/es/index.js +3 -2
- package/dist/index.js +3 -2
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @khanacademy/wonder-blocks-card
|
|
2
2
|
|
|
3
|
+
## 1.5.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [88c9897]
|
|
8
|
+
- @khanacademy/wonder-blocks-config@0.6.0
|
|
9
|
+
|
|
10
|
+
## 1.5.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- 8e11e83: Card's dismiss button now reads its default `aria-label` ("Close") from `WonderBlocksConfigProvider`. The `labels.dismissButtonAriaLabel` prop overrides the built-in translation, and is now optional when `onDismiss` is set.
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [6bd5d0c]
|
|
19
|
+
- Updated dependencies [8e11e83]
|
|
20
|
+
- @khanacademy/wonder-blocks-config@0.5.0
|
|
21
|
+
|
|
3
22
|
## 1.4.30
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
|
@@ -71,8 +71,8 @@ type StyleProps = {
|
|
|
71
71
|
* ### Accessibility
|
|
72
72
|
*
|
|
73
73
|
* When the `onDismiss` prop is provided, a dismiss button will be rendered.
|
|
74
|
-
*
|
|
75
|
-
*
|
|
74
|
+
* It has a built-in, translated screen reader label ("Close"), which can be
|
|
75
|
+
* overridden using the `labels.dismissButtonAriaLabel` prop.
|
|
76
76
|
*
|
|
77
77
|
* See additional Accessibility docs.
|
|
78
78
|
*/
|
|
@@ -119,8 +119,8 @@ declare const Card: React.ForwardRefExoticComponent<(Omit<{
|
|
|
119
119
|
role?: AriaProps["role"];
|
|
120
120
|
} & {
|
|
121
121
|
onDismiss: (e?: React.SyntheticEvent) => void;
|
|
122
|
-
labels
|
|
123
|
-
dismissButtonAriaLabel
|
|
122
|
+
labels?: {
|
|
123
|
+
dismissButtonAriaLabel?: string;
|
|
124
124
|
dismissButtonAriaDescribedBy?: string;
|
|
125
125
|
} & Record<string, any>;
|
|
126
126
|
}, "ref"> | Omit<{
|
|
@@ -210,8 +210,8 @@ declare const Card: React.ForwardRefExoticComponent<(Omit<{
|
|
|
210
210
|
role?: AriaProps["role"];
|
|
211
211
|
} & {
|
|
212
212
|
onDismiss: (e?: React.SyntheticEvent) => void;
|
|
213
|
-
labels
|
|
214
|
-
dismissButtonAriaLabel
|
|
213
|
+
labels?: {
|
|
214
|
+
dismissButtonAriaLabel?: string;
|
|
215
215
|
dismissButtonAriaDescribedBy?: string;
|
|
216
216
|
} & Record<string, any>;
|
|
217
217
|
}, "ref"> | Omit<{
|
|
@@ -3,7 +3,10 @@ import type { StyleType } from "@khanacademy/wonder-blocks-core";
|
|
|
3
3
|
type Props = {
|
|
4
4
|
/** Optional click handler */
|
|
5
5
|
onClick?: (e?: React.SyntheticEvent) => unknown;
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Screen reader label for close button. This overrides the default label
|
|
8
|
+
* provided by `WonderBlocksConfigProvider`.
|
|
9
|
+
*/
|
|
7
10
|
"aria-label"?: string;
|
|
8
11
|
/** Optional aria-describedby attribute */
|
|
9
12
|
"aria-describedby"?: string;
|
package/dist/es/index.js
CHANGED
|
@@ -4,11 +4,12 @@ import { StyleSheet } from 'aphrodite';
|
|
|
4
4
|
import { View } from '@khanacademy/wonder-blocks-core';
|
|
5
5
|
import { sizing, semanticColor, border, boxShadow, font } from '@khanacademy/wonder-blocks-tokens';
|
|
6
6
|
import xIcon from '@phosphor-icons/core/bold/x-bold.svg';
|
|
7
|
+
import { useWonderBlocksI18n } from '@khanacademy/wonder-blocks-config';
|
|
7
8
|
import IconButton from '@khanacademy/wonder-blocks-icon-button';
|
|
8
9
|
import { focusStyles } from '@khanacademy/wonder-blocks-styles';
|
|
9
10
|
|
|
10
|
-
const DismissButton=props=>{const{onClick,style,testId,"aria-describedby":ariaDescribedBy}=props;return jsx(IconButton,{icon:xIcon,"aria-label":props["aria-label"]||
|
|
11
|
+
const DismissButton=props=>{const{onClick,style,testId,"aria-describedby":ariaDescribedBy}=props;const{strings}=useWonderBlocksI18n();return jsx(IconButton,{icon:xIcon,"aria-label":props["aria-label"]||strings.iconAltClose,"aria-describedby":ariaDescribedBy,onClick:onClick,kind:"tertiary",actionType:"neutral",style:[componentStyles.root,style],testId:testId})};const componentStyles=StyleSheet.create({root:{position:"absolute",insetInlineEnd:sizing.size_080,insetBlockStart:sizing.size_080,zIndex:1,":focus":focusStyles.focus[":focus-visible"]}});
|
|
11
12
|
|
|
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,"aria-labelledby":ariaLabelledBy,"aria-busy":ariaBusy,role}=props;const isBackgroundToken=background==="base-default"||background==="base-subtle";const componentStyles=getComponentStyles({background:isBackgroundToken?background:null,borderRadius,paddingSize,elevation});return jsxs(View,{"aria-busy":ariaBusy,"aria-label":labels?.cardAriaLabel,"aria-labelledby":ariaLabelledBy,style:[componentStyles.root,!isBackgroundToken&&{background:`url(${background})`,backgroundSize:"cover"},styles?.root],ref:ref,role:role,tag:tag,testId:testId,inert:inert?"":undefined,children:[onDismiss?jsx(DismissButton,{"aria-label":labels?.dismissButtonAriaLabel
|
|
13
|
+
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,"aria-labelledby":ariaLabelledBy,"aria-busy":ariaBusy,role}=props;const isBackgroundToken=background==="base-default"||background==="base-subtle";const componentStyles=getComponentStyles({background:isBackgroundToken?background:null,borderRadius,paddingSize,elevation});return jsxs(View,{"aria-busy":ariaBusy,"aria-label":labels?.cardAriaLabel,"aria-labelledby":ariaLabelledBy,style:[componentStyles.root,!isBackgroundToken&&{background:`url(${background})`,backgroundSize:"cover"},styles?.root],ref:ref,role:role,tag:tag,testId:testId,inert:inert?"":undefined,children:[onDismiss?jsx(DismissButton,{"aria-label":labels?.dismissButtonAriaLabel,"aria-describedby":labels?.dismissButtonAriaDescribedBy,onClick:e=>onDismiss?.(e),testId:testId&&`${testId}-dismiss-button`}):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
14
|
|
|
14
15
|
export { Card };
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ var aphrodite = require('aphrodite');
|
|
|
8
8
|
var wonderBlocksCore = require('@khanacademy/wonder-blocks-core');
|
|
9
9
|
var wonderBlocksTokens = require('@khanacademy/wonder-blocks-tokens');
|
|
10
10
|
var xIcon = require('@phosphor-icons/core/bold/x-bold.svg');
|
|
11
|
+
var wonderBlocksConfig = require('@khanacademy/wonder-blocks-config');
|
|
11
12
|
var IconButton = require('@khanacademy/wonder-blocks-icon-button');
|
|
12
13
|
var wonderBlocksStyles = require('@khanacademy/wonder-blocks-styles');
|
|
13
14
|
|
|
@@ -35,8 +36,8 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
35
36
|
var xIcon__default = /*#__PURE__*/_interopDefaultLegacy(xIcon);
|
|
36
37
|
var IconButton__default = /*#__PURE__*/_interopDefaultLegacy(IconButton);
|
|
37
38
|
|
|
38
|
-
const DismissButton=props=>{const{onClick,style,testId,"aria-describedby":ariaDescribedBy}=props;return jsxRuntime.jsx(IconButton__default["default"],{icon:xIcon__default["default"],"aria-label":props["aria-label"]||
|
|
39
|
+
const DismissButton=props=>{const{onClick,style,testId,"aria-describedby":ariaDescribedBy}=props;const{strings}=wonderBlocksConfig.useWonderBlocksI18n();return jsxRuntime.jsx(IconButton__default["default"],{icon:xIcon__default["default"],"aria-label":props["aria-label"]||strings.iconAltClose,"aria-describedby":ariaDescribedBy,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,insetBlockStart:wonderBlocksTokens.sizing.size_080,zIndex:1,":focus":wonderBlocksStyles.focusStyles.focus[":focus-visible"]}});
|
|
39
40
|
|
|
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,"aria-labelledby":ariaLabelledBy,"aria-busy":ariaBusy,role}=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-busy":ariaBusy,"aria-label":labels?.cardAriaLabel,"aria-labelledby":ariaLabelledBy,style:[componentStyles.root,!isBackgroundToken&&{background:`url(${background})`,backgroundSize:"cover"},styles?.root],ref:ref,role:role,tag:tag,testId:testId,inert:inert?"":undefined,children:[onDismiss?jsxRuntime.jsx(DismissButton,{"aria-label":labels?.dismissButtonAriaLabel
|
|
41
|
+
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,"aria-labelledby":ariaLabelledBy,"aria-busy":ariaBusy,role}=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-busy":ariaBusy,"aria-label":labels?.cardAriaLabel,"aria-labelledby":ariaLabelledBy,style:[componentStyles.root,!isBackgroundToken&&{background:`url(${background})`,backgroundSize:"cover"},styles?.root],ref:ref,role:role,tag:tag,testId:testId,inert:inert?"":undefined,children:[onDismiss?jsxRuntime.jsx(DismissButton,{"aria-label":labels?.dismissButtonAriaLabel,"aria-describedby":labels?.dismissButtonAriaDescribedBy,onClick:e=>onDismiss?.(e),testId:testId&&`${testId}-dismiss-button`}):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
42
|
|
|
42
43
|
exports.Card = Card;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Card component for Wonder Blocks.",
|
|
4
4
|
"author": "Khan Academy",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"version": "1.
|
|
6
|
+
"version": "1.5.1",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"types": "dist/index.d.ts",
|
|
22
22
|
"source": "src/index.js",
|
|
23
23
|
"dependencies": {
|
|
24
|
+
"@khanacademy/wonder-blocks-config": "0.6.0",
|
|
24
25
|
"@khanacademy/wonder-blocks-core": "12.5.0",
|
|
25
26
|
"@khanacademy/wonder-blocks-icon-button": "12.0.2",
|
|
26
27
|
"@khanacademy/wonder-blocks-tokens": "18.1.0"
|