@mirohq/design-system-checkbox 1.0.0-checkbox.0 → 1.0.0-checkbox.2

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/dist/main.js CHANGED
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var designSystemStitches = require('@mirohq/design-system-stitches');
7
6
  var reactCheckbox = require('@radix-ui/react-checkbox');
7
+ var designSystemStitches = require('@mirohq/design-system-stitches');
8
8
  var designSystemPrimitive = require('@mirohq/design-system-primitive');
9
9
  var designSystemIcons = require('@mirohq/design-system-icons');
10
10
 
@@ -12,12 +12,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
12
12
 
13
13
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
14
 
15
- const StyledIndicator = designSystemStitches.styled(reactCheckbox.Indicator);
16
- const Indicator = React__default["default"].forwardRef((props, forwardRef) => /* @__PURE__ */ React__default["default"].createElement(StyledIndicator, {
17
- ...props,
18
- ref: forwardRef
19
- }));
20
-
21
15
  const StyledCheckboxContent = designSystemStitches.styled(designSystemPrimitive.Primitive.div, {
22
16
  display: "block",
23
17
  pointerEvents: "none",
@@ -27,27 +21,52 @@ const StyledCheckboxContent = designSystemStitches.styled(designSystemPrimitive.
27
21
  boxSizing: "border-box"
28
22
  });
29
23
  const checkboxContentSelector = `& ${StyledCheckboxContent}`;
24
+ const checkedAndIndeterminate = '&[data-state="checked"], &[data-state="indeterminate"]';
25
+ const ariaDisabledCheckedIndeterminate = [
26
+ '&[aria-disabled="true"][data-state="checked"]',
27
+ '&:disabled[data-state="checked"]',
28
+ '&[aria-disabled="true"][data-state="indeterminate"]',
29
+ '&:disabled[data-state="indeterminate"]'
30
+ ].join(" ,");
31
+ const hoverCheckedIndeterminate = '&:hover[data-state="checked"], &:hover[data-state="indeterminate"]';
32
+ const ariaDisabledUnChecked = '&[aria-disabled="true"][data-state="unchecked"], &:disabled[data-state="unchecked"]';
33
+ const hoverCheckedIndeterminateDisabled = [
34
+ '&:hover[data-state="checked"][aria-disabled="true"]',
35
+ '&:hover[data-state="checked"]&:disabled',
36
+ '&:hover[data-state="indeterminate"][aria-disabled="true"]',
37
+ '&:hover[data-state="indeterminate"]&:disabled'
38
+ ].join(" ,");
39
+ const hoverAriaDisabled = [
40
+ '&:hover[data-state="unchecked"][aria-disabled="true"]',
41
+ '&:hover[data-state="unchecked"]&:disabled',
42
+ ...hoverCheckedIndeterminateDisabled.split(" ,")
43
+ ].join(" ,");
30
44
  const StyledCheckbox = designSystemStitches.styled(reactCheckbox.Root, {
31
45
  all: "unset",
32
46
  square: "$6",
33
47
  color: "$icon-primary-inverted",
34
48
  "&:focus": {
35
49
  [checkboxContentSelector]: {
36
- boxShadow: "0px 0px 0px 1px $colors$white, 0px 0px 0px 3px $colors$blue-500, 0px 0px 0px 5px $colors$blue-200"
50
+ boxShadow: "$focus-controls"
37
51
  }
38
52
  },
39
- '&:hover[data-state="checked"][aria-disabled="true"], &:hover[data-state="checked"]&:disabled': {
53
+ [hoverCheckedIndeterminateDisabled]: {
40
54
  [checkboxContentSelector]: {
41
55
  backgroundColor: "$background-neutrals-controls-disabled"
42
56
  }
43
57
  },
44
- '&[aria-disabled="true"][data-state="checked"], &:disabled[data-state="checked"]': {
58
+ [hoverAriaDisabled]: {
59
+ [checkboxContentSelector]: {
60
+ color: "$icon-neutrals-disabled"
61
+ }
62
+ },
63
+ [ariaDisabledCheckedIndeterminate]: {
45
64
  [checkboxContentSelector]: {
46
65
  backgroundColor: "$background-neutrals-controls-disabled",
47
66
  color: "$icon-neutrals-disabled"
48
67
  }
49
68
  },
50
- '&[aria-disabled="true"][data-state="unchecked"], &:disabled[data-state="unchecked"]': {
69
+ [ariaDisabledUnChecked]: {
51
70
  [checkboxContentSelector]: {
52
71
  backgroundColor: "$background-neutrals",
53
72
  color: "$icon-neutrals-disabled"
@@ -56,18 +75,18 @@ const StyledCheckbox = designSystemStitches.styled(reactCheckbox.Root, {
56
75
  variants: {
57
76
  variant: {
58
77
  "solid-prominent": {
59
- '&[data-state="checked"]': {
78
+ '&[data-state="unchecked"]': {
60
79
  [checkboxContentSelector]: {
61
- backgroundColor: "$background-primary-prominent",
62
- color: "$icon-primary-inverted"
80
+ border: "1px solid $border-neutrals-controls"
63
81
  }
64
82
  },
65
- '&[data-state="unchecked"]': {
83
+ [checkedAndIndeterminate]: {
66
84
  [checkboxContentSelector]: {
67
- border: "1px solid $border-neutrals-controls"
85
+ backgroundColor: "$background-primary-prominent",
86
+ color: "$icon-primary-inverted"
68
87
  }
69
88
  },
70
- '&:hover[data-state="checked"]': {
89
+ [hoverCheckedIndeterminate]: {
71
90
  [checkboxContentSelector]: {
72
91
  backgroundColor: "$background-primary-prominent-hover"
73
92
  }
@@ -76,10 +95,15 @@ const StyledCheckbox = designSystemStitches.styled(reactCheckbox.Root, {
76
95
  [checkboxContentSelector]: {
77
96
  border: "1px solid $border-primary"
78
97
  }
98
+ },
99
+ [ariaDisabledUnChecked]: {
100
+ [checkboxContentSelector]: {
101
+ border: "1px solid $border-neutrals-controls-disabled"
102
+ }
79
103
  }
80
104
  },
81
105
  "solid-subtle": {
82
- '&[data-state="checked"]': {
106
+ [checkedAndIndeterminate]: {
83
107
  [checkboxContentSelector]: {
84
108
  backgroundColor: "$background-primary-subtle",
85
109
  color: "$icon-primary"
@@ -90,30 +114,35 @@ const StyledCheckbox = designSystemStitches.styled(reactCheckbox.Root, {
90
114
  backgroundColor: "$background-primary-subtle"
91
115
  }
92
116
  },
93
- '&:hover[data-state="checked"], &:hover[data-state="unchecked"]': {
117
+ [`${hoverCheckedIndeterminate}, &:hover[data-state="unchecked"]`]: {
94
118
  [checkboxContentSelector]: {
95
119
  backgroundColor: "$background-primary-subtle-hover",
96
120
  color: "$icon-primary-hover"
97
121
  }
98
122
  },
99
- '&[aria-disabled="true"][data-state="unchecked"], &:disabled[data-state="unchecked"]': {
123
+ [ariaDisabledUnChecked]: {
100
124
  [checkboxContentSelector]: {
101
125
  backgroundColor: "$background-neutrals-controls-disabled"
102
126
  }
103
127
  }
104
128
  },
105
129
  ghost: {
106
- '&[data-state="checked"]': {
130
+ [checkedAndIndeterminate]: {
107
131
  [checkboxContentSelector]: {
108
132
  color: "$icon-primary"
109
133
  }
110
134
  },
111
- '&:hover[data-state="checked"]': {
135
+ [hoverCheckedIndeterminate]: {
112
136
  [checkboxContentSelector]: {
113
137
  color: "$icon-primary-hover"
114
138
  }
115
139
  },
116
- '&[aria-disabled="true"][data-state="checked"], &:disabled[data-state="checked"]': {
140
+ [ariaDisabledCheckedIndeterminate]: {
141
+ [checkboxContentSelector]: {
142
+ backgroundColor: "$background-neutrals"
143
+ }
144
+ },
145
+ [hoverCheckedIndeterminateDisabled]: {
117
146
  [checkboxContentSelector]: {
118
147
  backgroundColor: "$background-neutrals"
119
148
  }
@@ -134,7 +163,6 @@ const StyledCheckbox = designSystemStitches.styled(reactCheckbox.Root, {
134
163
  }
135
164
  }
136
165
  });
137
-
138
166
  const markStyles = {
139
167
  position: "absolute",
140
168
  top: "50%",
@@ -149,26 +177,35 @@ const markStyles = {
149
177
  };
150
178
  const StyledDisabledMark = designSystemStitches.styled(designSystemIcons.IconProhibit, markStyles);
151
179
  const StyledCheckMark = designSystemStitches.styled(designSystemIcons.IconCheckMark, markStyles);
152
- designSystemStitches.styled(designSystemIcons.IconMinus, markStyles);
180
+ const StyledIndeterminateMark = designSystemStitches.styled(designSystemIcons.IconMinus, markStyles);
153
181
 
154
182
  const Checkbox = React__default["default"].forwardRef(
155
183
  ({
156
184
  "aria-disabled": ariaDisabled = false,
157
185
  checked,
158
- defaultChecked = false,
186
+ defaultChecked,
159
187
  disabled,
188
+ onChecked,
189
+ onUnchecked,
160
190
  onClick,
161
191
  onKeyDown,
162
192
  size = "large",
163
193
  variant = "solid-prominent",
164
194
  ...restProps
165
195
  }, forwardRef) => {
166
- const [checkedState, setCheckedState] = React.useState(defaultChecked);
167
- const disabledUnChecked = (disabled === true || ariaDisabled) && (checked != null ? checked : !checkedState);
196
+ const [checkedState, setCheckedState] = React.useState(
197
+ defaultChecked != null ? defaultChecked : false
198
+ );
199
+ const internalChecked = checked != null ? checked : checkedState;
200
+ const disabledUnchecked = (disabled === true || ariaDisabled) && internalChecked === false;
201
+ const checkedStateEvents = {
202
+ true: onChecked,
203
+ false: onUnchecked
204
+ };
168
205
  return /* @__PURE__ */ React__default["default"].createElement(StyledCheckbox, {
169
206
  ...restProps,
170
207
  "aria-disabled": ariaDisabled,
171
- checked: checked != null ? checked : checkedState,
208
+ checked: internalChecked,
172
209
  defaultChecked,
173
210
  disabled,
174
211
  size,
@@ -178,13 +215,19 @@ const Checkbox = React__default["default"].forwardRef(
178
215
  e.preventDefault();
179
216
  return;
180
217
  }
181
- setCheckedState((prevChecked) => !prevChecked);
182
218
  onClick == null ? void 0 : onClick(e);
183
219
  },
220
+ onCheckedChange: (checked2) => {
221
+ var _a;
222
+ setCheckedState(checked2);
223
+ (_a = checkedStateEvents[`${checked2}`]) == null ? void 0 : _a.call(checkedStateEvents);
224
+ },
184
225
  ref: forwardRef
185
- }, /* @__PURE__ */ React__default["default"].createElement(StyledCheckboxContent, null, /* @__PURE__ */ React__default["default"].createElement(Indicator, null, /* @__PURE__ */ React__default["default"].createElement(StyledCheckMark, {
226
+ }, /* @__PURE__ */ React__default["default"].createElement(StyledCheckboxContent, null, /* @__PURE__ */ React__default["default"].createElement(reactCheckbox.Indicator, null, internalChecked === "indeterminate" && /* @__PURE__ */ React__default["default"].createElement(StyledIndeterminateMark, {
227
+ size
228
+ }), internalChecked === true && /* @__PURE__ */ React__default["default"].createElement(StyledCheckMark, {
186
229
  size
187
- })), disabledUnChecked && /* @__PURE__ */ React__default["default"].createElement(StyledDisabledMark, {
230
+ })), disabledUnchecked && /* @__PURE__ */ React__default["default"].createElement(StyledDisabledMark, {
188
231
  size
189
232
  })));
190
233
  }
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/partials/indicator.tsx","../src/checkbox.styled.tsx","../src/partials/status-marks.styled.tsx","../src/checkbox.tsx"],"sourcesContent":["import React from 'react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { ElementRef } from 'react'\nimport { Indicator as RadixIndicator } from '@radix-ui/react-checkbox'\n\nconst StyledIndicator = styled(RadixIndicator)\ntype StyledIndicatorProps = StrictComponentProps<typeof StyledIndicator>\n\nexport const Indicator = React.forwardRef<\n ElementRef<typeof StyledIndicator>,\n StyledIndicatorProps\n>((props, forwardRef) => <StyledIndicator {...props} ref={forwardRef} />)\n","import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Root } from '@radix-ui/react-checkbox'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledCheckboxContent = styled(Primitive.div, {\n display: 'block',\n pointerEvents: 'none',\n borderRadius: '$50',\n position: 'relative',\n margin: 'auto',\n boxSizing: 'border-box',\n})\n\nconst checkboxContentSelector = `& ${StyledCheckboxContent}`\n\nexport const StyledCheckbox = styled(Root, {\n all: 'unset',\n square: '$6',\n color: '$icon-primary-inverted',\n\n '&:focus': {\n [checkboxContentSelector]: {\n boxShadow:\n '0px 0px 0px 1px $colors$white, 0px 0px 0px 3px $colors$blue-500, 0px 0px 0px 5px $colors$blue-200',\n },\n },\n '&:hover[data-state=\"checked\"][aria-disabled=\"true\"], &:hover[data-state=\"checked\"]&:disabled':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n },\n },\n '&[aria-disabled=\"true\"][data-state=\"checked\"], &:disabled[data-state=\"checked\"]':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n color: '$icon-neutrals-disabled',\n },\n },\n '&[aria-disabled=\"true\"][data-state=\"unchecked\"], &:disabled[data-state=\"unchecked\"]':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n color: '$icon-neutrals-disabled',\n },\n },\n variants: {\n variant: {\n 'solid-prominent': {\n '&[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-prominent',\n color: '$icon-primary-inverted',\n },\n },\n '&[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n border: '1px solid $border-neutrals-controls',\n },\n },\n '&:hover[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n },\n '&:hover[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n border: '1px solid $border-primary',\n },\n },\n },\n 'solid-subtle': {\n '&[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle',\n color: '$icon-primary',\n },\n },\n '&[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle',\n },\n },\n '&:hover[data-state=\"checked\"], &:hover[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle-hover',\n color: '$icon-primary-hover',\n },\n },\n '&[aria-disabled=\"true\"][data-state=\"unchecked\"], &:disabled[data-state=\"unchecked\"]':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n },\n },\n },\n ghost: {\n '&[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n color: '$icon-primary',\n },\n },\n\n '&:hover[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n color: '$icon-primary-hover',\n },\n },\n '&[aria-disabled=\"true\"][data-state=\"checked\"], &:disabled[data-state=\"checked\"]':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n },\n },\n },\n },\n size: {\n large: {\n [checkboxContentSelector]: {\n square: '$5',\n },\n },\n small: {\n [checkboxContentSelector]: {\n square: '$4',\n },\n },\n },\n },\n})\n\nexport type StyledCheckboxProps = ComponentPropsWithRef<typeof StyledCheckbox>\n","import {\n IconProhibit,\n IconCheckMark,\n IconMinus,\n} from '@mirohq/design-system-icons'\nimport { styled } from '@mirohq/design-system-stitches'\n\nconst markStyles = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%,-50%)',\n variants: {\n size: {\n large: { width: '18px' },\n small: { width: '12px' },\n },\n },\n}\n\nexport const StyledDisabledMark = styled(IconProhibit, markStyles)\n\nexport const StyledCheckMark = styled(IconCheckMark, markStyles)\n\nexport const StyledIndeterminateMark = styled(IconMinus, markStyles)\n","import React, { useState } from 'react'\nimport type { ElementRef } from 'react'\n\nimport { Indicator } from './partials/indicator'\nimport { StyledCheckboxContent, StyledCheckbox } from './checkbox.styled'\nimport {\n StyledCheckMark,\n StyledDisabledMark,\n} from './partials/status-marks.styled'\nimport type { StyledCheckboxProps } from './checkbox.styled'\n\nexport interface CheckboxProps extends StyledCheckboxProps {\n /**\n * The checked state of the checkbox when it is initially rendered. Use when\n * you do not need to control its checked state.\n */\n defaultChecked?: boolean\n\n /**\n * The style of the checkbox.\n */\n variant?: StyledCheckboxProps['variant']\n\n /**\n * The size of the checkbox.\n */\n size?: StyledCheckboxProps['size']\n\n /**\n * The controlled checked state of the checkbox. Must be used in conjunction\n * with onCheckedChange.\n */\n checked?: boolean\n\n /**\n * When true, indicates that the user must check the checkbox before the\n * owning form can be submitted.\n */\n required?: boolean\n\n /**\n * The name of the checkbox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n\n /**\n * The value given as data when submitted with a name.\n */\n value?: string\n\n /**\n * When true, prevents the user from interacting with the checkbox.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the checked state of the checkbox changes.\n */\n onCheckedChange?: (checked: boolean | 'indeterminate') => void\n\n /**\n * When true, prevents the user from interacting with the checkbox but focus\n * is still possible.\n */\n 'aria-disabled'?: boolean\n}\n\nexport const Checkbox = React.forwardRef<\n ElementRef<typeof StyledCheckbox>,\n CheckboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled = false,\n checked,\n defaultChecked = false,\n disabled,\n onClick,\n onKeyDown,\n size = 'large',\n variant = 'solid-prominent',\n ...restProps\n },\n forwardRef\n ) => {\n const [checkedState, setCheckedState] = useState(defaultChecked)\n const disabledUnChecked =\n (disabled === true || ariaDisabled) && (checked ?? !checkedState)\n return (\n <StyledCheckbox\n {...restProps}\n aria-disabled={ariaDisabled}\n checked={checked ?? checkedState}\n defaultChecked={defaultChecked}\n disabled={disabled}\n size={size}\n variant={variant}\n onClick={e => {\n if (ariaDisabled) {\n e.preventDefault()\n return\n }\n setCheckedState(prevChecked => !prevChecked)\n onClick?.(e)\n }}\n ref={forwardRef}\n >\n <StyledCheckboxContent>\n <Indicator>\n <StyledCheckMark size={size} />\n </Indicator>\n {disabledUnChecked && <StyledDisabledMark size={size} />}\n </StyledCheckboxContent>\n </StyledCheckbox>\n )\n }\n)\n"],"names":["styled","RadixIndicator","React","Primitive","Root","IconProhibit","IconCheckMark","IconMinus","useState"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/checkbox.styled.tsx","../src/checkbox.tsx"],"sourcesContent":["import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Root } from '@radix-ui/react-checkbox'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport {\n IconProhibit,\n IconCheckMark,\n IconMinus,\n} from '@mirohq/design-system-icons'\n\nexport const StyledCheckboxContent = styled(Primitive.div, {\n display: 'block',\n pointerEvents: 'none',\n borderRadius: '$50',\n position: 'relative',\n margin: 'auto',\n boxSizing: 'border-box',\n})\n\nconst checkboxContentSelector = `& ${StyledCheckboxContent}`\n\nconst checkedAndIndeterminate =\n '&[data-state=\"checked\"], &[data-state=\"indeterminate\"]'\nconst ariaDisabledCheckedIndeterminate = [\n '&[aria-disabled=\"true\"][data-state=\"checked\"]',\n '&:disabled[data-state=\"checked\"]',\n '&[aria-disabled=\"true\"][data-state=\"indeterminate\"]',\n '&:disabled[data-state=\"indeterminate\"]',\n].join(' ,')\nconst hoverCheckedIndeterminate =\n '&:hover[data-state=\"checked\"], &:hover[data-state=\"indeterminate\"]'\nconst ariaDisabledUnChecked =\n '&[aria-disabled=\"true\"][data-state=\"unchecked\"], &:disabled[data-state=\"unchecked\"]'\nconst hoverCheckedIndeterminateDisabled = [\n '&:hover[data-state=\"checked\"][aria-disabled=\"true\"]',\n '&:hover[data-state=\"checked\"]&:disabled',\n '&:hover[data-state=\"indeterminate\"][aria-disabled=\"true\"]',\n '&:hover[data-state=\"indeterminate\"]&:disabled',\n].join(' ,')\n\nconst hoverAriaDisabled = [\n '&:hover[data-state=\"unchecked\"][aria-disabled=\"true\"]',\n '&:hover[data-state=\"unchecked\"]&:disabled',\n ...hoverCheckedIndeterminateDisabled.split(' ,'),\n].join(' ,')\n\nexport const StyledCheckbox = styled(Root, {\n all: 'unset',\n square: '$6',\n color: '$icon-primary-inverted',\n\n '&:focus': {\n [checkboxContentSelector]: {\n boxShadow: '$focus-controls',\n },\n },\n [hoverCheckedIndeterminateDisabled]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n },\n },\n\n [hoverAriaDisabled]: {\n [checkboxContentSelector]: {\n color: '$icon-neutrals-disabled',\n },\n },\n [ariaDisabledCheckedIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n color: '$icon-neutrals-disabled',\n },\n },\n [ariaDisabledUnChecked]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n color: '$icon-neutrals-disabled',\n },\n },\n variants: {\n variant: {\n 'solid-prominent': {\n '&[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n border: '1px solid $border-neutrals-controls',\n },\n },\n [checkedAndIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-prominent',\n color: '$icon-primary-inverted',\n },\n },\n [hoverCheckedIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n },\n '&:hover[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n border: '1px solid $border-primary',\n },\n },\n [ariaDisabledUnChecked]: {\n [checkboxContentSelector]: {\n border: '1px solid $border-neutrals-controls-disabled',\n },\n },\n },\n 'solid-subtle': {\n [checkedAndIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle',\n color: '$icon-primary',\n },\n },\n '&[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle',\n },\n },\n [`${hoverCheckedIndeterminate}, &:hover[data-state=\"unchecked\"]`]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle-hover',\n color: '$icon-primary-hover',\n },\n },\n [ariaDisabledUnChecked]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n },\n },\n },\n ghost: {\n [checkedAndIndeterminate]: {\n [checkboxContentSelector]: {\n color: '$icon-primary',\n },\n },\n [hoverCheckedIndeterminate]: {\n [checkboxContentSelector]: {\n color: '$icon-primary-hover',\n },\n },\n [ariaDisabledCheckedIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n },\n },\n [hoverCheckedIndeterminateDisabled]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n },\n },\n },\n },\n size: {\n large: {\n [checkboxContentSelector]: {\n square: '$5',\n },\n },\n small: {\n [checkboxContentSelector]: {\n square: '$4',\n },\n },\n },\n },\n})\n\nconst markStyles = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%,-50%)',\n variants: {\n size: {\n large: { width: '18px' },\n small: { width: '12px' },\n },\n },\n}\n\nexport const StyledDisabledMark = styled(IconProhibit, markStyles)\n\nexport const StyledCheckMark = styled(IconCheckMark, markStyles)\n\nexport const StyledIndeterminateMark = styled(IconMinus, markStyles)\n\nexport type StyledCheckboxProps = ComponentPropsWithRef<typeof StyledCheckbox>\n","import React, { useState } from 'react'\nimport type { ElementRef } from 'react'\nimport { Indicator as RadixIndicator } from '@radix-ui/react-checkbox'\n\nimport {\n StyledCheckboxContent,\n StyledCheckbox,\n StyledCheckMark,\n StyledDisabledMark,\n StyledIndeterminateMark,\n} from './checkbox.styled'\nimport type { StyledCheckboxProps } from './checkbox.styled'\n\nexport interface CheckboxProps extends StyledCheckboxProps {\n /**\n * The checked state of the checkbox when it is initially rendered. Use when\n * you do not need to control its checked state.\n */\n defaultChecked?: boolean\n\n /**\n * The style of the checkbox.\n */\n variant?: StyledCheckboxProps['variant']\n\n /**\n * The size of the checkbox.\n */\n size?: StyledCheckboxProps['size']\n\n /**\n * The controlled checked state of the checkbox. Must be used in conjunction\n * with onCheckedChange.\n */\n checked?: boolean | 'indeterminate'\n\n /**\n * When true, indicates that the user must check the checkbox before the\n * owning form can be submitted.\n */\n required?: boolean\n\n /**\n * The name of the checkbox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n\n /**\n * The value given as data when submitted with a name.\n */\n value?: string\n\n /**\n * When true, prevents the user from interacting with the checkbox.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the checked state equals true.\n */\n onChecked?: () => void\n\n /**\n * Event handler called when the checked state equals false.\n */\n onUnchecked?: () => void\n\n /**\n * When true, prevents the user from interacting with the checkbox but focus\n * is still possible.\n */\n 'aria-disabled'?: boolean\n}\n\nexport const Checkbox = React.forwardRef<\n ElementRef<typeof StyledCheckbox>,\n CheckboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled = false,\n checked,\n defaultChecked,\n disabled,\n onChecked,\n onUnchecked,\n onClick,\n onKeyDown,\n size = 'large',\n variant = 'solid-prominent',\n ...restProps\n },\n forwardRef\n ) => {\n const [checkedState, setCheckedState] = useState<CheckboxProps['checked']>(\n defaultChecked ?? false\n )\n const internalChecked = checked ?? checkedState\n const disabledUnchecked =\n (disabled === true || ariaDisabled) && internalChecked === false\n const checkedStateEvents = {\n true: onChecked,\n false: onUnchecked,\n }\n\n return (\n <StyledCheckbox\n {...restProps}\n aria-disabled={ariaDisabled}\n checked={internalChecked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n size={size}\n variant={variant}\n onClick={e => {\n if (ariaDisabled) {\n e.preventDefault()\n return\n }\n onClick?.(e)\n }}\n onCheckedChange={(checked: boolean) => {\n setCheckedState(checked)\n\n checkedStateEvents[`${checked}`]?.()\n }}\n ref={forwardRef}\n >\n <StyledCheckboxContent>\n <RadixIndicator>\n {internalChecked === 'indeterminate' && (\n <StyledIndeterminateMark size={size} />\n )}\n {internalChecked === true && <StyledCheckMark size={size} />}\n </RadixIndicator>\n {disabledUnchecked && <StyledDisabledMark size={size} />}\n </StyledCheckboxContent>\n </StyledCheckbox>\n )\n }\n)\n"],"names":["styled","Primitive","Root","IconProhibit","IconCheckMark","IconMinus","React","useState","checked","RadixIndicator"],"mappings":"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"}
package/dist/module.js CHANGED
@@ -1,15 +1,9 @@
1
1
  import React, { useState } from 'react';
2
+ import { Root, Indicator } from '@radix-ui/react-checkbox';
2
3
  import { styled } from '@mirohq/design-system-stitches';
3
- import { Indicator as Indicator$1, Root } from '@radix-ui/react-checkbox';
4
4
  import { Primitive } from '@mirohq/design-system-primitive';
5
5
  import { IconProhibit, IconCheckMark, IconMinus } from '@mirohq/design-system-icons';
6
6
 
7
- const StyledIndicator = styled(Indicator$1);
8
- const Indicator = React.forwardRef((props, forwardRef) => /* @__PURE__ */ React.createElement(StyledIndicator, {
9
- ...props,
10
- ref: forwardRef
11
- }));
12
-
13
7
  const StyledCheckboxContent = styled(Primitive.div, {
14
8
  display: "block",
15
9
  pointerEvents: "none",
@@ -19,27 +13,52 @@ const StyledCheckboxContent = styled(Primitive.div, {
19
13
  boxSizing: "border-box"
20
14
  });
21
15
  const checkboxContentSelector = `& ${StyledCheckboxContent}`;
16
+ const checkedAndIndeterminate = '&[data-state="checked"], &[data-state="indeterminate"]';
17
+ const ariaDisabledCheckedIndeterminate = [
18
+ '&[aria-disabled="true"][data-state="checked"]',
19
+ '&:disabled[data-state="checked"]',
20
+ '&[aria-disabled="true"][data-state="indeterminate"]',
21
+ '&:disabled[data-state="indeterminate"]'
22
+ ].join(" ,");
23
+ const hoverCheckedIndeterminate = '&:hover[data-state="checked"], &:hover[data-state="indeterminate"]';
24
+ const ariaDisabledUnChecked = '&[aria-disabled="true"][data-state="unchecked"], &:disabled[data-state="unchecked"]';
25
+ const hoverCheckedIndeterminateDisabled = [
26
+ '&:hover[data-state="checked"][aria-disabled="true"]',
27
+ '&:hover[data-state="checked"]&:disabled',
28
+ '&:hover[data-state="indeterminate"][aria-disabled="true"]',
29
+ '&:hover[data-state="indeterminate"]&:disabled'
30
+ ].join(" ,");
31
+ const hoverAriaDisabled = [
32
+ '&:hover[data-state="unchecked"][aria-disabled="true"]',
33
+ '&:hover[data-state="unchecked"]&:disabled',
34
+ ...hoverCheckedIndeterminateDisabled.split(" ,")
35
+ ].join(" ,");
22
36
  const StyledCheckbox = styled(Root, {
23
37
  all: "unset",
24
38
  square: "$6",
25
39
  color: "$icon-primary-inverted",
26
40
  "&:focus": {
27
41
  [checkboxContentSelector]: {
28
- boxShadow: "0px 0px 0px 1px $colors$white, 0px 0px 0px 3px $colors$blue-500, 0px 0px 0px 5px $colors$blue-200"
42
+ boxShadow: "$focus-controls"
29
43
  }
30
44
  },
31
- '&:hover[data-state="checked"][aria-disabled="true"], &:hover[data-state="checked"]&:disabled': {
45
+ [hoverCheckedIndeterminateDisabled]: {
32
46
  [checkboxContentSelector]: {
33
47
  backgroundColor: "$background-neutrals-controls-disabled"
34
48
  }
35
49
  },
36
- '&[aria-disabled="true"][data-state="checked"], &:disabled[data-state="checked"]': {
50
+ [hoverAriaDisabled]: {
51
+ [checkboxContentSelector]: {
52
+ color: "$icon-neutrals-disabled"
53
+ }
54
+ },
55
+ [ariaDisabledCheckedIndeterminate]: {
37
56
  [checkboxContentSelector]: {
38
57
  backgroundColor: "$background-neutrals-controls-disabled",
39
58
  color: "$icon-neutrals-disabled"
40
59
  }
41
60
  },
42
- '&[aria-disabled="true"][data-state="unchecked"], &:disabled[data-state="unchecked"]': {
61
+ [ariaDisabledUnChecked]: {
43
62
  [checkboxContentSelector]: {
44
63
  backgroundColor: "$background-neutrals",
45
64
  color: "$icon-neutrals-disabled"
@@ -48,18 +67,18 @@ const StyledCheckbox = styled(Root, {
48
67
  variants: {
49
68
  variant: {
50
69
  "solid-prominent": {
51
- '&[data-state="checked"]': {
70
+ '&[data-state="unchecked"]': {
52
71
  [checkboxContentSelector]: {
53
- backgroundColor: "$background-primary-prominent",
54
- color: "$icon-primary-inverted"
72
+ border: "1px solid $border-neutrals-controls"
55
73
  }
56
74
  },
57
- '&[data-state="unchecked"]': {
75
+ [checkedAndIndeterminate]: {
58
76
  [checkboxContentSelector]: {
59
- border: "1px solid $border-neutrals-controls"
77
+ backgroundColor: "$background-primary-prominent",
78
+ color: "$icon-primary-inverted"
60
79
  }
61
80
  },
62
- '&:hover[data-state="checked"]': {
81
+ [hoverCheckedIndeterminate]: {
63
82
  [checkboxContentSelector]: {
64
83
  backgroundColor: "$background-primary-prominent-hover"
65
84
  }
@@ -68,10 +87,15 @@ const StyledCheckbox = styled(Root, {
68
87
  [checkboxContentSelector]: {
69
88
  border: "1px solid $border-primary"
70
89
  }
90
+ },
91
+ [ariaDisabledUnChecked]: {
92
+ [checkboxContentSelector]: {
93
+ border: "1px solid $border-neutrals-controls-disabled"
94
+ }
71
95
  }
72
96
  },
73
97
  "solid-subtle": {
74
- '&[data-state="checked"]': {
98
+ [checkedAndIndeterminate]: {
75
99
  [checkboxContentSelector]: {
76
100
  backgroundColor: "$background-primary-subtle",
77
101
  color: "$icon-primary"
@@ -82,30 +106,35 @@ const StyledCheckbox = styled(Root, {
82
106
  backgroundColor: "$background-primary-subtle"
83
107
  }
84
108
  },
85
- '&:hover[data-state="checked"], &:hover[data-state="unchecked"]': {
109
+ [`${hoverCheckedIndeterminate}, &:hover[data-state="unchecked"]`]: {
86
110
  [checkboxContentSelector]: {
87
111
  backgroundColor: "$background-primary-subtle-hover",
88
112
  color: "$icon-primary-hover"
89
113
  }
90
114
  },
91
- '&[aria-disabled="true"][data-state="unchecked"], &:disabled[data-state="unchecked"]': {
115
+ [ariaDisabledUnChecked]: {
92
116
  [checkboxContentSelector]: {
93
117
  backgroundColor: "$background-neutrals-controls-disabled"
94
118
  }
95
119
  }
96
120
  },
97
121
  ghost: {
98
- '&[data-state="checked"]': {
122
+ [checkedAndIndeterminate]: {
99
123
  [checkboxContentSelector]: {
100
124
  color: "$icon-primary"
101
125
  }
102
126
  },
103
- '&:hover[data-state="checked"]': {
127
+ [hoverCheckedIndeterminate]: {
104
128
  [checkboxContentSelector]: {
105
129
  color: "$icon-primary-hover"
106
130
  }
107
131
  },
108
- '&[aria-disabled="true"][data-state="checked"], &:disabled[data-state="checked"]': {
132
+ [ariaDisabledCheckedIndeterminate]: {
133
+ [checkboxContentSelector]: {
134
+ backgroundColor: "$background-neutrals"
135
+ }
136
+ },
137
+ [hoverCheckedIndeterminateDisabled]: {
109
138
  [checkboxContentSelector]: {
110
139
  backgroundColor: "$background-neutrals"
111
140
  }
@@ -126,7 +155,6 @@ const StyledCheckbox = styled(Root, {
126
155
  }
127
156
  }
128
157
  });
129
-
130
158
  const markStyles = {
131
159
  position: "absolute",
132
160
  top: "50%",
@@ -141,26 +169,35 @@ const markStyles = {
141
169
  };
142
170
  const StyledDisabledMark = styled(IconProhibit, markStyles);
143
171
  const StyledCheckMark = styled(IconCheckMark, markStyles);
144
- styled(IconMinus, markStyles);
172
+ const StyledIndeterminateMark = styled(IconMinus, markStyles);
145
173
 
146
174
  const Checkbox = React.forwardRef(
147
175
  ({
148
176
  "aria-disabled": ariaDisabled = false,
149
177
  checked,
150
- defaultChecked = false,
178
+ defaultChecked,
151
179
  disabled,
180
+ onChecked,
181
+ onUnchecked,
152
182
  onClick,
153
183
  onKeyDown,
154
184
  size = "large",
155
185
  variant = "solid-prominent",
156
186
  ...restProps
157
187
  }, forwardRef) => {
158
- const [checkedState, setCheckedState] = useState(defaultChecked);
159
- const disabledUnChecked = (disabled === true || ariaDisabled) && (checked != null ? checked : !checkedState);
188
+ const [checkedState, setCheckedState] = useState(
189
+ defaultChecked != null ? defaultChecked : false
190
+ );
191
+ const internalChecked = checked != null ? checked : checkedState;
192
+ const disabledUnchecked = (disabled === true || ariaDisabled) && internalChecked === false;
193
+ const checkedStateEvents = {
194
+ true: onChecked,
195
+ false: onUnchecked
196
+ };
160
197
  return /* @__PURE__ */ React.createElement(StyledCheckbox, {
161
198
  ...restProps,
162
199
  "aria-disabled": ariaDisabled,
163
- checked: checked != null ? checked : checkedState,
200
+ checked: internalChecked,
164
201
  defaultChecked,
165
202
  disabled,
166
203
  size,
@@ -170,13 +207,19 @@ const Checkbox = React.forwardRef(
170
207
  e.preventDefault();
171
208
  return;
172
209
  }
173
- setCheckedState((prevChecked) => !prevChecked);
174
210
  onClick == null ? void 0 : onClick(e);
175
211
  },
212
+ onCheckedChange: (checked2) => {
213
+ var _a;
214
+ setCheckedState(checked2);
215
+ (_a = checkedStateEvents[`${checked2}`]) == null ? void 0 : _a.call(checkedStateEvents);
216
+ },
176
217
  ref: forwardRef
177
- }, /* @__PURE__ */ React.createElement(StyledCheckboxContent, null, /* @__PURE__ */ React.createElement(Indicator, null, /* @__PURE__ */ React.createElement(StyledCheckMark, {
218
+ }, /* @__PURE__ */ React.createElement(StyledCheckboxContent, null, /* @__PURE__ */ React.createElement(Indicator, null, internalChecked === "indeterminate" && /* @__PURE__ */ React.createElement(StyledIndeterminateMark, {
219
+ size
220
+ }), internalChecked === true && /* @__PURE__ */ React.createElement(StyledCheckMark, {
178
221
  size
179
- })), disabledUnChecked && /* @__PURE__ */ React.createElement(StyledDisabledMark, {
222
+ })), disabledUnchecked && /* @__PURE__ */ React.createElement(StyledDisabledMark, {
180
223
  size
181
224
  })));
182
225
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../src/partials/indicator.tsx","../src/checkbox.styled.tsx","../src/partials/status-marks.styled.tsx","../src/checkbox.tsx"],"sourcesContent":["import React from 'react'\nimport type { StrictComponentProps } from '@mirohq/design-system-stitches'\nimport { styled } from '@mirohq/design-system-stitches'\nimport type { ElementRef } from 'react'\nimport { Indicator as RadixIndicator } from '@radix-ui/react-checkbox'\n\nconst StyledIndicator = styled(RadixIndicator)\ntype StyledIndicatorProps = StrictComponentProps<typeof StyledIndicator>\n\nexport const Indicator = React.forwardRef<\n ElementRef<typeof StyledIndicator>,\n StyledIndicatorProps\n>((props, forwardRef) => <StyledIndicator {...props} ref={forwardRef} />)\n","import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Root } from '@radix-ui/react-checkbox'\nimport { Primitive } from '@mirohq/design-system-primitive'\n\nexport const StyledCheckboxContent = styled(Primitive.div, {\n display: 'block',\n pointerEvents: 'none',\n borderRadius: '$50',\n position: 'relative',\n margin: 'auto',\n boxSizing: 'border-box',\n})\n\nconst checkboxContentSelector = `& ${StyledCheckboxContent}`\n\nexport const StyledCheckbox = styled(Root, {\n all: 'unset',\n square: '$6',\n color: '$icon-primary-inverted',\n\n '&:focus': {\n [checkboxContentSelector]: {\n boxShadow:\n '0px 0px 0px 1px $colors$white, 0px 0px 0px 3px $colors$blue-500, 0px 0px 0px 5px $colors$blue-200',\n },\n },\n '&:hover[data-state=\"checked\"][aria-disabled=\"true\"], &:hover[data-state=\"checked\"]&:disabled':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n },\n },\n '&[aria-disabled=\"true\"][data-state=\"checked\"], &:disabled[data-state=\"checked\"]':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n color: '$icon-neutrals-disabled',\n },\n },\n '&[aria-disabled=\"true\"][data-state=\"unchecked\"], &:disabled[data-state=\"unchecked\"]':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n color: '$icon-neutrals-disabled',\n },\n },\n variants: {\n variant: {\n 'solid-prominent': {\n '&[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-prominent',\n color: '$icon-primary-inverted',\n },\n },\n '&[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n border: '1px solid $border-neutrals-controls',\n },\n },\n '&:hover[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n },\n '&:hover[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n border: '1px solid $border-primary',\n },\n },\n },\n 'solid-subtle': {\n '&[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle',\n color: '$icon-primary',\n },\n },\n '&[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle',\n },\n },\n '&:hover[data-state=\"checked\"], &:hover[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle-hover',\n color: '$icon-primary-hover',\n },\n },\n '&[aria-disabled=\"true\"][data-state=\"unchecked\"], &:disabled[data-state=\"unchecked\"]':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n },\n },\n },\n ghost: {\n '&[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n color: '$icon-primary',\n },\n },\n\n '&:hover[data-state=\"checked\"]': {\n [checkboxContentSelector]: {\n color: '$icon-primary-hover',\n },\n },\n '&[aria-disabled=\"true\"][data-state=\"checked\"], &:disabled[data-state=\"checked\"]':\n {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n },\n },\n },\n },\n size: {\n large: {\n [checkboxContentSelector]: {\n square: '$5',\n },\n },\n small: {\n [checkboxContentSelector]: {\n square: '$4',\n },\n },\n },\n },\n})\n\nexport type StyledCheckboxProps = ComponentPropsWithRef<typeof StyledCheckbox>\n","import {\n IconProhibit,\n IconCheckMark,\n IconMinus,\n} from '@mirohq/design-system-icons'\nimport { styled } from '@mirohq/design-system-stitches'\n\nconst markStyles = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%,-50%)',\n variants: {\n size: {\n large: { width: '18px' },\n small: { width: '12px' },\n },\n },\n}\n\nexport const StyledDisabledMark = styled(IconProhibit, markStyles)\n\nexport const StyledCheckMark = styled(IconCheckMark, markStyles)\n\nexport const StyledIndeterminateMark = styled(IconMinus, markStyles)\n","import React, { useState } from 'react'\nimport type { ElementRef } from 'react'\n\nimport { Indicator } from './partials/indicator'\nimport { StyledCheckboxContent, StyledCheckbox } from './checkbox.styled'\nimport {\n StyledCheckMark,\n StyledDisabledMark,\n} from './partials/status-marks.styled'\nimport type { StyledCheckboxProps } from './checkbox.styled'\n\nexport interface CheckboxProps extends StyledCheckboxProps {\n /**\n * The checked state of the checkbox when it is initially rendered. Use when\n * you do not need to control its checked state.\n */\n defaultChecked?: boolean\n\n /**\n * The style of the checkbox.\n */\n variant?: StyledCheckboxProps['variant']\n\n /**\n * The size of the checkbox.\n */\n size?: StyledCheckboxProps['size']\n\n /**\n * The controlled checked state of the checkbox. Must be used in conjunction\n * with onCheckedChange.\n */\n checked?: boolean\n\n /**\n * When true, indicates that the user must check the checkbox before the\n * owning form can be submitted.\n */\n required?: boolean\n\n /**\n * The name of the checkbox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n\n /**\n * The value given as data when submitted with a name.\n */\n value?: string\n\n /**\n * When true, prevents the user from interacting with the checkbox.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the checked state of the checkbox changes.\n */\n onCheckedChange?: (checked: boolean | 'indeterminate') => void\n\n /**\n * When true, prevents the user from interacting with the checkbox but focus\n * is still possible.\n */\n 'aria-disabled'?: boolean\n}\n\nexport const Checkbox = React.forwardRef<\n ElementRef<typeof StyledCheckbox>,\n CheckboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled = false,\n checked,\n defaultChecked = false,\n disabled,\n onClick,\n onKeyDown,\n size = 'large',\n variant = 'solid-prominent',\n ...restProps\n },\n forwardRef\n ) => {\n const [checkedState, setCheckedState] = useState(defaultChecked)\n const disabledUnChecked =\n (disabled === true || ariaDisabled) && (checked ?? !checkedState)\n return (\n <StyledCheckbox\n {...restProps}\n aria-disabled={ariaDisabled}\n checked={checked ?? checkedState}\n defaultChecked={defaultChecked}\n disabled={disabled}\n size={size}\n variant={variant}\n onClick={e => {\n if (ariaDisabled) {\n e.preventDefault()\n return\n }\n setCheckedState(prevChecked => !prevChecked)\n onClick?.(e)\n }}\n ref={forwardRef}\n >\n <StyledCheckboxContent>\n <Indicator>\n <StyledCheckMark size={size} />\n </Indicator>\n {disabledUnChecked && <StyledDisabledMark size={size} />}\n </StyledCheckboxContent>\n </StyledCheckbox>\n )\n }\n)\n"],"names":["RadixIndicator"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../src/checkbox.styled.tsx","../src/checkbox.tsx"],"sourcesContent":["import type { ComponentPropsWithRef } from 'react'\nimport { styled } from '@mirohq/design-system-stitches'\nimport { Root } from '@radix-ui/react-checkbox'\nimport { Primitive } from '@mirohq/design-system-primitive'\nimport {\n IconProhibit,\n IconCheckMark,\n IconMinus,\n} from '@mirohq/design-system-icons'\n\nexport const StyledCheckboxContent = styled(Primitive.div, {\n display: 'block',\n pointerEvents: 'none',\n borderRadius: '$50',\n position: 'relative',\n margin: 'auto',\n boxSizing: 'border-box',\n})\n\nconst checkboxContentSelector = `& ${StyledCheckboxContent}`\n\nconst checkedAndIndeterminate =\n '&[data-state=\"checked\"], &[data-state=\"indeterminate\"]'\nconst ariaDisabledCheckedIndeterminate = [\n '&[aria-disabled=\"true\"][data-state=\"checked\"]',\n '&:disabled[data-state=\"checked\"]',\n '&[aria-disabled=\"true\"][data-state=\"indeterminate\"]',\n '&:disabled[data-state=\"indeterminate\"]',\n].join(' ,')\nconst hoverCheckedIndeterminate =\n '&:hover[data-state=\"checked\"], &:hover[data-state=\"indeterminate\"]'\nconst ariaDisabledUnChecked =\n '&[aria-disabled=\"true\"][data-state=\"unchecked\"], &:disabled[data-state=\"unchecked\"]'\nconst hoverCheckedIndeterminateDisabled = [\n '&:hover[data-state=\"checked\"][aria-disabled=\"true\"]',\n '&:hover[data-state=\"checked\"]&:disabled',\n '&:hover[data-state=\"indeterminate\"][aria-disabled=\"true\"]',\n '&:hover[data-state=\"indeterminate\"]&:disabled',\n].join(' ,')\n\nconst hoverAriaDisabled = [\n '&:hover[data-state=\"unchecked\"][aria-disabled=\"true\"]',\n '&:hover[data-state=\"unchecked\"]&:disabled',\n ...hoverCheckedIndeterminateDisabled.split(' ,'),\n].join(' ,')\n\nexport const StyledCheckbox = styled(Root, {\n all: 'unset',\n square: '$6',\n color: '$icon-primary-inverted',\n\n '&:focus': {\n [checkboxContentSelector]: {\n boxShadow: '$focus-controls',\n },\n },\n [hoverCheckedIndeterminateDisabled]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n },\n },\n\n [hoverAriaDisabled]: {\n [checkboxContentSelector]: {\n color: '$icon-neutrals-disabled',\n },\n },\n [ariaDisabledCheckedIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n color: '$icon-neutrals-disabled',\n },\n },\n [ariaDisabledUnChecked]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n color: '$icon-neutrals-disabled',\n },\n },\n variants: {\n variant: {\n 'solid-prominent': {\n '&[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n border: '1px solid $border-neutrals-controls',\n },\n },\n [checkedAndIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-prominent',\n color: '$icon-primary-inverted',\n },\n },\n [hoverCheckedIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-prominent-hover',\n },\n },\n '&:hover[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n border: '1px solid $border-primary',\n },\n },\n [ariaDisabledUnChecked]: {\n [checkboxContentSelector]: {\n border: '1px solid $border-neutrals-controls-disabled',\n },\n },\n },\n 'solid-subtle': {\n [checkedAndIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle',\n color: '$icon-primary',\n },\n },\n '&[data-state=\"unchecked\"]': {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle',\n },\n },\n [`${hoverCheckedIndeterminate}, &:hover[data-state=\"unchecked\"]`]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-primary-subtle-hover',\n color: '$icon-primary-hover',\n },\n },\n [ariaDisabledUnChecked]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals-controls-disabled',\n },\n },\n },\n ghost: {\n [checkedAndIndeterminate]: {\n [checkboxContentSelector]: {\n color: '$icon-primary',\n },\n },\n [hoverCheckedIndeterminate]: {\n [checkboxContentSelector]: {\n color: '$icon-primary-hover',\n },\n },\n [ariaDisabledCheckedIndeterminate]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n },\n },\n [hoverCheckedIndeterminateDisabled]: {\n [checkboxContentSelector]: {\n backgroundColor: '$background-neutrals',\n },\n },\n },\n },\n size: {\n large: {\n [checkboxContentSelector]: {\n square: '$5',\n },\n },\n small: {\n [checkboxContentSelector]: {\n square: '$4',\n },\n },\n },\n },\n})\n\nconst markStyles = {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%,-50%)',\n variants: {\n size: {\n large: { width: '18px' },\n small: { width: '12px' },\n },\n },\n}\n\nexport const StyledDisabledMark = styled(IconProhibit, markStyles)\n\nexport const StyledCheckMark = styled(IconCheckMark, markStyles)\n\nexport const StyledIndeterminateMark = styled(IconMinus, markStyles)\n\nexport type StyledCheckboxProps = ComponentPropsWithRef<typeof StyledCheckbox>\n","import React, { useState } from 'react'\nimport type { ElementRef } from 'react'\nimport { Indicator as RadixIndicator } from '@radix-ui/react-checkbox'\n\nimport {\n StyledCheckboxContent,\n StyledCheckbox,\n StyledCheckMark,\n StyledDisabledMark,\n StyledIndeterminateMark,\n} from './checkbox.styled'\nimport type { StyledCheckboxProps } from './checkbox.styled'\n\nexport interface CheckboxProps extends StyledCheckboxProps {\n /**\n * The checked state of the checkbox when it is initially rendered. Use when\n * you do not need to control its checked state.\n */\n defaultChecked?: boolean\n\n /**\n * The style of the checkbox.\n */\n variant?: StyledCheckboxProps['variant']\n\n /**\n * The size of the checkbox.\n */\n size?: StyledCheckboxProps['size']\n\n /**\n * The controlled checked state of the checkbox. Must be used in conjunction\n * with onCheckedChange.\n */\n checked?: boolean | 'indeterminate'\n\n /**\n * When true, indicates that the user must check the checkbox before the\n * owning form can be submitted.\n */\n required?: boolean\n\n /**\n * The name of the checkbox. Submitted with its owning form as part of a\n * name/value pair.\n */\n name?: string\n\n /**\n * The value given as data when submitted with a name.\n */\n value?: string\n\n /**\n * When true, prevents the user from interacting with the checkbox.\n */\n disabled?: boolean\n\n /**\n * Event handler called when the checked state equals true.\n */\n onChecked?: () => void\n\n /**\n * Event handler called when the checked state equals false.\n */\n onUnchecked?: () => void\n\n /**\n * When true, prevents the user from interacting with the checkbox but focus\n * is still possible.\n */\n 'aria-disabled'?: boolean\n}\n\nexport const Checkbox = React.forwardRef<\n ElementRef<typeof StyledCheckbox>,\n CheckboxProps\n>(\n (\n {\n 'aria-disabled': ariaDisabled = false,\n checked,\n defaultChecked,\n disabled,\n onChecked,\n onUnchecked,\n onClick,\n onKeyDown,\n size = 'large',\n variant = 'solid-prominent',\n ...restProps\n },\n forwardRef\n ) => {\n const [checkedState, setCheckedState] = useState<CheckboxProps['checked']>(\n defaultChecked ?? false\n )\n const internalChecked = checked ?? checkedState\n const disabledUnchecked =\n (disabled === true || ariaDisabled) && internalChecked === false\n const checkedStateEvents = {\n true: onChecked,\n false: onUnchecked,\n }\n\n return (\n <StyledCheckbox\n {...restProps}\n aria-disabled={ariaDisabled}\n checked={internalChecked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n size={size}\n variant={variant}\n onClick={e => {\n if (ariaDisabled) {\n e.preventDefault()\n return\n }\n onClick?.(e)\n }}\n onCheckedChange={(checked: boolean) => {\n setCheckedState(checked)\n\n checkedStateEvents[`${checked}`]?.()\n }}\n ref={forwardRef}\n >\n <StyledCheckboxContent>\n <RadixIndicator>\n {internalChecked === 'indeterminate' && (\n <StyledIndeterminateMark size={size} />\n )}\n {internalChecked === true && <StyledCheckMark size={size} />}\n </RadixIndicator>\n {disabledUnchecked && <StyledDisabledMark size={size} />}\n </StyledCheckboxContent>\n </StyledCheckbox>\n )\n }\n)\n"],"names":["checked","RadixIndicator"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -144,6 +144,9 @@ declare const StyledCheckbox: react.ForwardRefExoticComponent<Pick<Omit<{
144
144
  readonly 'icon-success-inverted'?: any;
145
145
  readonly 'icon-success'?: any;
146
146
  readonly 'icon-warning'?: any;
147
+ readonly 'border-focus-outer'?: any;
148
+ readonly 'border-focus-middle'?: any;
149
+ readonly 'border-focus-inner'?: any;
147
150
  readonly 'border-neutrals'?: any;
148
151
  readonly 'border-neutrals-hover'?: any;
149
152
  readonly 'border-neutrals-active'?: any;
@@ -185,6 +188,9 @@ declare const StyledCheckbox: react.ForwardRefExoticComponent<Pick<Omit<{
185
188
  shadows: {
186
189
  readonly 50: "0 4px 16px #05003812";
187
190
  readonly 100: "0 8px 32px #05003808";
191
+ readonly 'focus-small': "0 0 0 2px $colors$border-focus-inner, inset 0 0 0 2px $colors$border-focus-middle, inset 0 0 0 3px $colors$border-focus-outer";
192
+ readonly 'focus-large': "0 0 0 4px $colors$border-focus-inner, inset 0 0 0 2px $colors$border-focus-middle, inset 0 0 0 3px $colors$border-focus-outer";
193
+ readonly 'focus-controls': "0 0 0 1px $colors$border-focus-inner, 0 0 0 3px $colors$border-focus-middle, 0 0 0 5px $colors$border-focus-outer";
188
194
  };
189
195
  sizes: {
190
196
  readonly number: string;
@@ -455,7 +461,7 @@ interface CheckboxProps extends StyledCheckboxProps {
455
461
  * The controlled checked state of the checkbox. Must be used in conjunction
456
462
  * with onCheckedChange.
457
463
  */
458
- checked?: boolean;
464
+ checked?: boolean | 'indeterminate';
459
465
  /**
460
466
  * When true, indicates that the user must check the checkbox before the
461
467
  * owning form can be submitted.
@@ -475,15 +481,19 @@ interface CheckboxProps extends StyledCheckboxProps {
475
481
  */
476
482
  disabled?: boolean;
477
483
  /**
478
- * Event handler called when the checked state of the checkbox changes.
484
+ * Event handler called when the checked state equals true.
479
485
  */
480
- onCheckedChange?: (checked: boolean | 'indeterminate') => void;
486
+ onChecked?: () => void;
487
+ /**
488
+ * Event handler called when the checked state equals false.
489
+ */
490
+ onUnchecked?: () => void;
481
491
  /**
482
492
  * When true, prevents the user from interacting with the checkbox but focus
483
493
  * is still possible.
484
494
  */
485
495
  'aria-disabled'?: boolean;
486
496
  }
487
- declare const Checkbox: react__default.ForwardRefExoticComponent<Pick<CheckboxProps, "color" | "translate" | "css" | "prefix" | "asChild" | "UNSAFE_style" | "form" | "slot" | "title" | "autoFocus" | "checked" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "placeholder" | "required" | "size" | "type" | "value" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "key" | "variant" | "onCheckedChange"> & react__default.RefAttributes<HTMLButtonElement>>;
497
+ declare const Checkbox: react__default.ForwardRefExoticComponent<Pick<CheckboxProps, "color" | "translate" | "css" | "prefix" | "asChild" | "UNSAFE_style" | "form" | "slot" | "title" | "autoFocus" | "checked" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "placeholder" | "required" | "size" | "type" | "value" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "key" | "variant" | "onCheckedChange" | "onChecked" | "onUnchecked"> & react__default.RefAttributes<HTMLButtonElement>>;
488
498
 
489
499
  export { Checkbox, CheckboxProps };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirohq/design-system-checkbox",
3
- "version": "1.0.0-checkbox.0",
3
+ "version": "1.0.0-checkbox.2",
4
4
  "description": "",
5
5
  "author": "Miro",
6
6
  "source": "src/index.ts",
@@ -27,12 +27,12 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@radix-ui/react-checkbox": "^1.0.0",
30
- "@mirohq/design-system-icons": "^0.7.1-checkbox.0",
31
- "@mirohq/design-system-primitive": "^1.0.4",
32
- "@mirohq/design-system-stitches": "^2.1.0-checkbox.0"
30
+ "@mirohq/design-system-icons": "^0.12.1-checkbox.1",
31
+ "@mirohq/design-system-stitches": "^2.2.0-checkbox.0",
32
+ "@mirohq/design-system-primitive": "^1.1.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@mirohq/design-system-flex": "^2.0.14-checkbox.0"
35
+ "@mirohq/design-system-flex": "^2.1.3-checkbox.1"
36
36
  },
37
37
  "scripts": {
38
38
  "build": "rollup -c ../../../rollup.config.js",