@sproutsocial/seeds-react-checkbox 1.3.54 → 1.3.56
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/checkbox.css +187 -0
- package/dist/esm/index.js +158 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.mts +8 -13
- package/dist/index.d.ts +8 -13
- package/dist/index.js +159 -6
- package/dist/index.js.map +1 -1
- package/package.json +23 -9
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seeds Checkbox component classes
|
|
3
|
+
* Use these instead of writing out individual Tailwind utility classes.
|
|
4
|
+
*
|
|
5
|
+
* Requires @sproutsocial/seeds-react-theme/dist/theme-all.css imported for
|
|
6
|
+
* CSS variable definitions and dark mode support.
|
|
7
|
+
*
|
|
8
|
+
* Usage (default appearance): rendered by CheckboxTailwind on top of
|
|
9
|
+
* `@base-ui/react`'s Checkbox —
|
|
10
|
+
* <span class="seeds-checkbox">
|
|
11
|
+
* <button class="seeds-checkbox-input" role="checkbox">
|
|
12
|
+
* <span class="seeds-checkbox-indicator">
|
|
13
|
+
* <Icon class="seeds-checkbox-icon" />
|
|
14
|
+
* </span>
|
|
15
|
+
* </button>
|
|
16
|
+
* <span class="seeds-checkbox-label">Label</span>
|
|
17
|
+
* </span>
|
|
18
|
+
*
|
|
19
|
+
* The default-appearance box is base-ui's `Checkbox.Root` (`<button
|
|
20
|
+
* role="checkbox">`) and the mark is a real `<Icon>` inside
|
|
21
|
+
* `Checkbox.Indicator`. State is read from base-ui's ARIA contract
|
|
22
|
+
* (`aria-checked` = "true" | "mixed" | "false") and its `data-disabled`
|
|
23
|
+
* attribute, so there is no imperative `indeterminate` sync and no mask-image
|
|
24
|
+
* pseudo-element — which is what made the previous indeterminate rendering
|
|
25
|
+
* unreliable.
|
|
26
|
+
*
|
|
27
|
+
* All rules are wrapped in `@layer components` so consuming Tailwind utility
|
|
28
|
+
* classes (e.g. `mx-200`, `p-300`, `inline-flex`) win the cascade over these
|
|
29
|
+
* component styles.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
@layer components {
|
|
33
|
+
/* ----------------------------------------------------------------------------
|
|
34
|
+
* Default appearance
|
|
35
|
+
* ------------------------------------------------------------------------- */
|
|
36
|
+
|
|
37
|
+
.seeds-checkbox {
|
|
38
|
+
display: inline-flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
box-sizing: border-box;
|
|
41
|
+
position: relative;
|
|
42
|
+
transition: all var(--duration-fast) var(--ease-ease_in);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Whole control dims when the control is disabled (matches container opacity).
|
|
46
|
+
base-ui sets both the native `disabled` attribute and `data-disabled`. */
|
|
47
|
+
.seeds-checkbox:has(.seeds-checkbox-input:disabled),
|
|
48
|
+
.seeds-checkbox:has(.seeds-checkbox-input[data-disabled]) {
|
|
49
|
+
opacity: 0.4;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* The box — base-ui's Checkbox.Root <button>. `color` sets the grey mark used
|
|
53
|
+
for the hover preview; the selected state overrides the mark color below. */
|
|
54
|
+
.seeds-checkbox .seeds-checkbox-input {
|
|
55
|
+
box-sizing: border-box;
|
|
56
|
+
appearance: none;
|
|
57
|
+
-webkit-appearance: none;
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
position: relative;
|
|
62
|
+
margin: 0;
|
|
63
|
+
padding: 0;
|
|
64
|
+
width: var(--space-400);
|
|
65
|
+
height: var(--space-400);
|
|
66
|
+
border: 1px solid var(--color-form-border-base);
|
|
67
|
+
border-radius: var(--radius-400);
|
|
68
|
+
background-color: var(--color-form-bg-base);
|
|
69
|
+
color: var(--color-form-border-base);
|
|
70
|
+
transition: all var(--duration-fast) var(--ease-ease_in);
|
|
71
|
+
cursor: pointer;
|
|
72
|
+
flex-shrink: 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.seeds-checkbox .seeds-checkbox-input:disabled,
|
|
76
|
+
.seeds-checkbox .seeds-checkbox-input[data-disabled] {
|
|
77
|
+
cursor: not-allowed;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* Selected (checked or indeterminate): filled box. The mark color is set here
|
|
81
|
+
(not on the icon) so it inherits through the seeds Icon's unlayered
|
|
82
|
+
`.Icon { color: inherit }` rule, which would otherwise win the cascade over a
|
|
83
|
+
layered color on `.seeds-checkbox-icon`. `--color-icon-inverse` resolves to
|
|
84
|
+
white in light mode and black in dark mode — matching the SC component's
|
|
85
|
+
`icon.inverse` checked-mark color (styles.tsx:137). */
|
|
86
|
+
.seeds-checkbox .seeds-checkbox-input[aria-checked="true"],
|
|
87
|
+
.seeds-checkbox .seeds-checkbox-input[aria-checked="mixed"] {
|
|
88
|
+
border-color: var(--color-form-border-selected);
|
|
89
|
+
background-color: var(--color-form-bg-selected);
|
|
90
|
+
color: var(--color-icon-inverse);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* Focus ring. The visible box is base-ui's Checkbox.Root <button>, but base-ui
|
|
94
|
+
also renders a separate hidden <input> for form participation, and focus (on
|
|
95
|
+
click or Tab) can land on that <input> rather than the button. A plain
|
|
96
|
+
`.seeds-checkbox-input:focus` only matched the button, so the ring never
|
|
97
|
+
painted and the box looked unfocusable. Track focus anywhere inside the
|
|
98
|
+
control and paint the ring on the visible box regardless of which element
|
|
99
|
+
actually holds focus: base-ui mirrors focus state onto the Root button as
|
|
100
|
+
`data-focused`, and the `:has(:focus)` wrapper rules catch focus on either
|
|
101
|
+
the button or the hidden <input>. `:focus` (not `:focus-visible`) keeps parity
|
|
102
|
+
with the styled-components `focusRing` mixin, which shows the ring on both
|
|
103
|
+
keyboard focus and click (styles.tsx:115-117). */
|
|
104
|
+
.seeds-checkbox .seeds-checkbox-input[data-focused],
|
|
105
|
+
.seeds-checkbox:has(.seeds-checkbox-input:focus) .seeds-checkbox-input,
|
|
106
|
+
.seeds-checkbox:has(input:focus) .seeds-checkbox-input {
|
|
107
|
+
box-shadow:
|
|
108
|
+
0 0 0 1px var(--color-button-primary-bg-base),
|
|
109
|
+
0 0px 0px 4px
|
|
110
|
+
color-mix(
|
|
111
|
+
in srgb,
|
|
112
|
+
var(--color-button-primary-bg-base),
|
|
113
|
+
transparent 70%
|
|
114
|
+
);
|
|
115
|
+
outline: none;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.seeds-checkbox .seeds-checkbox-input:focus::-moz-focus-inner {
|
|
119
|
+
border: 0;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* The mark — a real <Icon> inside Checkbox.Indicator (kept mounted). Hidden by
|
|
123
|
+
default; shown (inverse) when selected, previewed (grey) on hover. */
|
|
124
|
+
.seeds-checkbox .seeds-checkbox-indicator {
|
|
125
|
+
display: inline-flex;
|
|
126
|
+
align-items: center;
|
|
127
|
+
justify-content: center;
|
|
128
|
+
pointer-events: none;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.seeds-checkbox .seeds-checkbox-icon {
|
|
132
|
+
display: inline-flex;
|
|
133
|
+
align-items: center;
|
|
134
|
+
justify-content: center;
|
|
135
|
+
opacity: 0;
|
|
136
|
+
color: currentColor;
|
|
137
|
+
pointer-events: none;
|
|
138
|
+
transition: var(--duration-fast) var(--ease-ease_inout);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.seeds-checkbox .seeds-checkbox-icon,
|
|
142
|
+
.seeds-checkbox .seeds-checkbox-icon .Icon-svg {
|
|
143
|
+
width: 10px;
|
|
144
|
+
height: 10px;
|
|
145
|
+
line-height: 10px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* Selected: inverse mark, shown. The mark inherits its color from the box's
|
|
149
|
+
`color: var(--color-icon-inverse)` above (via the Icon's unlayered
|
|
150
|
+
`color: inherit`), so only opacity is toggled here. */
|
|
151
|
+
.seeds-checkbox .seeds-checkbox-input[aria-checked="true"] .seeds-checkbox-icon,
|
|
152
|
+
.seeds-checkbox
|
|
153
|
+
.seeds-checkbox-input[aria-checked="mixed"]
|
|
154
|
+
.seeds-checkbox-icon {
|
|
155
|
+
opacity: 1;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* Hover previews the mark (grey, via the box `color`) unless the control is
|
|
159
|
+
disabled and unchecked. */
|
|
160
|
+
.seeds-checkbox
|
|
161
|
+
.seeds-checkbox-input:not(:disabled):not([data-disabled]):hover
|
|
162
|
+
.seeds-checkbox-icon {
|
|
163
|
+
opacity: 1;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.seeds-checkbox
|
|
167
|
+
.seeds-checkbox-input[aria-checked="false"]:disabled:hover
|
|
168
|
+
.seeds-checkbox-icon,
|
|
169
|
+
.seeds-checkbox
|
|
170
|
+
.seeds-checkbox-input[aria-checked="false"][data-disabled]:hover
|
|
171
|
+
.seeds-checkbox-icon {
|
|
172
|
+
opacity: 0;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.seeds-checkbox-label {
|
|
176
|
+
margin-left: var(--space-300);
|
|
177
|
+
font-size: var(--font-size-200);
|
|
178
|
+
line-height: 1;
|
|
179
|
+
cursor: pointer;
|
|
180
|
+
color: var(--color-text-headline);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.seeds-checkbox:has(.seeds-checkbox-input:disabled) .seeds-checkbox-label {
|
|
184
|
+
cursor: not-allowed;
|
|
185
|
+
opacity: 0.4;
|
|
186
|
+
}
|
|
187
|
+
} /* end @layer components */
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
// src/Checkbox.tsx
|
|
2
|
+
import * as React5 from "react";
|
|
3
|
+
|
|
4
|
+
// src/CheckboxHybrid.tsx
|
|
5
|
+
import * as React4 from "react";
|
|
6
|
+
import { needsStyledComponents } from "@sproutsocial/seeds-react-system-props";
|
|
7
|
+
|
|
8
|
+
// src/CheckboxStyledComponents.tsx
|
|
2
9
|
import * as React2 from "react";
|
|
3
10
|
|
|
4
11
|
// src/styles.tsx
|
|
@@ -255,9 +262,9 @@ var CheckboxContainer = styled.span(
|
|
|
255
262
|
);
|
|
256
263
|
var styles_default = Container;
|
|
257
264
|
|
|
258
|
-
// src/
|
|
265
|
+
// src/CheckboxStyledComponents.tsx
|
|
259
266
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
260
|
-
var
|
|
267
|
+
var CheckboxStyledComponents = class extends React2.Component {
|
|
261
268
|
el;
|
|
262
269
|
static defaultProps = {
|
|
263
270
|
indeterminate: false,
|
|
@@ -274,7 +281,7 @@ var Checkbox = class extends React2.Component {
|
|
|
274
281
|
}
|
|
275
282
|
}
|
|
276
283
|
handleChange = (event) => {
|
|
277
|
-
this.props.onChange(event);
|
|
284
|
+
this.props.onChange?.(event);
|
|
278
285
|
};
|
|
279
286
|
render() {
|
|
280
287
|
const {
|
|
@@ -365,14 +372,160 @@ var Checkbox = class extends React2.Component {
|
|
|
365
372
|
}
|
|
366
373
|
};
|
|
367
374
|
|
|
375
|
+
// src/CheckboxTailwind.tsx
|
|
376
|
+
import * as React3 from "react";
|
|
377
|
+
import { Checkbox as BaseCheckbox } from "@base-ui/react/checkbox";
|
|
378
|
+
import Icon2 from "@sproutsocial/seeds-react-icon";
|
|
379
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
380
|
+
function cn(...inputs) {
|
|
381
|
+
const classes = [];
|
|
382
|
+
for (const input of inputs) {
|
|
383
|
+
if (!input) continue;
|
|
384
|
+
if (typeof input === "string") {
|
|
385
|
+
classes.push(input);
|
|
386
|
+
} else if (typeof input === "object") {
|
|
387
|
+
for (const [key, value] of Object.entries(input)) {
|
|
388
|
+
if (value) {
|
|
389
|
+
classes.push(key);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return classes.join(" ");
|
|
395
|
+
}
|
|
396
|
+
var CheckboxTailwind = React3.forwardRef((props, ref) => {
|
|
397
|
+
const {
|
|
398
|
+
id,
|
|
399
|
+
value,
|
|
400
|
+
name,
|
|
401
|
+
label,
|
|
402
|
+
labelProps,
|
|
403
|
+
checked,
|
|
404
|
+
disabled = false,
|
|
405
|
+
indeterminate = false,
|
|
406
|
+
onChange,
|
|
407
|
+
ariaLabel,
|
|
408
|
+
// Destructured only to strip it from `...rest` (so it is never spread onto
|
|
409
|
+
// the wrapper DOM element). `appearance="pill"` is routed to the legacy
|
|
410
|
+
// styled-components component by `CheckboxHybrid`, so this path only ever
|
|
411
|
+
// renders the default appearance.
|
|
412
|
+
appearance,
|
|
413
|
+
qa = {},
|
|
414
|
+
tabIndex,
|
|
415
|
+
inputProps = {},
|
|
416
|
+
className,
|
|
417
|
+
...rest
|
|
418
|
+
} = props;
|
|
419
|
+
const tabIndexInt = typeof tabIndex === "string" ? parseInt(tabIndex, 10) : tabIndex;
|
|
420
|
+
const Wrapper = label ? "label" : "span";
|
|
421
|
+
const qaProps = {
|
|
422
|
+
"data-qa-checkbox": id,
|
|
423
|
+
"data-qa-checkbox-ischecked": indeterminate ? "indeterminate" : checked === true,
|
|
424
|
+
"data-qa-checkbox-isdisabled": disabled === true
|
|
425
|
+
};
|
|
426
|
+
const effectiveIndeterminate = checked === true && indeterminate;
|
|
427
|
+
const handleCheckedChange = (next, eventOrDetails) => {
|
|
428
|
+
if (!onChange) return;
|
|
429
|
+
const nativeEvent = eventOrDetails instanceof Event ? eventOrDetails : eventOrDetails?.event;
|
|
430
|
+
const nativeTarget = nativeEvent?.target;
|
|
431
|
+
const target = nativeTarget && typeof nativeTarget.checked === "boolean" ? nativeTarget : {
|
|
432
|
+
checked: next,
|
|
433
|
+
value: value ?? "",
|
|
434
|
+
name: name ?? "",
|
|
435
|
+
id,
|
|
436
|
+
type: "checkbox"
|
|
437
|
+
};
|
|
438
|
+
onChange({
|
|
439
|
+
nativeEvent,
|
|
440
|
+
target,
|
|
441
|
+
currentTarget: target,
|
|
442
|
+
type: nativeEvent?.type ?? "change",
|
|
443
|
+
preventDefault: () => nativeEvent?.preventDefault?.(),
|
|
444
|
+
stopPropagation: () => nativeEvent?.stopPropagation?.()
|
|
445
|
+
});
|
|
446
|
+
};
|
|
447
|
+
return /* @__PURE__ */ jsxs2(Wrapper, { className: cn("seeds-checkbox", className), ...rest, children: [
|
|
448
|
+
/* @__PURE__ */ jsx3(
|
|
449
|
+
BaseCheckbox.Root,
|
|
450
|
+
{
|
|
451
|
+
id,
|
|
452
|
+
checked,
|
|
453
|
+
indeterminate: effectiveIndeterminate,
|
|
454
|
+
disabled,
|
|
455
|
+
onCheckedChange: handleCheckedChange,
|
|
456
|
+
inputRef: ref ?? void 0,
|
|
457
|
+
className: "seeds-checkbox-input",
|
|
458
|
+
"aria-label": ariaLabel,
|
|
459
|
+
tabIndex: tabIndexInt,
|
|
460
|
+
...{ name, value },
|
|
461
|
+
...qaProps,
|
|
462
|
+
...qa,
|
|
463
|
+
...inputProps,
|
|
464
|
+
children: /* @__PURE__ */ jsx3(
|
|
465
|
+
BaseCheckbox.Indicator,
|
|
466
|
+
{
|
|
467
|
+
className: "seeds-checkbox-indicator",
|
|
468
|
+
keepMounted: true,
|
|
469
|
+
children: /* @__PURE__ */ jsx3(
|
|
470
|
+
Icon2,
|
|
471
|
+
{
|
|
472
|
+
className: "seeds-checkbox-icon",
|
|
473
|
+
name: effectiveIndeterminate ? "minus-solid" : "check-solid",
|
|
474
|
+
size: "mini",
|
|
475
|
+
fixedWidth: true
|
|
476
|
+
}
|
|
477
|
+
)
|
|
478
|
+
}
|
|
479
|
+
)
|
|
480
|
+
}
|
|
481
|
+
),
|
|
482
|
+
label && /* @__PURE__ */ jsx3(
|
|
483
|
+
"span",
|
|
484
|
+
{
|
|
485
|
+
className: "seeds-checkbox-label",
|
|
486
|
+
...labelProps,
|
|
487
|
+
children: label
|
|
488
|
+
}
|
|
489
|
+
)
|
|
490
|
+
] });
|
|
491
|
+
});
|
|
492
|
+
CheckboxTailwind.displayName = "CheckboxTailwind";
|
|
493
|
+
|
|
494
|
+
// src/CheckboxHybrid.tsx
|
|
495
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
496
|
+
var CheckboxHybrid = React4.forwardRef(
|
|
497
|
+
(props, ref) => {
|
|
498
|
+
if (props.appearance === "pill" || needsStyledComponents(props)) {
|
|
499
|
+
return /* @__PURE__ */ jsx4(
|
|
500
|
+
CheckboxStyledComponents,
|
|
501
|
+
{
|
|
502
|
+
...props,
|
|
503
|
+
ref
|
|
504
|
+
}
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
return /* @__PURE__ */ jsx4(CheckboxTailwind, { ...props, ref });
|
|
508
|
+
}
|
|
509
|
+
);
|
|
510
|
+
CheckboxHybrid.displayName = "Checkbox";
|
|
511
|
+
var CheckboxHybrid_default = CheckboxHybrid;
|
|
512
|
+
|
|
513
|
+
// src/Checkbox.tsx
|
|
514
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
515
|
+
var Checkbox = React5.forwardRef(
|
|
516
|
+
(props, ref) => /* @__PURE__ */ jsx5(CheckboxHybrid_default, { ...props, ref })
|
|
517
|
+
);
|
|
518
|
+
Checkbox.displayName = "Checkbox";
|
|
519
|
+
var Checkbox_default = Checkbox;
|
|
520
|
+
|
|
368
521
|
// src/types/CheckboxTypes.ts
|
|
369
522
|
import "react";
|
|
370
523
|
|
|
371
524
|
// src/index.ts
|
|
372
|
-
var index_default =
|
|
525
|
+
var index_default = Checkbox_default;
|
|
373
526
|
export {
|
|
374
527
|
CheckIcon,
|
|
375
|
-
Checkbox,
|
|
528
|
+
Checkbox_default as Checkbox,
|
|
376
529
|
CheckboxBox,
|
|
377
530
|
CheckboxContainer,
|
|
378
531
|
InputWrapper,
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Checkbox.tsx","../../src/styles.tsx","../../src/types/CheckboxTypes.ts","../../src/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport Container, {\n CheckboxBox,\n CheckIcon,\n PillInput,\n InputWrapper,\n LabelText,\n CheckboxContainer,\n} from \"./styles\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\nexport default class Checkbox extends React.Component<TypeCheckboxProps> {\n el: HTMLInputElement | null | undefined;\n static defaultProps = {\n indeterminate: false,\n disabled: false,\n };\n\n override componentDidUpdate(prevProps: TypeCheckboxProps) {\n if (prevProps.indeterminate !== !!this.props.indeterminate && this.el) {\n this.el.indeterminate = !!this.props.indeterminate;\n }\n }\n\n override componentDidMount() {\n if (this.el) {\n this.el.indeterminate = !!this.props.indeterminate;\n }\n }\n\n handleChange = (event: React.SyntheticEvent<HTMLInputElement>) => {\n this.props.onChange(event);\n };\n\n override render() {\n const {\n id,\n value,\n name,\n label,\n labelProps,\n checked,\n disabled,\n indeterminate,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange,\n ariaLabel,\n appearance = \"default\",\n qa = {},\n tabIndex,\n inputProps = {},\n ...rest\n } = this.props;\n const isPill = appearance === \"pill\";\n // @ts-notes - tabIndex requires a number but can be a string\n const tabIndexInt =\n typeof tabIndex === \"string\" ? parseInt(tabIndex, 10) : tabIndex;\n\n // TODO: Refactor pill checkboxes to use fewer elements for performance gains\n if (!isPill) {\n return (\n <CheckboxContainer\n as={label && \"label\"}\n disabled={disabled}\n indeterminate={indeterminate}\n checked={checked}\n {...rest}\n >\n <input\n type=\"checkbox\"\n id={id}\n aria-label={ariaLabel}\n value={value}\n name={name}\n checked={checked}\n ref={(el) => (this.el = el)}\n disabled={disabled}\n onChange={this.handleChange}\n data-qa-checkbox={id}\n data-qa-checkbox-ischecked={\n indeterminate ? \"indeterminate\" : checked === true\n }\n data-qa-checkbox-isdisabled={disabled === true}\n tabIndex={tabIndexInt}\n {...qa}\n {...inputProps}\n />\n {label && (\n <LabelText {...labelProps} disabled={disabled}>\n {label}\n </LabelText>\n )}\n </CheckboxContainer>\n );\n }\n\n return (\n <Container as={label && \"label\"} {...rest}>\n <InputWrapper appearance={appearance}>\n <PillInput\n type=\"checkbox\"\n id={id}\n aria-label={ariaLabel}\n value={value}\n name={name}\n checked={checked}\n ref={(el) => (this.el = el)}\n disabled={disabled}\n onChange={this.handleChange}\n data-qa-checkbox={id}\n data-qa-checkbox-ischecked={\n indeterminate ? \"indeterminate\" : checked === true\n }\n data-qa-checkbox-isdisabled={disabled === true}\n tabIndex={tabIndexInt}\n {...qa}\n {...inputProps}\n />\n <CheckboxBox>\n <CheckIcon\n name={indeterminate ? \"minus-solid\" : \"check-solid\"}\n size=\"mini\"\n fixedWidth\n />\n </CheckboxBox>\n </InputWrapper>\n </Container>\n );\n }\n}\n","import * as React from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport styled, { css } from \"styled-components\";\nimport { COMMON } from \"@sproutsocial/seeds-react-system-props\";\nimport { focusRing, pill } from \"@sproutsocial/seeds-react-mixins\";\nimport Box from \"@sproutsocial/seeds-react-box\";\nimport Icon from \"@sproutsocial/seeds-react-icon\";\nimport Text from \"@sproutsocial/seeds-react-text\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\nconst Container = styled.span`\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n\n ${COMMON}\n`;\nContainer.displayName = \"Checkbox\";\n\nexport const inputWrapperHoverStyles = css`\n background-color: ${(props) => props.theme.colors.app.background.base};\n`;\n\nexport const InputWrapper = styled(Box)<Pick<TypeCheckboxProps, \"appearance\">>`\n box-sizing: border-box;\n position: relative;\n width: ${(props) => props.theme.space[400]};\n height: ${(props) => props.theme.space[400]};\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n ${(props) =>\n props.appearance === \"pill\" &&\n css`\n background-color: transparent;\n transition: all ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_inout};\n /* This solution is temporary. DS-1095 */\n mix-blend-mode: ${props.theme.mode === \"dark\" ? \"screen\" : \"multiply\"};\n ${pill}\n\n &:hover {\n ${inputWrapperHoverStyles}\n }\n\n ${PillInput} {\n ${pill}\n }\n `}\n`;\nInputWrapper.displayName = \"InputWrapper\";\n\nexport const CheckboxBox = styled.div`\n box-sizing: border-box;\n position: relative;\n width: ${(props) => props.theme.space[400]};\n height: ${(props) => props.theme.space[400]};\n border: 1px solid ${(props) => props.theme.colors.form.border.base};\n border-radius: 4px;\n background-color: ${(props) => props.theme.colors.form.background.base};\n transition: border-color ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_in},\n background-color ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_in};\n pointer-events: none;\n`;\nCheckboxBox.displayName = \"CheckboxBox\";\n\nexport const CheckIcon = styled(Icon).attrs({ \"aria-hidden\": true })`\n position: absolute;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n opacity: 0;\n pointer-events: none;\n transition: all\n ${({ theme }) => `${theme.duration.fast} ${theme.easing.ease_inout}`};\n\n &,\n & .Icon-svg {\n width: 10px;\n height: 10px;\n line-height: 10px;\n }\n`;\nCheckIcon.displayName = \"CheckIcon\";\n\nexport const pillInputHoverStyles = css<Pick<TypeCheckboxProps, \"disabled\">>`\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: ${(props) => (props.disabled ? 0 : 1)};\n color: ${(props) => props.theme.colors.form.border.base};\n }\n`;\n\nexport const PillInput = styled.input`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n appearance: none;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n border-radius: 4px;\n\n /* IE 11 overrides */\n &::-ms-check {\n display: none;\n }\n\n &:focus {\n ${focusRing}\n }\n\n ${(props) =>\n !props.checked &&\n css`\n &:hover,\n &:focus {\n ${pillInputHoverStyles}\n }\n `}\n\n ${(props) =>\n props.checked &&\n css`\n ~ ${CheckboxBox} {\n border-color: ${props.theme.colors.form.border.selected};\n background-color: ${props.theme.colors.form.background.selected};\n }\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: 1;\n color: ${props.theme.colors.icon.inverse};\n }\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n ~ ${CheckboxBox} {\n opacity: 0.4;\n }\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: ${props.checked ? 1 : 0};\n }\n `}\n`;\nPillInput.displayName = \"PillInput\";\n\nexport const LabelText = styled(Text)<Pick<TypeCheckboxProps, \"disabled\">>`\n margin-left: ${(props) => props.theme.space[300]};\n font-size: ${(props) => props.theme.typography[200].fontSize};\n line-height: 1;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n color: ${(props) => props.theme.colors.text.headline};\n\n ${(props) =>\n props.disabled &&\n css`\n opacity: 0.4;\n `}\n`;\nLabelText.displayName = \"LabelText\";\n\nconst checkSVG = (color: string) => (\n <svg width=\"14\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.378 11.37L2 7.59l1.438-1.286L5.374 8.47l5.185-5.84L12 3.91l-6.622 7.46\"\n fill={color}\n />\n </svg>\n);\n\nconst indeterminateSVG = (color: string) => (\n <svg width=\"14\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"10\" height=\"2\" x=\"2\" y=\"6\" rx=\"1\" ry=\"1\" fill={color} />\n </svg>\n);\n\nconst getIcon = (type: \"indeterminate\" | \"check\", color: string) => {\n const escapedColor = encodeURIComponent(color);\n const icon =\n type === \"indeterminate\"\n ? indeterminateSVG(escapedColor)\n : checkSVG(escapedColor);\n return icon;\n};\n\nexport const checkboxContainerHoverStyles = css<\n Pick<TypeCheckboxProps, \"disabled\" | \"checked\">\n>`\n &:before {\n opacity: ${(props) => (props.disabled && !props.checked ? 0 : 1)};\n }\n`;\n/* stylelint-disable eslint-disable */\nexport const CheckboxContainer = styled.span<\n Pick<TypeCheckboxProps, \"indeterminate\" | \"checked\" | \"disabled\">\n>(\n (props) => css`\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n transition: all ${props.theme.duration.fast} ${props.theme.easing.ease_in};\n\n @supports (-webkit-appearance: none) {\n &:before {\n /* The following line cannot have multiple lint exclusions, otherwise it will not work\n the svg data url MUST be single quoted */\n /* prettier-ignore */\n content: url('data:image/svg+xml;utf8,${renderToStaticMarkup(\n getIcon(\n props.indeterminate ? \"indeterminate\" : \"check\",\n props.checked\n ? props.theme.colors.form.background.base\n : props.theme.colors.form.border.base\n )\n )}');\n opacity: ${props.checked ? 1 : 0};\n position: absolute;\n /* typography.300.fontSize matches space.400 (16px)\n this fixes an offset checkmark if there is another font size in the cascade */\n font-size: ${(props) => props.theme.typography[300].fontSize};\n width: ${props.theme.space[400]};\n height: ${props.theme.space[400]};\n text-align: center;\n transform: translateY(1px);\n line-height: 1;\n margin: auto;\n pointer-events: none;\n transition: ${props.theme.duration.fast}\n ${props.theme.easing.ease_inout};\n }\n\n &:hover:before {\n ${checkboxContainerHoverStyles}\n }\n\n ${props.disabled &&\n css`\n opacity: 0.4;\n `}\n\n input[type='checkbox'] {\n box-sizing: border-box;\n appearance: none;\n margin: 0;\n padding: 0;\n width: ${props.theme.space[400]};\n height: ${props.theme.space[400]};\n border: 1px solid ${props.theme.colors.form.border.base};\n border-radius: 4px;\n background-color: ${props.theme.colors.form.background.base};\n transition: all ${props.theme.duration.fast}\n ${props.theme.easing.ease_in};\n cursor: ${props.disabled ? \"not-allowed\" : \"pointer\"};\n flex-shrink: 0;\n\n &:not(:checked) {\n ${!props.indeterminate &&\n css`\n border-color: ${props.theme.colors.form.border\n .base} !important; /* We don't want the focus ring to remove the border */\n background-color: ${props.theme.colors.form.background.base};\n `}\n }\n\n &:checked {\n border-color: ${props.theme.colors.form.border.selected};\n background-color: ${props.theme.colors.form.background.selected};\n }\n\n ${props.indeterminate &&\n props.checked &&\n css`\n border-color: ${props.theme.colors.form.border.selected} !important;\n background-color: ${props.theme.colors.form.background\n .selected} !important;\n `}\n\n &:focus {\n ${focusRing}\n }\n }\n }\n\n ${COMMON}\n `\n);\n\nexport default Container;\n","import * as React from \"react\";\nimport type {\n TypeSystemCommonProps,\n TypeStyledComponentsCommonProps,\n} from \"@sproutsocial/seeds-react-system-props\";\nimport type { TypeTextProps } from \"@sproutsocial/seeds-react-text\";\n\nexport interface TypeCheckboxProps\n extends TypeStyledComponentsCommonProps,\n TypeSystemCommonProps,\n Omit<React.ComponentPropsWithoutRef<\"span\">, \"color\"> {\n /** ID of the form element, should match the \"for\" value of the associated label */\n id: string;\n value?: string;\n name?: string;\n\n /** Label text to display next to the checkbox */\n label?: string;\n\n /** Label used to describe the input (if not used with an accompanying visual label) */\n ariaLabel?: string;\n labelProps?: TypeTextProps;\n checked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n onChange: (event: React.SyntheticEvent<HTMLInputElement>) => void;\n appearance?: \"pill\" | \"default\";\n qa?: object;\n inputProps?: React.ComponentPropsWithoutRef<\"input\">;\n}\n","import Checkbox from \"./Checkbox\";\n\nexport default Checkbox;\nexport { Checkbox };\nexport * from \"./types/CheckboxTypes\";\nexport * from \"./styles\";\n"],"mappings":";AAAA,YAAYA,YAAW;;;ACAvB,OAAuB;AACvB,SAAS,4BAA4B;AACrC,OAAO,UAAU,WAAW;AAC5B,SAAS,cAAc;AACvB,SAAS,WAAW,YAAY;AAChC,OAAO,SAAS;AAChB,OAAO,UAAU;AACjB,OAAO,UAAU;AAmKb;AAhKJ,IAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKrB,MAAM;AAAA;AAEV,UAAU,cAAc;AAEjB,IAAM,0BAA0B;AAAA,sBACjB,CAAC,UAAU,MAAM,MAAM,OAAO,IAAI,WAAW,IAAI;AAAA;AAGhE,IAAM,eAAe,OAAO,GAAG;AAAA;AAAA;AAAA,WAG3B,CAAC,UAAU,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,YAChC,CAAC,UAAU,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKzC,CAAC,UACD,MAAM,eAAe,UACrB;AAAA;AAAA,wBAEoB,CAACC,WAAUA,OAAM,MAAM,SAAS,IAAI;AAAA,UAClD,CAACA,WAAUA,OAAM,MAAM,OAAO,UAAU;AAAA;AAAA,wBAE1B,MAAM,MAAM,SAAS,SAAS,WAAW,UAAU;AAAA,QACnE,IAAI;AAAA;AAAA;AAAA,UAGF,uBAAuB;AAAA;AAAA;AAAA,QAGzB,SAAS;AAAA,UACP,IAAI;AAAA;AAAA,KAET;AAAA;AAEL,aAAa,cAAc;AAEpB,IAAM,cAAc,OAAO;AAAA;AAAA;AAAA,WAGvB,CAAC,UAAU,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,YAChC,CAAC,UAAU,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,sBACvB,CAAC,UAAU,MAAM,MAAM,OAAO,KAAK,OAAO,IAAI;AAAA;AAAA,sBAE9C,CAAC,UAAU,MAAM,MAAM,OAAO,KAAK,WAAW,IAAI;AAAA,6BAC3C,CAAC,UAAU,MAAM,MAAM,SAAS,IAAI;AAAA,QACzD,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA,uBACtB,CAAC,UAAU,MAAM,MAAM,SAAS,IAAI;AAAA,QACnD,CAAC,UAAU,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAG7C,YAAY,cAAc;AAEnB,IAAM,YAAY,OAAO,IAAI,EAAE,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAW7D,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,SAAS,IAAI,IAAI,MAAM,OAAO,UAAU,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASxE,UAAU,cAAc;AAEjB,IAAM,uBAAuB;AAAA,MAC9B,WAAW,IAAI,SAAS;AAAA,eACf,CAAC,UAAW,MAAM,WAAW,IAAI,CAAE;AAAA,aACrC,CAAC,UAAU,MAAM,MAAM,OAAO,KAAK,OAAO,IAAI;AAAA;AAAA;AAIpD,IAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQpB,CAAC,UAAW,MAAM,WAAW,gBAAgB,SAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAS7D,SAAS;AAAA;AAAA;AAAA,IAGX,CAAC,UACD,CAAC,MAAM,WACP;AAAA;AAAA;AAAA,UAGM,oBAAoB;AAAA;AAAA,KAEzB;AAAA;AAAA,IAED,CAAC,UACD,MAAM,WACN;AAAA,UACM,WAAW;AAAA,wBACG,MAAM,MAAM,OAAO,KAAK,OAAO,QAAQ;AAAA,4BACnC,MAAM,MAAM,OAAO,KAAK,WAAW,QAAQ;AAAA;AAAA,UAE7D,WAAW,IAAI,SAAS;AAAA;AAAA,iBAEjB,MAAM,MAAM,OAAO,KAAK,OAAO;AAAA;AAAA,KAE3C;AAAA;AAAA,MAEC,CAAC,UACH,MAAM,YACN;AAAA,UACM,WAAW;AAAA;AAAA;AAAA,UAGX,WAAW,IAAI,SAAS;AAAA,mBACf,MAAM,UAAU,IAAI,CAAC;AAAA;AAAA,KAEnC;AAAA;AAEL,UAAU,cAAc;AAEjB,IAAM,YAAY,OAAO,IAAI;AAAA,iBACnB,CAAC,UAAU,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,eACnC,CAAC,UAAU,MAAM,MAAM,WAAW,GAAG,EAAE,QAAQ;AAAA;AAAA,YAElD,CAAC,UAAW,MAAM,WAAW,gBAAgB,SAAU;AAAA,WACxD,CAAC,UAAU,MAAM,MAAM,OAAO,KAAK,QAAQ;AAAA;AAAA,IAElD,CAAC,UACD,MAAM,YACN;AAAA;AAAA,KAEC;AAAA;AAEL,UAAU,cAAc;AAExB,IAAM,WAAW,CAAC,UAChB,oBAAC,SAAI,OAAM,MAAK,QAAO,MAAK,OAAM,8BAChC;AAAA,EAAC;AAAA;AAAA,IACC,GAAE;AAAA,IACF,MAAM;AAAA;AACR,GACF;AAGF,IAAM,mBAAmB,CAAC,UACxB,oBAAC,SAAI,OAAM,MAAK,QAAO,MAAK,OAAM,8BAChC,8BAAC,UAAK,OAAM,MAAK,QAAO,KAAI,GAAE,KAAI,GAAE,KAAI,IAAG,KAAI,IAAG,KAAI,MAAM,OAAO,GACrE;AAGF,IAAM,UAAU,CAAC,MAAiC,UAAkB;AAClE,QAAM,eAAe,mBAAmB,KAAK;AAC7C,QAAM,OACJ,SAAS,kBACL,iBAAiB,YAAY,IAC7B,SAAS,YAAY;AAC3B,SAAO;AACT;AAEO,IAAM,+BAA+B;AAAA;AAAA,eAI7B,CAAC,UAAW,MAAM,YAAY,CAAC,MAAM,UAAU,IAAI,CAAE;AAAA;AAAA;AAI7D,IAAM,oBAAoB,OAAO;AAAA,EAGtC,CAAC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKS,MAAM,MAAM,SAAS,IAAI,IAAI,MAAM,MAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gDAO7B;AAAA,IACtC;AAAA,MACE,MAAM,gBAAgB,kBAAkB;AAAA,MACxC,MAAM,UACF,MAAM,MAAM,OAAO,KAAK,WAAW,OACnC,MAAM,MAAM,OAAO,KAAK,OAAO;AAAA,IACrC;AAAA,EACF,CAAC;AAAA,mBACU,MAAM,UAAU,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,qBAInB,CAACA,WAAUA,OAAM,MAAM,WAAW,GAAG,EAAE,QAAQ;AAAA,iBACnD,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,kBACrB,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMlB,MAAM,MAAM,SAAS,IAAI;AAAA,YACnC,MAAM,MAAM,OAAO,UAAU;AAAA;AAAA;AAAA;AAAA,UAI/B,4BAA4B;AAAA;AAAA;AAAA,QAG9B,MAAM,YACR;AAAA;AAAA,OAEC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAOU,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,kBACrB,MAAM,MAAM,MAAM,GAAG,CAAC;AAAA,4BACZ,MAAM,MAAM,OAAO,KAAK,OAAO,IAAI;AAAA;AAAA,4BAEnC,MAAM,MAAM,OAAO,KAAK,WAAW,IAAI;AAAA,0BACzC,MAAM,MAAM,SAAS,IAAI;AAAA,YACvC,MAAM,MAAM,OAAO,OAAO;AAAA,kBACpB,MAAM,WAAW,gBAAgB,SAAS;AAAA;AAAA;AAAA;AAAA,YAIhD,CAAC,MAAM,iBACT;AAAA,4BACkB,MAAM,MAAM,OAAO,KAAK,OACrC,IAAI;AAAA,gCACa,MAAM,MAAM,OAAO,KAAK,WAAW,IAAI;AAAA,WAC5D;AAAA;AAAA;AAAA;AAAA,0BAIe,MAAM,MAAM,OAAO,KAAK,OAAO,QAAQ;AAAA,8BACnC,MAAM,MAAM,OAAO,KAAK,WAAW,QAAQ;AAAA;AAAA;AAAA,UAG/D,MAAM,iBACR,MAAM,WACN;AAAA,0BACkB,MAAM,MAAM,OAAO,KAAK,OAAO,QAAQ;AAAA,8BACnC,MAAM,MAAM,OAAO,KAAK,WACzC,QAAQ;AAAA,SACZ;AAAA;AAAA;AAAA,YAGG,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,MAKf,MAAM;AAAA;AAEZ;AAEA,IAAO,iBAAQ;;;AD1OP,SAOE,OAAAC,MAPF;AAlDR,IAAqB,WAArB,cAA4C,iBAA6B;AAAA,EACvE;AAAA,EACA,OAAO,eAAe;AAAA,IACpB,eAAe;AAAA,IACf,UAAU;AAAA,EACZ;AAAA,EAES,mBAAmB,WAA8B;AACxD,QAAI,UAAU,kBAAkB,CAAC,CAAC,KAAK,MAAM,iBAAiB,KAAK,IAAI;AACrE,WAAK,GAAG,gBAAgB,CAAC,CAAC,KAAK,MAAM;AAAA,IACvC;AAAA,EACF;AAAA,EAES,oBAAoB;AAC3B,QAAI,KAAK,IAAI;AACX,WAAK,GAAG,gBAAgB,CAAC,CAAC,KAAK,MAAM;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,eAAe,CAAC,UAAkD;AAChE,SAAK,MAAM,SAAS,KAAK;AAAA,EAC3B;AAAA,EAES,SAAS;AAChB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,KAAK,CAAC;AAAA,MACN;AAAA,MACA,aAAa,CAAC;AAAA,MACd,GAAG;AAAA,IACL,IAAI,KAAK;AACT,UAAM,SAAS,eAAe;AAE9B,UAAM,cACJ,OAAO,aAAa,WAAW,SAAS,UAAU,EAAE,IAAI;AAG1D,QAAI,CAAC,QAAQ;AACX,aACE;AAAA,QAAC;AAAA;AAAA,UACC,IAAI,SAAS;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACC,GAAG;AAAA,UAEJ;AAAA,4BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL;AAAA,gBACA,cAAY;AAAA,gBACZ;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,KAAK,CAAC,OAAQ,KAAK,KAAK;AAAA,gBACxB;AAAA,gBACA,UAAU,KAAK;AAAA,gBACf,oBAAkB;AAAA,gBAClB,8BACE,gBAAgB,kBAAkB,YAAY;AAAA,gBAEhD,+BAA6B,aAAa;AAAA,gBAC1C,UAAU;AAAA,gBACT,GAAG;AAAA,gBACH,GAAG;AAAA;AAAA,YACN;AAAA,YACC,SACC,gBAAAA,KAAC,aAAW,GAAG,YAAY,UACxB,iBACH;AAAA;AAAA;AAAA,MAEJ;AAAA,IAEJ;AAEA,WACE,gBAAAA,KAAC,kBAAU,IAAI,SAAS,SAAU,GAAG,MACnC,+BAAC,gBAAa,YACZ;AAAA,sBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL;AAAA,UACA,cAAY;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA,KAAK,CAAC,OAAQ,KAAK,KAAK;AAAA,UACxB;AAAA,UACA,UAAU,KAAK;AAAA,UACf,oBAAkB;AAAA,UAClB,8BACE,gBAAgB,kBAAkB,YAAY;AAAA,UAEhD,+BAA6B,aAAa;AAAA,UAC1C,UAAU;AAAA,UACT,GAAG;AAAA,UACH,GAAG;AAAA;AAAA,MACN;AAAA,MACA,gBAAAA,KAAC,eACC,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,gBAAgB,gBAAgB;AAAA,UACtC,MAAK;AAAA,UACL,YAAU;AAAA;AAAA,MACZ,GACF;AAAA,OACF,GACF;AAAA,EAEJ;AACF;;;AEjIA,OAAuB;;;ACEvB,IAAO,gBAAQ;","names":["React","props","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Checkbox.tsx","../../src/CheckboxHybrid.tsx","../../src/CheckboxStyledComponents.tsx","../../src/styles.tsx","../../src/CheckboxTailwind.tsx","../../src/types/CheckboxTypes.ts","../../src/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\nimport CheckboxHybrid from \"./CheckboxHybrid\";\n\n/**\n * Checkbox component. Automatically routes between the Tailwind implementation\n * (preferred) and the styled-components implementation (for consumers using\n * system props or a styled() extension).\n */\nconst Checkbox = React.forwardRef<HTMLInputElement, TypeCheckboxProps>(\n (props, ref) => <CheckboxHybrid {...props} ref={ref} />\n);\n\nCheckbox.displayName = \"Checkbox\";\nexport default Checkbox;\n","/**\n * Hybrid Checkbox component.\n * Automatically chooses between the Tailwind/CSS implementation (preferred —\n * no styled-components runtime) and the styled-components implementation\n * (when styled-system props or a `styled(Checkbox)` extension are detected).\n */\n\nimport * as React from \"react\";\nimport { needsStyledComponents } from \"@sproutsocial/seeds-react-system-props\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\nimport CheckboxStyledComponents from \"./CheckboxStyledComponents\";\nimport { CheckboxTailwind } from \"./CheckboxTailwind\";\n\nconst CheckboxHybrid = React.forwardRef<HTMLInputElement, TypeCheckboxProps>(\n (props, ref) => {\n // Gate on `needsStyledComponents` (not just `hasStyledProps`) so that a bare\n // `styled(Checkbox)` extension — which injects `theme`/`forwardedComponent`\n // but no styled-system props — still renders the styled-components path and\n // keeps its SC styles. `needsStyledComponents` (via `isStyledExtension`)\n // already detects the injected `sc-...` className, so no extra class check is\n // needed here. This is an intentional deviation from ButtonHybrid, which\n // gates only on `hasStyledProps`.\n //\n // `appearance=\"pill\"` also routes here: the pill flow is unsupported on the\n // Tailwind path (removed per review), so it renders via the legacy\n // styled-components component, which still implements pill. This keeps the\n // public `appearance` type working with no silent default-box regression.\n if (props.appearance === \"pill\" || needsStyledComponents(props)) {\n // Forward the ref on the SC path too, restoring the pre-migration instance\n // ref (pre-migration `Checkbox` was the class, so `styled(Checkbox)` /\n // `<Checkbox ref={r}/>` resolved `r` to the class instance). Mirrors\n // ButtonHybrid forwarding `ref || innerRef` on both paths.\n return (\n <CheckboxStyledComponents\n {...props}\n ref={ref as unknown as React.Ref<CheckboxStyledComponents>}\n />\n );\n }\n\n // Use the Tailwind version (preferred - better performance)\n return <CheckboxTailwind {...props} ref={ref} />;\n }\n);\n\nCheckboxHybrid.displayName = \"Checkbox\";\nexport default CheckboxHybrid;\n","import * as React from \"react\";\nimport Container, {\n CheckboxBox,\n CheckIcon,\n PillInput,\n InputWrapper,\n LabelText,\n CheckboxContainer,\n} from \"./styles\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\n/**\n * Legacy styled-components implementation of Checkbox.\n *\n * This is a verbatim move of the original `Checkbox` class component. It is\n * rendered by `CheckboxHybrid` whenever styled-components features are detected\n * (styled-system props or a `styled(Checkbox)` extension), preserving 100%\n * backward compatibility. The Tailwind/CSS implementation lives in\n * `CheckboxTailwind`.\n */\nexport default class CheckboxStyledComponents extends React.Component<TypeCheckboxProps> {\n el: HTMLInputElement | null | undefined;\n static defaultProps = {\n indeterminate: false,\n disabled: false,\n };\n\n override componentDidUpdate(prevProps: TypeCheckboxProps) {\n if (prevProps.indeterminate !== !!this.props.indeterminate && this.el) {\n this.el.indeterminate = !!this.props.indeterminate;\n }\n }\n\n override componentDidMount() {\n if (this.el) {\n this.el.indeterminate = !!this.props.indeterminate;\n }\n }\n\n handleChange = (event: React.SyntheticEvent<HTMLInputElement>) => {\n this.props.onChange?.(event);\n };\n\n override render() {\n const {\n id,\n value,\n name,\n label,\n labelProps,\n checked,\n disabled,\n indeterminate,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange,\n ariaLabel,\n appearance = \"default\",\n qa = {},\n tabIndex,\n inputProps = {},\n ...rest\n } = this.props;\n const isPill = appearance === \"pill\";\n // @ts-notes - tabIndex requires a number but can be a string\n const tabIndexInt =\n typeof tabIndex === \"string\" ? parseInt(tabIndex, 10) : tabIndex;\n\n // TODO: Refactor pill checkboxes to use fewer elements for performance gains\n if (!isPill) {\n return (\n <CheckboxContainer\n as={label && \"label\"}\n disabled={disabled}\n indeterminate={indeterminate}\n checked={checked}\n {...rest}\n >\n <input\n type=\"checkbox\"\n id={id}\n aria-label={ariaLabel}\n value={value}\n name={name}\n checked={checked}\n ref={(el) => (this.el = el)}\n disabled={disabled}\n onChange={this.handleChange}\n data-qa-checkbox={id}\n data-qa-checkbox-ischecked={\n indeterminate ? \"indeterminate\" : checked === true\n }\n data-qa-checkbox-isdisabled={disabled === true}\n tabIndex={tabIndexInt}\n {...qa}\n {...inputProps}\n />\n {label && (\n <LabelText {...labelProps} disabled={disabled}>\n {label}\n </LabelText>\n )}\n </CheckboxContainer>\n );\n }\n\n return (\n <Container as={label && \"label\"} {...rest}>\n <InputWrapper appearance={appearance}>\n <PillInput\n type=\"checkbox\"\n id={id}\n aria-label={ariaLabel}\n value={value}\n name={name}\n checked={checked}\n ref={(el) => (this.el = el)}\n disabled={disabled}\n onChange={this.handleChange}\n data-qa-checkbox={id}\n data-qa-checkbox-ischecked={\n indeterminate ? \"indeterminate\" : checked === true\n }\n data-qa-checkbox-isdisabled={disabled === true}\n tabIndex={tabIndexInt}\n {...qa}\n {...inputProps}\n />\n <CheckboxBox>\n <CheckIcon\n name={indeterminate ? \"minus-solid\" : \"check-solid\"}\n size=\"mini\"\n fixedWidth\n />\n </CheckboxBox>\n </InputWrapper>\n </Container>\n );\n }\n}\n","import * as React from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport styled, { css } from \"styled-components\";\nimport { COMMON } from \"@sproutsocial/seeds-react-system-props\";\nimport { focusRing, pill } from \"@sproutsocial/seeds-react-mixins\";\nimport Box from \"@sproutsocial/seeds-react-box\";\nimport Icon from \"@sproutsocial/seeds-react-icon\";\nimport Text from \"@sproutsocial/seeds-react-text\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\nconst Container = styled.span`\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n\n ${COMMON}\n`;\nContainer.displayName = \"Checkbox\";\n\nexport const inputWrapperHoverStyles = css`\n background-color: ${(props) => props.theme.colors.app.background.base};\n`;\n\nexport const InputWrapper = styled(Box)<Pick<TypeCheckboxProps, \"appearance\">>`\n box-sizing: border-box;\n position: relative;\n width: ${(props) => props.theme.space[400]};\n height: ${(props) => props.theme.space[400]};\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n ${(props) =>\n props.appearance === \"pill\" &&\n css`\n background-color: transparent;\n transition: all ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_inout};\n /* This solution is temporary. DS-1095 */\n mix-blend-mode: ${props.theme.mode === \"dark\" ? \"screen\" : \"multiply\"};\n ${pill}\n\n &:hover {\n ${inputWrapperHoverStyles}\n }\n\n ${PillInput} {\n ${pill}\n }\n `}\n`;\nInputWrapper.displayName = \"InputWrapper\";\n\nexport const CheckboxBox = styled.div`\n box-sizing: border-box;\n position: relative;\n width: ${(props) => props.theme.space[400]};\n height: ${(props) => props.theme.space[400]};\n border: 1px solid ${(props) => props.theme.colors.form.border.base};\n border-radius: 4px;\n background-color: ${(props) => props.theme.colors.form.background.base};\n transition: border-color ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_in},\n background-color ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_in};\n pointer-events: none;\n`;\nCheckboxBox.displayName = \"CheckboxBox\";\n\nexport const CheckIcon = styled(Icon).attrs({ \"aria-hidden\": true })`\n position: absolute;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n opacity: 0;\n pointer-events: none;\n transition: all\n ${({ theme }) => `${theme.duration.fast} ${theme.easing.ease_inout}`};\n\n &,\n & .Icon-svg {\n width: 10px;\n height: 10px;\n line-height: 10px;\n }\n`;\nCheckIcon.displayName = \"CheckIcon\";\n\nexport const pillInputHoverStyles = css<Pick<TypeCheckboxProps, \"disabled\">>`\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: ${(props) => (props.disabled ? 0 : 1)};\n color: ${(props) => props.theme.colors.form.border.base};\n }\n`;\n\nexport const PillInput = styled.input`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n appearance: none;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n border-radius: 4px;\n\n /* IE 11 overrides */\n &::-ms-check {\n display: none;\n }\n\n &:focus {\n ${focusRing}\n }\n\n ${(props) =>\n !props.checked &&\n css`\n &:hover,\n &:focus {\n ${pillInputHoverStyles}\n }\n `}\n\n ${(props) =>\n props.checked &&\n css`\n ~ ${CheckboxBox} {\n border-color: ${props.theme.colors.form.border.selected};\n background-color: ${props.theme.colors.form.background.selected};\n }\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: 1;\n color: ${props.theme.colors.icon.inverse};\n }\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n ~ ${CheckboxBox} {\n opacity: 0.4;\n }\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: ${props.checked ? 1 : 0};\n }\n `}\n`;\nPillInput.displayName = \"PillInput\";\n\nexport const LabelText = styled(Text)<Pick<TypeCheckboxProps, \"disabled\">>`\n margin-left: ${(props) => props.theme.space[300]};\n font-size: ${(props) => props.theme.typography[200].fontSize};\n line-height: 1;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n color: ${(props) => props.theme.colors.text.headline};\n\n ${(props) =>\n props.disabled &&\n css`\n opacity: 0.4;\n `}\n`;\nLabelText.displayName = \"LabelText\";\n\nconst checkSVG = (color: string) => (\n <svg width=\"14\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.378 11.37L2 7.59l1.438-1.286L5.374 8.47l5.185-5.84L12 3.91l-6.622 7.46\"\n fill={color}\n />\n </svg>\n);\n\nconst indeterminateSVG = (color: string) => (\n <svg width=\"14\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"10\" height=\"2\" x=\"2\" y=\"6\" rx=\"1\" ry=\"1\" fill={color} />\n </svg>\n);\n\nconst getIcon = (type: \"indeterminate\" | \"check\", color: string) => {\n const escapedColor = encodeURIComponent(color);\n const icon =\n type === \"indeterminate\"\n ? indeterminateSVG(escapedColor)\n : checkSVG(escapedColor);\n return icon;\n};\n\nexport const checkboxContainerHoverStyles = css<\n Pick<TypeCheckboxProps, \"disabled\" | \"checked\">\n>`\n &:before {\n opacity: ${(props) => (props.disabled && !props.checked ? 0 : 1)};\n }\n`;\n/* stylelint-disable eslint-disable */\nexport const CheckboxContainer = styled.span<\n Pick<TypeCheckboxProps, \"indeterminate\" | \"checked\" | \"disabled\">\n>(\n (props) => css`\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n transition: all ${props.theme.duration.fast} ${props.theme.easing.ease_in};\n\n @supports (-webkit-appearance: none) {\n &:before {\n /* The following line cannot have multiple lint exclusions, otherwise it will not work\n the svg data url MUST be single quoted */\n /* prettier-ignore */\n content: url('data:image/svg+xml;utf8,${renderToStaticMarkup(\n getIcon(\n props.indeterminate ? \"indeterminate\" : \"check\",\n props.checked\n ? props.theme.colors.form.background.base\n : props.theme.colors.form.border.base\n )\n )}');\n opacity: ${props.checked ? 1 : 0};\n position: absolute;\n /* typography.300.fontSize matches space.400 (16px)\n this fixes an offset checkmark if there is another font size in the cascade */\n font-size: ${(props) => props.theme.typography[300].fontSize};\n width: ${props.theme.space[400]};\n height: ${props.theme.space[400]};\n text-align: center;\n transform: translateY(1px);\n line-height: 1;\n margin: auto;\n pointer-events: none;\n transition: ${props.theme.duration.fast}\n ${props.theme.easing.ease_inout};\n }\n\n &:hover:before {\n ${checkboxContainerHoverStyles}\n }\n\n ${props.disabled &&\n css`\n opacity: 0.4;\n `}\n\n input[type='checkbox'] {\n box-sizing: border-box;\n appearance: none;\n margin: 0;\n padding: 0;\n width: ${props.theme.space[400]};\n height: ${props.theme.space[400]};\n border: 1px solid ${props.theme.colors.form.border.base};\n border-radius: 4px;\n background-color: ${props.theme.colors.form.background.base};\n transition: all ${props.theme.duration.fast}\n ${props.theme.easing.ease_in};\n cursor: ${props.disabled ? \"not-allowed\" : \"pointer\"};\n flex-shrink: 0;\n\n &:not(:checked) {\n ${!props.indeterminate &&\n css`\n border-color: ${props.theme.colors.form.border\n .base} !important; /* We don't want the focus ring to remove the border */\n background-color: ${props.theme.colors.form.background.base};\n `}\n }\n\n &:checked {\n border-color: ${props.theme.colors.form.border.selected};\n background-color: ${props.theme.colors.form.background.selected};\n }\n\n ${props.indeterminate &&\n props.checked &&\n css`\n border-color: ${props.theme.colors.form.border.selected} !important;\n background-color: ${props.theme.colors.form.background\n .selected} !important;\n `}\n\n &:focus {\n ${focusRing}\n }\n }\n }\n\n ${COMMON}\n `\n);\n\nexport default Container;\n","/**\n * Tailwind/CSS implementation of the Checkbox component.\n * Uses the Seeds checkbox CSS classes from checkbox.css.\n *\n * Renders the default appearance only: a styled wrapper around `@base-ui/react`'s\n * Checkbox: `Checkbox.Root` renders a `<button role=\"checkbox\">` (the box) plus\n * a hidden `<input>` for form participation, and `Checkbox.Indicator` holds the\n * real `<Icon>` mark. base-ui owns `checked` / `indeterminate` / `disabled` as\n * first-class state props, so there is no imperative `indeterminate` sync and no\n * mask-image pseudo-element. The public API (`TypeCheckboxProps`) and every\n * `data-qa` attribute are preserved unchanged so consumers need no changes. The\n * pill appearance is unsupported on this path — `CheckboxHybrid` routes\n * `appearance=\"pill\"` to the legacy styled-components component.\n */\n\nimport * as React from \"react\";\nimport { Checkbox as BaseCheckbox } from \"@base-ui/react/checkbox\";\nimport Icon from \"@sproutsocial/seeds-react-icon\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\n// Utility for merging class names properly\nfunction cn(\n ...inputs: (string | undefined | null | false | Record<string, boolean>)[]\n): string {\n const classes: string[] = [];\n\n for (const input of inputs) {\n if (!input) continue;\n\n if (typeof input === \"string\") {\n classes.push(input);\n } else if (typeof input === \"object\") {\n for (const [key, value] of Object.entries(input)) {\n if (value) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(\" \");\n}\n\nexport const CheckboxTailwind = React.forwardRef<\n HTMLInputElement,\n TypeCheckboxProps\n>((props, ref) => {\n const {\n id,\n value,\n name,\n label,\n labelProps,\n checked,\n disabled = false,\n indeterminate = false,\n onChange,\n ariaLabel,\n // Destructured only to strip it from `...rest` (so it is never spread onto\n // the wrapper DOM element). `appearance=\"pill\"` is routed to the legacy\n // styled-components component by `CheckboxHybrid`, so this path only ever\n // renders the default appearance.\n appearance,\n qa = {},\n tabIndex,\n inputProps = {},\n className,\n ...rest\n } = props;\n\n // @ts-notes - tabIndex requires a number but can be a string\n const tabIndexInt =\n typeof tabIndex === \"string\" ? parseInt(tabIndex, 10) : tabIndex;\n\n const Wrapper = (label ? \"label\" : \"span\") as React.ElementType;\n\n // Shared data-qa contract — identical names/values to the legacy\n // styled-components path. `data-qa-checkbox-ischecked` is the tri-state string\n // contract: \"indeterminate\" | true | false.\n const qaProps = {\n \"data-qa-checkbox\": id,\n \"data-qa-checkbox-ischecked\": indeterminate\n ? \"indeterminate\"\n : checked === true,\n \"data-qa-checkbox-isdisabled\": disabled === true,\n };\n\n // Gate `indeterminate` on `checked` so an unchecked-but-indeterminate box\n // renders empty (identical to a plain unchecked box) rather than showing the\n // dash. This matches the styled-components spec, where the mark's opacity is\n // `checked ? 1 : 0` regardless of `indeterminate` (styles.tsx:224). Truth\n // table: checked+indeterminate → dash, checked → check, anything unchecked →\n // empty. The raw `indeterminate` prop still drives `qaProps` so the\n // `data-qa-checkbox-ischecked=\"indeterminate\"` contract is unchanged.\n const effectiveIndeterminate = checked === true && indeterminate;\n // Bridge the public `onChange(SyntheticEvent)` API onto base-ui's\n // #FUTURE CLEANUP - Ideally we'd just lean into base-ui's API, but that is a large breaking change.\n // For now, this is some code I hate, but keeping it to transform base-ui's event into synthetic event\n const handleCheckedChange = (next: boolean, eventOrDetails: unknown) => {\n // No `onChange` → nothing to forward. The control stays fully controlled\n // via the `checked`/`indeterminate` props passed to `Checkbox.Root`, so a\n // click on a controlled box still snaps back to the prop.\n if (!onChange) return;\n\n const nativeEvent =\n eventOrDetails instanceof Event\n ? eventOrDetails\n : (eventOrDetails as { event?: Event } | null | undefined)?.event;\n\n // Prefer the real hidden <input> as the event target when base-ui fired\n // from it (its `.checked`/`.value` already satisfy the contract); otherwise\n // synthesize a native-input-shaped target from `next`.\n const nativeTarget = nativeEvent?.target as unknown as\n | HTMLInputElement\n | undefined;\n\n const target =\n nativeTarget && typeof nativeTarget.checked === \"boolean\"\n ? nativeTarget\n : {\n checked: next,\n value: value ?? \"\",\n name: name ?? \"\",\n id,\n type: \"checkbox\",\n };\n\n // Always deliver a SyntheticEvent shape with a real `.nativeEvent`, so the\n // `e.nativeEvent`-reading contract (e.g. shiftKey) is preserved on both the\n // hidden-input and synthesized paths.\n onChange({\n nativeEvent,\n target,\n currentTarget: target,\n type: nativeEvent?.type ?? \"change\",\n preventDefault: () => nativeEvent?.preventDefault?.(),\n stopPropagation: () => nativeEvent?.stopPropagation?.(),\n } as unknown as React.SyntheticEvent<HTMLInputElement>);\n };\n\n return (\n <Wrapper className={cn(\"seeds-checkbox\", className)} {...rest}>\n <BaseCheckbox.Root\n id={id}\n checked={checked}\n indeterminate={effectiveIndeterminate}\n disabled={disabled}\n onCheckedChange={handleCheckedChange}\n // Forwarded ref targets the hidden <input> so the HTMLInputElement\n // contract is preserved.\n inputRef={ref ?? undefined}\n className=\"seeds-checkbox-input\"\n aria-label={ariaLabel}\n tabIndex={tabIndexInt}\n // `name`/`value` feed base-ui's hidden form <input>. Spread (rather\n // than as explicit attributes) so they pass through regardless of\n // base-ui's exact prop typing.\n {...{ name, value }}\n {...qaProps}\n {...qa}\n // `inputProps` is typed for a native <input>; base-ui forwards unknown\n // props to the rendered <button>. Spread last so consumers can still\n // override computed attributes (e.g. aria-label).\n {...(inputProps as unknown as React.ComponentProps<\n typeof BaseCheckbox.Root\n >)}\n >\n {/* keepMounted so the mark is always in the DOM; CSS toggles its\n visibility from base-ui's aria-checked state (true | mixed). */}\n <BaseCheckbox.Indicator\n className=\"seeds-checkbox-indicator\"\n keepMounted\n >\n <Icon\n className=\"seeds-checkbox-icon\"\n name={effectiveIndeterminate ? \"minus-solid\" : \"check-solid\"}\n size=\"mini\"\n fixedWidth\n />\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n {label && (\n <span\n className=\"seeds-checkbox-label\"\n {...(labelProps as React.HTMLAttributes<HTMLSpanElement>)}\n >\n {label}\n </span>\n )}\n </Wrapper>\n );\n});\n\nCheckboxTailwind.displayName = \"CheckboxTailwind\";\n","import * as React from \"react\";\nimport type {\n TypeSystemCommonProps,\n TypeStyledComponentsCommonProps,\n} from \"@sproutsocial/seeds-react-system-props\";\nimport type { TypeTextProps } from \"@sproutsocial/seeds-react-text\";\n\nexport interface TypeCheckboxProps\n extends TypeStyledComponentsCommonProps,\n TypeSystemCommonProps,\n Omit<React.ComponentPropsWithoutRef<\"span\">, \"color\"> {\n /** ID of the form element, should match the \"for\" value of the associated label */\n id: string;\n value?: string;\n name?: string;\n\n /** Label text to display next to the checkbox */\n label?: string;\n\n /** Label used to describe the input (if not used with an accompanying visual label) */\n ariaLabel?: string;\n labelProps?: TypeTextProps;\n checked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n onChange?: (event: React.SyntheticEvent<HTMLInputElement>) => void;\n appearance?: \"pill\" | \"default\";\n qa?: object;\n inputProps?: React.ComponentPropsWithoutRef<\"input\">;\n}\n","import Checkbox from \"./Checkbox\";\n\nexport default Checkbox;\nexport { Checkbox };\nexport * from \"./types/CheckboxTypes\";\nexport * from \"./styles\";\n"],"mappings":"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","names":["React","React","React","props","jsx","React","Icon","jsx","jsxs","jsx","jsx"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
1
|
import * as React from 'react';
|
|
3
2
|
import { TypeStyledComponentsCommonProps, TypeSystemCommonProps } from '@sproutsocial/seeds-react-system-props';
|
|
4
3
|
import * as _sproutsocial_seeds_react_text from '@sproutsocial/seeds-react-text';
|
|
5
4
|
import { TypeTextProps } from '@sproutsocial/seeds-react-text';
|
|
5
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
6
|
import * as _sproutsocial_seeds_react_icon from '@sproutsocial/seeds-react-icon';
|
|
7
7
|
import * as _sproutsocial_seeds_react_box from '@sproutsocial/seeds-react-box';
|
|
8
8
|
import * as styled_components from 'styled-components';
|
|
@@ -20,23 +20,18 @@ interface TypeCheckboxProps extends TypeStyledComponentsCommonProps, TypeSystemC
|
|
|
20
20
|
checked?: boolean;
|
|
21
21
|
indeterminate?: boolean;
|
|
22
22
|
disabled?: boolean;
|
|
23
|
-
onChange
|
|
23
|
+
onChange?: (event: React.SyntheticEvent<HTMLInputElement>) => void;
|
|
24
24
|
appearance?: "pill" | "default";
|
|
25
25
|
qa?: object;
|
|
26
26
|
inputProps?: React.ComponentPropsWithoutRef<"input">;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
componentDidUpdate(prevProps: TypeCheckboxProps): void;
|
|
36
|
-
componentDidMount(): void;
|
|
37
|
-
handleChange: (event: React.SyntheticEvent<HTMLInputElement>) => void;
|
|
38
|
-
render(): react_jsx_runtime.JSX.Element;
|
|
39
|
-
}
|
|
29
|
+
/**
|
|
30
|
+
* Checkbox component. Automatically routes between the Tailwind implementation
|
|
31
|
+
* (preferred) and the styled-components implementation (for consumers using
|
|
32
|
+
* system props or a styled() extension).
|
|
33
|
+
*/
|
|
34
|
+
declare const Checkbox: React.ForwardRefExoticComponent<Omit<TypeCheckboxProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
40
35
|
|
|
41
36
|
declare const inputWrapperHoverStyles: styled_components.FlattenInterpolation<styled_components.ThemeProps<any>>;
|
|
42
37
|
declare const InputWrapper: styled_components.StyledComponent<React.ForwardRefExoticComponent<Omit<_sproutsocial_seeds_react_box.TypeBoxProps, "ref"> & React.RefAttributes<HTMLDivElement>>, any, Pick<TypeCheckboxProps, "appearance">, never>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
1
|
import * as React from 'react';
|
|
3
2
|
import { TypeStyledComponentsCommonProps, TypeSystemCommonProps } from '@sproutsocial/seeds-react-system-props';
|
|
4
3
|
import * as _sproutsocial_seeds_react_text from '@sproutsocial/seeds-react-text';
|
|
5
4
|
import { TypeTextProps } from '@sproutsocial/seeds-react-text';
|
|
5
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
6
|
import * as _sproutsocial_seeds_react_icon from '@sproutsocial/seeds-react-icon';
|
|
7
7
|
import * as _sproutsocial_seeds_react_box from '@sproutsocial/seeds-react-box';
|
|
8
8
|
import * as styled_components from 'styled-components';
|
|
@@ -20,23 +20,18 @@ interface TypeCheckboxProps extends TypeStyledComponentsCommonProps, TypeSystemC
|
|
|
20
20
|
checked?: boolean;
|
|
21
21
|
indeterminate?: boolean;
|
|
22
22
|
disabled?: boolean;
|
|
23
|
-
onChange
|
|
23
|
+
onChange?: (event: React.SyntheticEvent<HTMLInputElement>) => void;
|
|
24
24
|
appearance?: "pill" | "default";
|
|
25
25
|
qa?: object;
|
|
26
26
|
inputProps?: React.ComponentPropsWithoutRef<"input">;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
componentDidUpdate(prevProps: TypeCheckboxProps): void;
|
|
36
|
-
componentDidMount(): void;
|
|
37
|
-
handleChange: (event: React.SyntheticEvent<HTMLInputElement>) => void;
|
|
38
|
-
render(): react_jsx_runtime.JSX.Element;
|
|
39
|
-
}
|
|
29
|
+
/**
|
|
30
|
+
* Checkbox component. Automatically routes between the Tailwind implementation
|
|
31
|
+
* (preferred) and the styled-components implementation (for consumers using
|
|
32
|
+
* system props or a styled() extension).
|
|
33
|
+
*/
|
|
34
|
+
declare const Checkbox: React.ForwardRefExoticComponent<Omit<TypeCheckboxProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
40
35
|
|
|
41
36
|
declare const inputWrapperHoverStyles: styled_components.FlattenInterpolation<styled_components.ThemeProps<any>>;
|
|
42
37
|
declare const InputWrapper: styled_components.StyledComponent<React.ForwardRefExoticComponent<Omit<_sproutsocial_seeds_react_box.TypeBoxProps, "ref"> & React.RefAttributes<HTMLDivElement>>, any, Pick<TypeCheckboxProps, "appearance">, never>;
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
33
|
CheckIcon: () => CheckIcon,
|
|
34
|
-
Checkbox: () =>
|
|
34
|
+
Checkbox: () => Checkbox_default,
|
|
35
35
|
CheckboxBox: () => CheckboxBox,
|
|
36
36
|
CheckboxContainer: () => CheckboxContainer,
|
|
37
37
|
InputWrapper: () => InputWrapper,
|
|
@@ -45,6 +45,13 @@ __export(index_exports, {
|
|
|
45
45
|
module.exports = __toCommonJS(index_exports);
|
|
46
46
|
|
|
47
47
|
// src/Checkbox.tsx
|
|
48
|
+
var React5 = __toESM(require("react"));
|
|
49
|
+
|
|
50
|
+
// src/CheckboxHybrid.tsx
|
|
51
|
+
var React4 = __toESM(require("react"));
|
|
52
|
+
var import_seeds_react_system_props2 = require("@sproutsocial/seeds-react-system-props");
|
|
53
|
+
|
|
54
|
+
// src/CheckboxStyledComponents.tsx
|
|
48
55
|
var React2 = __toESM(require("react"));
|
|
49
56
|
|
|
50
57
|
// src/styles.tsx
|
|
@@ -301,9 +308,9 @@ var CheckboxContainer = import_styled_components.default.span(
|
|
|
301
308
|
);
|
|
302
309
|
var styles_default = Container;
|
|
303
310
|
|
|
304
|
-
// src/
|
|
311
|
+
// src/CheckboxStyledComponents.tsx
|
|
305
312
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
306
|
-
var
|
|
313
|
+
var CheckboxStyledComponents = class extends React2.Component {
|
|
307
314
|
el;
|
|
308
315
|
static defaultProps = {
|
|
309
316
|
indeterminate: false,
|
|
@@ -320,7 +327,7 @@ var Checkbox = class extends React2.Component {
|
|
|
320
327
|
}
|
|
321
328
|
}
|
|
322
329
|
handleChange = (event) => {
|
|
323
|
-
this.props.onChange(event);
|
|
330
|
+
this.props.onChange?.(event);
|
|
324
331
|
};
|
|
325
332
|
render() {
|
|
326
333
|
const {
|
|
@@ -411,11 +418,157 @@ var Checkbox = class extends React2.Component {
|
|
|
411
418
|
}
|
|
412
419
|
};
|
|
413
420
|
|
|
421
|
+
// src/CheckboxTailwind.tsx
|
|
422
|
+
var React3 = __toESM(require("react"));
|
|
423
|
+
var import_checkbox = require("@base-ui/react/checkbox");
|
|
424
|
+
var import_seeds_react_icon2 = __toESM(require("@sproutsocial/seeds-react-icon"));
|
|
425
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
426
|
+
function cn(...inputs) {
|
|
427
|
+
const classes = [];
|
|
428
|
+
for (const input of inputs) {
|
|
429
|
+
if (!input) continue;
|
|
430
|
+
if (typeof input === "string") {
|
|
431
|
+
classes.push(input);
|
|
432
|
+
} else if (typeof input === "object") {
|
|
433
|
+
for (const [key, value] of Object.entries(input)) {
|
|
434
|
+
if (value) {
|
|
435
|
+
classes.push(key);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return classes.join(" ");
|
|
441
|
+
}
|
|
442
|
+
var CheckboxTailwind = React3.forwardRef((props, ref) => {
|
|
443
|
+
const {
|
|
444
|
+
id,
|
|
445
|
+
value,
|
|
446
|
+
name,
|
|
447
|
+
label,
|
|
448
|
+
labelProps,
|
|
449
|
+
checked,
|
|
450
|
+
disabled = false,
|
|
451
|
+
indeterminate = false,
|
|
452
|
+
onChange,
|
|
453
|
+
ariaLabel,
|
|
454
|
+
// Destructured only to strip it from `...rest` (so it is never spread onto
|
|
455
|
+
// the wrapper DOM element). `appearance="pill"` is routed to the legacy
|
|
456
|
+
// styled-components component by `CheckboxHybrid`, so this path only ever
|
|
457
|
+
// renders the default appearance.
|
|
458
|
+
appearance,
|
|
459
|
+
qa = {},
|
|
460
|
+
tabIndex,
|
|
461
|
+
inputProps = {},
|
|
462
|
+
className,
|
|
463
|
+
...rest
|
|
464
|
+
} = props;
|
|
465
|
+
const tabIndexInt = typeof tabIndex === "string" ? parseInt(tabIndex, 10) : tabIndex;
|
|
466
|
+
const Wrapper = label ? "label" : "span";
|
|
467
|
+
const qaProps = {
|
|
468
|
+
"data-qa-checkbox": id,
|
|
469
|
+
"data-qa-checkbox-ischecked": indeterminate ? "indeterminate" : checked === true,
|
|
470
|
+
"data-qa-checkbox-isdisabled": disabled === true
|
|
471
|
+
};
|
|
472
|
+
const effectiveIndeterminate = checked === true && indeterminate;
|
|
473
|
+
const handleCheckedChange = (next, eventOrDetails) => {
|
|
474
|
+
if (!onChange) return;
|
|
475
|
+
const nativeEvent = eventOrDetails instanceof Event ? eventOrDetails : eventOrDetails?.event;
|
|
476
|
+
const nativeTarget = nativeEvent?.target;
|
|
477
|
+
const target = nativeTarget && typeof nativeTarget.checked === "boolean" ? nativeTarget : {
|
|
478
|
+
checked: next,
|
|
479
|
+
value: value ?? "",
|
|
480
|
+
name: name ?? "",
|
|
481
|
+
id,
|
|
482
|
+
type: "checkbox"
|
|
483
|
+
};
|
|
484
|
+
onChange({
|
|
485
|
+
nativeEvent,
|
|
486
|
+
target,
|
|
487
|
+
currentTarget: target,
|
|
488
|
+
type: nativeEvent?.type ?? "change",
|
|
489
|
+
preventDefault: () => nativeEvent?.preventDefault?.(),
|
|
490
|
+
stopPropagation: () => nativeEvent?.stopPropagation?.()
|
|
491
|
+
});
|
|
492
|
+
};
|
|
493
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Wrapper, { className: cn("seeds-checkbox", className), ...rest, children: [
|
|
494
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
495
|
+
import_checkbox.Checkbox.Root,
|
|
496
|
+
{
|
|
497
|
+
id,
|
|
498
|
+
checked,
|
|
499
|
+
indeterminate: effectiveIndeterminate,
|
|
500
|
+
disabled,
|
|
501
|
+
onCheckedChange: handleCheckedChange,
|
|
502
|
+
inputRef: ref ?? void 0,
|
|
503
|
+
className: "seeds-checkbox-input",
|
|
504
|
+
"aria-label": ariaLabel,
|
|
505
|
+
tabIndex: tabIndexInt,
|
|
506
|
+
...{ name, value },
|
|
507
|
+
...qaProps,
|
|
508
|
+
...qa,
|
|
509
|
+
...inputProps,
|
|
510
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
511
|
+
import_checkbox.Checkbox.Indicator,
|
|
512
|
+
{
|
|
513
|
+
className: "seeds-checkbox-indicator",
|
|
514
|
+
keepMounted: true,
|
|
515
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
516
|
+
import_seeds_react_icon2.default,
|
|
517
|
+
{
|
|
518
|
+
className: "seeds-checkbox-icon",
|
|
519
|
+
name: effectiveIndeterminate ? "minus-solid" : "check-solid",
|
|
520
|
+
size: "mini",
|
|
521
|
+
fixedWidth: true
|
|
522
|
+
}
|
|
523
|
+
)
|
|
524
|
+
}
|
|
525
|
+
)
|
|
526
|
+
}
|
|
527
|
+
),
|
|
528
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
529
|
+
"span",
|
|
530
|
+
{
|
|
531
|
+
className: "seeds-checkbox-label",
|
|
532
|
+
...labelProps,
|
|
533
|
+
children: label
|
|
534
|
+
}
|
|
535
|
+
)
|
|
536
|
+
] });
|
|
537
|
+
});
|
|
538
|
+
CheckboxTailwind.displayName = "CheckboxTailwind";
|
|
539
|
+
|
|
540
|
+
// src/CheckboxHybrid.tsx
|
|
541
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
542
|
+
var CheckboxHybrid = React4.forwardRef(
|
|
543
|
+
(props, ref) => {
|
|
544
|
+
if (props.appearance === "pill" || (0, import_seeds_react_system_props2.needsStyledComponents)(props)) {
|
|
545
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
546
|
+
CheckboxStyledComponents,
|
|
547
|
+
{
|
|
548
|
+
...props,
|
|
549
|
+
ref
|
|
550
|
+
}
|
|
551
|
+
);
|
|
552
|
+
}
|
|
553
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckboxTailwind, { ...props, ref });
|
|
554
|
+
}
|
|
555
|
+
);
|
|
556
|
+
CheckboxHybrid.displayName = "Checkbox";
|
|
557
|
+
var CheckboxHybrid_default = CheckboxHybrid;
|
|
558
|
+
|
|
559
|
+
// src/Checkbox.tsx
|
|
560
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
561
|
+
var Checkbox = React5.forwardRef(
|
|
562
|
+
(props, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CheckboxHybrid_default, { ...props, ref })
|
|
563
|
+
);
|
|
564
|
+
Checkbox.displayName = "Checkbox";
|
|
565
|
+
var Checkbox_default = Checkbox;
|
|
566
|
+
|
|
414
567
|
// src/types/CheckboxTypes.ts
|
|
415
|
-
var
|
|
568
|
+
var React6 = require("react");
|
|
416
569
|
|
|
417
570
|
// src/index.ts
|
|
418
|
-
var index_default =
|
|
571
|
+
var index_default = Checkbox_default;
|
|
419
572
|
// Annotate the CommonJS export names for ESM import in node:
|
|
420
573
|
0 && (module.exports = {
|
|
421
574
|
CheckIcon,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/Checkbox.tsx","../src/styles.tsx","../src/types/CheckboxTypes.ts"],"sourcesContent":["import Checkbox from \"./Checkbox\";\n\nexport default Checkbox;\nexport { Checkbox };\nexport * from \"./types/CheckboxTypes\";\nexport * from \"./styles\";\n","import * as React from \"react\";\nimport Container, {\n CheckboxBox,\n CheckIcon,\n PillInput,\n InputWrapper,\n LabelText,\n CheckboxContainer,\n} from \"./styles\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\nexport default class Checkbox extends React.Component<TypeCheckboxProps> {\n el: HTMLInputElement | null | undefined;\n static defaultProps = {\n indeterminate: false,\n disabled: false,\n };\n\n override componentDidUpdate(prevProps: TypeCheckboxProps) {\n if (prevProps.indeterminate !== !!this.props.indeterminate && this.el) {\n this.el.indeterminate = !!this.props.indeterminate;\n }\n }\n\n override componentDidMount() {\n if (this.el) {\n this.el.indeterminate = !!this.props.indeterminate;\n }\n }\n\n handleChange = (event: React.SyntheticEvent<HTMLInputElement>) => {\n this.props.onChange(event);\n };\n\n override render() {\n const {\n id,\n value,\n name,\n label,\n labelProps,\n checked,\n disabled,\n indeterminate,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange,\n ariaLabel,\n appearance = \"default\",\n qa = {},\n tabIndex,\n inputProps = {},\n ...rest\n } = this.props;\n const isPill = appearance === \"pill\";\n // @ts-notes - tabIndex requires a number but can be a string\n const tabIndexInt =\n typeof tabIndex === \"string\" ? parseInt(tabIndex, 10) : tabIndex;\n\n // TODO: Refactor pill checkboxes to use fewer elements for performance gains\n if (!isPill) {\n return (\n <CheckboxContainer\n as={label && \"label\"}\n disabled={disabled}\n indeterminate={indeterminate}\n checked={checked}\n {...rest}\n >\n <input\n type=\"checkbox\"\n id={id}\n aria-label={ariaLabel}\n value={value}\n name={name}\n checked={checked}\n ref={(el) => (this.el = el)}\n disabled={disabled}\n onChange={this.handleChange}\n data-qa-checkbox={id}\n data-qa-checkbox-ischecked={\n indeterminate ? \"indeterminate\" : checked === true\n }\n data-qa-checkbox-isdisabled={disabled === true}\n tabIndex={tabIndexInt}\n {...qa}\n {...inputProps}\n />\n {label && (\n <LabelText {...labelProps} disabled={disabled}>\n {label}\n </LabelText>\n )}\n </CheckboxContainer>\n );\n }\n\n return (\n <Container as={label && \"label\"} {...rest}>\n <InputWrapper appearance={appearance}>\n <PillInput\n type=\"checkbox\"\n id={id}\n aria-label={ariaLabel}\n value={value}\n name={name}\n checked={checked}\n ref={(el) => (this.el = el)}\n disabled={disabled}\n onChange={this.handleChange}\n data-qa-checkbox={id}\n data-qa-checkbox-ischecked={\n indeterminate ? \"indeterminate\" : checked === true\n }\n data-qa-checkbox-isdisabled={disabled === true}\n tabIndex={tabIndexInt}\n {...qa}\n {...inputProps}\n />\n <CheckboxBox>\n <CheckIcon\n name={indeterminate ? \"minus-solid\" : \"check-solid\"}\n size=\"mini\"\n fixedWidth\n />\n </CheckboxBox>\n </InputWrapper>\n </Container>\n );\n }\n}\n","import * as React from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport styled, { css } from \"styled-components\";\nimport { COMMON } from \"@sproutsocial/seeds-react-system-props\";\nimport { focusRing, pill } from \"@sproutsocial/seeds-react-mixins\";\nimport Box from \"@sproutsocial/seeds-react-box\";\nimport Icon from \"@sproutsocial/seeds-react-icon\";\nimport Text from \"@sproutsocial/seeds-react-text\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\nconst Container = styled.span`\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n\n ${COMMON}\n`;\nContainer.displayName = \"Checkbox\";\n\nexport const inputWrapperHoverStyles = css`\n background-color: ${(props) => props.theme.colors.app.background.base};\n`;\n\nexport const InputWrapper = styled(Box)<Pick<TypeCheckboxProps, \"appearance\">>`\n box-sizing: border-box;\n position: relative;\n width: ${(props) => props.theme.space[400]};\n height: ${(props) => props.theme.space[400]};\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n ${(props) =>\n props.appearance === \"pill\" &&\n css`\n background-color: transparent;\n transition: all ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_inout};\n /* This solution is temporary. DS-1095 */\n mix-blend-mode: ${props.theme.mode === \"dark\" ? \"screen\" : \"multiply\"};\n ${pill}\n\n &:hover {\n ${inputWrapperHoverStyles}\n }\n\n ${PillInput} {\n ${pill}\n }\n `}\n`;\nInputWrapper.displayName = \"InputWrapper\";\n\nexport const CheckboxBox = styled.div`\n box-sizing: border-box;\n position: relative;\n width: ${(props) => props.theme.space[400]};\n height: ${(props) => props.theme.space[400]};\n border: 1px solid ${(props) => props.theme.colors.form.border.base};\n border-radius: 4px;\n background-color: ${(props) => props.theme.colors.form.background.base};\n transition: border-color ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_in},\n background-color ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_in};\n pointer-events: none;\n`;\nCheckboxBox.displayName = \"CheckboxBox\";\n\nexport const CheckIcon = styled(Icon).attrs({ \"aria-hidden\": true })`\n position: absolute;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n opacity: 0;\n pointer-events: none;\n transition: all\n ${({ theme }) => `${theme.duration.fast} ${theme.easing.ease_inout}`};\n\n &,\n & .Icon-svg {\n width: 10px;\n height: 10px;\n line-height: 10px;\n }\n`;\nCheckIcon.displayName = \"CheckIcon\";\n\nexport const pillInputHoverStyles = css<Pick<TypeCheckboxProps, \"disabled\">>`\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: ${(props) => (props.disabled ? 0 : 1)};\n color: ${(props) => props.theme.colors.form.border.base};\n }\n`;\n\nexport const PillInput = styled.input`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n appearance: none;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n border-radius: 4px;\n\n /* IE 11 overrides */\n &::-ms-check {\n display: none;\n }\n\n &:focus {\n ${focusRing}\n }\n\n ${(props) =>\n !props.checked &&\n css`\n &:hover,\n &:focus {\n ${pillInputHoverStyles}\n }\n `}\n\n ${(props) =>\n props.checked &&\n css`\n ~ ${CheckboxBox} {\n border-color: ${props.theme.colors.form.border.selected};\n background-color: ${props.theme.colors.form.background.selected};\n }\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: 1;\n color: ${props.theme.colors.icon.inverse};\n }\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n ~ ${CheckboxBox} {\n opacity: 0.4;\n }\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: ${props.checked ? 1 : 0};\n }\n `}\n`;\nPillInput.displayName = \"PillInput\";\n\nexport const LabelText = styled(Text)<Pick<TypeCheckboxProps, \"disabled\">>`\n margin-left: ${(props) => props.theme.space[300]};\n font-size: ${(props) => props.theme.typography[200].fontSize};\n line-height: 1;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n color: ${(props) => props.theme.colors.text.headline};\n\n ${(props) =>\n props.disabled &&\n css`\n opacity: 0.4;\n `}\n`;\nLabelText.displayName = \"LabelText\";\n\nconst checkSVG = (color: string) => (\n <svg width=\"14\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.378 11.37L2 7.59l1.438-1.286L5.374 8.47l5.185-5.84L12 3.91l-6.622 7.46\"\n fill={color}\n />\n </svg>\n);\n\nconst indeterminateSVG = (color: string) => (\n <svg width=\"14\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"10\" height=\"2\" x=\"2\" y=\"6\" rx=\"1\" ry=\"1\" fill={color} />\n </svg>\n);\n\nconst getIcon = (type: \"indeterminate\" | \"check\", color: string) => {\n const escapedColor = encodeURIComponent(color);\n const icon =\n type === \"indeterminate\"\n ? indeterminateSVG(escapedColor)\n : checkSVG(escapedColor);\n return icon;\n};\n\nexport const checkboxContainerHoverStyles = css<\n Pick<TypeCheckboxProps, \"disabled\" | \"checked\">\n>`\n &:before {\n opacity: ${(props) => (props.disabled && !props.checked ? 0 : 1)};\n }\n`;\n/* stylelint-disable eslint-disable */\nexport const CheckboxContainer = styled.span<\n Pick<TypeCheckboxProps, \"indeterminate\" | \"checked\" | \"disabled\">\n>(\n (props) => css`\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n transition: all ${props.theme.duration.fast} ${props.theme.easing.ease_in};\n\n @supports (-webkit-appearance: none) {\n &:before {\n /* The following line cannot have multiple lint exclusions, otherwise it will not work\n the svg data url MUST be single quoted */\n /* prettier-ignore */\n content: url('data:image/svg+xml;utf8,${renderToStaticMarkup(\n getIcon(\n props.indeterminate ? \"indeterminate\" : \"check\",\n props.checked\n ? props.theme.colors.form.background.base\n : props.theme.colors.form.border.base\n )\n )}');\n opacity: ${props.checked ? 1 : 0};\n position: absolute;\n /* typography.300.fontSize matches space.400 (16px)\n this fixes an offset checkmark if there is another font size in the cascade */\n font-size: ${(props) => props.theme.typography[300].fontSize};\n width: ${props.theme.space[400]};\n height: ${props.theme.space[400]};\n text-align: center;\n transform: translateY(1px);\n line-height: 1;\n margin: auto;\n pointer-events: none;\n transition: ${props.theme.duration.fast}\n ${props.theme.easing.ease_inout};\n }\n\n &:hover:before {\n ${checkboxContainerHoverStyles}\n }\n\n ${props.disabled &&\n css`\n opacity: 0.4;\n `}\n\n input[type='checkbox'] {\n box-sizing: border-box;\n appearance: none;\n margin: 0;\n padding: 0;\n width: ${props.theme.space[400]};\n height: ${props.theme.space[400]};\n border: 1px solid ${props.theme.colors.form.border.base};\n border-radius: 4px;\n background-color: ${props.theme.colors.form.background.base};\n transition: all ${props.theme.duration.fast}\n ${props.theme.easing.ease_in};\n cursor: ${props.disabled ? \"not-allowed\" : \"pointer\"};\n flex-shrink: 0;\n\n &:not(:checked) {\n ${!props.indeterminate &&\n css`\n border-color: ${props.theme.colors.form.border\n .base} !important; /* We don't want the focus ring to remove the border */\n background-color: ${props.theme.colors.form.background.base};\n `}\n }\n\n &:checked {\n border-color: ${props.theme.colors.form.border.selected};\n background-color: ${props.theme.colors.form.background.selected};\n }\n\n ${props.indeterminate &&\n props.checked &&\n css`\n border-color: ${props.theme.colors.form.border.selected} !important;\n background-color: ${props.theme.colors.form.background\n .selected} !important;\n `}\n\n &:focus {\n ${focusRing}\n }\n }\n }\n\n ${COMMON}\n `\n);\n\nexport default Container;\n","import * as React from \"react\";\nimport type {\n TypeSystemCommonProps,\n TypeStyledComponentsCommonProps,\n} from \"@sproutsocial/seeds-react-system-props\";\nimport type { TypeTextProps } from \"@sproutsocial/seeds-react-text\";\n\nexport interface TypeCheckboxProps\n extends TypeStyledComponentsCommonProps,\n TypeSystemCommonProps,\n Omit<React.ComponentPropsWithoutRef<\"span\">, \"color\"> {\n /** ID of the form element, should match the \"for\" value of the associated label */\n id: string;\n value?: string;\n name?: string;\n\n /** Label text to display next to the checkbox */\n label?: string;\n\n /** Label used to describe the input (if not used with an accompanying visual label) */\n ariaLabel?: string;\n labelProps?: TypeTextProps;\n checked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n onChange: (event: React.SyntheticEvent<HTMLInputElement>) => void;\n appearance?: \"pill\" | \"default\";\n qa?: object;\n inputProps?: React.ComponentPropsWithoutRef<\"input\">;\n}\n"],"mappings":"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","names":["React","styled","Box","props","Icon","Text","import_jsx_runtime","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/Checkbox.tsx","../src/CheckboxHybrid.tsx","../src/CheckboxStyledComponents.tsx","../src/styles.tsx","../src/CheckboxTailwind.tsx","../src/types/CheckboxTypes.ts"],"sourcesContent":["import Checkbox from \"./Checkbox\";\n\nexport default Checkbox;\nexport { Checkbox };\nexport * from \"./types/CheckboxTypes\";\nexport * from \"./styles\";\n","import * as React from \"react\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\nimport CheckboxHybrid from \"./CheckboxHybrid\";\n\n/**\n * Checkbox component. Automatically routes between the Tailwind implementation\n * (preferred) and the styled-components implementation (for consumers using\n * system props or a styled() extension).\n */\nconst Checkbox = React.forwardRef<HTMLInputElement, TypeCheckboxProps>(\n (props, ref) => <CheckboxHybrid {...props} ref={ref} />\n);\n\nCheckbox.displayName = \"Checkbox\";\nexport default Checkbox;\n","/**\n * Hybrid Checkbox component.\n * Automatically chooses between the Tailwind/CSS implementation (preferred —\n * no styled-components runtime) and the styled-components implementation\n * (when styled-system props or a `styled(Checkbox)` extension are detected).\n */\n\nimport * as React from \"react\";\nimport { needsStyledComponents } from \"@sproutsocial/seeds-react-system-props\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\nimport CheckboxStyledComponents from \"./CheckboxStyledComponents\";\nimport { CheckboxTailwind } from \"./CheckboxTailwind\";\n\nconst CheckboxHybrid = React.forwardRef<HTMLInputElement, TypeCheckboxProps>(\n (props, ref) => {\n // Gate on `needsStyledComponents` (not just `hasStyledProps`) so that a bare\n // `styled(Checkbox)` extension — which injects `theme`/`forwardedComponent`\n // but no styled-system props — still renders the styled-components path and\n // keeps its SC styles. `needsStyledComponents` (via `isStyledExtension`)\n // already detects the injected `sc-...` className, so no extra class check is\n // needed here. This is an intentional deviation from ButtonHybrid, which\n // gates only on `hasStyledProps`.\n //\n // `appearance=\"pill\"` also routes here: the pill flow is unsupported on the\n // Tailwind path (removed per review), so it renders via the legacy\n // styled-components component, which still implements pill. This keeps the\n // public `appearance` type working with no silent default-box regression.\n if (props.appearance === \"pill\" || needsStyledComponents(props)) {\n // Forward the ref on the SC path too, restoring the pre-migration instance\n // ref (pre-migration `Checkbox` was the class, so `styled(Checkbox)` /\n // `<Checkbox ref={r}/>` resolved `r` to the class instance). Mirrors\n // ButtonHybrid forwarding `ref || innerRef` on both paths.\n return (\n <CheckboxStyledComponents\n {...props}\n ref={ref as unknown as React.Ref<CheckboxStyledComponents>}\n />\n );\n }\n\n // Use the Tailwind version (preferred - better performance)\n return <CheckboxTailwind {...props} ref={ref} />;\n }\n);\n\nCheckboxHybrid.displayName = \"Checkbox\";\nexport default CheckboxHybrid;\n","import * as React from \"react\";\nimport Container, {\n CheckboxBox,\n CheckIcon,\n PillInput,\n InputWrapper,\n LabelText,\n CheckboxContainer,\n} from \"./styles\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\n/**\n * Legacy styled-components implementation of Checkbox.\n *\n * This is a verbatim move of the original `Checkbox` class component. It is\n * rendered by `CheckboxHybrid` whenever styled-components features are detected\n * (styled-system props or a `styled(Checkbox)` extension), preserving 100%\n * backward compatibility. The Tailwind/CSS implementation lives in\n * `CheckboxTailwind`.\n */\nexport default class CheckboxStyledComponents extends React.Component<TypeCheckboxProps> {\n el: HTMLInputElement | null | undefined;\n static defaultProps = {\n indeterminate: false,\n disabled: false,\n };\n\n override componentDidUpdate(prevProps: TypeCheckboxProps) {\n if (prevProps.indeterminate !== !!this.props.indeterminate && this.el) {\n this.el.indeterminate = !!this.props.indeterminate;\n }\n }\n\n override componentDidMount() {\n if (this.el) {\n this.el.indeterminate = !!this.props.indeterminate;\n }\n }\n\n handleChange = (event: React.SyntheticEvent<HTMLInputElement>) => {\n this.props.onChange?.(event);\n };\n\n override render() {\n const {\n id,\n value,\n name,\n label,\n labelProps,\n checked,\n disabled,\n indeterminate,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange,\n ariaLabel,\n appearance = \"default\",\n qa = {},\n tabIndex,\n inputProps = {},\n ...rest\n } = this.props;\n const isPill = appearance === \"pill\";\n // @ts-notes - tabIndex requires a number but can be a string\n const tabIndexInt =\n typeof tabIndex === \"string\" ? parseInt(tabIndex, 10) : tabIndex;\n\n // TODO: Refactor pill checkboxes to use fewer elements for performance gains\n if (!isPill) {\n return (\n <CheckboxContainer\n as={label && \"label\"}\n disabled={disabled}\n indeterminate={indeterminate}\n checked={checked}\n {...rest}\n >\n <input\n type=\"checkbox\"\n id={id}\n aria-label={ariaLabel}\n value={value}\n name={name}\n checked={checked}\n ref={(el) => (this.el = el)}\n disabled={disabled}\n onChange={this.handleChange}\n data-qa-checkbox={id}\n data-qa-checkbox-ischecked={\n indeterminate ? \"indeterminate\" : checked === true\n }\n data-qa-checkbox-isdisabled={disabled === true}\n tabIndex={tabIndexInt}\n {...qa}\n {...inputProps}\n />\n {label && (\n <LabelText {...labelProps} disabled={disabled}>\n {label}\n </LabelText>\n )}\n </CheckboxContainer>\n );\n }\n\n return (\n <Container as={label && \"label\"} {...rest}>\n <InputWrapper appearance={appearance}>\n <PillInput\n type=\"checkbox\"\n id={id}\n aria-label={ariaLabel}\n value={value}\n name={name}\n checked={checked}\n ref={(el) => (this.el = el)}\n disabled={disabled}\n onChange={this.handleChange}\n data-qa-checkbox={id}\n data-qa-checkbox-ischecked={\n indeterminate ? \"indeterminate\" : checked === true\n }\n data-qa-checkbox-isdisabled={disabled === true}\n tabIndex={tabIndexInt}\n {...qa}\n {...inputProps}\n />\n <CheckboxBox>\n <CheckIcon\n name={indeterminate ? \"minus-solid\" : \"check-solid\"}\n size=\"mini\"\n fixedWidth\n />\n </CheckboxBox>\n </InputWrapper>\n </Container>\n );\n }\n}\n","import * as React from \"react\";\nimport { renderToStaticMarkup } from \"react-dom/server\";\nimport styled, { css } from \"styled-components\";\nimport { COMMON } from \"@sproutsocial/seeds-react-system-props\";\nimport { focusRing, pill } from \"@sproutsocial/seeds-react-mixins\";\nimport Box from \"@sproutsocial/seeds-react-box\";\nimport Icon from \"@sproutsocial/seeds-react-icon\";\nimport Text from \"@sproutsocial/seeds-react-text\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\nconst Container = styled.span`\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n\n ${COMMON}\n`;\nContainer.displayName = \"Checkbox\";\n\nexport const inputWrapperHoverStyles = css`\n background-color: ${(props) => props.theme.colors.app.background.base};\n`;\n\nexport const InputWrapper = styled(Box)<Pick<TypeCheckboxProps, \"appearance\">>`\n box-sizing: border-box;\n position: relative;\n width: ${(props) => props.theme.space[400]};\n height: ${(props) => props.theme.space[400]};\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n ${(props) =>\n props.appearance === \"pill\" &&\n css`\n background-color: transparent;\n transition: all ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_inout};\n /* This solution is temporary. DS-1095 */\n mix-blend-mode: ${props.theme.mode === \"dark\" ? \"screen\" : \"multiply\"};\n ${pill}\n\n &:hover {\n ${inputWrapperHoverStyles}\n }\n\n ${PillInput} {\n ${pill}\n }\n `}\n`;\nInputWrapper.displayName = \"InputWrapper\";\n\nexport const CheckboxBox = styled.div`\n box-sizing: border-box;\n position: relative;\n width: ${(props) => props.theme.space[400]};\n height: ${(props) => props.theme.space[400]};\n border: 1px solid ${(props) => props.theme.colors.form.border.base};\n border-radius: 4px;\n background-color: ${(props) => props.theme.colors.form.background.base};\n transition: border-color ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_in},\n background-color ${(props) => props.theme.duration.fast}\n ${(props) => props.theme.easing.ease_in};\n pointer-events: none;\n`;\nCheckboxBox.displayName = \"CheckboxBox\";\n\nexport const CheckIcon = styled(Icon).attrs({ \"aria-hidden\": true })`\n position: absolute;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n opacity: 0;\n pointer-events: none;\n transition: all\n ${({ theme }) => `${theme.duration.fast} ${theme.easing.ease_inout}`};\n\n &,\n & .Icon-svg {\n width: 10px;\n height: 10px;\n line-height: 10px;\n }\n`;\nCheckIcon.displayName = \"CheckIcon\";\n\nexport const pillInputHoverStyles = css<Pick<TypeCheckboxProps, \"disabled\">>`\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: ${(props) => (props.disabled ? 0 : 1)};\n color: ${(props) => props.theme.colors.form.border.base};\n }\n`;\n\nexport const PillInput = styled.input`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n appearance: none;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n border-radius: 4px;\n\n /* IE 11 overrides */\n &::-ms-check {\n display: none;\n }\n\n &:focus {\n ${focusRing}\n }\n\n ${(props) =>\n !props.checked &&\n css`\n &:hover,\n &:focus {\n ${pillInputHoverStyles}\n }\n `}\n\n ${(props) =>\n props.checked &&\n css`\n ~ ${CheckboxBox} {\n border-color: ${props.theme.colors.form.border.selected};\n background-color: ${props.theme.colors.form.background.selected};\n }\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: 1;\n color: ${props.theme.colors.icon.inverse};\n }\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n ~ ${CheckboxBox} {\n opacity: 0.4;\n }\n ~ ${CheckboxBox} ${CheckIcon} {\n opacity: ${props.checked ? 1 : 0};\n }\n `}\n`;\nPillInput.displayName = \"PillInput\";\n\nexport const LabelText = styled(Text)<Pick<TypeCheckboxProps, \"disabled\">>`\n margin-left: ${(props) => props.theme.space[300]};\n font-size: ${(props) => props.theme.typography[200].fontSize};\n line-height: 1;\n cursor: ${(props) => (props.disabled ? \"not-allowed\" : \"pointer\")};\n color: ${(props) => props.theme.colors.text.headline};\n\n ${(props) =>\n props.disabled &&\n css`\n opacity: 0.4;\n `}\n`;\nLabelText.displayName = \"LabelText\";\n\nconst checkSVG = (color: string) => (\n <svg width=\"14\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5.378 11.37L2 7.59l1.438-1.286L5.374 8.47l5.185-5.84L12 3.91l-6.622 7.46\"\n fill={color}\n />\n </svg>\n);\n\nconst indeterminateSVG = (color: string) => (\n <svg width=\"14\" height=\"14\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"10\" height=\"2\" x=\"2\" y=\"6\" rx=\"1\" ry=\"1\" fill={color} />\n </svg>\n);\n\nconst getIcon = (type: \"indeterminate\" | \"check\", color: string) => {\n const escapedColor = encodeURIComponent(color);\n const icon =\n type === \"indeterminate\"\n ? indeterminateSVG(escapedColor)\n : checkSVG(escapedColor);\n return icon;\n};\n\nexport const checkboxContainerHoverStyles = css<\n Pick<TypeCheckboxProps, \"disabled\" | \"checked\">\n>`\n &:before {\n opacity: ${(props) => (props.disabled && !props.checked ? 0 : 1)};\n }\n`;\n/* stylelint-disable eslint-disable */\nexport const CheckboxContainer = styled.span<\n Pick<TypeCheckboxProps, \"indeterminate\" | \"checked\" | \"disabled\">\n>(\n (props) => css`\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n position: relative;\n transition: all ${props.theme.duration.fast} ${props.theme.easing.ease_in};\n\n @supports (-webkit-appearance: none) {\n &:before {\n /* The following line cannot have multiple lint exclusions, otherwise it will not work\n the svg data url MUST be single quoted */\n /* prettier-ignore */\n content: url('data:image/svg+xml;utf8,${renderToStaticMarkup(\n getIcon(\n props.indeterminate ? \"indeterminate\" : \"check\",\n props.checked\n ? props.theme.colors.form.background.base\n : props.theme.colors.form.border.base\n )\n )}');\n opacity: ${props.checked ? 1 : 0};\n position: absolute;\n /* typography.300.fontSize matches space.400 (16px)\n this fixes an offset checkmark if there is another font size in the cascade */\n font-size: ${(props) => props.theme.typography[300].fontSize};\n width: ${props.theme.space[400]};\n height: ${props.theme.space[400]};\n text-align: center;\n transform: translateY(1px);\n line-height: 1;\n margin: auto;\n pointer-events: none;\n transition: ${props.theme.duration.fast}\n ${props.theme.easing.ease_inout};\n }\n\n &:hover:before {\n ${checkboxContainerHoverStyles}\n }\n\n ${props.disabled &&\n css`\n opacity: 0.4;\n `}\n\n input[type='checkbox'] {\n box-sizing: border-box;\n appearance: none;\n margin: 0;\n padding: 0;\n width: ${props.theme.space[400]};\n height: ${props.theme.space[400]};\n border: 1px solid ${props.theme.colors.form.border.base};\n border-radius: 4px;\n background-color: ${props.theme.colors.form.background.base};\n transition: all ${props.theme.duration.fast}\n ${props.theme.easing.ease_in};\n cursor: ${props.disabled ? \"not-allowed\" : \"pointer\"};\n flex-shrink: 0;\n\n &:not(:checked) {\n ${!props.indeterminate &&\n css`\n border-color: ${props.theme.colors.form.border\n .base} !important; /* We don't want the focus ring to remove the border */\n background-color: ${props.theme.colors.form.background.base};\n `}\n }\n\n &:checked {\n border-color: ${props.theme.colors.form.border.selected};\n background-color: ${props.theme.colors.form.background.selected};\n }\n\n ${props.indeterminate &&\n props.checked &&\n css`\n border-color: ${props.theme.colors.form.border.selected} !important;\n background-color: ${props.theme.colors.form.background\n .selected} !important;\n `}\n\n &:focus {\n ${focusRing}\n }\n }\n }\n\n ${COMMON}\n `\n);\n\nexport default Container;\n","/**\n * Tailwind/CSS implementation of the Checkbox component.\n * Uses the Seeds checkbox CSS classes from checkbox.css.\n *\n * Renders the default appearance only: a styled wrapper around `@base-ui/react`'s\n * Checkbox: `Checkbox.Root` renders a `<button role=\"checkbox\">` (the box) plus\n * a hidden `<input>` for form participation, and `Checkbox.Indicator` holds the\n * real `<Icon>` mark. base-ui owns `checked` / `indeterminate` / `disabled` as\n * first-class state props, so there is no imperative `indeterminate` sync and no\n * mask-image pseudo-element. The public API (`TypeCheckboxProps`) and every\n * `data-qa` attribute are preserved unchanged so consumers need no changes. The\n * pill appearance is unsupported on this path — `CheckboxHybrid` routes\n * `appearance=\"pill\"` to the legacy styled-components component.\n */\n\nimport * as React from \"react\";\nimport { Checkbox as BaseCheckbox } from \"@base-ui/react/checkbox\";\nimport Icon from \"@sproutsocial/seeds-react-icon\";\nimport type { TypeCheckboxProps } from \"./types/CheckboxTypes\";\n\n// Utility for merging class names properly\nfunction cn(\n ...inputs: (string | undefined | null | false | Record<string, boolean>)[]\n): string {\n const classes: string[] = [];\n\n for (const input of inputs) {\n if (!input) continue;\n\n if (typeof input === \"string\") {\n classes.push(input);\n } else if (typeof input === \"object\") {\n for (const [key, value] of Object.entries(input)) {\n if (value) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(\" \");\n}\n\nexport const CheckboxTailwind = React.forwardRef<\n HTMLInputElement,\n TypeCheckboxProps\n>((props, ref) => {\n const {\n id,\n value,\n name,\n label,\n labelProps,\n checked,\n disabled = false,\n indeterminate = false,\n onChange,\n ariaLabel,\n // Destructured only to strip it from `...rest` (so it is never spread onto\n // the wrapper DOM element). `appearance=\"pill\"` is routed to the legacy\n // styled-components component by `CheckboxHybrid`, so this path only ever\n // renders the default appearance.\n appearance,\n qa = {},\n tabIndex,\n inputProps = {},\n className,\n ...rest\n } = props;\n\n // @ts-notes - tabIndex requires a number but can be a string\n const tabIndexInt =\n typeof tabIndex === \"string\" ? parseInt(tabIndex, 10) : tabIndex;\n\n const Wrapper = (label ? \"label\" : \"span\") as React.ElementType;\n\n // Shared data-qa contract — identical names/values to the legacy\n // styled-components path. `data-qa-checkbox-ischecked` is the tri-state string\n // contract: \"indeterminate\" | true | false.\n const qaProps = {\n \"data-qa-checkbox\": id,\n \"data-qa-checkbox-ischecked\": indeterminate\n ? \"indeterminate\"\n : checked === true,\n \"data-qa-checkbox-isdisabled\": disabled === true,\n };\n\n // Gate `indeterminate` on `checked` so an unchecked-but-indeterminate box\n // renders empty (identical to a plain unchecked box) rather than showing the\n // dash. This matches the styled-components spec, where the mark's opacity is\n // `checked ? 1 : 0` regardless of `indeterminate` (styles.tsx:224). Truth\n // table: checked+indeterminate → dash, checked → check, anything unchecked →\n // empty. The raw `indeterminate` prop still drives `qaProps` so the\n // `data-qa-checkbox-ischecked=\"indeterminate\"` contract is unchanged.\n const effectiveIndeterminate = checked === true && indeterminate;\n // Bridge the public `onChange(SyntheticEvent)` API onto base-ui's\n // #FUTURE CLEANUP - Ideally we'd just lean into base-ui's API, but that is a large breaking change.\n // For now, this is some code I hate, but keeping it to transform base-ui's event into synthetic event\n const handleCheckedChange = (next: boolean, eventOrDetails: unknown) => {\n // No `onChange` → nothing to forward. The control stays fully controlled\n // via the `checked`/`indeterminate` props passed to `Checkbox.Root`, so a\n // click on a controlled box still snaps back to the prop.\n if (!onChange) return;\n\n const nativeEvent =\n eventOrDetails instanceof Event\n ? eventOrDetails\n : (eventOrDetails as { event?: Event } | null | undefined)?.event;\n\n // Prefer the real hidden <input> as the event target when base-ui fired\n // from it (its `.checked`/`.value` already satisfy the contract); otherwise\n // synthesize a native-input-shaped target from `next`.\n const nativeTarget = nativeEvent?.target as unknown as\n | HTMLInputElement\n | undefined;\n\n const target =\n nativeTarget && typeof nativeTarget.checked === \"boolean\"\n ? nativeTarget\n : {\n checked: next,\n value: value ?? \"\",\n name: name ?? \"\",\n id,\n type: \"checkbox\",\n };\n\n // Always deliver a SyntheticEvent shape with a real `.nativeEvent`, so the\n // `e.nativeEvent`-reading contract (e.g. shiftKey) is preserved on both the\n // hidden-input and synthesized paths.\n onChange({\n nativeEvent,\n target,\n currentTarget: target,\n type: nativeEvent?.type ?? \"change\",\n preventDefault: () => nativeEvent?.preventDefault?.(),\n stopPropagation: () => nativeEvent?.stopPropagation?.(),\n } as unknown as React.SyntheticEvent<HTMLInputElement>);\n };\n\n return (\n <Wrapper className={cn(\"seeds-checkbox\", className)} {...rest}>\n <BaseCheckbox.Root\n id={id}\n checked={checked}\n indeterminate={effectiveIndeterminate}\n disabled={disabled}\n onCheckedChange={handleCheckedChange}\n // Forwarded ref targets the hidden <input> so the HTMLInputElement\n // contract is preserved.\n inputRef={ref ?? undefined}\n className=\"seeds-checkbox-input\"\n aria-label={ariaLabel}\n tabIndex={tabIndexInt}\n // `name`/`value` feed base-ui's hidden form <input>. Spread (rather\n // than as explicit attributes) so they pass through regardless of\n // base-ui's exact prop typing.\n {...{ name, value }}\n {...qaProps}\n {...qa}\n // `inputProps` is typed for a native <input>; base-ui forwards unknown\n // props to the rendered <button>. Spread last so consumers can still\n // override computed attributes (e.g. aria-label).\n {...(inputProps as unknown as React.ComponentProps<\n typeof BaseCheckbox.Root\n >)}\n >\n {/* keepMounted so the mark is always in the DOM; CSS toggles its\n visibility from base-ui's aria-checked state (true | mixed). */}\n <BaseCheckbox.Indicator\n className=\"seeds-checkbox-indicator\"\n keepMounted\n >\n <Icon\n className=\"seeds-checkbox-icon\"\n name={effectiveIndeterminate ? \"minus-solid\" : \"check-solid\"}\n size=\"mini\"\n fixedWidth\n />\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n {label && (\n <span\n className=\"seeds-checkbox-label\"\n {...(labelProps as React.HTMLAttributes<HTMLSpanElement>)}\n >\n {label}\n </span>\n )}\n </Wrapper>\n );\n});\n\nCheckboxTailwind.displayName = \"CheckboxTailwind\";\n","import * as React from \"react\";\nimport type {\n TypeSystemCommonProps,\n TypeStyledComponentsCommonProps,\n} from \"@sproutsocial/seeds-react-system-props\";\nimport type { TypeTextProps } from \"@sproutsocial/seeds-react-text\";\n\nexport interface TypeCheckboxProps\n extends TypeStyledComponentsCommonProps,\n TypeSystemCommonProps,\n Omit<React.ComponentPropsWithoutRef<\"span\">, \"color\"> {\n /** ID of the form element, should match the \"for\" value of the associated label */\n id: string;\n value?: string;\n name?: string;\n\n /** Label text to display next to the checkbox */\n label?: string;\n\n /** Label used to describe the input (if not used with an accompanying visual label) */\n ariaLabel?: string;\n labelProps?: TypeTextProps;\n checked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n onChange?: (event: React.SyntheticEvent<HTMLInputElement>) => void;\n appearance?: \"pill\" | \"default\";\n qa?: object;\n inputProps?: React.ComponentPropsWithoutRef<\"input\">;\n}\n"],"mappings":"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","names":["React","React","import_seeds_react_system_props","React","styled","Box","props","Icon","Text","import_jsx_runtime","React","import_seeds_react_icon","import_jsx_runtime","BaseCheckbox","Icon","import_jsx_runtime","import_jsx_runtime","React"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sproutsocial/seeds-react-checkbox",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.56",
|
|
4
4
|
"description": "Seeds Checkbox",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -10,27 +10,41 @@
|
|
|
10
10
|
"files": [
|
|
11
11
|
"dist"
|
|
12
12
|
],
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"import": "./dist/esm/index.js",
|
|
16
|
+
"require": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts"
|
|
18
|
+
},
|
|
19
|
+
"./dist/checkbox.css": "./dist/checkbox.css"
|
|
20
|
+
},
|
|
13
21
|
"scripts": {
|
|
14
|
-
"build": "tsup --dts",
|
|
15
|
-
"build:debug": "tsup --dts --metafile",
|
|
22
|
+
"build": "tsup --dts && cp src/checkbox.css dist/checkbox.css",
|
|
23
|
+
"build:debug": "tsup --dts --metafile && cp src/checkbox.css dist/checkbox.css",
|
|
16
24
|
"dev": "tsup --watch --dts",
|
|
17
25
|
"clean": "rm -rf .turbo dist",
|
|
18
26
|
"clean:modules": "rm -rf node_modules",
|
|
19
|
-
"typecheck": "tsc --noEmit"
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"test": "jest",
|
|
29
|
+
"test:watch": "jest --watch --coverage=false"
|
|
20
30
|
},
|
|
21
31
|
"dependencies": {
|
|
22
|
-
"@
|
|
23
|
-
"@sproutsocial/seeds-react-
|
|
32
|
+
"@base-ui/react": "^1.3.0",
|
|
33
|
+
"@sproutsocial/seeds-react-box": "^1.1.33",
|
|
34
|
+
"@sproutsocial/seeds-react-icon": "^2.5.3",
|
|
24
35
|
"@sproutsocial/seeds-react-text": "^1.5.5",
|
|
25
|
-
"@sproutsocial/seeds-react-mixins": "^4.3.
|
|
26
|
-
"@sproutsocial/seeds-react-system-props": "^3.2.1"
|
|
36
|
+
"@sproutsocial/seeds-react-mixins": "^4.3.17",
|
|
37
|
+
"@sproutsocial/seeds-react-system-props": "^3.2.1",
|
|
38
|
+
"@sproutsocial/seeds-react-utilities": "^4.3.0"
|
|
27
39
|
},
|
|
28
40
|
"devDependencies": {
|
|
29
41
|
"@sproutsocial/eslint-config-seeds": "*",
|
|
30
42
|
"react-dom": "^18.0.0",
|
|
31
43
|
"typescript": "^5.6.2",
|
|
32
44
|
"tsup": "^8.3.4",
|
|
33
|
-
"@sproutsocial/seeds-tsconfig": "*"
|
|
45
|
+
"@sproutsocial/seeds-tsconfig": "*",
|
|
46
|
+
"@sproutsocial/seeds-testing": "*",
|
|
47
|
+
"@sproutsocial/seeds-react-testing-library": "*"
|
|
34
48
|
},
|
|
35
49
|
"peerDependencies": {
|
|
36
50
|
"react-dom": "^18.0.0",
|