HEX
Server: LiteSpeed
System: Linux premium212.web-hosting.com 4.18.0-553.124.4.lve.el8.x86_64 #1 SMP Fri May 15 13:02:13 UTC 2026 x86_64
User: vitanhod (1367)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //home/vitanhod/barnabites.es/wp-content/themes/rishi/customizer/src/@components/BoxShadow.jsx
import styled from '@emotion/styled';
import { RangeSlider, SingleColorPicker, Switch } from '.';
import { InnerControlWrapper, Popover, PopoverButton } from './components';
import SelectButton from './SelectButton';
import { __ } from '@wordpress/i18n'


const BoxShadowPopoverContent = styled.div`
	.components-range-control__wrapper {
		position: relative;
		&::after {
			content: '';
			width: 100%;
			height: 7px;
			position: absolute;
			left: 0;
			right: 0;
			bottom: -7px;
			background-image: url("data:image/svg+xml,%3Csvg width='6' height='1' viewBox='0 0 6 1' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clipPath='url(%23clip0_330_2020)'%3E%3Cpath d='M0.9198 0.9375C0.803768 0.9375 0.692488 0.891406 0.610441 0.809359C0.528394 0.727312 0.4823 0.616032 0.4823 0.5C0.4823 0.383968 0.528394 0.272688 0.610441 0.190641C0.692488 0.108594 0.803768 0.0625 0.9198 0.0625H5.2948C5.41083 0.0625 5.52211 0.108594 5.60416 0.190641C5.68621 0.272688 5.7323 0.383968 5.7323 0.5C5.7323 0.616032 5.68621 0.727312 5.60416 0.809359C5.52211 0.891406 5.41083 0.9375 5.2948 0.9375H0.9198Z' fill='%2342474B'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_330_2020'%3E%3Crect width='5.25' height='0.875' fill='white' transform='translate(0.4823 0.0625)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"),
				url("data:image/svg+xml,%3Csvg width='2' height='7' viewBox='0 0 2 7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clipPath='url(%23clip0_330_2022)'%3E%3Cpath d='M0.6073 6.5625V0.4375V6.5625Z' fill='%23D9D9D9'/%3E%3Cpath d='M0.6073 6.5625V0.4375' stroke='%2342474B' stroke-width='0.875' strokeLinecap='round' strokeLinejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_330_2022'%3E%3Crect width='0.875' height='7' fill='white' transform='translate(0.1698)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"),
				url("data:image/svg+xml,%3Csvg width='8' height='7' viewBox='0 0 8 7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clipPath='url(%23clip0_330_2024)'%3E%3Cpath d='M3.98232 0.743652V6.25615M1.22607 3.4999H6.73857' stroke='%2342474B' stroke-width='0.875' strokeLinecap='round' strokeLinejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_330_2024'%3E%3Crect width='7' height='7' fill='white' transform='translate(0.4823)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A");
			background-position: left center, center center, right center;
			background-repeat: no-repeat;
		}
	}
	.cw__control-item.range-type-blur{
		.components-range-control__wrapper{
			&::after{
				background-image: url("data:image/svg+xml,%3Csvg width='2' height='7' viewBox='0 0 2 7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clipPath='url(%23clip0_330_2022)'%3E%3Cpath d='M0.6073 6.5625V0.4375V6.5625Z' fill='%23D9D9D9'/%3E%3Cpath d='M0.6073 6.5625V0.4375' stroke='%2342474B' stroke-width='0.875' strokeLinecap='round' strokeLinejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_330_2022'%3E%3Crect width='0.875' height='7' fill='white' transform='translate(0.1698)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"),
				url("data:image/svg+xml,%3Csvg width='8' height='7' viewBox='0 0 8 7' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clipPath='url(%23clip0_330_2024)'%3E%3Cpath d='M3.98232 0.743652V6.25615M1.22607 3.4999H6.73857' stroke='%2342474B' stroke-width='0.875' strokeLinecap='round' strokeLinejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_330_2024'%3E%3Crect width='7' height='7' fill='white' transform='translate(0.4823)'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A");
				background-position: left center, right center;
			}
		}
	}
`;

const BoxShadowStyle = styled.div`
	display: inline-flex;
	align-items: center;
	gap: 8px;
`;

const units = [
	{ unit: "px", min: "-100", max: "100" }
]

const PopoverContent = ({ value, onChange }) => {
	const {
		enable,
		h_offset: horizontal,
		v_offset: vertical,
		blur,
		spread,
		inset: position,
	} = value;

	return (
		<BoxShadowPopoverContent>
			<InnerControlWrapper label={__( 'Enable', 'Rishi' )} direction="horizontal">
				<Switch
					value={enable}
					onChange={(val) => onChange({ ...value, enable: val })}
				/>
			</InnerControlWrapper>
		<InnerControlWrapper label={__( 'Horizontal', 'Rishi' )}>
				<RangeSlider
					value={horizontal}
					onChange={(val) => onChange({ ...value, h_offset: val })}
					units={units}
				/>
			</InnerControlWrapper>
			<InnerControlWrapper label={__( 'Vertical', 'Rishi' )}>
				<RangeSlider
					value={vertical}
					onChange={(val) => onChange({ ...value, v_offset: val })}
					units={units}
				/>
			</InnerControlWrapper>
			<InnerControlWrapper className="range-type-blur" label={__( 'Blur', 'Rishi' )}>
				<RangeSlider
					value={blur}
					onChange={(val) => onChange({ ...value, blur: val })}
					units={units}
					min={0}
				/>
			</InnerControlWrapper>
			<InnerControlWrapper label={__( 'Spread', 'Rishi' )}>
				<RangeSlider
					value={spread}
					onChange={(val) => onChange({ ...value, spread: val })}
					units={units}
				/>
			</InnerControlWrapper>
			<InnerControlWrapper label={__( 'Position', 'Rishi' )}>
				<SelectButton
					options={[
						{ value: 'outline', label: __( 'Outline', 'Rishi' ) },
						{ value: 'inset', label: __( 'Inset', 'Rishi' ) },
					]}
					value={position ? 'inset' : 'outline'}
					onChange={(val) => onChange({ ...value, inset: val === 'inset' })}
				/>
			</InnerControlWrapper>
		</BoxShadowPopoverContent>
	);
};

const BoxShadow = ({
	value,
	onChange,
	changed,
	title,
	...props
}) => {
	const { color } = value;
	return (
		<BoxShadowStyle>
			<SingleColorPicker
				value={color}
				onChange={(val) => onChange({ ...value, color: val })}
			/>
			<Popover content={<PopoverContent value={value} onChange={onChange} />}>
				<PopoverButton title={title} changed={changed} />
			</Popover>
		</BoxShadowStyle>
	);
};

export default BoxShadow;