@salt-ds/core 1.4.0 → 1.6.0
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-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js +1 -0
- package/dist-cjs/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -1
- package/dist-cjs/packages/core/src/avatar/Avatar.css.js +1 -1
- package/dist-cjs/packages/core/src/avatar/Avatar.js +11 -3
- package/dist-cjs/packages/core/src/avatar/Avatar.js.map +1 -1
- package/dist-cjs/packages/core/src/avatar/useAvatarImage.js +39 -0
- package/dist-cjs/packages/core/src/avatar/useAvatarImage.js.map +1 -0
- package/dist-cjs/packages/core/src/card/Card.css.js +1 -1
- package/dist-cjs/packages/core/src/card/Card.js +1 -1
- package/dist-cjs/packages/core/src/card/Card.js.map +1 -1
- package/dist-cjs/packages/core/src/card/InteractableCard.css.js +9 -0
- package/dist-cjs/packages/core/src/card/InteractableCard.css.js.map +1 -0
- package/dist-cjs/packages/core/src/card/InteractableCard.js +57 -0
- package/dist-cjs/packages/core/src/card/InteractableCard.js.map +1 -0
- package/dist-cjs/packages/core/src/card/useInteractableCard.js +63 -0
- package/dist-cjs/packages/core/src/card/useInteractableCard.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/Checkbox.css.js +9 -0
- package/dist-cjs/packages/core/src/checkbox/Checkbox.css.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/Checkbox.js +95 -0
- package/dist-cjs/packages/core/src/checkbox/Checkbox.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxGroup.css.js +9 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxGroup.css.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxGroup.js +62 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxGroup.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxIcon.css.js +9 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxIcon.css.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxIcon.js +48 -0
- package/dist-cjs/packages/core/src/checkbox/CheckboxIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxCheckedIcon.js +33 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxCheckedIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxCheckedIconHD.js +32 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxCheckedIconHD.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxIndeterminateIcon.js +37 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxIndeterminateIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxUncheckedIcon.js +26 -0
- package/dist-cjs/packages/core/src/checkbox/assets/CheckboxUncheckedIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/internal/CheckboxGroupContext.js +13 -0
- package/dist-cjs/packages/core/src/checkbox/internal/CheckboxGroupContext.js.map +1 -0
- package/dist-cjs/packages/core/src/checkbox/internal/useCheckboxGroup.js +13 -0
- package/dist-cjs/packages/core/src/checkbox/internal/useCheckboxGroup.js.map +1 -0
- package/dist-cjs/packages/core/src/flex-item/FlexItem.js +1 -1
- package/dist-cjs/packages/core/src/index.js +20 -0
- package/dist-cjs/packages/core/src/index.js.map +1 -1
- package/dist-cjs/packages/core/src/link/Link.css.js +1 -1
- package/dist-cjs/packages/core/src/link/Link.js +1 -1
- package/dist-cjs/packages/core/src/link/Link.js.map +1 -1
- package/dist-cjs/packages/core/src/panel/Panel.css.js +1 -1
- package/dist-cjs/packages/core/src/radio-button/RadioButton.css.js +9 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButton.css.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButton.js +86 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButton.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonGroup.css.js +9 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonGroup.css.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonGroup.js +61 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonGroup.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonIcon.css.js +9 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonIcon.css.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonIcon.js +48 -0
- package/dist-cjs/packages/core/src/radio-button/RadioButtonIcon.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/internal/RadioGroupContext.js +19 -0
- package/dist-cjs/packages/core/src/radio-button/internal/RadioGroupContext.js.map +1 -0
- package/dist-cjs/packages/core/src/radio-button/internal/useRadioGroup.js +13 -0
- package/dist-cjs/packages/core/src/radio-button/internal/useRadioGroup.js.map +1 -0
- package/dist-cjs/packages/core/src/spinner/svgSpinners/SpinnerSVG.js +1 -0
- package/dist-cjs/packages/core/src/spinner/svgSpinners/SpinnerSVG.js.map +1 -1
- package/dist-cjs/packages/core/src/text/Text.css.js +1 -1
- package/dist-cjs/packages/core/src/tooltip/Tooltip.css.js +1 -1
- package/dist-cjs/packages/core/src/tooltip/Tooltip.js +40 -24
- package/dist-cjs/packages/core/src/tooltip/Tooltip.js.map +1 -1
- package/dist-cjs/packages/core/src/tooltip/useAriaAnnounce.js +1 -0
- package/dist-cjs/packages/core/src/tooltip/useAriaAnnounce.js.map +1 -1
- package/dist-cjs/packages/core/src/tooltip/useTooltip.js +7 -4
- package/dist-cjs/packages/core/src/tooltip/useTooltip.js.map +1 -1
- package/dist-cjs/packages/core/src/utils/capitalize.js +10 -0
- package/dist-cjs/packages/core/src/utils/capitalize.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/mergeProps.js +25 -0
- package/dist-cjs/packages/core/src/utils/mergeProps.js.map +1 -0
- package/dist-cjs/packages/core/src/utils/useFloatingUI.js.map +1 -1
- package/dist-cjs/packages/core/src/viewport/ViewportProvider.js +1 -0
- package/dist-cjs/packages/core/src/viewport/ViewportProvider.js.map +1 -1
- package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js +1 -0
- package/dist-es/packages/core/src/aria-announcer/useAriaAnnouncer.js.map +1 -1
- package/dist-es/packages/core/src/avatar/Avatar.css.js +1 -1
- package/dist-es/packages/core/src/avatar/Avatar.js +11 -3
- package/dist-es/packages/core/src/avatar/Avatar.js.map +1 -1
- package/dist-es/packages/core/src/avatar/useAvatarImage.js +35 -0
- package/dist-es/packages/core/src/avatar/useAvatarImage.js.map +1 -0
- package/dist-es/packages/core/src/card/Card.css.js +1 -1
- package/dist-es/packages/core/src/card/Card.js +1 -1
- package/dist-es/packages/core/src/card/Card.js.map +1 -1
- package/dist-es/packages/core/src/card/InteractableCard.css.js +7 -0
- package/dist-es/packages/core/src/card/InteractableCard.css.js.map +1 -0
- package/dist-es/packages/core/src/card/InteractableCard.js +53 -0
- package/dist-es/packages/core/src/card/InteractableCard.js.map +1 -0
- package/dist-es/packages/core/src/card/useInteractableCard.js +59 -0
- package/dist-es/packages/core/src/card/useInteractableCard.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/Checkbox.css.js +7 -0
- package/dist-es/packages/core/src/checkbox/Checkbox.css.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/Checkbox.js +91 -0
- package/dist-es/packages/core/src/checkbox/Checkbox.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/CheckboxGroup.css.js +7 -0
- package/dist-es/packages/core/src/checkbox/CheckboxGroup.css.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/CheckboxGroup.js +58 -0
- package/dist-es/packages/core/src/checkbox/CheckboxGroup.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/CheckboxIcon.css.js +7 -0
- package/dist-es/packages/core/src/checkbox/CheckboxIcon.css.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/CheckboxIcon.js +44 -0
- package/dist-es/packages/core/src/checkbox/CheckboxIcon.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxCheckedIcon.js +29 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxCheckedIcon.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxCheckedIconHD.js +28 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxCheckedIconHD.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxIndeterminateIcon.js +33 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxIndeterminateIcon.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxUncheckedIcon.js +22 -0
- package/dist-es/packages/core/src/checkbox/assets/CheckboxUncheckedIcon.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/internal/CheckboxGroupContext.js +9 -0
- package/dist-es/packages/core/src/checkbox/internal/CheckboxGroupContext.js.map +1 -0
- package/dist-es/packages/core/src/checkbox/internal/useCheckboxGroup.js +9 -0
- package/dist-es/packages/core/src/checkbox/internal/useCheckboxGroup.js.map +1 -0
- package/dist-es/packages/core/src/flex-item/FlexItem.js +1 -1
- package/dist-es/packages/core/src/index.js +10 -0
- package/dist-es/packages/core/src/index.js.map +1 -1
- package/dist-es/packages/core/src/link/Link.css.js +1 -1
- package/dist-es/packages/core/src/link/Link.js +1 -1
- package/dist-es/packages/core/src/link/Link.js.map +1 -1
- package/dist-es/packages/core/src/panel/Panel.css.js +1 -1
- package/dist-es/packages/core/src/radio-button/RadioButton.css.js +7 -0
- package/dist-es/packages/core/src/radio-button/RadioButton.css.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButton.js +82 -0
- package/dist-es/packages/core/src/radio-button/RadioButton.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonGroup.css.js +7 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonGroup.css.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonGroup.js +57 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonGroup.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonIcon.css.js +7 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonIcon.css.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonIcon.js +44 -0
- package/dist-es/packages/core/src/radio-button/RadioButtonIcon.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/internal/RadioGroupContext.js +15 -0
- package/dist-es/packages/core/src/radio-button/internal/RadioGroupContext.js.map +1 -0
- package/dist-es/packages/core/src/radio-button/internal/useRadioGroup.js +9 -0
- package/dist-es/packages/core/src/radio-button/internal/useRadioGroup.js.map +1 -0
- package/dist-es/packages/core/src/spinner/svgSpinners/SpinnerSVG.js +1 -0
- package/dist-es/packages/core/src/spinner/svgSpinners/SpinnerSVG.js.map +1 -1
- package/dist-es/packages/core/src/text/Text.css.js +1 -1
- package/dist-es/packages/core/src/tooltip/Tooltip.css.js +1 -1
- package/dist-es/packages/core/src/tooltip/Tooltip.js +40 -24
- package/dist-es/packages/core/src/tooltip/Tooltip.js.map +1 -1
- package/dist-es/packages/core/src/tooltip/useAriaAnnounce.js +1 -0
- package/dist-es/packages/core/src/tooltip/useAriaAnnounce.js.map +1 -1
- package/dist-es/packages/core/src/tooltip/useTooltip.js +7 -4
- package/dist-es/packages/core/src/tooltip/useTooltip.js.map +1 -1
- package/dist-es/packages/core/src/utils/capitalize.js +6 -0
- package/dist-es/packages/core/src/utils/capitalize.js.map +1 -0
- package/dist-es/packages/core/src/utils/mergeProps.js +21 -0
- package/dist-es/packages/core/src/utils/mergeProps.js.map +1 -0
- package/dist-es/packages/core/src/utils/useFloatingUI.js.map +1 -1
- package/dist-es/packages/core/src/viewport/ViewportProvider.js +1 -0
- package/dist-es/packages/core/src/viewport/ViewportProvider.js.map +1 -1
- package/dist-types/avatar/index.d.ts +1 -0
- package/dist-types/avatar/useAvatarImage.d.ts +2 -0
- package/dist-types/card/Card.d.ts +4 -4
- package/dist-types/card/InteractableCard.d.ts +14 -0
- package/dist-types/card/index.d.ts +1 -0
- package/dist-types/card/useInteractableCard.d.ts +21 -0
- package/dist-types/checkbox/Checkbox.d.ts +56 -0
- package/dist-types/checkbox/CheckboxGroup.d.ts +30 -0
- package/dist-types/checkbox/CheckboxIcon.d.ts +10 -0
- package/dist-types/checkbox/assets/CheckboxCheckedIcon.d.ts +4 -0
- package/dist-types/checkbox/assets/CheckboxCheckedIconHD.d.ts +4 -0
- package/dist-types/checkbox/assets/CheckboxIndeterminateIcon.d.ts +4 -0
- package/dist-types/checkbox/assets/CheckboxUncheckedIcon.d.ts +4 -0
- package/dist-types/checkbox/assets/index.d.ts +4 -0
- package/dist-types/checkbox/index.d.ts +3 -0
- package/dist-types/checkbox/internal/CheckboxGroupContext.d.ts +9 -0
- package/dist-types/checkbox/internal/useCheckboxGroup.d.ts +2 -0
- package/dist-types/index.d.ts +2 -0
- package/dist-types/link/Link.d.ts +1 -1
- package/dist-types/radio-button/RadioButton.d.ts +45 -0
- package/dist-types/radio-button/RadioButtonGroup.d.ts +29 -0
- package/dist-types/radio-button/RadioButtonIcon.d.ts +11 -0
- package/dist-types/radio-button/index.d.ts +3 -0
- package/dist-types/radio-button/internal/RadioGroupContext.d.ts +7 -0
- package/dist-types/radio-button/internal/useRadioGroup.d.ts +1 -0
- package/dist-types/tooltip/Tooltip.d.ts +10 -10
- package/dist-types/tooltip/useTooltip.d.ts +23 -3
- package/dist-types/utils/capitalize.d.ts +1 -0
- package/dist-types/utils/index.d.ts +2 -0
- package/dist-types/utils/mergeProps.d.ts +12 -0
- package/dist-types/utils/useFloatingUI.d.ts +3 -3
- package/package.json +3 -3
- package/dist-cjs/packages/core/src/avatar/internal/useLoaded.js +0 -30
- package/dist-cjs/packages/core/src/avatar/internal/useLoaded.js.map +0 -1
- package/dist-es/packages/core/src/avatar/internal/useLoaded.js +0 -26
- package/dist-es/packages/core/src/avatar/internal/useLoaded.js.map +0 -1
- package/dist-types/avatar/internal/useLoaded.d.ts +0 -2
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { UserSolidIcon } from '@salt-ds/icons';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { forwardRef } from 'react';
|
|
5
|
-
import {
|
|
5
|
+
import { useAvatarImage } from './useAvatarImage.js';
|
|
6
6
|
import { makePrefixer } from '../utils/makePrefixer.js';
|
|
7
7
|
import '../utils/useFloatingUI.js';
|
|
8
8
|
import '../utils/useId.js';
|
|
@@ -21,7 +21,9 @@ const Avatar = forwardRef(function Avatar2({
|
|
|
21
21
|
src,
|
|
22
22
|
size = DEFAULT_AVATAR_SIZE,
|
|
23
23
|
style: styleProp,
|
|
24
|
-
fallbackIcon = /* @__PURE__ */ jsx(UserSolidIcon, {
|
|
24
|
+
fallbackIcon = /* @__PURE__ */ jsx(UserSolidIcon, {
|
|
25
|
+
"aria-label": "User Avatar"
|
|
26
|
+
}),
|
|
25
27
|
...rest
|
|
26
28
|
}, ref) {
|
|
27
29
|
let children;
|
|
@@ -29,7 +31,8 @@ const Avatar = forwardRef(function Avatar2({
|
|
|
29
31
|
...styleProp,
|
|
30
32
|
"--saltAvatar-size-multiplier": `${size}`
|
|
31
33
|
};
|
|
32
|
-
const
|
|
34
|
+
const status = useAvatarImage({ src });
|
|
35
|
+
const hasImgNotFailing = status === "loaded";
|
|
33
36
|
if (hasImgNotFailing) {
|
|
34
37
|
children = /* @__PURE__ */ jsx("img", {
|
|
35
38
|
alt: name,
|
|
@@ -39,6 +42,10 @@ const Avatar = forwardRef(function Avatar2({
|
|
|
39
42
|
children = childrenProp;
|
|
40
43
|
}
|
|
41
44
|
const avatarInitials = nameToInitials(name);
|
|
45
|
+
const initialsProps = avatarInitials ? {
|
|
46
|
+
role: "img",
|
|
47
|
+
"aria-label": name
|
|
48
|
+
} : {};
|
|
42
49
|
return /* @__PURE__ */ jsx("div", {
|
|
43
50
|
ref,
|
|
44
51
|
style,
|
|
@@ -47,6 +54,7 @@ const Avatar = forwardRef(function Avatar2({
|
|
|
47
54
|
{ [withBaseName("withImage")]: hasImgNotFailing },
|
|
48
55
|
className
|
|
49
56
|
),
|
|
57
|
+
...initialsProps,
|
|
50
58
|
...rest,
|
|
51
59
|
children: children || avatarInitials || fallbackIcon
|
|
52
60
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { UserSolidIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, HTMLAttributes, ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { UserSolidIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, HTMLAttributes, ReactNode } from \"react\";\nimport { useAvatarImage } from \"./useAvatarImage\";\nimport { makePrefixer } from \"../utils\";\n\nimport \"./Avatar.css\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`\n */\n fallbackIcon?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon = <UserSolidIcon aria-label=\"User Avatar\" />,\n ...rest\n },\n ref\n) {\n let children;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt={name} src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n const initialsProps = avatarInitials\n ? {\n role: \"img\",\n \"aria-label\": name,\n }\n : {};\n\n return (\n <div\n ref={ref}\n style={style}\n className={clsx(\n withBaseName(),\n { [withBaseName(\"withImage\")]: hasImgNotFailing },\n className\n )}\n {...initialsProps}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </div>\n );\n});\n"],"names":["Avatar"],"mappings":";;;;;;;;;;;;AAkCA,MAAM,YAAA,GAAe,aAAa,YAAY,CAAA,CAAA;AAC9C,MAAM,mBAAsB,GAAA,CAAA,CAAA;AAE5B,MAAM,qBAAwB,GAAA,CAAC,IAC7B,KAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CACI,MAAM,GACP,CAAA,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAA,CACT,IAAI,CAAC,CAAA,KAAM,CAAE,CAAA,CAAA,CAAA,CAAA,CACb,KAAK,EACL,CAAA,CAAA,WAAA,EAAA,CAAA;AAEQ,MAAA,MAAA,GAAS,UAAwC,CAAA,SAASA,OACrE,CAAA;AAAA,EACE,SAAA;AAAA,EACA,QAAU,EAAA,YAAA;AAAA,EACV,IAAA;AAAA,EACA,cAAiB,GAAA,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAO,GAAA,mBAAA;AAAA,EACP,KAAO,EAAA,SAAA;AAAA,EACP,+BAAgB,GAAA,CAAA,aAAA,EAAA;AAAA,IAAc,YAAW,EAAA,aAAA;AAAA,GAAc,CAAA;AAAA,EACpD,GAAA,IAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAI,IAAA,QAAA,CAAA;AAEJ,EAAA,MAAM,KAAQ,GAAA;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,gCAAgC,CAAG,EAAA,IAAA,CAAA,CAAA;AAAA,GACrC,CAAA;AAEA,EAAA,MAAM,MAAS,GAAA,cAAA,CAAe,EAAE,GAAA,EAAK,CAAA,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAW,KAAA,QAAA,CAAA;AACpC,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAA,QAAA,mBAAY,GAAA,CAAA,KAAA,EAAA;AAAA,MAAI,GAAK,EAAA,IAAA;AAAA,MAAM,GAAA;AAAA,KAAU,CAAA,CAAA;AAAA,GACvC,MAAA,IAAW,gBAAgB,IAAM,EAAA;AAC/B,IAAW,QAAA,GAAA,YAAA,CAAA;AAAA,GACb;AAEA,EAAM,MAAA,cAAA,GAAiB,eAAe,IAAI,CAAA,CAAA;AAE1C,EAAA,MAAM,gBAAgB,cAClB,GAAA;AAAA,IACE,IAAM,EAAA,KAAA;AAAA,IACN,YAAc,EAAA,IAAA;AAAA,MAEhB,EAAC,CAAA;AAEL,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,EAAE,CAAC,YAAa,CAAA,WAAW,IAAI,gBAAiB,EAAA;AAAA,MAChD,SAAA;AAAA,KACF;AAAA,IACC,GAAG,aAAA;AAAA,IACH,GAAG,IAAA;AAAA,IAEH,sBAAY,cAAkB,IAAA,YAAA;AAAA,GACjC,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
import '../utils/useFloatingUI.js';
|
|
3
|
+
import '../utils/useId.js';
|
|
4
|
+
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect.js';
|
|
5
|
+
import '../salt-provider/SaltProvider.js';
|
|
6
|
+
import '../viewport/ViewportProvider.js';
|
|
7
|
+
import 'clsx';
|
|
8
|
+
|
|
9
|
+
function useAvatarImage({ src }) {
|
|
10
|
+
const [status, setStatus] = useState("loading");
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
setStatus(src ? "loading" : "pending");
|
|
13
|
+
}, [src]);
|
|
14
|
+
useIsomorphicLayoutEffect(() => {
|
|
15
|
+
if (!src) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
let active = true;
|
|
19
|
+
const image = new Image();
|
|
20
|
+
image.src = src;
|
|
21
|
+
const onLoad = () => active && setStatus("loaded");
|
|
22
|
+
const onError = () => active && setStatus("error");
|
|
23
|
+
image.addEventListener("load", onLoad, { once: true });
|
|
24
|
+
image.addEventListener("error", onError, { once: true });
|
|
25
|
+
return () => {
|
|
26
|
+
image.removeEventListener("load", onLoad);
|
|
27
|
+
image.removeEventListener("load", onError);
|
|
28
|
+
active = false;
|
|
29
|
+
};
|
|
30
|
+
}, [src]);
|
|
31
|
+
return status;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { useAvatarImage };
|
|
35
|
+
//# sourceMappingURL=useAvatarImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAvatarImage.js","sources":["../src/avatar/useAvatarImage.ts"],"sourcesContent":["import { ImgHTMLAttributes, useEffect, useState } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nexport function useAvatarImage({ src }: ImgHTMLAttributes<HTMLImageElement>) {\n const [status, setStatus] = useState<\n \"pending\" | \"loading\" | \"loaded\" | \"error\"\n >(\"loading\");\n\n useEffect(() => {\n setStatus(src ? \"loading\" : \"pending\");\n }, [src]);\n\n useIsomorphicLayoutEffect(() => {\n if (!src) {\n return;\n }\n\n let active = true;\n const image = new Image();\n image.src = src;\n const onLoad = () => active && setStatus(\"loaded\");\n const onError = () => active && setStatus(\"error\");\n\n image.addEventListener(\"load\", onLoad, { once: true });\n image.addEventListener(\"error\", onError, { once: true });\n\n return () => {\n image.removeEventListener(\"load\", onLoad);\n image.removeEventListener(\"load\", onError);\n active = false;\n };\n }, [src]);\n\n return status;\n}\n"],"names":[],"mappings":";;;;;;;;AAGgB,SAAA,cAAA,CAAe,EAAE,GAAA,EAA4C,EAAA;AAC3E,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAE1B,SAAS,CAAA,CAAA;AAEX,EAAA,SAAA,CAAU,MAAM;AACd,IAAU,SAAA,CAAA,GAAA,GAAM,YAAY,SAAS,CAAA,CAAA;AAAA,GACvC,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AAER,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,GAAK,EAAA;AACR,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,MAAS,GAAA,IAAA,CAAA;AACb,IAAM,MAAA,KAAA,GAAQ,IAAI,KAAM,EAAA,CAAA;AACxB,IAAA,KAAA,CAAM,GAAM,GAAA,GAAA,CAAA;AACZ,IAAA,MAAM,MAAS,GAAA,MAAM,MAAU,IAAA,SAAA,CAAU,QAAQ,CAAA,CAAA;AACjD,IAAA,MAAM,OAAU,GAAA,MAAM,MAAU,IAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAEjD,IAAA,KAAA,CAAM,iBAAiB,MAAQ,EAAA,MAAA,EAAQ,EAAE,IAAA,EAAM,MAAM,CAAA,CAAA;AACrD,IAAA,KAAA,CAAM,iBAAiB,OAAS,EAAA,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA,CAAA;AAEvD,IAAA,OAAO,MAAM;AACX,MAAM,KAAA,CAAA,mBAAA,CAAoB,QAAQ,MAAM,CAAA,CAAA;AACxC,MAAM,KAAA,CAAA,mBAAA,CAAoB,QAAQ,OAAO,CAAA,CAAA;AACzC,MAAS,MAAA,GAAA,KAAA,CAAA;AAAA,KACX,CAAA;AAAA,GACF,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AAER,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Styles applied to the root element */\n.saltCard {\n
|
|
3
|
+
var css_248z = "/* Styles applied to the root element */\n.saltCard {\n background: var(--saltCard-background, var(--salt-container-primary-background));\n box-shadow: var(--saltCard-boxShadow, var(--salt-overlayable-shadow));\n color: var(--saltCard-color, var(--salt-text-primary-foreground));\n height: var(--saltCard-height, auto);\n min-height: var(--saltCard-minHeight, 100%);\n overflow: hidden;\n}\n\n/* Styles applied to Card content */\n.saltCard-content {\n height: 100%;\n padding: var(--saltCard-padding, var(--salt-size-container-spacing));\n}\n\n/*\n * **Deprecated:** The following styles are deprecated\n * Use Interactable Card component instead \n * for interactable styling \n */\n\n/* **Deprecated:** Styles applied if `interactable={true}` */\n.saltCard-interactable {\n display: block;\n transition: none;\n}\n\n/* **Deprecated:** Styles applied on hover if `interactable={true}` */\na:focus .saltCard-interactable,\n.saltCard-interactable:hover {\n box-shadow: var(--saltCard-boxShadow-hover, var(--salt-overlayable-shadow-hover));\n cursor: var(--saltCard-cursor-hover, var(--salt-selectable-cursor-hover));\n position: relative;\n}\n\n/* **Deprecated:** Styles applied on active state if `interactable={true}` */\n.saltCard-interactable:active {\n box-shadow: var(--saltCard-boxShadow-active, var(--salt-overlayable-shadow-hover));\n outline: var(--salt-focused-outline);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n/* **Deprecated:** Styles applied on hover if `interactable={true}` and `disabled={true}` */\na:focus .saltCard-interactable.saltCard-disabled,\n.saltCard-interactable.saltCard-disabled:hover,\n.saltCard-interactable.saltCard-disabled:active {\n box-shadow: var(--saltCard-boxShadow-disabled, var(--salt-overlayable-shadow));\n}\n\n/* **Deprecated:** Styles applied if `disabled={true}` */\n.saltCard-disabled,\n.saltCard-disabled.saltCard-interactable,\na:focus .saltCard-interactable.saltCard-disabled {\n color: var(--saltCard-color-disabled, var(--salt-text-primary-foreground-disabled));\n cursor: var(--saltCard-cursor-disabled, var(--salt-selectable-cursor-disabled));\n outline: none;\n}\n\n/* **Deprecated:** Styles applied to nested divs if `disabled={true}` */\n.saltCard-disabled div {\n pointer-events: none;\n}\n";
|
|
4
4
|
styleInject(css_248z);
|
|
5
5
|
|
|
6
6
|
export { css_248z as default };
|
|
@@ -10,7 +10,7 @@ import './Card.css.js';
|
|
|
10
10
|
|
|
11
11
|
const withBaseName = makePrefixer("saltCard");
|
|
12
12
|
const Card = forwardRef(function Card2(props, ref) {
|
|
13
|
-
const { className, disabled, interactable,
|
|
13
|
+
const { className, children, disabled, interactable, ...rest } = props;
|
|
14
14
|
return /* @__PURE__ */ jsx("div", {
|
|
15
15
|
className: clsx(
|
|
16
16
|
withBaseName(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","sources":["../src/card/Card.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport \"./Card.css\";\n\nconst withBaseName = makePrefixer(\"saltCard\");\
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../src/card/Card.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport \"./Card.css\";\n\nconst withBaseName = makePrefixer(\"saltCard\");\nexport interface CardProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * **Deprecated:** Use the InteractableCard component instead\n *\n * If `true`, the card will be disabled.\n */\n disabled?: boolean;\n /**\n * **Deprecated:** Use the InteractableCard component instead\n *\n * If `true`, interactive styles will be applied to `Card`. These styles give prominence to certain content\n * on the page.\n */\n interactable?: boolean;\n}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n props,\n ref\n) {\n const { className, children, disabled, interactable, ...rest } = props;\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n /* **Deprecated:** InteractableCard should be used instead for these features */\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"interactable\")]: interactable,\n },\n className\n )}\n ref={ref}\n {...rest}\n >\n <div className={withBaseName(\"content\")}>{children}</div>\n </div>\n );\n});\n"],"names":["Card"],"mappings":";;;;;;;;;;AAKA,MAAM,YAAA,GAAe,aAAa,UAAU,CAAA,CAAA;AAiBrC,MAAM,IAAO,GAAA,UAAA,CAAsC,SAASA,KAAAA,CACjE,OACA,GACA,EAAA;AACA,EAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAU,QAAU,EAAA,YAAA,EAAA,GAAiB,MAAS,GAAA,KAAA,CAAA;AACjE,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb;AAAA,QAEE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,OAClC;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,GAAA;AAAA,IACC,GAAG,IAAA;AAAA,IAEJ,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MAAI,QAAA;AAAA,KAAS,CAAA;AAAA,GACrD,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = "/* Styles applied to InteractableCard */\n.saltInteractableCard {\n border-width: var(--saltCard-borderWidth, var(--card-borderWidth));\n border-style: var(--saltCard-borderStyle, var(--salt-container-borderStyle));\n border-color: var(--saltCard-borderColor, var(--salt-accent-borderColor));\n border-radius: var(--saltCard-borderRadius, 0);\n display: block;\n transition: box-shadow var(--salt-duration-instant) cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* Styles applied to InteractableCard if `accentPlacement=\"bottom\"` (default) */\n.saltInteractableCard-accentBottom {\n --card-borderWidth: 0 0 var(--salt-size-accent) 0;\n}\n\n/* Styles applied to InteractableCard if `accentPlacement=\"left\"` */\n.saltInteractableCard-accentLeft {\n --card-borderWidth: 0 0 0 var(--salt-size-accent);\n}\n\n/* Styles applied to InteractableCard if `accentPlacement=\"top\"` */\n.saltInteractableCard-accentTop {\n --card-borderWidth: var(--salt-size-accent) 0 0 0;\n}\n\n/* Styles applied to InteractableCard if `accentPlacement=\"right\"` */\n.saltInteractableCard-accentRight {\n --card-borderWidth: 0 var(--salt-size-accent) 0 0;\n}\n\n/* Styles applied to InteractableCard on focus */\na:focus-visible .saltInteractableCard,\n.saltInteractableCard:focus-visible {\n cursor: var(--saltCard-interactable-cursor-focus, var(--salt-selectable-cursor-hover));\n box-shadow: var(--saltCard-interactable-shadow-focus, var(--salt-overlayable-shadow-hover));\n color: var(--saltCard-color-focus, var(--salt-text-primary-foreground));\n outline-color: var(--salt-focused-outlineColor);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-offset: var(--salt-focused-outlineOffset);\n}\n\n/* Styles applied on active state to InteractableCard */\n.saltInteractableCard:active {\n cursor: var(--saltCard-interactable-cursor-active, var(--salt-selectable-cursor-active));\n box-shadow: var(--saltCard-interactable-shadow-active, var(--salt-overlayable-shadow-hover));\n}\n\n/* Styles applied on hover state to InteractableCard */\n.saltInteractableCard:hover {\n cursor: var(--saltCard-interactable-cursor-hover, var(--salt-selectable-cursor-hover));\n box-shadow: var(--saltCard-interactable-shadow-hover, var(--salt-overlayable-shadow-hover));\n}\n\n/* Styles applied to InteractableCard if `disabled={true}` */\n.saltInteractableCard-disabled,\n.saltInteractableCard-disabled:focus,\n.saltInteractableCard-disabled:hover,\n.saltInteractableCard-disabled:active {\n border-color: var(--saltCard-borderColor-disabled, var(--salt-accent-borderColor-disabled));\n box-shadow: var(--saltCard-interactable-shadow, var(--salt-overlayable-shadow));\n background: var(--saltCard-background-disabled, var(--salt-container-primary-background-disabled));\n color: var(--saltCard-color-disabled, var(--salt-text-primary-foreground-disabled));\n cursor: var(--saltCard-interactable-cursor-disabled, var(--salt-selectable-cursor-disabled));\n outline: none;\n}\n\n/* Styles applied to nested divs in InteractableCard if `disabled={true}` */\n.saltInteractableCard-disabled div {\n pointer-events: none;\n}\n\n/* Class that can be used for anchor tags wrapping InteractableCard */\n.saltInteractableCard-link {\n color: var(--saltCard-link-color, var(--salt-text-primary-foreground));\n inset: var(--salt-focused-outlineInset);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n}\n";
|
|
4
|
+
styleInject(css_248z);
|
|
5
|
+
|
|
6
|
+
export { css_248z as default };
|
|
7
|
+
//# sourceMappingURL=InteractableCard.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractableCard.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { clsx } from 'clsx';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { Card } from './Card.js';
|
|
5
|
+
import { capitalize } from '../utils/capitalize.js';
|
|
6
|
+
import { makePrefixer } from '../utils/makePrefixer.js';
|
|
7
|
+
import '../utils/useFloatingUI.js';
|
|
8
|
+
import '../utils/useId.js';
|
|
9
|
+
import '../salt-provider/SaltProvider.js';
|
|
10
|
+
import '../viewport/ViewportProvider.js';
|
|
11
|
+
import { useInteractableCard } from './useInteractableCard.js';
|
|
12
|
+
import './InteractableCard.css.js';
|
|
13
|
+
|
|
14
|
+
const withBaseName = makePrefixer("saltInteractableCard");
|
|
15
|
+
const InteractableCard = forwardRef(function InteractableCard2(props, ref) {
|
|
16
|
+
const {
|
|
17
|
+
accentPlacement = "bottom",
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
disabled,
|
|
21
|
+
onBlur,
|
|
22
|
+
onClick,
|
|
23
|
+
onKeyUp,
|
|
24
|
+
onKeyDown,
|
|
25
|
+
...rest
|
|
26
|
+
} = props;
|
|
27
|
+
const { active, cardProps } = useInteractableCard({
|
|
28
|
+
disabled,
|
|
29
|
+
onKeyUp,
|
|
30
|
+
onKeyDown,
|
|
31
|
+
onBlur,
|
|
32
|
+
onClick
|
|
33
|
+
});
|
|
34
|
+
const { tabIndex, ...restCardProps } = cardProps;
|
|
35
|
+
return /* @__PURE__ */ jsx(Card, {
|
|
36
|
+
...restCardProps,
|
|
37
|
+
className: clsx(
|
|
38
|
+
withBaseName(),
|
|
39
|
+
withBaseName(`accent${capitalize(accentPlacement)}`),
|
|
40
|
+
{
|
|
41
|
+
[withBaseName("disabled")]: disabled,
|
|
42
|
+
[withBaseName("active")]: active
|
|
43
|
+
},
|
|
44
|
+
className
|
|
45
|
+
),
|
|
46
|
+
...rest,
|
|
47
|
+
ref,
|
|
48
|
+
children
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
export { InteractableCard };
|
|
53
|
+
//# sourceMappingURL=InteractableCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractableCard.js","sources":["../src/card/InteractableCard.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { forwardRef } from \"react\";\nimport { Card, CardProps } from \"./Card\";\nimport { capitalize, makePrefixer } from \"../utils\";\nimport { useInteractableCard } from \"./useInteractableCard\";\n\nimport \"./InteractableCard.css\";\n\nconst withBaseName = makePrefixer(\"saltInteractableCard\");\n\n// TODO: Remove omissions when Card props deprecated\nexport interface InteractableCardProps\n extends Omit<CardProps, \"disabled\" | \"interactable\"> {\n /**\n * Accent border position: defaults to \"bottom\"\n */\n accentPlacement?: \"bottom\" | \"top\" | \"left\" | \"right\";\n /**\n * If `true`, the card will be disabled.\n */\n disabled?: boolean;\n}\n\nexport const InteractableCard = forwardRef<\n HTMLDivElement,\n InteractableCardProps\n>(function InteractableCard(props, ref) {\n const {\n accentPlacement = \"bottom\",\n children,\n className,\n disabled,\n onBlur,\n onClick,\n onKeyUp,\n onKeyDown,\n ...rest\n } = props;\n\n const { active, cardProps } = useInteractableCard({\n disabled,\n onKeyUp,\n onKeyDown,\n onBlur,\n onClick,\n });\n // for now, we do not want to spread tab index here as users may be wrapping in a link\n const { tabIndex, ...restCardProps } = cardProps;\n\n return (\n <Card\n {...restCardProps}\n className={clsx(\n withBaseName(),\n withBaseName(`accent${capitalize(accentPlacement)}`),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"active\")]: active,\n },\n className\n )}\n {...rest}\n ref={ref}\n >\n {children}\n </Card>\n );\n});\n"],"names":["InteractableCard"],"mappings":";;;;;;;;;;;;;AAQA,MAAM,YAAA,GAAe,aAAa,sBAAsB,CAAA,CAAA;AAejD,MAAM,gBAAmB,GAAA,UAAA,CAG9B,SAASA,iBAAAA,CAAiB,OAAO,GAAK,EAAA;AACtC,EAAM,MAAA;AAAA,IACJ,eAAkB,GAAA,QAAA;AAAA,IAClB,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACG,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAU,EAAA,GAAI,mBAAoB,CAAA;AAAA,IAChD,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,QAAa,EAAA,GAAA,aAAA,EAAkB,GAAA,SAAA,CAAA;AAEvC,EAAA,uBACG,GAAA,CAAA,IAAA,EAAA;AAAA,IACE,GAAG,aAAA;AAAA,IACJ,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,YAAa,CAAA,CAAA,MAAA,EAAS,UAAW,CAAA,eAAe,CAAG,CAAA,CAAA,CAAA;AAAA,MACnD;AAAA,QACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAa,CAAA,QAAQ,CAAI,GAAA,MAAA;AAAA,OAC5B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACC,GAAG,IAAA;AAAA,IACJ,GAAA;AAAA,IAEC,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const useInteractableCard = ({
|
|
4
|
+
disabled,
|
|
5
|
+
onKeyUp,
|
|
6
|
+
onKeyDown,
|
|
7
|
+
onClick,
|
|
8
|
+
onBlur
|
|
9
|
+
}) => {
|
|
10
|
+
const [keyIsDown, setkeyIsDown] = useState("");
|
|
11
|
+
const [active, setActive] = useState(false);
|
|
12
|
+
const enter = "Enter";
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const t = setTimeout(() => {
|
|
15
|
+
if (keyIsDown !== enter) {
|
|
16
|
+
setActive(false);
|
|
17
|
+
}
|
|
18
|
+
}, 0);
|
|
19
|
+
return () => {
|
|
20
|
+
clearTimeout(t);
|
|
21
|
+
};
|
|
22
|
+
}, [active, keyIsDown]);
|
|
23
|
+
const handleKeyUp = (event) => {
|
|
24
|
+
setkeyIsDown("");
|
|
25
|
+
setActive(false);
|
|
26
|
+
onKeyUp == null ? void 0 : onKeyUp(event);
|
|
27
|
+
};
|
|
28
|
+
const handleClick = (event) => {
|
|
29
|
+
setActive(true);
|
|
30
|
+
onClick == null ? void 0 : onClick(event);
|
|
31
|
+
};
|
|
32
|
+
const handleBlur = (event) => {
|
|
33
|
+
setActive(false);
|
|
34
|
+
onBlur == null ? void 0 : onBlur(event);
|
|
35
|
+
};
|
|
36
|
+
const handleKeyDown = (event) => {
|
|
37
|
+
if (event.key === enter) {
|
|
38
|
+
setkeyIsDown(event.key);
|
|
39
|
+
setActive(true);
|
|
40
|
+
}
|
|
41
|
+
onKeyDown == null ? void 0 : onKeyDown(event);
|
|
42
|
+
};
|
|
43
|
+
const cardProps = {
|
|
44
|
+
"aria-disabled": disabled ? true : void 0,
|
|
45
|
+
disabled,
|
|
46
|
+
tabIndex: disabled ? -1 : 0,
|
|
47
|
+
onBlur: handleBlur,
|
|
48
|
+
onClick: !disabled ? handleClick : void 0,
|
|
49
|
+
onKeyDown: handleKeyDown,
|
|
50
|
+
onKeyUp: handleKeyUp
|
|
51
|
+
};
|
|
52
|
+
return {
|
|
53
|
+
active,
|
|
54
|
+
cardProps
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export { useInteractableCard };
|
|
59
|
+
//# sourceMappingURL=useInteractableCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInteractableCard.js","sources":["../src/card/useInteractableCard.ts"],"sourcesContent":["import {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface CardHookProps<T extends Element> {\n disabled?: boolean;\n onKeyUp?: (event: KeyboardEvent<T>) => void;\n onKeyDown?: (event: KeyboardEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onBlur?: (event: FocusEvent<T>) => void;\n}\n\nexport interface CardHookResult<T extends Element> {\n active: boolean;\n cardProps: {\n \"aria-disabled\"?: boolean;\n disabled?: boolean;\n tabIndex: number;\n onBlur: (event: FocusEvent<T>) => void;\n onClick?: (event: MouseEvent<T>) => void;\n onKeyDown: (event: KeyboardEvent<T>) => void;\n onKeyUp: (event: KeyboardEvent<T>) => void;\n };\n}\n\nexport const useInteractableCard = <T extends Element>({\n disabled,\n onKeyUp,\n onKeyDown,\n onClick,\n onBlur,\n}: CardHookProps<T>): CardHookResult<T> => {\n const [keyIsDown, setkeyIsDown] = useState(\"\");\n const [active, setActive] = useState(false);\n\n const enter = \"Enter\";\n\n useEffect(() => {\n const t = setTimeout(() => {\n // This key state check is to stop continual visual state change when using Enter Key, which the browser treats as both key and click events on a Button-like component\n // This key state check also fixes Firefox Button where Space key is pressed but button fails to be in active state\n if (keyIsDown !== enter) {\n setActive(false);\n }\n }, 0);\n\n return () => {\n clearTimeout(t);\n };\n }, [active, keyIsDown]);\n\n const handleKeyUp = (event: KeyboardEvent<T>) => {\n setkeyIsDown(\"\");\n setActive(false);\n onKeyUp?.(event);\n };\n\n const handleClick = (event: MouseEvent<T>) => {\n setActive(true);\n onClick?.(event);\n };\n\n const handleBlur = (event: FocusEvent<T>) => {\n setActive(false);\n onBlur?.(event);\n };\n\n const handleKeyDown = (event: KeyboardEvent<T>) => {\n if (event.key === enter) {\n setkeyIsDown(event.key);\n setActive(true);\n }\n\n onKeyDown?.(event);\n };\n\n const cardProps = {\n \"aria-disabled\": disabled ? true : undefined,\n disabled: disabled,\n tabIndex: disabled ? -1 : 0,\n onBlur: handleBlur,\n onClick: !disabled ? handleClick : undefined,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n };\n\n return {\n active,\n cardProps,\n };\n};\n"],"names":[],"mappings":";;AA6BO,MAAM,sBAAsB,CAAoB;AAAA,EACrD,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AACF,CAA2C,KAAA;AACzC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AAC7C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAE1C,EAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,CAAA,GAAI,WAAW,MAAM;AAGzB,MAAA,IAAI,cAAc,KAAO,EAAA;AACvB,QAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AAAA,OACjB;AAAA,OACC,CAAC,CAAA,CAAA;AAEJ,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,CAAC,CAAA,CAAA;AAAA,KAChB,CAAA;AAAA,GACC,EAAA,CAAC,MAAQ,EAAA,SAAS,CAAC,CAAA,CAAA;AAEtB,EAAM,MAAA,WAAA,GAAc,CAAC,KAA4B,KAAA;AAC/C,IAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACf,IAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACf,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAyB,KAAA;AAC5C,IAAA,SAAA,CAAU,IAAI,CAAA,CAAA;AACd,IAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACZ,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,KAAyB,KAAA;AAC3C,IAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACf,IAAS,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACX,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,CAAC,KAA4B,KAAA;AACjD,IAAI,IAAA,KAAA,CAAM,QAAQ,KAAO,EAAA;AACvB,MAAA,YAAA,CAAa,MAAM,GAAG,CAAA,CAAA;AACtB,MAAA,SAAA,CAAU,IAAI,CAAA,CAAA;AAAA,KAChB;AAEA,IAAY,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACd,CAAA;AAEA,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,eAAA,EAAiB,WAAW,IAAO,GAAA,KAAA,CAAA;AAAA,IACnC,QAAA;AAAA,IACA,QAAA,EAAU,WAAW,CAAK,CAAA,GAAA,CAAA;AAAA,IAC1B,MAAQ,EAAA,UAAA;AAAA,IACR,OAAA,EAAS,CAAC,QAAA,GAAW,WAAc,GAAA,KAAA,CAAA;AAAA,IACnC,SAAW,EAAA,aAAA;AAAA,IACX,OAAS,EAAA,WAAA;AAAA,GACX,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,SAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = "/* Styles applied to root component */\n\n.saltCheckbox {\n cursor: var(--salt-selectable-cursor-hover);\n background: var(--saltCheckbox-background, none);\n display: flex;\n gap: var(--saltCheckbox-gap, var(--salt-size-adornmentGap));\n position: relative;\n width: fit-content;\n}\n\n/* Styles applied to root component if `disabled={true}` */\n.saltCheckbox-disabled {\n pointer-events: visible;\n color: var(--salt-text-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* Styles applied to the icon component if focused */\n.saltCheckbox-input:focus-visible + .saltCheckboxIcon {\n outline-offset: var(--salt-focused-outlineOffset);\n outline: var(--salt-focused-outline);\n}\n\n/* Styles applied to input element */\n.saltCheckbox-input {\n cursor: inherit;\n left: 0;\n margin: 0;\n opacity: 0;\n padding: 0;\n position: absolute;\n top: 0;\n z-index: var(--salt-zIndex-default);\n}\n";
|
|
4
|
+
styleInject(css_248z);
|
|
5
|
+
|
|
6
|
+
export { css_248z as default };
|
|
7
|
+
//# sourceMappingURL=Checkbox.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { clsx } from 'clsx';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { makePrefixer } from '../utils/makePrefixer.js';
|
|
5
|
+
import { useControlled } from '../utils/useControlled.js';
|
|
6
|
+
import '../utils/useFloatingUI.js';
|
|
7
|
+
import '../utils/useId.js';
|
|
8
|
+
import '../salt-provider/SaltProvider.js';
|
|
9
|
+
import '../viewport/ViewportProvider.js';
|
|
10
|
+
import { CheckboxIcon } from './CheckboxIcon.js';
|
|
11
|
+
import './Checkbox.css.js';
|
|
12
|
+
import { useCheckboxGroup } from './internal/useCheckboxGroup.js';
|
|
13
|
+
|
|
14
|
+
const withBaseName = makePrefixer("saltCheckbox");
|
|
15
|
+
const Checkbox = forwardRef(
|
|
16
|
+
function Checkbox2({
|
|
17
|
+
checked: checkedProp,
|
|
18
|
+
className,
|
|
19
|
+
defaultChecked,
|
|
20
|
+
disabled,
|
|
21
|
+
error,
|
|
22
|
+
indeterminate,
|
|
23
|
+
inputProps,
|
|
24
|
+
label,
|
|
25
|
+
name,
|
|
26
|
+
onBlur,
|
|
27
|
+
onChange,
|
|
28
|
+
onFocus,
|
|
29
|
+
value,
|
|
30
|
+
...rest
|
|
31
|
+
}, ref) {
|
|
32
|
+
var _a;
|
|
33
|
+
const checkboxGroup = useCheckboxGroup();
|
|
34
|
+
const handleChange = (event) => {
|
|
35
|
+
var _a2;
|
|
36
|
+
if (event.nativeEvent.defaultPrevented) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const value2 = event.target.checked;
|
|
40
|
+
setChecked(value2);
|
|
41
|
+
onChange == null ? void 0 : onChange(event);
|
|
42
|
+
(_a2 = checkboxGroup.onChange) == null ? void 0 : _a2.call(checkboxGroup, event);
|
|
43
|
+
};
|
|
44
|
+
const checkboxGroupChecked = checkedProp == null && value != null ? (_a = checkboxGroup.checkedValues) == null ? void 0 : _a.includes(value) : checkedProp;
|
|
45
|
+
const [checked, setChecked] = useControlled({
|
|
46
|
+
controlled: checkboxGroupChecked,
|
|
47
|
+
default: Boolean(defaultChecked),
|
|
48
|
+
name: "Checkbox",
|
|
49
|
+
state: "checked"
|
|
50
|
+
});
|
|
51
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
52
|
+
className: clsx(
|
|
53
|
+
withBaseName(),
|
|
54
|
+
{
|
|
55
|
+
[withBaseName("disabled")]: disabled,
|
|
56
|
+
[withBaseName("error")]: error
|
|
57
|
+
},
|
|
58
|
+
className
|
|
59
|
+
),
|
|
60
|
+
ref,
|
|
61
|
+
...rest,
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ jsx("input", {
|
|
64
|
+
"aria-checked": indeterminate ? "mixed" : void 0,
|
|
65
|
+
name,
|
|
66
|
+
value,
|
|
67
|
+
...inputProps,
|
|
68
|
+
checked,
|
|
69
|
+
className: withBaseName("input"),
|
|
70
|
+
"data-indeterminate": indeterminate,
|
|
71
|
+
defaultChecked,
|
|
72
|
+
disabled,
|
|
73
|
+
onBlur,
|
|
74
|
+
onChange: handleChange,
|
|
75
|
+
onFocus,
|
|
76
|
+
type: "checkbox"
|
|
77
|
+
}),
|
|
78
|
+
/* @__PURE__ */ jsx(CheckboxIcon, {
|
|
79
|
+
checked,
|
|
80
|
+
disabled,
|
|
81
|
+
error,
|
|
82
|
+
indeterminate
|
|
83
|
+
}),
|
|
84
|
+
label
|
|
85
|
+
]
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
export { Checkbox };
|
|
91
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../src/checkbox/Checkbox.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n FocusEventHandler,\n forwardRef,\n InputHTMLAttributes,\n ReactNode,\n} from \"react\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CheckboxIcon } from \"./CheckboxIcon\";\n\nimport \"./Checkbox.css\";\nimport { useCheckboxGroup } from \"./internal/useCheckboxGroup\";\n\nconst withBaseName = makePrefixer(\"saltCheckbox\");\n\nexport interface CheckboxProps\n extends Omit<\n InputHTMLAttributes<HTMLLabelElement>,\n \"onChange\" | \"onBlur\" | \"onFocus\"\n > {\n /**\n * If `true`, the checkbox will be checked.\n */\n checked?: boolean;\n /**\n * Whether the checkbox component is checked by default\n * This will be disregarded if checked is already set.\n */\n defaultChecked?: boolean;\n /**\n * If `true`, the checkbox will be disabled.\n */\n disabled?: boolean;\n /**\n * If `true`, the checkbox will be in the error state.\n */\n error?: boolean;\n /**\n * If true, the checkbox appears indeterminate. This does not set the native\n * input element to indeterminate due to the inconsistent behaviour across browsers\n * However, a data-indeterminate attribute is set on the input.\n */\n indeterminate?: boolean;\n /**\n * Properties applied to the input element.\n */\n inputProps?: Partial<InputHTMLAttributes<HTMLInputElement>>;\n /**\n * The label to be shown next to the checkbox.\n */\n label?: ReactNode;\n /**\n * The name applied to the input.\n */\n name?: string;\n /**\n * Callback when checkbox loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback when checked state is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Callback when checkbox gains focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * The value of the checkbox.\n */\n value?: string;\n}\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>(\n function Checkbox(\n {\n checked: checkedProp,\n className,\n defaultChecked,\n disabled,\n error,\n indeterminate,\n inputProps,\n label,\n name,\n onBlur,\n onChange,\n onFocus,\n value,\n ...rest\n },\n ref\n ) {\n const checkboxGroup = useCheckboxGroup();\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n\n const value = event.target.checked;\n setChecked(value);\n onChange?.(event);\n checkboxGroup.onChange?.(event);\n };\n\n const checkboxGroupChecked =\n checkedProp == null && value != null\n ? checkboxGroup.checkedValues?.includes(value)\n : checkedProp;\n\n const [checked, setChecked] = useControlled({\n controlled: checkboxGroupChecked,\n default: Boolean(defaultChecked),\n name: \"Checkbox\",\n state: \"checked\",\n });\n\n return (\n <label\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"error\")]: error,\n },\n className\n )}\n ref={ref}\n {...rest}\n >\n <input\n // aria-checked only needed when indeterminate since native indeterminate behaviour is not used\n aria-checked={indeterminate ? \"mixed\" : undefined}\n name={name}\n value={value}\n {...inputProps}\n checked={checked}\n className={withBaseName(\"input\")}\n data-indeterminate={indeterminate}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n type=\"checkbox\"\n />\n <CheckboxIcon\n checked={checked}\n disabled={disabled}\n error={error}\n indeterminate={indeterminate}\n />\n {label}\n </label>\n );\n }\n);\n"],"names":["Checkbox","_a","value"],"mappings":";;;;;;;;;;;;;AAcA,MAAM,YAAA,GAAe,aAAa,cAAc,CAAA,CAAA;AA4DzC,MAAM,QAAW,GAAA,UAAA;AAAA,EACtB,SAASA,SACP,CAAA;AAAA,IACE,OAAS,EAAA,WAAA;AAAA,IACT,SAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACG,GAAA,IAAA;AAAA,KAEL,GACA,EAAA;AA7FJ,IAAA,IAAA,EAAA,CAAA;AA8FI,IAAA,MAAM,gBAAgB,gBAAiB,EAAA,CAAA;AAEvC,IAAM,MAAA,YAAA,GAAqD,CAAC,KAAU,KAAA;AAhG1E,MAAAC,IAAAA,GAAAA,CAAAA;AAkGM,MAAI,IAAA,KAAA,CAAM,YAAY,gBAAkB,EAAA;AACtC,QAAA,OAAA;AAAA,OACF;AAEA,MAAMC,MAAAA,MAAAA,GAAQ,MAAM,MAAO,CAAA,OAAA,CAAA;AAC3B,MAAA,UAAA,CAAWA,MAAK,CAAA,CAAA;AAChB,MAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AACX,MAAA,CAAAD,GAAA,GAAA,aAAA,CAAc,QAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAA,IAAyB,CAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAAA,KAC3B,CAAA;AAEA,IAAM,MAAA,oBAAA,GACJ,eAAe,IAAQ,IAAA,KAAA,IAAS,QAC5B,EAAc,GAAA,aAAA,CAAA,aAAA,KAAd,IAA6B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAS,KACtC,CAAA,GAAA,WAAA,CAAA;AAEN,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,aAAc,CAAA;AAAA,MAC1C,UAAY,EAAA,oBAAA;AAAA,MACZ,OAAA,EAAS,QAAQ,cAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,UAAA;AAAA,MACN,KAAO,EAAA,SAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,uBACG,IAAA,CAAA,OAAA,EAAA;AAAA,MACC,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,SAC3B;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACA,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,OAAA,EAAA;AAAA,UAEC,cAAA,EAAc,gBAAgB,OAAU,GAAA,KAAA,CAAA;AAAA,UACxC,IAAA;AAAA,UACA,KAAA;AAAA,UACC,GAAG,UAAA;AAAA,UACJ,OAAA;AAAA,UACA,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,UAC/B,oBAAoB,EAAA,aAAA;AAAA,UACpB,cAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAU,EAAA,YAAA;AAAA,UACV,OAAA;AAAA,UACA,IAAK,EAAA,UAAA;AAAA,SACP,CAAA;AAAA,wBACC,GAAA,CAAA,YAAA,EAAA;AAAA,UACC,OAAA;AAAA,UACA,QAAA;AAAA,UACA,KAAA;AAAA,UACA,aAAA;AAAA,SACF,CAAA;AAAA,QACC,KAAA;AAAA,OAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = "/* Styles applied to root component */\n.saltCheckboxGroup {\n border: none;\n margin: 0;\n padding: 0;\n}\n\n/* Styles applied to root component if `direction={\"horizontal\"}` */\n.saltCheckboxGroup-horizontal {\n display: flex;\n gap: var(--salt-size-adornmentGap);\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n/* Styles applied to root component if `direction={\"vertical\"}` */\n.saltCheckboxGroup-vertical {\n display: flex;\n gap: var(--salt-size-unit);\n flex-direction: column;\n}\n\n.saltCheckboxGroup-noWrap {\n flex-wrap: nowrap;\n}\n\n.saltCheckboxGroup-noWrap .saltCheckbox {\n white-space: break-spaces;\n}\n";
|
|
4
|
+
styleInject(css_248z);
|
|
5
|
+
|
|
6
|
+
export { css_248z as default };
|
|
7
|
+
//# sourceMappingURL=CheckboxGroup.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { clsx } from 'clsx';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { makePrefixer } from '../utils/makePrefixer.js';
|
|
5
|
+
import { useControlled } from '../utils/useControlled.js';
|
|
6
|
+
import '../utils/useFloatingUI.js';
|
|
7
|
+
import '../utils/useId.js';
|
|
8
|
+
import '../salt-provider/SaltProvider.js';
|
|
9
|
+
import '../viewport/ViewportProvider.js';
|
|
10
|
+
import { CheckboxGroupContext } from './internal/CheckboxGroupContext.js';
|
|
11
|
+
import './CheckboxGroup.css.js';
|
|
12
|
+
|
|
13
|
+
const withBaseName = makePrefixer("saltCheckboxGroup");
|
|
14
|
+
const CheckboxGroup = forwardRef(function CheckboxGroup2({
|
|
15
|
+
checkedValues: checkedValuesProp,
|
|
16
|
+
defaultCheckedValues = [],
|
|
17
|
+
children,
|
|
18
|
+
className,
|
|
19
|
+
direction = "vertical",
|
|
20
|
+
name,
|
|
21
|
+
onChange,
|
|
22
|
+
wrap,
|
|
23
|
+
...other
|
|
24
|
+
}, ref) {
|
|
25
|
+
const [checkedValues, setCheckedValues] = useControlled({
|
|
26
|
+
controlled: checkedValuesProp,
|
|
27
|
+
default: defaultCheckedValues,
|
|
28
|
+
name: "CheckboxGroup",
|
|
29
|
+
state: "checkedValues"
|
|
30
|
+
});
|
|
31
|
+
const handleChange = (event) => {
|
|
32
|
+
setCheckedValues((oldValues = []) => {
|
|
33
|
+
const name2 = event.target.value;
|
|
34
|
+
const isSelected = oldValues.includes(name2);
|
|
35
|
+
return isSelected ? oldValues.filter((value) => value !== name2) : oldValues.concat(name2);
|
|
36
|
+
});
|
|
37
|
+
onChange == null ? void 0 : onChange(event);
|
|
38
|
+
};
|
|
39
|
+
return /* @__PURE__ */ jsx("fieldset", {
|
|
40
|
+
className: clsx(
|
|
41
|
+
withBaseName(),
|
|
42
|
+
withBaseName(direction),
|
|
43
|
+
{
|
|
44
|
+
[withBaseName("noWrap")]: !wrap
|
|
45
|
+
},
|
|
46
|
+
className
|
|
47
|
+
),
|
|
48
|
+
ref,
|
|
49
|
+
...other,
|
|
50
|
+
children: /* @__PURE__ */ jsx(CheckboxGroupContext.Provider, {
|
|
51
|
+
value: { name, onChange: handleChange, checkedValues },
|
|
52
|
+
children
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
export { CheckboxGroup };
|
|
58
|
+
//# sourceMappingURL=CheckboxGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.js","sources":["../src/checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEvent,\n ChangeEventHandler,\n ComponentPropsWithoutRef,\n forwardRef,\n} from \"react\";\nimport { makePrefixer, useControlled } from \"../utils\";\nimport { CheckboxGroupContext } from \"./internal/CheckboxGroupContext\";\n\nimport \"./CheckboxGroup.css\";\n\nexport interface CheckboxGroupProps\n extends Omit<ComponentPropsWithoutRef<\"fieldset\">, \"onChange\"> {\n /**\n * The current checked options.\n */\n checkedValues?: string[];\n /**\n * The default selected options for un-controlled component.\n */\n defaultCheckedValues?: string[];\n /**\n * Display group of elements in a compact row.\n */\n direction?: \"horizontal\" | \"vertical\";\n /**\n * The name used to reference the value of the control.\n */\n name?: string;\n /**\n * Callback fired when a checkbox is clicked.\n * `event.target.value` returns the value of the checkbox that was clicked.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Only for horizontal direction. When `true` the text in radio button label will wrap to fit within the container. Otherwise, the checkboxes will wrap onto the next line.\n */\n wrap?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltCheckboxGroup\");\n\nexport const CheckboxGroup = forwardRef<\n HTMLFieldSetElement,\n CheckboxGroupProps\n>(function CheckboxGroup(\n {\n checkedValues: checkedValuesProp,\n defaultCheckedValues = [],\n children,\n className,\n direction = \"vertical\",\n name,\n onChange,\n wrap,\n ...other\n },\n ref\n) {\n const [checkedValues, setCheckedValues] = useControlled({\n controlled: checkedValuesProp,\n default: defaultCheckedValues,\n name: \"CheckboxGroup\",\n state: \"checkedValues\",\n });\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setCheckedValues((oldValues: string[] = []) => {\n const name = event.target.value;\n const isSelected = oldValues.includes(name);\n\n return isSelected\n ? oldValues.filter((value) => value !== name)\n : oldValues.concat(name);\n });\n\n onChange?.(event);\n };\n\n return (\n <fieldset\n className={clsx(\n withBaseName(),\n withBaseName(direction),\n {\n [withBaseName(\"noWrap\")]: !wrap,\n },\n className\n )}\n ref={ref}\n {...other}\n >\n <CheckboxGroupContext.Provider\n value={{ name, onChange: handleChange, checkedValues }}\n >\n {children}\n </CheckboxGroupContext.Provider>\n </fieldset>\n );\n});\n"],"names":["CheckboxGroup","name"],"mappings":";;;;;;;;;;;;AAyCA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA,CAAA;AAExC,MAAA,aAAA,GAAgB,UAG3B,CAAA,SAASA,cACT,CAAA;AAAA,EACE,aAAe,EAAA,iBAAA;AAAA,EACf,uBAAuB,EAAC;AAAA,EACxB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAY,GAAA,UAAA;AAAA,EACZ,IAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACG,GAAA,KAAA;AACL,CAAA,EACA,GACA,EAAA;AACA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,aAAc,CAAA;AAAA,IACtD,UAAY,EAAA,iBAAA;AAAA,IACZ,OAAS,EAAA,oBAAA;AAAA,IACT,IAAM,EAAA,eAAA;AAAA,IACN,KAAO,EAAA,eAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,CAAC,KAAyC,KAAA;AAC7D,IAAiB,gBAAA,CAAA,CAAC,SAAsB,GAAA,EAAO,KAAA;AAC7C,MAAMC,MAAAA,KAAAA,GAAO,MAAM,MAAO,CAAA,KAAA,CAAA;AAC1B,MAAM,MAAA,UAAA,GAAa,SAAU,CAAA,QAAA,CAASA,KAAI,CAAA,CAAA;AAE1C,MAAO,OAAA,UAAA,GACH,SAAU,CAAA,MAAA,CAAO,CAAC,KAAA,KAAU,UAAUA,KAAI,CAAA,GAC1C,SAAU,CAAA,MAAA,CAAOA,KAAI,CAAA,CAAA;AAAA,KAC1B,CAAA,CAAA;AAED,IAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,GACb,CAAA;AAEA,EAAA,uBACG,GAAA,CAAA,UAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,aAAa,SAAS,CAAA;AAAA,MACtB;AAAA,QACE,CAAC,YAAA,CAAa,QAAQ,CAAA,GAAI,CAAC,IAAA;AAAA,OAC7B;AAAA,MACA,SAAA;AAAA,KACF;AAAA,IACA,GAAA;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA,GAAA,CAAC,qBAAqB,QAArB,EAAA;AAAA,MACC,KAAO,EAAA,EAAE,IAAM,EAAA,QAAA,EAAU,cAAc,aAAc,EAAA;AAAA,MAEpD,QAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import styleInject from '../../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = "/* Styles applied to root component */\n\n.saltCheckboxIcon {\n --checkbox-density-bar-y: 6px;\n --checkbox-density-bar-height: 2px;\n\n --checkbox-borderWidth: var(--salt-size-border);\n --checkbox-size: var(--salt-size-selectable);\n --checkbox-box-offset: calc(var(--checkbox-borderWidth) / 2);\n /* 14px is used to match the svg's viewbox */\n --checkbox-box-size: calc(100% - var(--checkbox-borderWidth));\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-tick-color, var(--salt-selectable-primary-foreground-selected));\n\n fill: var(--saltCheckbox-icon-fill, var(--salt-selectable-background));\n height: var(--saltCheckbox-icon-size, var(--checkbox-size));\n min-height: var(--saltCheckbox-icon-size, var(--checkbox-size));\n stroke: var(--saltCheckbox-icon-stroke, var(--salt-selectable-foreground));\n stroke-width: var(--saltCheckbox-icon-strokeWidth, var(--checkbox-borderWidth));\n width: var(--saltCheckbox-icon-size, var(--checkbox-size));\n min-width: var(--saltCheckbox-icon-size, var(--checkbox-size));\n background: var(--salt-container-primary-background);\n}\n\n/* Styles applied to root component on hover */\n.saltCheckbox:hover .saltCheckboxIcon {\n stroke: var(--saltCheckbox-icon-stroke, var(--salt-selectable-foreground-hover));\n background: var(--salt-selectable-background-hover);\n}\n\n/* Styles applied if `disabled={true}` */\n.saltCheckbox-disabled:hover .saltCheckboxIcon,\n.saltCheckboxIcon-disabled {\n stroke: var(--saltCheckbox-icon-stroke-disabled, var(--salt-selectable-foreground-disabled));\n background: var(--salt-selectable-background);\n}\n\n/* Styles applied if `error={true}` */\n.saltCheckbox-error .saltCheckboxIcon,\n.saltCheckbox-error:hover .saltCheckboxIcon {\n stroke: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground));\n}\n\n/* Styles applied if `error={true}` on hover */\n.saltCheckbox-error:hover .saltCheckboxIcon {\n background: var(--salt-status-error-background);\n}\n\n/* Styles applied if `error={true}` and `disabled={true}` */\n.saltCheckbox-error.saltCheckbox-disabled .saltCheckboxIcon,\n.saltCheckbox-error.saltCheckbox-disabled:hover .saltCheckboxIcon {\n stroke: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground-disabled));\n background: var(--salt-selectable-background);\n}\n\n/* Styles applied if `checked={true}` */\n.saltCheckboxIcon-checked {\n fill: var(--saltCheckbox-icon-fill-checked, var(--salt-selectable-foreground-selected));\n --checkbox-borderWidth: var(--saltCheckbox-icon-borderWidth-checked, 0px);\n}\n\n/* Styles applied if `checked={true}` and `disabled={true}` */\n.saltCheckboxIcon-checked.saltCheckboxIcon-disabled {\n fill: var(--saltCheckbox-icon-fill-disabled, var(--salt-selectable-foreground-selectedDisabled));\n}\n\n/* Styles applied if `checked={true}` and `error={true}` */\n.saltCheckboxIcon-checked.saltCheckboxIcon-error {\n fill: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground));\n}\n\n/* Styles applied if `checked={true}`,`error={true}` and `disabled={true}` */\n.saltCheckboxIcon-checked.saltCheckboxIcon-error.saltCheckboxIcon-disabled {\n fill: var(--saltCheckbox-icon-fill-disabled, var(--salt-status-error-foreground-disabled));\n}\n\n/* Styles applied to box */\n.saltCheckboxIcon-box {\n stroke-width: var(--checkbox-borderWidth);\n width: var(--checkbox-box-size);\n height: var(--checkbox-box-size);\n x: var(--checkbox-box-offset);\n y: var(--checkbox-box-offset);\n}\n\n/* Styles applied to icon if `indeterminate={true}` */\n.saltCheckboxIcon-indeterminate {\n stroke: var(--saltCheckbox-icon-stroke, var(--salt-selectable-foreground-selected));\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-indeterminate-bar-color, var(--salt-selectable-foreground-selected));\n}\n\n/* Styles applied to icon if `indeterminate={true}` on hover */\n.saltCheckbox:hover .saltCheckboxIcon-indeterminate {\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-stroke, var(--salt-selectable-foreground-hover));\n}\n\n/* Styles applied if `indeterminate={true}` and `disabled={true}` */\n.saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate {\n stroke: var(--saltCheckbox-icon-stroke-disabled, var(--salt-selectable-foreground-disabled));\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-indeterminate-bar-color-disabled, var(--salt-selectable-foreground-selectedDisabled));\n}\n\n/* Styles applied if `indeterminate={true}` and `error={true}` */\n.saltCheckboxIcon-error.saltCheckboxIcon-indeterminate,\n.saltCheckbox:hover .saltCheckboxIcon-error.saltCheckboxIcon-indeterminate {\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground));\n}\n\n/* Styles applied if `indeterminate={true}`,`disabled={true}` and `error={true}` */\n.saltCheckboxIcon-error.saltCheckboxIcon-disabled.saltCheckboxIcon-indeterminate {\n --checkbox-icon-tick-fill: var(--saltCheckbox-icon-stroke-error, var(--salt-status-error-foreground-disabled));\n}\n\n/* Styles applied to tick */\n.saltCheckboxIcon-tick {\n fill: var(--saltCheckbox-icon-tick-fill, var(--checkbox-icon-tick-fill));\n stroke-width: 0;\n}\n\n/* Styles applied to tick if `indeterminate={true}` */\n.saltCheckboxIcon-indeterminate .saltCheckboxIcon-tick {\n height: var(--saltCheckbox-icon-indeterminate-bar-height, var(--checkbox-density-bar-height));\n y: var(--saltCheckbox-icon-indeterminate-bar-y, var(--checkbox-density-bar-y));\n}\n";
|
|
4
|
+
styleInject(css_248z);
|
|
5
|
+
|
|
6
|
+
export { css_248z as default };
|
|
7
|
+
//# sourceMappingURL=CheckboxIcon.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxIcon.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { clsx } from 'clsx';
|
|
3
|
+
import 'react';
|
|
4
|
+
import { makePrefixer } from '../utils/makePrefixer.js';
|
|
5
|
+
import '../utils/useFloatingUI.js';
|
|
6
|
+
import '../utils/useId.js';
|
|
7
|
+
import { useDensity } from '../salt-provider/SaltProvider.js';
|
|
8
|
+
import '../viewport/ViewportProvider.js';
|
|
9
|
+
import { CheckboxUncheckedIcon } from './assets/CheckboxUncheckedIcon.js';
|
|
10
|
+
import { CheckboxCheckedIcon } from './assets/CheckboxCheckedIcon.js';
|
|
11
|
+
import { CheckboxCheckedIconHD } from './assets/CheckboxCheckedIconHD.js';
|
|
12
|
+
import { CheckboxIndeterminateIcon } from './assets/CheckboxIndeterminateIcon.js';
|
|
13
|
+
import './CheckboxIcon.css.js';
|
|
14
|
+
|
|
15
|
+
const withBaseName = makePrefixer("saltCheckboxIcon");
|
|
16
|
+
const CheckboxIcon = ({
|
|
17
|
+
checked = false,
|
|
18
|
+
className: classNameProp,
|
|
19
|
+
disabled,
|
|
20
|
+
error,
|
|
21
|
+
indeterminate
|
|
22
|
+
}) => {
|
|
23
|
+
const className = clsx(
|
|
24
|
+
withBaseName(),
|
|
25
|
+
{
|
|
26
|
+
[withBaseName("disabled")]: disabled,
|
|
27
|
+
[withBaseName("error")]: error
|
|
28
|
+
},
|
|
29
|
+
classNameProp
|
|
30
|
+
);
|
|
31
|
+
const density = useDensity();
|
|
32
|
+
return indeterminate ? /* @__PURE__ */ jsx(CheckboxIndeterminateIcon, {
|
|
33
|
+
className: clsx(className, withBaseName("indeterminate"))
|
|
34
|
+
}) : checked ? density === "high" ? /* @__PURE__ */ jsx(CheckboxCheckedIconHD, {
|
|
35
|
+
className: clsx(className, withBaseName("checked"))
|
|
36
|
+
}) : /* @__PURE__ */ jsx(CheckboxCheckedIcon, {
|
|
37
|
+
className: clsx(className, withBaseName("checked"))
|
|
38
|
+
}) : /* @__PURE__ */ jsx(CheckboxUncheckedIcon, {
|
|
39
|
+
className
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export { CheckboxIcon };
|
|
44
|
+
//# sourceMappingURL=CheckboxIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxIcon.js","sources":["../src/checkbox/CheckboxIcon.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { makePrefixer } from \"../utils\";\nimport {\n CheckboxCheckedIcon,\n CheckboxCheckedIconHD,\n CheckboxIndeterminateIcon,\n CheckboxUncheckedIcon,\n} from \"./assets\";\n\nimport \"./CheckboxIcon.css\";\nimport { useDensity } from \"../salt-provider\";\n\nexport interface CheckboxIconProps {\n checked?: boolean;\n className?: string;\n disabled?: boolean;\n error?: boolean;\n indeterminate?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltCheckboxIcon\");\n\nexport const CheckboxIcon = ({\n checked = false,\n className: classNameProp,\n disabled,\n error,\n indeterminate,\n}: CheckboxIconProps): JSX.Element => {\n const className = clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"error\")]: error,\n },\n classNameProp\n );\n\n // A different CheckboxCheckedIcon is rendered if the density is set to high\n const density = useDensity();\n\n return indeterminate ? (\n <CheckboxIndeterminateIcon\n className={clsx(className, withBaseName(\"indeterminate\"))}\n />\n ) : checked ? (\n density === \"high\" ? (\n <CheckboxCheckedIconHD\n className={clsx(className, withBaseName(\"checked\"))}\n />\n ) : (\n <CheckboxCheckedIcon\n className={clsx(className, withBaseName(\"checked\"))}\n />\n )\n ) : (\n <CheckboxUncheckedIcon className={className} />\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAoBA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA,CAAA;AAE7C,MAAM,eAAe,CAAC;AAAA,EAC3B,OAAU,GAAA,KAAA;AAAA,EACV,SAAW,EAAA,aAAA;AAAA,EACX,QAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AACF,CAAsC,KAAA;AACpC,EAAA,MAAM,SAAY,GAAA,IAAA;AAAA,IAChB,YAAa,EAAA;AAAA,IACb;AAAA,MACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,MAC5B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,KAC3B;AAAA,IACA,aAAA;AAAA,GACF,CAAA;AAGA,EAAA,MAAM,UAAU,UAAW,EAAA,CAAA;AAE3B,EAAA,OAAO,gCACJ,GAAA,CAAA,yBAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA,CAAK,SAAW,EAAA,YAAA,CAAa,eAAe,CAAC,CAAA;AAAA,GAC1D,CACE,GAAA,OAAA,GACF,OAAY,KAAA,MAAA,mBACT,GAAA,CAAA,qBAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA,CAAK,SAAW,EAAA,YAAA,CAAa,SAAS,CAAC,CAAA;AAAA,GACpD,oBAEC,GAAA,CAAA,mBAAA,EAAA;AAAA,IACC,SAAW,EAAA,IAAA,CAAK,SAAW,EAAA,YAAA,CAAa,SAAS,CAAC,CAAA;AAAA,GACpD,oBAGD,GAAA,CAAA,qBAAA,EAAA;AAAA,IAAsB,SAAA;AAAA,GAAsB,CAAA,CAAA;AAEjD;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
function CheckboxCheckedIcon({
|
|
4
|
+
className
|
|
5
|
+
}) {
|
|
6
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
7
|
+
"aria-hidden": "true",
|
|
8
|
+
className,
|
|
9
|
+
focusable: "false",
|
|
10
|
+
shapeRendering: "geometricPrecision",
|
|
11
|
+
viewBox: "0 0 14 14",
|
|
12
|
+
children: /* @__PURE__ */ jsxs("g", {
|
|
13
|
+
fillRule: "evenodd",
|
|
14
|
+
children: [
|
|
15
|
+
/* @__PURE__ */ jsx("rect", {
|
|
16
|
+
className: `saltCheckboxIcon-box`
|
|
17
|
+
}),
|
|
18
|
+
/* @__PURE__ */ jsx("polygon", {
|
|
19
|
+
className: `saltCheckboxIcon-tick`,
|
|
20
|
+
fillRule: "nonzero",
|
|
21
|
+
points: "12 4.22226066 10.6259221 3 5.58277771 8.37894955 3.3179086 6.13993399 2 7.40754746 5.63993779 11"
|
|
22
|
+
})
|
|
23
|
+
]
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { CheckboxCheckedIcon };
|
|
29
|
+
//# sourceMappingURL=CheckboxCheckedIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxCheckedIcon.js","sources":["../src/checkbox/assets/CheckboxCheckedIcon.tsx"],"sourcesContent":["export function CheckboxCheckedIcon({\n className,\n}: {\n className: string;\n}): JSX.Element {\n return (\n <svg\n aria-hidden=\"true\"\n className={className}\n focusable=\"false\"\n shapeRendering=\"geometricPrecision\"\n viewBox=\"0 0 14 14\"\n >\n <g fillRule=\"evenodd\">\n <rect className={`saltCheckboxIcon-box`} />\n <polygon\n className={`saltCheckboxIcon-tick`}\n fillRule=\"nonzero\"\n points=\"12 4.22226066 10.6259221 3 5.58277771 8.37894955 3.3179086 6.13993399 2 7.40754746 5.63993779 11\"\n />\n </g>\n </svg>\n );\n}\n"],"names":[],"mappings":";;AAAO,SAAS,mBAAoB,CAAA;AAAA,EAClC,SAAA;AACF,CAEgB,EAAA;AACd,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,aAAY,EAAA,MAAA;AAAA,IACZ,SAAA;AAAA,IACA,SAAU,EAAA,OAAA;AAAA,IACV,cAAe,EAAA,oBAAA;AAAA,IACf,OAAQ,EAAA,WAAA;AAAA,IAER,QAAC,kBAAA,IAAA,CAAA,GAAA,EAAA;AAAA,MAAE,QAAS,EAAA,SAAA;AAAA,MACV,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,MAAA,EAAA;AAAA,UAAK,SAAW,EAAA,CAAA,oBAAA,CAAA;AAAA,SAAwB,CAAA;AAAA,wBACxC,GAAA,CAAA,SAAA,EAAA;AAAA,UACC,SAAW,EAAA,CAAA,qBAAA,CAAA;AAAA,UACX,QAAS,EAAA,SAAA;AAAA,UACT,MAAO,EAAA,kGAAA;AAAA,SACT,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
|