@spark-ui/components
Version:
Spark (Leboncoin design system) components.
905 lines (881 loc) • 28.7 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/chip/index.ts
var chip_exports = {};
__export(chip_exports, {
Chip: () => Chip2
});
module.exports = __toCommonJS(chip_exports);
// src/chip/Chip.styles.tsx
var import_internal_utils4 = require("@spark-ui/internal-utils");
var import_class_variance_authority = require("class-variance-authority");
// src/chip/variants/outlined.ts
var import_internal_utils = require("@spark-ui/internal-utils");
var outlinedVariants = [
/** Intents **/
{
design: "outlined",
intent: "main",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-main/dim-5",
"enabled:active:bg-main/dim-5",
"focus-visible:bg-main/dim-5",
"aria-pressed:bg-main-container aria-pressed:text-on-main-container aria-pressed:enabled:hover:bg-main-container/dim-1",
"text-main"
])
},
{
design: "outlined",
intent: "support",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-support/dim-5",
"enabled:active:bg-support/dim-5",
"focus-visible:bg-support/dim-5",
"aria-pressed:bg-support-container aria-pressed:text-on-support-container aria-pressed:enabled:hover:bg-support-container/dim-1",
"text-support"
])
},
{
design: "outlined",
intent: "basic",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-basic/dim-5",
"enabled:active:bg-basic/dim-5",
"focus-visible:bg-basic/dim-5",
"aria-pressed:bg-basic-container aria-pressed:text-on-basic-container aria-pressed:enabled:hover:bg-basic-container/dim-1",
"text-basic"
])
},
{
intent: "accent",
design: "outlined",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-accent/dim-5",
"enabled:active:bg-accent/dim-5",
"focus-visible:bg-accent/dim-5",
"aria-pressed:bg-accent-container",
"aria-pressed:bg-accent-container aria-pressed:text-on-accent-container aria-pressed:enabled:hover:bg-accent-container/dim-1",
"text-accent"
])
},
{
design: "outlined",
intent: "success",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-success/dim-5",
"enabled:active:bg-success/dim-5",
"focus-visible:bg-success/dim-5",
"aria-pressed:bg-success-container aria-pressed:text-on-success-container aria-pressed:enabled:hover:bg-success-container/dim-1",
"text-success"
])
},
{
intent: "alert",
design: "outlined",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-alert/dim-5",
"enabled:active:bg-alert/dim-5",
"focus-visible:bg-alert/dim-5",
"aria-pressed:bg-alert-container aria-pressed:text-on-alert-container aria-pressed:enabled:hover:bg-alert-container/dim-1",
"text-alert"
])
},
{
design: "outlined",
intent: "danger",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-error/dim-5",
"enabled:active:bg-error/dim-5",
"focus-visible:bg-error/dim-5",
"aria-pressed:bg-error-container aria-pressed:text-on-error-container aria-pressed:enabled:hover:bg-error-container/dim-1",
"text-error"
])
},
{
design: "outlined",
intent: "info",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-info/dim-5",
"enabled:active:bg-info/dim-5",
"focus-visible:bg-info/dim-5",
"aria-pressed:bg-info-container aria-pressed:text-on-info-container aria-pressed:enabled:hover:bg-info-container/dim-1",
"text-info"
])
},
{
design: "outlined",
intent: "neutral",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-neutral/dim-5",
"enabled:active:bg-neutral/dim-5",
"focus-visible:bg-neutral/dim-5",
"aria-pressed:bg-neutral-container aria-pressed:text-on-neutral-container aria-pressed:enabled:hover:bg-neutral-container/dim-1",
"text-neutral"
])
},
{
design: "outlined",
intent: "surface",
class: (0, import_internal_utils.tw)([
"enabled:hover:bg-surface/dim-5",
"enabled:active:bg-surface/dim-5",
"focus-visible:bg-surface/dim-5",
"aria-pressed:bg-surface aria-pressed:text-on-surface aria-pressed:enabled:hover:bg-surface-hovered",
"text-surface"
])
},
/** Spacings **/
{
design: "outlined",
hasClearButton: false,
class: (0, import_internal_utils.tw)(["px-[calc(var(--spacing-md)-var(--border-width-sm))]"])
},
{
design: "outlined",
hasClearButton: true,
class: (0, import_internal_utils.tw)(["pl-[calc(var(--spacing-md)-var(--border-width-sm))]"])
}
];
// src/chip/variants/tinted.ts
var import_internal_utils2 = require("@spark-ui/internal-utils");
var tintedVariants = [
/** Intents **/
{
intent: "main",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-main-container",
"enabled:hover:bg-main-container-hovered",
"enabled:active:bg-main-container-hovered",
"focus-visible:bg-main-container-hovered",
"aria-pressed:bg-main aria-pressed:text-on-main aria-pressed:enabled:hover:bg-main/dim-1",
"text-on-main-container"
])
},
{
intent: "support",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-support-container",
"enabled:hover:bg-support-container-hovered",
"enabled:active:bg-support-container-hovered",
"focus-visible:bg-support-container-hovered",
"aria-pressed:bg-support aria-pressed:text-on-support aria-pressed:enabled:hover:bg-support/dim-1",
"text-on-support-container"
])
},
{
intent: "basic",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-basic-container",
"enabled:hover:bg-basic-container-hovered",
"enabled:active:bg-basic-container-hovered",
"focus-visible:bg-basic-container-hovered",
"aria-pressed:bg-basic aria-pressed:text-on-basic aria-pressed:enabled:hover:bg-basic/dim-1",
"text-on-basic-container"
])
},
{
intent: "accent",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-accent-container",
"enabled:hover:bg-accent-container-hovered",
"enabled:active:bg-accent-container-hovered",
"focus-visible:bg-accent-container-hovered",
"aria-pressed:bg-accent aria-pressed:text-on-accent aria-pressed:enabled:hover:bg-accent/dim-1",
"text-on-accent-container"
])
},
{
intent: "success",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-success-container",
"enabled:hover:bg-success-container-hovered",
"enabled:active:bg-success-container-hovered",
"focus-visible:bg-success-container-hovered",
"aria-pressed:bg-success aria-pressed:text-on-success aria-pressed:enabled:hover:bg-success/dim-1",
"text-on-success-container"
])
},
{
intent: "alert",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-alert-container",
"enabled:hover:bg-alert-container-hovered",
"enabled:active:bg-alert-container-hovered",
"focus-visible:bg-alert-container-hovered",
"aria-pressed:bg-alert aria-pressed:text-on-alert aria-pressed:enabled:hover:bg-alert/dim-1",
"text-on-alert-container"
])
},
{
intent: "danger",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-error-container",
"enabled:hover:bg-error-container-hovered",
"enabled:active:bg-error-container-hovered",
"focus-visible:bg-error-container-hovered",
"aria-pressed:bg-error aria-pressed:text-on-error aria-pressed:enabled:hover:bg-error/dim-1",
"text-on-error-container"
])
},
{
intent: "info",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-info-container",
"enabled:hover:bg-info-container-hovered",
"enabled:active:bg-info-container-hovered",
"focus-visible:bg-info-container-hovered",
"aria-pressed:bg-info aria-pressed:text-on-info aria-pressed:enabled:hover:bg-info/dim-1",
"text-on-info-container"
])
},
{
intent: "neutral",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-neutral-container",
"enabled:hover:bg-neutral-container-hovered",
"enabled:active:bg-neutral-container-hovered",
"focus-visible:bg-neutral-container-hovered",
"aria-pressed:bg-neutral aria-pressed:text-on-neutral aria-pressed:enabled:hover:bg-neutral/dim-1",
"text-on-neutral-container"
])
},
{
intent: "surface",
design: "tinted",
class: (0, import_internal_utils2.tw)([
"bg-surface/dim-1",
"enabled:hover:bg-surface-hovered/dim-1",
"enabled:active:bg-surface-hovered/dim-1",
"focus-visible:bg-surface-hovered/dim-1",
"aria-pressed:bg-surface aria-pressed:text-on-surface aria-pressed:enabled:hover:bg-surface-hovered",
"text-on-surface/dim-1"
])
},
/** Spacings **/
{
design: "tinted",
hasClearButton: false,
class: (0, import_internal_utils2.tw)(["px-md"])
},
{
design: "tinted",
hasClearButton: true,
class: (0, import_internal_utils2.tw)(["pl-md"])
}
];
// src/chip/variants/dashed.ts
var import_internal_utils3 = require("@spark-ui/internal-utils");
var dashedVariants = [
/** Intents **/
{
intent: "main",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-main/dim-5",
"enabled:active:bg-main/dim-5",
"focus-visible:bg-main/dim-5",
"aria-pressed:bg-main-container aria-pressed:text-on-main-container aria-pressed:enabled:hover:bg-main-container/dim-1",
"text-main"
])
},
{
intent: "support",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-support/dim-5",
"enabled:active:bg-support/dim-5",
"focus-visible:bg-support/dim-5",
"aria-pressed:bg-support-container aria-pressed:text-on-support-container aria-pressed:enabled:hover:bg-support-container/dim-1",
"text-support"
])
},
{
intent: "basic",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-basic/dim-5",
"enabled:active:bg-basic/dim-5",
"focus-visible:bg-basic/dim-5",
"aria-pressed:bg-basic-container aria-pressed:text-on-basic-container aria-pressed:enabled:hover:bg-basic-container/dim-1",
"text-basic"
])
},
{
intent: "accent",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-accent/dim-5",
"enabled:active:bg-accent/dim-5",
"focus-visible:bg-accent/dim-5",
"aria-pressed:bg-accent-container aria-pressed:text-on-accent-container aria-pressed:enabled:hover:bg-accent-container/dim-1",
"text-accent"
])
},
{
intent: "success",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-success/dim-5",
"enabled:active:bg-success/dim-5",
"focus-visible:bg-success/dim-5",
"aria-pressed:bg-success-container aria-pressed:text-on-success-container aria-pressed:enabled:hover:bg-success-container/dim-1",
"text-success"
])
},
{
intent: "alert",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-alert/dim-5",
"enabled:active:bg-alert/dim-5",
"focus-visible:bg-alert/dim-5",
"aria-pressed:bg-alert-container aria-pressed:text-on-alert-container aria-pressed:enabled:hover:bg-alert-container/dim-1",
"text-alert"
])
},
{
intent: "danger",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-error/dim-5",
"enabled:active:bg-error/dim-5",
"focus-visible:bg-error/dim-5",
"aria-pressed:bg-error-container aria-pressed:text-on-error-container aria-pressed:enabled:hover:bg-error-container/dim-1",
"text-error"
])
},
{
intent: "info",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-info/dim-5",
"enabled:active:bg-info/dim-5",
"focus-visible:bg-info/dim-5",
"aria-pressed:bg-info-container aria-pressed:text-on-info-container aria-pressed:enabled:hover:bg-info-container/dim-1",
"text-info"
])
},
{
intent: "neutral",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-neutral/dim-5",
"enabled:active:bg-neutral/dim-5",
"focus-visible:bg-neutral/dim-5",
"aria-pressed:bg-neutral-container aria-pressed:text-on-neutral-container aria-pressed:enabled:hover:bg-neutral-container/dim-1",
"text-neutral"
])
},
{
intent: "surface",
design: "dashed",
class: (0, import_internal_utils3.tw)([
"enabled:hover:bg-surface/dim-5",
"enabled:active:bg-surface/dim-5",
"focus-visible:bg-surface/dim-5",
"aria-pressed:bg-surface aria-pressed:text-on-surface aria-pressed:enabled:hover:bg-surface-hovered",
"text-surface"
])
},
/** Spacings **/
{
design: "dashed",
hasClearButton: false,
class: (0, import_internal_utils3.tw)(["px-[calc(var(--spacing-md)-var(--border-width-sm))]"])
},
{
design: "dashed",
hasClearButton: true,
class: (0, import_internal_utils3.tw)(["pl-[calc(var(--spacing-md)-var(--border-width-sm))]"])
}
];
// src/chip/Chip.styles.tsx
var chipStyles = (0, import_class_variance_authority.cva)(
[
"box-border inline-flex h-sz-32 flex-nowrap items-center justify-center rounded-md text-body-1 font-regular",
"focus-visible:u-outline",
"ease-out duration-150"
],
{
variants: {
/**
* Main style of the chip.
*
* - `filled`: Chip will be plain.
*
* - `outlined`: Chip will be transparent with an outline.
*
* - `tinted`: Chip will be filled but using a lighter color scheme.
*
* - `dashed`: Chip will be transparent with an outline dashed.
*/
design: (0, import_internal_utils4.makeVariants)({
outlined: ["bg-transparent border-sm border-solid border-current"],
tinted: [""],
dashed: [
"bg-transparent border-sm border-dashed shadow-none focus-visible:border-outline-high"
]
}),
/**
* Color scheme of the chip.
*/
intent: (0, import_internal_utils4.makeVariants)({
main: [],
support: [],
basic: [],
accent: [],
success: [],
alert: [],
danger: [],
info: [],
neutral: [],
surface: []
}),
/**
* Disable the chip, preventing user interaction and adding opacity.
*/
disabled: {
true: ["cursor-not-allowed", "opacity-dim-3"]
},
hasClearButton: {
true: [],
false: []
}
// 'pl-[calc(var(--spacing-md)-(var(--border-width-sm)))]'
},
compoundVariants: [...outlinedVariants, ...tintedVariants, ...dashedVariants],
defaultVariants: {
design: "outlined",
intent: "basic"
}
}
);
// src/chip/useChipContext.tsx
var import_react = require("react");
var ChipContext = (0, import_react.createContext)({});
var useChipContext = () => (0, import_react.useContext)(ChipContext) || {};
// src/chip/useChipElement.tsx
var import_use_combined_state = require("@spark-ui/hooks/use-combined-state");
var import_emulate_tab = require("emulate-tab");
var import_react3 = require("react");
// src/slot/Slot.tsx
var import_radix_ui = require("radix-ui");
var import_react2 = require("react");
var import_jsx_runtime = require("react/jsx-runtime");
var Slottable = import_radix_ui.Slot.Slottable;
var Slot = ({ ref, ...props }) => {
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_radix_ui.Slot.Root, { ref, ...props });
};
// src/chip/useChipElement.tsx
var import_jsx_runtime2 = require("react/jsx-runtime");
var getDisplayName = (element) => {
return element ? element.type.displayName : "";
};
var findElement = (children) => (...values) => {
const validChildren = import_react3.Children.toArray(children).filter(import_react3.isValidElement);
return validChildren.find((child) => {
const displayName = getDisplayName(child);
return values.includes(displayName || "");
});
};
var useChipElement = ({
onClick,
asChild,
pressed,
defaultPressed,
disabled,
value,
defaultValue,
children,
onClear
}) => {
const [isPressed, setIsPressed] = (0, import_use_combined_state.useCombinedState)(pressed, defaultPressed);
const [innerValue] = (0, import_use_combined_state.useCombinedState)(
value,
defaultValue
);
const findChipElement = findElement(children);
const leadingIcon = findChipElement("Chip.LeadingIcon");
const trailingIcon = findChipElement("Chip.TrailingIcon");
const content = findChipElement("Chip.Content");
const clearButton = findChipElement("Chip.ClearButton");
const isButton = (onClick || isPressed) !== void 0;
const formattedChildren = [leadingIcon, content, clearButton].every(
(element) => element === void 0
) ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "inline-block grow truncate", children }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
leadingIcon,
content,
leadingIcon === void 0 ? trailingIcon : null,
clearButton
] });
const onKeyDown = (event) => {
if (!!clearButton && !disabled && ["Delete", "Backspace"].includes(event.key)) {
if (onClear) {
onClear();
event.key === "Delete" && (0, import_emulate_tab.emulateTab)();
event.key === "Backspace" && import_emulate_tab.emulateTab.backwards();
}
}
};
if (isButton) {
return {
Element: asChild ? Slot : "button",
chipProps: {
type: "button",
...isPressed !== void 0 && {
"aria-pressed": isPressed,
"data-state": isPressed ? "on" : "off"
},
onClick: (event) => {
isPressed !== void 0 && setIsPressed(!isPressed);
onClick && onClick(event, { pressed: isPressed, value: innerValue });
},
onKeyDown,
disabled,
children: formattedChildren
},
compoundElements: {
leadingIcon,
trailingIcon,
content,
clearButton
}
};
}
return {
Element: asChild ? Slot : "div",
chipProps: {
"aria-disabled": disabled,
children: formattedChildren,
onKeyDown
},
compoundElements: {
leadingIcon,
trailingIcon,
content,
clearButton
}
};
};
// src/chip/Chip.tsx
var import_jsx_runtime3 = require("react/jsx-runtime");
var Chip = ({
design = "outlined",
disabled,
children,
intent = "basic",
defaultPressed,
pressed,
asChild,
className,
onClick,
onClear,
ref: forwardedRef,
...otherProps
}) => {
const {
Element: ChipElement,
chipProps: { children: formattedChildren, ...chipProps },
compoundElements
} = useChipElement({
asChild,
pressed,
defaultPressed,
onClick,
disabled: !!disabled,
value: otherProps.value,
defaultValue: otherProps.defaultValue,
children,
onClear
});
const { clearButton } = compoundElements;
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ChipContext.Provider, { value: { disabled, design, intent, onClear }, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
ChipElement,
{
ref: forwardedRef,
className: chipStyles({
className,
design,
disabled,
intent,
hasClearButton: !!clearButton
}),
...{
...chipProps,
...otherProps
},
"data-spark-component": "chip",
children: formattedChildren
}
) });
};
Chip.displayName = "Chip";
// src/chip/ChipClearButton.tsx
var import_Close = require("@spark-ui/icons/Close");
var import_react5 = require("react");
// src/icon/Icon.tsx
var import_react4 = require("react");
// src/visually-hidden/VisuallyHidden.tsx
var import_jsx_runtime4 = require("react/jsx-runtime");
var VisuallyHidden = ({ asChild = false, ref, ...props }) => {
const Component = asChild ? Slot : "span";
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
Component,
{
...props,
ref,
style: {
// See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
position: "absolute",
border: 0,
width: 1,
height: 1,
padding: 0,
margin: -1,
overflow: "hidden",
clip: "rect(0, 0, 0, 0)",
whiteSpace: "nowrap",
wordWrap: "normal",
...props.style
}
}
);
};
VisuallyHidden.displayName = "VisuallyHidden";
// src/icon/Icon.styles.tsx
var import_internal_utils5 = require("@spark-ui/internal-utils");
var import_class_variance_authority2 = require("class-variance-authority");
var iconStyles = (0, import_class_variance_authority2.cva)(["fill-current shrink-0"], {
variants: {
/**
* Color scheme of the icon.
*/
intent: (0, import_internal_utils5.makeVariants)({
current: ["text-current"],
main: ["text-main"],
support: ["text-support"],
accent: ["text-accent"],
basic: ["text-basic"],
success: ["text-success"],
alert: ["text-alert"],
error: ["text-error"],
info: ["text-info"],
neutral: ["text-neutral"]
}),
/**
* Sets the size of the icon.
*/
size: (0, import_internal_utils5.makeVariants)({
current: ["u-current-font-size"],
sm: ["w-sz-16", "h-sz-16"],
md: ["w-sz-24", "h-sz-24"],
lg: ["w-sz-32", "h-sz-32"],
xl: ["w-sz-40", "h-sz-40"]
})
}
});
// src/icon/Icon.tsx
var import_jsx_runtime5 = require("react/jsx-runtime");
var Icon = ({
label,
className,
size = "current",
intent = "current",
children,
...others
}) => {
const child = import_react4.Children.only(children);
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
(0, import_react4.cloneElement)(child, {
className: iconStyles({ className, size, intent }),
"data-spark-component": "icon",
"aria-hidden": "true",
focusable: "false",
...others
}),
label && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(VisuallyHidden, { children: label })
] });
};
Icon.displayName = "Icon";
// src/chip/ChipClearButton.styles.tsx
var import_internal_utils6 = require("@spark-ui/internal-utils");
var import_class_variance_authority3 = require("class-variance-authority");
var chipClearButtonWrapperStyles = (0, import_class_variance_authority3.cva)(
["ml-md flex h-full items-center justify-center focus-visible:outline-hidden"],
{
variants: {
disabled: {
false: ["cursor-pointer"],
true: ["cursor-not-allowed"]
},
isBordered: {
false: ["pr-md"],
true: ["pr-[7px]"]
},
design: {
outlined: [],
tinted: [],
dashed: []
}
},
compoundVariants: [
{
design: "outlined",
disabled: false,
class: (0, import_internal_utils6.tw)(["hover:opacity-dim-1"])
},
{
design: "outlined",
disabled: true,
class: (0, import_internal_utils6.tw)(["opacity-dim-3"])
},
{
design: "tinted",
disabled: false,
class: (0, import_internal_utils6.tw)(["hover:opacity-dim-1"])
},
{
design: "tinted",
disabled: true,
class: (0, import_internal_utils6.tw)(["opacity-dim-3"])
},
{
design: "dashed",
disabled: false,
class: (0, import_internal_utils6.tw)(["hover:opacity-dim-1"])
},
{
design: "dashed",
disabled: true,
class: (0, import_internal_utils6.tw)(["opacity-dim-3"])
}
]
}
);
var chipClearButtonStyles = (0, import_class_variance_authority3.cva)(
["rounded-full p-sz-2 [font-size:var(--spacing-sz-8)] border-sm", "focus-visible:u-outline"],
{
variants: {
disabled: {
true: ["cursor-not-allowed"],
false: ["cursor-pointer"]
}
}
}
);
// src/chip/ChipClearButton.tsx
var import_jsx_runtime6 = require("react/jsx-runtime");
var ChipClearButton = ({
children = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_Close.Close, {}) }),
tabIndex = 0,
label,
ref: forwardedRef
}) => {
const { design, disabled, onClear } = useChipContext();
const onClearHandler = (0, import_react5.useCallback)(
(event) => {
event.stopPropagation();
!disabled && onClear && onClear(event);
},
[disabled, onClear]
);
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
"span",
{
className: chipClearButtonWrapperStyles({
isBordered: ["outline", "dashed"].includes(`${design}`),
disabled: !!disabled,
design
}),
onClick: onClearHandler,
ref: forwardedRef,
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
"button",
{
tabIndex,
type: "button",
disabled: !!disabled,
className: chipClearButtonStyles({ disabled }),
"aria-label": label,
children: children && (0, import_react5.cloneElement)(children, { ariaLabel: label })
}
)
}
);
};
ChipClearButton.displayName = "Chip.ClearButton";
// src/chip/ChipContent.tsx
var import_class_variance_authority4 = require("class-variance-authority");
var import_jsx_runtime7 = require("react/jsx-runtime");
var ChipContent = ({ children, className, ref: forwardedRef }) => {
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: (0, import_class_variance_authority4.cx)("inline-block grow truncate", className), ref: forwardedRef, children });
};
ChipContent.displayName = "Chip.Content";
// src/chip/ChipLeadingIcon.tsx
var import_class_variance_authority6 = require("class-variance-authority");
// src/chip/ChipIcon.tsx
var import_class_variance_authority5 = require("class-variance-authority");
var import_jsx_runtime8 = require("react/jsx-runtime");
var ChipIcon = ({ children, className, ref: forwardedRef }) => {
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: (0, import_class_variance_authority5.cx)("flex h-full items-center justify-center", className), ref: forwardedRef, children });
};
ChipIcon.displayName = "Chip.Icon";
// src/chip/ChipLeadingIcon.tsx
var import_jsx_runtime9 = require("react/jsx-runtime");
var ChipLeadingIcon = ({
className,
ref: forwardedRef,
...props
}) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChipIcon, { className: (0, import_class_variance_authority6.cx)("mr-sm", className), ref: forwardedRef, ...props });
ChipLeadingIcon.displayName = "Chip.LeadingIcon";
// src/chip/ChipTrailingIcon.tsx
var import_class_variance_authority7 = require("class-variance-authority");
var import_jsx_runtime10 = require("react/jsx-runtime");
var ChipTrailingIcon = ({
className,
ref: forwardedRef,
...props
}) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChipIcon, { className: (0, import_class_variance_authority7.cx)("ml-md", className), ref: forwardedRef, ...props });
ChipTrailingIcon.displayName = "Chip.TrailingIcon";
// src/chip/index.ts
var Chip2 = Object.assign(Chip, {
Content: ChipContent,
LeadingIcon: ChipLeadingIcon,
TrailingIcon: ChipTrailingIcon,
ClearButton: ChipClearButton
});
Chip2.displayName = "Chip";
Chip2.ClearButton.displayName = "Chip.ClearButton";
Chip2.Content.displayName = "Chip.Content";
Chip2.LeadingIcon.displayName = "Chip.LeadingIcon";
Chip2.TrailingIcon.displayName = "Chip.TrailingIcon";
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Chip
});
//# sourceMappingURL=index.js.map
;