UNPKG

@prezly/theme-kit-ui

Version:
48 lines (46 loc) 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ColorSwatch = ColorSwatch; var _react = _interopRequireWildcard(require("react")); var _tailwindMerge = require("tailwind-merge"); var _tinycolor = _interopRequireDefault(require("tinycolor2")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */ var DARKNESS_THRESHOLD = 180; var BRIGHTNESS_THRESHOLD = 220; function ColorSwatch(_ref) { var { value, hex } = _ref; var [notification, setNotification] = (0, _react.useState)(''); var timeoutRef = (0, _react.useRef)(null); var color = (0, _tinycolor.default)(hex); var isDark = color.getBrightness() < DARKNESS_THRESHOLD; var isBright = color.getBrightness() > BRIGHTNESS_THRESHOLD; var borderColor = isBright ? color.clone().darken(5).toHexString() : undefined; function handleValueClick() { if (timeoutRef.current) { clearTimeout(timeoutRef.current); } navigator.clipboard.writeText(hex); setNotification('Value copied!'); timeoutRef.current = setTimeout(() => setNotification(''), 2000); } return /*#__PURE__*/_react.default.createElement("div", { className: "relative p-4 border-transparent border-[1px] rounded-lg", style: { backgroundColor: hex, borderColor } }, /*#__PURE__*/_react.default.createElement("p", { className: (0, _tailwindMerge.twMerge)('font-medium text-sm text-gray-800 opacity-50 uppercase m-0', isDark && 'text-white') }, notification), /*#__PURE__*/_react.default.createElement("p", { className: (0, _tailwindMerge.twMerge)('font-bold text-lg leading-7 text-gray-800 m-0', isDark && 'text-gray-50'), onClick: handleValueClick }, value)); }