@khanacademy/perseus 68.0.2 → 69.0.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.
Files changed (62) hide show
  1. package/dist/es/index.css +4 -6
  2. package/dist/es/index.css.map +1 -1
  3. package/dist/es/index.js +47 -50
  4. package/dist/es/index.js.map +1 -1
  5. package/dist/index.css +4 -6
  6. package/dist/index.css.map +1 -1
  7. package/dist/index.js +46 -49
  8. package/dist/index.js.map +1 -1
  9. package/dist/renderer.d.ts +1 -12
  10. package/dist/server-item-renderer.d.ts +1 -7
  11. package/dist/types.d.ts +3 -26
  12. package/dist/widget-ai-utils/categorizer/categorizer-ai-utils.d.ts +1 -1
  13. package/dist/widget-ai-utils/definition/definition-ai-utils.d.ts +1 -1
  14. package/dist/widget-ai-utils/dropdown/dropdown-ai-utils.d.ts +1 -1
  15. package/dist/widget-ai-utils/explanation/explanation-ai-utils.d.ts +1 -1
  16. package/dist/widget-ai-utils/expression/expression-ai-utils.d.ts +1 -1
  17. package/dist/widget-ai-utils/graded-group-set/graded-group-set-ai-utils.d.ts +1 -1
  18. package/dist/widget-ai-utils/grapher/grapher-ai-utils.d.ts +1 -1
  19. package/dist/widget-ai-utils/image/image-ai-utils.d.ts +1 -1
  20. package/dist/widget-ai-utils/input-number/input-number-ai-utils.d.ts +1 -1
  21. package/dist/widget-ai-utils/label-image/label-image-ai-utils.d.ts +1 -1
  22. package/dist/widget-ai-utils/matcher/matcher-ai-utils.d.ts +2 -2
  23. package/dist/widget-ai-utils/matrix/matrix-ai-utils.d.ts +1 -1
  24. package/dist/widget-ai-utils/mock-widget/prompt-utils.d.ts +1 -1
  25. package/dist/widget-ai-utils/number-line/number-line-ai-utils.d.ts +1 -1
  26. package/dist/widget-ai-utils/numeric-input/prompt-utils.d.ts +1 -1
  27. package/dist/widget-ai-utils/orderer/orderer-ai-utils.d.ts +1 -1
  28. package/dist/widget-ai-utils/passage/passage-ai-utils.d.ts +1 -1
  29. package/dist/widget-ai-utils/passage-ref/passage-ref-ai-utils.d.ts +1 -1
  30. package/dist/widget-ai-utils/radio/radio-ai-utils.d.ts +1 -1
  31. package/dist/widget-container.d.ts +1 -4
  32. package/dist/widgets/categorizer/categorizer.d.ts +4 -11
  33. package/dist/widgets/cs-program/cs-program.d.ts +6 -2
  34. package/dist/widgets/definition/definition.d.ts +1 -2
  35. package/dist/widgets/explanation/explanation.d.ts +1 -3
  36. package/dist/widgets/expression/expression.d.ts +2 -2
  37. package/dist/widgets/free-response/free-response.d.ts +1 -2
  38. package/dist/widgets/graded-group/graded-group.d.ts +0 -1
  39. package/dist/widgets/grapher/grapher.d.ts +1 -1
  40. package/dist/widgets/group/group.d.ts +1 -2
  41. package/dist/widgets/iframe/iframe.d.ts +6 -5
  42. package/dist/widgets/interaction/interaction.d.ts +1 -2
  43. package/dist/widgets/interactive-graphs/graphs/components/angle-indicators.d.ts +1 -1
  44. package/dist/widgets/interactive-graphs/graphs/utils.d.ts +5 -0
  45. package/dist/widgets/interactive-graphs/interactive-graph.d.ts +4 -4
  46. package/dist/widgets/matcher/matcher.d.ts +1 -2
  47. package/dist/widgets/matrix/matrix.d.ts +2 -7
  48. package/dist/widgets/mock-widgets/mock-widget.d.ts +1 -1
  49. package/dist/widgets/number-line/number-line.d.ts +2 -12
  50. package/dist/widgets/numeric-input/numeric-input.class.d.ts +1 -1
  51. package/dist/widgets/numeric-input/numeric-input.d.ts +1 -1
  52. package/dist/widgets/orderer/orderer.d.ts +1 -2
  53. package/dist/widgets/passage/passage.d.ts +2 -4
  54. package/dist/widgets/passage-ref/passage-ref.d.ts +1 -6
  55. package/dist/widgets/plotter/plotter.d.ts +2 -2
  56. package/dist/widgets/radio/index.d.ts +0 -1
  57. package/dist/widgets/radio/multiple-choice-widget.new.d.ts +2 -2
  58. package/dist/widgets/radio/radio-component.d.ts +2 -2
  59. package/dist/widgets/radio/radio.ff.d.ts +4 -4
  60. package/dist/widgets/table/table.d.ts +9 -10
  61. package/dist/widgets.d.ts +3 -11
  62. package/package.json +43 -41
@@ -83,7 +83,7 @@ export declare class NumericInput extends React.Component<NumericInputProps> imp
83
83
  hintProgressColor?: string;
84
84
  canScrollPage?: boolean;
85
85
  editorChangeDelay?: number;
86
- flags?: Record<"new-radio-widget", boolean>;
86
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
87
87
  }> & {
88
88
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
89
89
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -41,7 +41,7 @@ export declare const NumericInputComponent: React.ForwardRefExoticComponent<impo
41
41
  hintProgressColor?: string;
42
42
  canScrollPage?: boolean;
43
43
  editorChangeDelay?: number;
44
- flags?: Record<"new-radio-widget", boolean>;
44
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
45
45
  }> & {
46
46
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
47
47
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -6,8 +6,7 @@ type Position = {
6
6
  left: number;
7
7
  top: number;
8
8
  };
9
- type RenderProps = OrdererPublicWidgetOptions;
10
- type OrdererProps = WidgetProps<RenderProps, PerseusOrdererUserInput>;
9
+ type OrdererProps = WidgetProps<OrdererPublicWidgetOptions, PerseusOrdererUserInput>;
11
10
  type OrdererDefaultProps = Pick<OrdererProps, "options" | "height" | "layout" | "linterContext" | "userInput">;
12
11
  type OrdererState = {
13
12
  dragging: boolean;
@@ -2,7 +2,6 @@ import * as React from "react";
2
2
  import { PerseusI18nContext } from "../../components/i18n-context";
3
3
  import type { ParseState } from "./passage-markdown";
4
4
  import type { SerializedHighlightSet } from "../../components/highlighting/types";
5
- import type { ChangeableProps } from "../../mixins/changeable";
6
5
  import type { WidgetProps, Widget } from "../../types";
7
6
  import type { PassagePromptJSON } from "../../widget-ai-utils/passage/passage-ai-utils";
8
7
  import type { PerseusPassageWidgetOptions, PerseusWidget } from "@khanacademy/perseus-core";
@@ -13,22 +12,21 @@ export declare class LineHeightMeasurer extends React.Component<Record<any, any>
13
12
  render(): React.ReactNode;
14
13
  }
15
14
  type FindWidgetsCallback = (id: string, widgetInfo: PerseusWidget) => boolean;
16
- type PassageProps = ChangeableProps & WidgetProps<PerseusPassageWidgetOptions> & {
15
+ type PassageProps = WidgetProps<PerseusPassageWidgetOptions> & {
17
16
  findWidgets: (arg1: FindWidgetsCallback) => ReadonlyArray<Passage>;
18
- highlights: SerializedHighlightSet;
19
17
  };
20
18
  type DefaultPassageProps = {
21
19
  passageTitle: PassageProps["passageTitle"];
22
20
  passageText: PassageProps["passageText"];
23
21
  footnotes: PassageProps["footnotes"];
24
22
  showLineNumbers: PassageProps["showLineNumbers"];
25
- highlights: PassageProps["highlights"];
26
23
  linterContext: PassageProps["linterContext"];
27
24
  };
28
25
  type PassageState = {
29
26
  nLines: number | null | undefined;
30
27
  startLineNumbersAfter: number;
31
28
  stylesAreApplied: boolean;
29
+ highlights: SerializedHighlightSet;
32
30
  };
33
31
  export type Reference = {
34
32
  startLine: number;
@@ -3,12 +3,7 @@ import * as React from "react";
3
3
  import { PerseusI18nContext } from "../../components/i18n-context";
4
4
  import type { Widget, WidgetProps } from "../../types";
5
5
  import type { PassageRefPromptJSON } from "../../widget-ai-utils/passage-ref/passage-ref-ai-utils";
6
- type RenderProps = {
7
- passageNumber: PerseusPassageRefWidgetOptions["passageNumber"];
8
- referenceNumber: PerseusPassageRefWidgetOptions["referenceNumber"];
9
- summaryText: string;
10
- };
11
- type Props = WidgetProps<RenderProps>;
6
+ type Props = WidgetProps<PerseusPassageRefWidgetOptions>;
12
7
  type DefaultProps = {
13
8
  passageNumber: Props["passageNumber"];
14
9
  referenceNumber: Props["referenceNumber"];
@@ -1,8 +1,8 @@
1
+ import { type PerseusPlotterUserInput, type PerseusPlotterWidgetOptions, type PlotterPublicWidgetOptions } from "@khanacademy/perseus-core";
1
2
  import * as React from "react";
2
3
  import { PerseusI18nContext } from "../../components/i18n-context";
3
4
  import type { Widget, WidgetProps } from "../../types";
4
5
  import type { UnsupportedWidgetPromptJSON } from "../../widget-ai-utils/unsupported-widget";
5
- import type { PerseusPlotterUserInput, PerseusPlotterWidgetOptions, PlotterPublicWidgetOptions } from "@khanacademy/perseus-core";
6
6
  type Props = WidgetProps<PlotterPublicWidgetOptions, PerseusPlotterUserInput> & {
7
7
  labelInterval: NonNullable<PerseusPlotterWidgetOptions["labelInterval"]>;
8
8
  picSize: NonNullable<PerseusPlotterWidgetOptions["picSize"]>;
@@ -130,7 +130,7 @@ export declare class Plotter extends React.Component<Props, State> implements Wi
130
130
  hintProgressColor?: string;
131
131
  canScrollPage?: boolean;
132
132
  editorChangeDelay?: number;
133
- flags?: Record<"new-radio-widget", boolean>;
133
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
134
134
  }> & {
135
135
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
136
136
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -1,2 +1 @@
1
1
  export { default } from "./radio";
2
- export { type RenderProps } from "./radio-component";
@@ -18,7 +18,7 @@ export interface ChoiceType {
18
18
  revealNoneOfTheAbove: boolean;
19
19
  disabled: boolean;
20
20
  }
21
- export type RenderProps = {
21
+ export type RadioProps = {
22
22
  numCorrect: number;
23
23
  hasNoneOfTheAbove?: boolean;
24
24
  multipleSelect?: boolean;
@@ -36,5 +36,5 @@ export interface RadioChoiceWithMetadata extends PerseusRadioChoice {
36
36
  originalIndex: number;
37
37
  correct?: boolean;
38
38
  }
39
- declare const Radio: React.ForwardRefExoticComponent<RenderProps & import("../../types").UniversalWidgetProps<PerseusRadioRubric, PerseusRadioUserInput, Empty> & React.RefAttributes<Widget>>;
39
+ declare const Radio: React.ForwardRefExoticComponent<RadioProps & import("../../types").UniversalWidgetProps<PerseusRadioRubric, PerseusRadioUserInput, Empty> & React.RefAttributes<Widget>>;
40
40
  export default Radio;
@@ -4,7 +4,7 @@ import type { FocusFunction } from "./base-radio";
4
4
  import type { WidgetProps, ChoiceState, Widget } from "../../types";
5
5
  import type { RadioPromptJSON } from "../../widget-ai-utils/radio/radio-ai-utils";
6
6
  import type { PerseusRadioChoice, ShowSolutions, PerseusRadioRubric, PerseusRadioUserInput, PerseusRadioWidgetOptions } from "@khanacademy/perseus-core";
7
- export type RenderProps = PerseusRadioWidgetOptions & {
7
+ export type RadioProps = PerseusRadioWidgetOptions & {
8
8
  numCorrect: number;
9
9
  hasNoneOfTheAbove?: boolean;
10
10
  multipleSelect?: boolean;
@@ -14,7 +14,7 @@ export type RenderProps = PerseusRadioWidgetOptions & {
14
14
  showSolutions?: ShowSolutions;
15
15
  choiceStates?: ChoiceState[];
16
16
  };
17
- export type Props = WidgetProps<RenderProps, PerseusRadioUserInput, PerseusRadioRubric>;
17
+ export type Props = WidgetProps<RadioProps, PerseusRadioUserInput, PerseusRadioRubric>;
18
18
  type DefaultProps = Required<Pick<Props, "choices" | "multipleSelect" | "countChoices" | "deselectEnabled" | "linterContext" | "showSolutions">>;
19
19
  export type RadioChoiceWithMetadata = PerseusRadioChoice & {
20
20
  originalIndex: number;
@@ -1,10 +1,10 @@
1
1
  import { type PerseusRadioRubric, type PerseusRadioUserInput } from "@khanacademy/perseus-core";
2
2
  import * as React from "react";
3
3
  import RadioOld from "./radio-component";
4
- import type { RenderProps } from "./radio-component";
4
+ import type { RadioProps } from "./radio-component";
5
5
  import type { ChoiceState, WidgetProps } from "../../types";
6
6
  import type { RadioPromptJSON } from "../../widget-ai-utils/radio/radio-ai-utils";
7
- type Props = WidgetProps<RenderProps, PerseusRadioUserInput, PerseusRadioRubric>;
7
+ type Props = WidgetProps<RadioProps, PerseusRadioUserInput, PerseusRadioRubric>;
8
8
  type ChoiceStateWithoutSelected = Omit<ChoiceState, "selected">;
9
9
  type State = {
10
10
  choiceStates: ChoiceStateWithoutSelected[];
@@ -29,8 +29,8 @@ declare class Radio extends RadioOld {
29
29
  * [LEMS-3185] do not trust serializedState
30
30
  */
31
31
  getSerializedState(): {
32
+ hasNoneOfTheAbove: boolean;
32
33
  choices: import("@khanacademy/perseus-core").PerseusRadioChoice[] & import("./radio-component").RadioChoiceWithMetadata[];
33
- hasNoneOfTheAbove?: boolean;
34
34
  countChoices?: boolean;
35
35
  numCorrect: number;
36
36
  multipleSelect?: boolean;
@@ -77,7 +77,7 @@ declare class Radio extends RadioOld {
77
77
  hintProgressColor?: string;
78
78
  canScrollPage?: boolean;
79
79
  editorChangeDelay?: number;
80
- flags?: Record<"new-radio-widget", boolean>;
80
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
81
81
  }> & {
82
82
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
83
83
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -1,15 +1,13 @@
1
1
  import * as React from "react";
2
2
  import ReactDOM from "react-dom";
3
3
  import { PerseusI18nContext } from "../../components/i18n-context";
4
- import type { ChangeableProps } from "../../mixins/changeable";
5
4
  import type { FocusPath, Widget, WidgetProps } from "../../types";
6
5
  import type { PerseusTableWidgetOptions, PerseusTableUserInput } from "@khanacademy/perseus-core";
7
6
  type EditorProps = {
8
7
  editableHeaders: boolean;
9
8
  Editor: any;
10
9
  };
11
- type RenderProps = Omit<PerseusTableWidgetOptions, "answers">;
12
- type Props = WidgetProps<RenderProps, PerseusTableUserInput> & ChangeableProps & EditorProps;
10
+ type Props = WidgetProps<PerseusTableWidgetOptions, PerseusTableUserInput> & EditorProps;
13
11
  type DefaultProps = {
14
12
  apiOptions: Props["apiOptions"];
15
13
  headers: Props["headers"];
@@ -42,9 +40,9 @@ declare class Table extends React.Component<Props> implements Widget {
42
40
  */
43
41
  getSerializedState(): {
44
42
  answers: PerseusTableUserInput;
45
- columns: number;
46
- rows: number;
47
43
  headers: string[];
44
+ rows: number;
45
+ columns: number;
48
46
  reviewModeRubric?: Empty | null | undefined;
49
47
  trackInteraction: (extraData?: Empty | undefined) => void;
50
48
  widgetId: string;
@@ -54,7 +52,10 @@ declare class Table extends React.Component<Props> implements Widget {
54
52
  problemNum: number | null | undefined;
55
53
  apiOptions: Readonly<Readonly<{
56
54
  isArticle?: boolean;
57
- onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight?: number, focusedElement?: HTMLElement) => unknown;
55
+ onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight? /**
56
+ * @deprecated and likely very broken API
57
+ * [LEMS-3185] do not trust serializedState
58
+ */: number, focusedElement?: HTMLElement) => unknown;
58
59
  GroupMetadataEditor?: React.ComponentType<any>;
59
60
  showAlignmentOptions?: boolean;
60
61
  readOnly?: boolean;
@@ -85,7 +86,7 @@ declare class Table extends React.Component<Props> implements Widget {
85
86
  hintProgressColor?: string;
86
87
  canScrollPage?: boolean;
87
88
  editorChangeDelay?: number;
88
- flags?: Record<"new-radio-widget", boolean>;
89
+ flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
89
90
  }> & {
90
91
  baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
91
92
  canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
@@ -106,9 +107,7 @@ declare class Table extends React.Component<Props> implements Widget {
106
107
  findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<Widget>;
107
108
  reviewMode: boolean;
108
109
  showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
109
- onChange: import("../..").ChangeHandler & ((values: {
110
- [key: string]: any;
111
- }, callback?: (() => unknown) | null | undefined, silent?: boolean) => unknown);
110
+ onChange: import("../..").ChangeHandler;
112
111
  handleUserInput: (newUserInput: PerseusTableUserInput, cb?: () => void, silent?: boolean) => void;
113
112
  isLastUsedWidget: boolean;
114
113
  linterContext: import("@khanacademy/perseus-linter").LinterContextProps;
package/dist/widgets.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import type { PerseusStrings } from "./strings";
2
- import type { Tracking, WidgetExports, WidgetTransform } from "./types";
3
- import type { PerseusWidget, Version } from "@khanacademy/perseus-core";
1
+ import type { Tracking, WidgetExports } from "./types";
2
+ import type { Version } from "@khanacademy/perseus-core";
4
3
  import type * as React from "react";
5
4
  type Editor = any;
6
5
  export declare const registerWidget: (type: string, widget: WidgetExports) => void;
@@ -29,28 +28,21 @@ export declare const replaceDeprecatedEditors: () => void;
29
28
  export declare const getWidget: (type: string) => React.ComponentType<any> | null | undefined;
30
29
  export declare const getWidgetExport: (type: string) => WidgetExports | null;
31
30
  export declare const getEditor: (type: string) => Editor | null;
32
- export declare const getTransform: (type: string) => WidgetTransform | null | undefined;
33
31
  export declare const getVersion: (type: string) => Version | undefined;
34
32
  export declare const getVersionVector: () => {
35
33
  [key: string]: Version;
36
34
  };
37
35
  export declare const getPublicWidgets: () => Record<string, WidgetExports>;
38
36
  export declare const getAllWidgetTypes: () => ReadonlyArray<string>;
39
- export declare const getRendererPropsForWidgetInfo: (widgetInfo: PerseusWidget, strings: PerseusStrings, problemNum?: number) => PerseusWidget;
40
37
  /**
41
38
  * Handling for static mode for widgets that support it.
42
39
  */
43
40
  /**
44
41
  * Returns true iff the widget supports static mode.
45
42
  * A widget implicitly supports static mode if it exports a
46
- * staticTransform function.
43
+ * getCorrectUserInput function.
47
44
  */
48
45
  export declare const supportsStaticMode: (type: string) => boolean | undefined;
49
- /**
50
- * Return the staticTransform function used to convert the editorProps to
51
- * the rendered widget state.
52
- */
53
- export declare const getStaticTransform: (type: string) => WidgetTransform | null | undefined;
54
46
  /**
55
47
  * Returns the tracking option for the widget. The default is "",
56
48
  * which means simply to track interactions once. The other available
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Core Perseus API (includes renderers and widgets)",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "68.0.2",
6
+ "version": "69.0.1",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -42,36 +42,37 @@
42
42
  "tiny-invariant": "1.3.1",
43
43
  "uuid": "^10.0.0",
44
44
  "@khanacademy/kas": "2.1.0",
45
- "@khanacademy/keypad-context": "3.2.4",
46
- "@khanacademy/kmath": "2.2.4",
47
- "@khanacademy/math-input": "26.2.4",
48
- "@khanacademy/perseus-core": "19.0.2",
49
- "@khanacademy/perseus-linter": "4.3.4",
50
- "@khanacademy/perseus-score": "7.7.4",
45
+ "@khanacademy/keypad-context": "3.2.5",
46
+ "@khanacademy/kmath": "2.2.5",
47
+ "@khanacademy/math-input": "26.2.5",
48
+ "@khanacademy/perseus-core": "19.0.3",
49
+ "@khanacademy/perseus-score": "7.7.5",
50
+ "@khanacademy/perseus-linter": "4.3.5",
51
51
  "@khanacademy/perseus-utils": "2.1.0",
52
52
  "@khanacademy/pure-markdown": "2.2.0",
53
53
  "@khanacademy/simple-markdown": "2.1.0"
54
54
  },
55
55
  "devDependencies": {
56
- "@khanacademy/wonder-blocks-banner": "4.3.3",
57
- "@khanacademy/wonder-blocks-button": "11.0.4",
58
- "@khanacademy/wonder-blocks-clickable": "7.1.24",
56
+ "@khanacademy/wonder-blocks-banner": "4.4.0",
57
+ "@khanacademy/wonder-blocks-button": "11.2.1",
58
+ "@khanacademy/wonder-blocks-clickable": "7.1.25",
59
59
  "@khanacademy/wonder-blocks-core": "12.4.0",
60
60
  "@khanacademy/wonder-blocks-data": "14.1.5",
61
- "@khanacademy/wonder-blocks-dropdown": "10.3.8",
62
- "@khanacademy/wonder-blocks-form": "7.3.6",
63
- "@khanacademy/wonder-blocks-icon-button": "10.4.1",
64
- "@khanacademy/wonder-blocks-icon": "5.2.18",
65
- "@khanacademy/wonder-blocks-labeled-field": "4.0.4",
66
- "@khanacademy/wonder-blocks-layout": "3.1.35",
67
- "@khanacademy/wonder-blocks-link": "9.2.2",
68
- "@khanacademy/wonder-blocks-pill": "3.1.39",
69
- "@khanacademy/wonder-blocks-popover": "6.1.29",
70
- "@khanacademy/wonder-blocks-progress-spinner": "3.1.35",
71
- "@khanacademy/wonder-blocks-switch": "3.3.17",
72
- "@khanacademy/wonder-blocks-tokens": "12.2.1",
73
- "@khanacademy/wonder-blocks-tooltip": "4.1.43",
74
- "@khanacademy/wonder-blocks-typography": "4.2.20",
61
+ "@khanacademy/wonder-blocks-dropdown": "10.3.11",
62
+ "@khanacademy/wonder-blocks-form": "7.3.7",
63
+ "@khanacademy/wonder-blocks-icon-button": "10.5.0",
64
+ "@khanacademy/wonder-blocks-icon": "5.2.19",
65
+ "@khanacademy/wonder-blocks-labeled-field": "4.0.5",
66
+ "@khanacademy/wonder-blocks-layout": "3.1.36",
67
+ "@khanacademy/wonder-blocks-link": "9.2.3",
68
+ "@khanacademy/wonder-blocks-modal": "8.3.1",
69
+ "@khanacademy/wonder-blocks-pill": "3.1.40",
70
+ "@khanacademy/wonder-blocks-popover": "6.1.32",
71
+ "@khanacademy/wonder-blocks-progress-spinner": "3.1.36",
72
+ "@khanacademy/wonder-blocks-switch": "3.3.18",
73
+ "@khanacademy/wonder-blocks-tokens": "13.0.0",
74
+ "@khanacademy/wonder-blocks-tooltip": "4.1.46",
75
+ "@khanacademy/wonder-blocks-typography": "4.2.21",
75
76
  "@khanacademy/wonder-stuff-core": "1.5.5",
76
77
  "@phosphor-icons/core": "2.0.2",
77
78
  "@popperjs/core": "2.10.2",
@@ -90,25 +91,26 @@
90
91
  "raphael": "1.5.4"
91
92
  },
92
93
  "peerDependencies": {
93
- "@khanacademy/wonder-blocks-banner": "^4.3.3",
94
- "@khanacademy/wonder-blocks-button": "^11.0.4",
95
- "@khanacademy/wonder-blocks-clickable": "^7.1.24",
94
+ "@khanacademy/wonder-blocks-banner": "^4.4.0",
95
+ "@khanacademy/wonder-blocks-button": "^11.2.1",
96
+ "@khanacademy/wonder-blocks-clickable": "^7.1.25",
96
97
  "@khanacademy/wonder-blocks-core": "^12.4.0",
97
98
  "@khanacademy/wonder-blocks-data": "^14.1.5",
98
- "@khanacademy/wonder-blocks-dropdown": "^10.3.8",
99
- "@khanacademy/wonder-blocks-form": "^7.3.6",
100
- "@khanacademy/wonder-blocks-icon": "^5.2.18",
101
- "@khanacademy/wonder-blocks-icon-button": "^10.4.1",
102
- "@khanacademy/wonder-blocks-labeled-field": "^4.0.4",
103
- "@khanacademy/wonder-blocks-layout": "^3.1.35",
104
- "@khanacademy/wonder-blocks-link": "^9.2.2",
105
- "@khanacademy/wonder-blocks-pill": "^3.1.39",
106
- "@khanacademy/wonder-blocks-popover": "^6.1.29",
107
- "@khanacademy/wonder-blocks-progress-spinner": "^3.1.35",
108
- "@khanacademy/wonder-blocks-switch": "^3.3.17",
109
- "@khanacademy/wonder-blocks-tokens": "^12.2.1",
110
- "@khanacademy/wonder-blocks-tooltip": "^4.1.43",
111
- "@khanacademy/wonder-blocks-typography": "^4.2.20",
99
+ "@khanacademy/wonder-blocks-dropdown": "^10.3.11",
100
+ "@khanacademy/wonder-blocks-form": "^7.3.7",
101
+ "@khanacademy/wonder-blocks-icon": "^5.2.19",
102
+ "@khanacademy/wonder-blocks-icon-button": "^10.5.0",
103
+ "@khanacademy/wonder-blocks-labeled-field": "^4.0.5",
104
+ "@khanacademy/wonder-blocks-layout": "^3.1.36",
105
+ "@khanacademy/wonder-blocks-link": "^9.2.3",
106
+ "@khanacademy/wonder-blocks-modal": "^8.3.1",
107
+ "@khanacademy/wonder-blocks-pill": "^3.1.40",
108
+ "@khanacademy/wonder-blocks-popover": "^6.1.32",
109
+ "@khanacademy/wonder-blocks-progress-spinner": "^3.1.36",
110
+ "@khanacademy/wonder-blocks-switch": "^3.3.18",
111
+ "@khanacademy/wonder-blocks-tokens": "^13.0.0",
112
+ "@khanacademy/wonder-blocks-tooltip": "^4.1.46",
113
+ "@khanacademy/wonder-blocks-typography": "^4.2.21",
112
114
  "@khanacademy/wonder-stuff-core": "^1.5.5",
113
115
  "@phosphor-icons/core": "^2.0.2",
114
116
  "@popperjs/core": "^2.10.2",