@yourbestsoft/studio-screen-ui-kit 0.0.2 → 0.0.3

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.
@@ -1,7 +1,6 @@
1
- import { ThemeValue } from '../../features';
2
1
  type Props = {
3
- theme: ThemeValue;
4
- setTheme: (value: ThemeValue) => void;
2
+ theme: string;
3
+ setTheme: (value: string) => void;
5
4
  };
6
5
  export declare const ThemeSwitcher: ({ setTheme, theme }: Props) => import("react/jsx-runtime").JSX.Element;
7
6
  export {};
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/buttons-group/ButtonsGroup.tsx","../src/utils/colorUtils.ts","../src/components/color-button/ColorButton.tsx","../src/components/color-picker/colors.ts","../src/components/color-picker/hooks/usePalette.ts","../src/hooks/useSelect.ts","../src/hooks/useKeyboardControls.ts","../src/components/color-picker/hooks/usePaletteControls.ts","../src/components/icon-button/IconButton.tsx","../src/components/color-picker/parts/hex-input/HexInput.tsx","../src/components/color-picker/parts/palette/Palette.tsx","../src/components/color-picker/parts/shadow-list/ShadesList.tsx","../src/components/color-picker/ColorPicker.tsx","../src/components/pagination/utils/getPagesArray.ts","../src/components/pagination/Pagination.tsx","../src/components/select/Select.tsx","../src/components/shortcut/Shortcut.tsx","../src/components/slider/Slider.tsx","../src/components/theme-switcher/ThemeSwitcher.tsx","../src/components/toggle-switch/ToggleSwitch.tsx","../src/components/toolbar/Toolbar.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport { HTMLAttributes, ReactNode } from 'react'\n\nimport styles from './buttons-group.module.scss'\n\ninterface ButtonProps extends HTMLAttributes<HTMLButtonElement> {\n label?: string\n icon?: ReactNode\n onClick?: () => void\n disabled?: boolean\n selected?: boolean\n}\n\ninterface Props {\n buttons: ButtonProps[]\n className?: string\n}\n\nexport const ButtonsGroup = ({ buttons, className }: Props) => {\n return (\n <div className={classNames(styles.buttonGroup, className)}>\n {buttons.map((button, index) => {\n const isSingle = buttons.length === 1\n const isFirst = index === 0 && !isSingle\n const isLast = index === buttons.length - 1 && !isSingle\n\n return (\n <button\n key={index}\n onClick={button.onClick}\n disabled={button.disabled}\n className={classNames(styles.button, {\n [styles.first]: isFirst,\n [styles.last]: isLast,\n [styles.selected]: button.selected,\n [styles.single]: isSingle,\n })}\n {...button}\n >\n {button.icon && button.icon}\n {button.label && (\n <span className={styles.label}>{button.label}</span>\n )}\n </button>\n )\n })}\n </div>\n )\n}\n","const lightenColor = (\n r: number,\n g: number,\n b: number,\n percentage: number\n): [number, number, number] => {\n return [\n Math.min(255, Math.round(r + (255 - r) * percentage)),\n Math.min(255, Math.round(g + (255 - g) * percentage)),\n Math.min(255, Math.round(b + (255 - b) * percentage)),\n ]\n}\n\nexport const getShadow = (baseColor: string, targetIndex: number): string => {\n if (targetIndex === 5) {\n return baseColor\n }\n\n if (\n baseColor === 'transparent' ||\n baseColor === '#ffffff' ||\n baseColor === '#1e1e1e'\n ) {\n return baseColor\n }\n\n const [r, g, b] = hexToRgb(baseColor)\n\n const percentage = (5 - targetIndex) * 0.2\n const [newR, newG, newB] = lightenColor(r, g, b, percentage)\n\n return rgbToHex(newR, newG, newB)\n}\nconst hexToRgb = (hex: string): [number, number, number] => {\n const normalizedHex = hex.replace('#', '')\n const bigint = parseInt(normalizedHex, 16)\n return [(bigint >> 16) & 255, (bigint >> 8) & 255, bigint & 255]\n}\n\nconst rgbToHex = (r: number, g: number, b: number): string => {\n return (\n '#' +\n [r, g, b]\n .map((value) => {\n const hex = value.toString(16)\n return hex.length === 1 ? '0' + hex : hex\n })\n .join('')\n )\n}\n\nexport const getContrastingColor = (hexColor: string): string => {\n if (hexColor === 'transparent') {\n return '#000'\n }\n\n const [r, g, b] = hexToRgb(hexColor)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000\n return brightness > 128 ? '#000' : '#fff'\n}\n","import classNames from 'classnames'\nimport { CSSProperties, HTMLAttributes } from 'react'\n\nimport { getContrastingColor } from '../../utils'\nimport s from './color-button.module.scss'\n\ninterface ColorButtonProps extends HTMLAttributes<HTMLButtonElement> {\n color: string\n disabled?: boolean\n selected?: boolean\n hotkey?: string\n size?: 'small' | 'medium' | 'large'\n}\n\nexport const ColorButton = (props: ColorButtonProps) => {\n const {\n className,\n color,\n disabled,\n hotkey,\n selected,\n size = 'small',\n ...buttonProps\n } = props\n\n return (\n <button\n className={classNames(\n s.colorButton,\n s[size],\n disabled && s.disabled,\n selected && s.selected,\n color === 'transparent' && s.transparent,\n className\n )}\n style={{ '--swatch-color': color } as CSSProperties}\n disabled={disabled}\n {...buttonProps}\n >\n <p className={s.hotkey} style={{ color: getContrastingColor(color) }}>\n {hotkey}\n </p>\n </button>\n )\n}\n","import { ColorItem } from './types'\n\nexport const defaultColors: ColorItem[] = [\n {\n color: 'transparent',\n hotkey: 'q',\n name: 'transparent',\n },\n {\n color: '#ffffff',\n hotkey: 'w',\n name: 'white',\n },\n {\n color: '#343a40',\n hotkey: 'e',\n name: 'gray',\n },\n {\n color: '#1e1e1e',\n hotkey: 'r',\n name: 'black',\n },\n {\n color: '#846358',\n hotkey: 't',\n name: 'bronze',\n },\n {\n color: '#0c8599',\n hotkey: 'a',\n name: 'cyan',\n },\n {\n color: '#1971c2',\n hotkey: 's',\n name: 'blue',\n },\n {\n color: '#6741d9',\n hotkey: 'd',\n name: 'violet',\n },\n {\n color: '#9c36b5',\n hotkey: 'f',\n name: 'grape',\n },\n {\n color: '#c2255c',\n hotkey: 'g',\n name: 'pink',\n },\n {\n color: '#2f9e44',\n hotkey: 'z',\n name: 'green',\n },\n {\n color: '#099268',\n hotkey: 'x',\n name: 'teal',\n },\n {\n color: '#f08c00',\n hotkey: 'c',\n name: 'yellow',\n },\n {\n color: '#e8590c',\n hotkey: 'v',\n name: 'orange',\n },\n {\n color: '#e03131',\n hotkey: 'b',\n name: 'red',\n },\n]\n","import { useEffect, useState } from 'react'\n\nimport { getShadow } from '../../../utils'\nimport { ActiveColor, ColorItem, ShadesIndex } from '../types'\n\ninterface Props {\n selectedShadeIndex: ShadesIndex\n selectedColor?: ActiveColor\n colors: ColorItem[]\n}\n\nexport const usePalette = ({\n colors,\n selectedColor,\n selectedShadeIndex,\n}: Props) => {\n const [activeShade, setActiveShade] = useState(selectedShadeIndex)\n const [palette, setPalette] = useState(() =>\n updatePalette(colors, selectedShadeIndex)\n )\n const [activeColor, setActiveColor] = useState<ActiveColor>(() => ({\n ...(selectedColor ?? { ...colors[0], index: 0 }),\n index: selectedColor?.index ?? 0,\n }))\n\n const handleUpdatePalette = (shade: ShadesIndex): void => {\n const updatedPalette = updatePalette(colors, shade)\n console.log(updatedPalette)\n setPalette(updatedPalette)\n setActiveColor(updateActiveColor(updatedPalette, activeColor))\n }\n\n const handleSetActiveColor = (color: ColorItem, index = 999) => {\n setActiveColor({ ...applyShade(color, activeShade), index })\n }\n\n useEffect(() => {\n handleUpdatePalette(activeShade)\n }, [activeShade, colors, activeColor.index])\n\n return {\n activeColor,\n activeShade,\n palette,\n setActiveColorHandler: handleSetActiveColor,\n setActiveShade,\n }\n}\n\nconst applyShade = (color: ColorItem, shade: ShadesIndex) => ({\n ...color,\n color: getShadow(color.color, shade),\n})\n\nconst updatePalette = (colors: ColorItem[], shade: ShadesIndex) =>\n colors.map((color) => applyShade(color, shade))\n\nconst updateActiveColor = (\n palette: ColorItem[],\n activeColor: ActiveColor\n): ActiveColor => ({\n ...(palette[activeColor.index] ?? palette[0]),\n index: activeColor.index ?? 0,\n})\n","import React, { useCallback, useState, useEffect } from 'react'\n\nimport { SelectItem } from '../components'\n\ninterface UseSelectProps {\n options: SelectItem[]\n onSelect?: (value: string) => void\n selectedId?: string\n}\n\nexport const useSelect = ({\n onSelect,\n options,\n selectedId,\n}: UseSelectProps) => {\n const [isOpen, setIsOpen] = useState(false)\n const [highlightedIndex, setHighlightedIndex] = useState<number | null>(null)\n const [selectedItem, setSelectedItem] = useState<SelectItem | null>(\n selectedId\n ? options.find((item) => item.value === selectedId) || null\n : null\n )\n\n useEffect(() => {\n if (selectedId) {\n const newSelectedItem = options.find((item) => item.value === selectedId)\n setSelectedItem(newSelectedItem || null)\n }\n }, [selectedId, options])\n\n const handleChange = useCallback(\n (item: SelectItem) => {\n setSelectedItem(item)\n if (onSelect) {\n onSelect(item.value)\n }\n setIsOpen(false)\n setHighlightedIndex(null)\n },\n [onSelect]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (!isOpen) {\n if (event.key === 'Enter' || event.key === ' ') {\n setIsOpen(true)\n setHighlightedIndex(0)\n }\n return\n }\n\n switch (event.key) {\n case 'ArrowDown': {\n setHighlightedIndex((prev) =>\n prev === null ? 0 : Math.min(prev + 1, options.length - 1)\n )\n break\n }\n case 'ArrowUp': {\n setHighlightedIndex((prev) =>\n prev === null ? options.length - 1 : Math.max(prev - 1, 0)\n )\n break\n }\n case 'Enter': {\n if (highlightedIndex !== null) {\n handleChange(options[highlightedIndex])\n }\n break\n }\n case 'Escape': {\n setIsOpen(false)\n break\n }\n }\n },\n [isOpen, highlightedIndex, options, handleChange]\n )\n\n const handleOutsideClick = useCallback(() => {\n setIsOpen(false)\n setHighlightedIndex(null)\n }, [])\n\n return {\n handleChange,\n handleKeyDown,\n handleOutsideClick,\n highlightedIndex,\n isOpen,\n selectedItem,\n setIsOpen,\n }\n}\n","import { useEffect } from 'react'\n\ntype KeyHandler = (event: KeyboardEvent) => void\n\nexport const useKeyboardControls = (handlers: KeyHandler[]) => {\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n handlers.forEach((handler) => handler(event))\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [handlers])\n}\n","import { useKeyboardControls } from '../../../hooks'\nimport { ColorItem, ShadesIndex } from '../types'\n\ninterface Props {\n palette: ColorItem[]\n setActiveShade: (shade: ShadesIndex) => void\n setActiveColorHandler: (color: ColorItem, index?: number) => void\n}\n\nexport const usePaletteControls = (props: Props) => {\n const { palette, setActiveColorHandler, setActiveShade } = props\n\n const handleShadeKey = (event: KeyboardEvent) => {\n if (event.shiftKey && event.code.startsWith('Digit')) {\n const shadeIndex = parseInt(event.code.replace('Digit', ''), 10)\n if (shadeIndex >= 1 && shadeIndex <= 5) {\n setActiveShade(shadeIndex as ShadesIndex)\n }\n }\n }\n\n const handleColorKey = (event: KeyboardEvent) => {\n const pressedKey = event.key.toLowerCase()\n const index = palette.findIndex(\n (color) => color?.hotkey?.toLowerCase() === pressedKey\n )\n const updatedColor = palette[index]\n\n if (index !== -1) {\n setActiveColorHandler(updatedColor, index)\n }\n }\n useKeyboardControls([handleShadeKey, handleColorKey])\n}\n","import classNames from 'classnames'\nimport { HTMLAttributes, ReactNode } from 'react'\n\nimport s from './icon-button.module.scss'\n\ninterface IconButtonProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, 'className'> {\n className?: string\n variants?: 'primary' | 'secondary' | 'transparent'\n icon: ReactNode\n selected?: boolean\n disabled?: boolean\n}\n\nexport const IconButton = (props: IconButtonProps) => {\n const {\n className,\n disabled,\n icon,\n selected,\n variants = 'primary',\n ...buttonsProps\n } = props\n\n return (\n <button\n className={classNames(\n s.iconButton,\n s[variants],\n selected && s.selected,\n disabled && s.disabled,\n className\n )}\n disabled={disabled}\n {...buttonsProps}\n >\n {icon}\n </button>\n )\n}\n","import classNames from 'classnames'\nimport { ClipboardCopy } from 'lucide-react'\nimport React, { HTMLAttributes, ReactNode, useEffect, useState } from 'react'\n\nimport { IconButton } from '../../../icon-button'\nimport style from './hex-input.module.scss'\n\ntype Props = {\n color: string\n onChange: (color: string) => void\n placeholder?: string\n children?: ReactNode\n} & Omit<HTMLAttributes<HTMLInputElement>, 'onChange'>\n\nexport const HexInput = (props: Props) => {\n const {\n children: slot,\n className,\n color,\n onChange,\n placeholder = 'RRGGBB',\n ...rest\n } = props\n\n const [inputValue, setInputValue] = useState(\n color.startsWith('#') ? color.slice(1) : color\n )\n const [copied, setCopied] = useState(false)\n\n useEffect(() => {\n setInputValue(color.startsWith('#') ? color.slice(1) : color)\n }, [color])\n\n const isValidHex = (value: string) =>\n /^#([0-9A-F]{3}|[0-9A-F]{6})$/i.test('#' + value)\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newHex = event.target.value\n setInputValue(newHex)\n\n if (isValidHex(newHex)) {\n onChange('#' + newHex)\n }\n }\n\n const handleCopy = () => {\n const fullHex = '#' + inputValue\n navigator.clipboard.writeText(fullHex)\n setCopied(true)\n setTimeout(() => setCopied(false), 1000)\n }\n\n return (\n <div className={style.hexInput}>\n <IconButton\n icon={<ClipboardCopy />}\n onClick={handleCopy}\n className={style.copyButton}\n />\n <div className={style.inputContainer}>\n <span className={style.hash}>#</span>\n <input\n {...rest}\n className={classNames(\n style.input,\n isValidHex(inputValue) ? '' : style.error,\n className\n )}\n value={inputValue}\n onChange={handleChange}\n placeholder={placeholder}\n aria-label=\"Hex code\"\n />\n </div>\n {copied && (\n <div className={style.copiedMessage}>\n <span>Copied!</span>\n </div>\n )}\n {slot && <div className={style.slot}>{slot}</div>}\n </div>\n )\n}\n","import { ColorButton } from '../../../color-button'\nimport { ActiveColor, ColorItem } from '../../types'\nimport style from './palette.module.scss'\n\ninterface PaletteProps {\n palette: ColorItem[]\n activeColor: ActiveColor\n setActiveColorHandler: (color: ColorItem, index: number) => void\n}\n\nexport const Palette = ({\n activeColor,\n palette,\n setActiveColorHandler,\n}: PaletteProps) => (\n <div className={style.colorsList}>\n {palette.map((color, index) => (\n <ColorButton\n key={color.name}\n color={color.color}\n hotkey={color.hotkey}\n selected={activeColor.index === index}\n onClick={() => setActiveColorHandler(color, index)}\n size={'large'}\n />\n ))}\n </div>\n)\n","import { getShadow } from '../../../../utils'\nimport { ColorButton } from '../../../color-button'\nimport { ActiveColor, ColorItem, ShadesIndex } from '../../types'\nimport style from './shadow-list.module.scss'\n\ninterface ShadesListProps {\n activeShade: ShadesIndex\n activeColor: ActiveColor\n colors: ColorItem[]\n setActiveShade: (shade: ShadesIndex) => void\n}\n\nexport const ShadesList = ({\n activeColor,\n activeShade,\n colors,\n setActiveShade,\n}: ShadesListProps) => {\n const shades: ShadesIndex[] = [1, 2, 3, 4, 5]\n const defaultColor = colors[activeColor.index]\n\n if (\n ['#ffffff', 'transparent', '#000000', '#1e1e1e'].includes(\n activeColor?.color\n ) ||\n !colors[activeColor.index]\n ) {\n return (\n <div className={style.shadowText}>\n <p>No shades available for this color</p>\n </div>\n )\n }\n\n return (\n <div className={style.shadowList}>\n {shades.map((shade) => (\n <ColorButton\n key={shade}\n color={getShadow(defaultColor.color, shade)}\n hotkey={`⇧+${shade}`}\n selected={activeShade === shade}\n onClick={() => setActiveShade(shade)}\n size={'large'}\n />\n ))}\n </div>\n )\n}\n","import { ColorButton } from '../color-button'\nimport { DropDown } from '../drop-down'\nimport style from './color-picker.module.scss'\nimport { defaultColors } from './colors'\nimport { usePalette } from './hooks/usePalette'\nimport { usePaletteControls } from './hooks/usePaletteControls'\nimport { HexInput } from './parts/hex-input/HexInput'\nimport { Palette } from './parts/palette/Palette'\nimport { ShadesList } from './parts/shadow-list/ShadesList'\nimport { ActiveColor, ColorItem, ShadesIndex } from './types'\n\ninterface Props {\n selectedColor?: ActiveColor\n colors: ColorItem[]\n selectedShadeIndex?: ShadesIndex\n changeColor?: (color: ColorItem) => void\n}\n\nexport const ColorPicker = (props: Props) => {\n const { changeColor, colors, selectedColor, selectedShadeIndex = 5 } = props\n const initialColors = defaultColors || colors\n\n const {\n activeColor,\n activeShade,\n palette,\n setActiveColorHandler,\n setActiveShade,\n } = usePalette({ colors: initialColors, selectedColor, selectedShadeIndex })\n\n usePaletteControls({\n palette,\n setActiveColorHandler,\n setActiveShade,\n })\n\n return (\n <DropDown.Root>\n <DropDown.Trigger>\n <ColorButton size=\"medium\" color={activeColor.color} />\n </DropDown.Trigger>\n <DropDown.Content className={style.content}>\n <div className={style.section}>\n <h3 className={style.title}>Colors</h3>\n <Palette\n palette={palette}\n activeColor={activeColor}\n setActiveColorHandler={(color, index: number) => {\n setActiveColorHandler(color, index)\n if (changeColor) changeColor(color)\n }}\n />\n </div>\n <div className={style.section}>\n <h3 className={style.title}>Shades</h3>\n <ShadesList\n colors={initialColors}\n activeShade={activeShade}\n activeColor={activeColor}\n setActiveShade={setActiveShade}\n />\n </div>\n <div className={style.section}>\n <h3 className={style.title}>Hex code</h3>\n <HexInput\n color={activeColor.color}\n onChange={(newHex) => {\n setActiveColorHandler({ ...activeColor, color: newHex })\n if (changeColor) changeColor({ ...activeColor, color: newHex })\n }}\n />\n </div>\n </DropDown.Content>\n </DropDown.Root>\n )\n}\n","export function getPagesArray({\n boundaryCount,\n currentPage,\n siblingCount,\n totalPages,\n}: {\n currentPage: number\n totalPages: number\n boundaryCount: number\n siblingCount: number\n}): Array<number | '...'> {\n const totalDisplayed = boundaryCount * 2 + siblingCount * 2 + 1\n if (totalPages <= totalDisplayed) {\n return Array.from({ length: totalPages }, (_, i) => i + 1)\n }\n\n const pages: Array<number | '...'> = []\n\n const leftBoundary = Array.from({ length: boundaryCount }, (_, i) => i + 1)\n const rightBoundary = Array.from(\n { length: boundaryCount },\n (_, i) => totalPages - boundaryCount + i + 1\n )\n\n const leftSibling = Math.max(currentPage - siblingCount, boundaryCount + 1)\n const rightSibling = Math.min(\n currentPage + siblingCount,\n totalPages - boundaryCount\n )\n\n pages.push(...leftBoundary)\n\n if (leftSibling > boundaryCount + 1) {\n pages.push('...')\n }\n\n for (let page = leftSibling; page <= rightSibling; page++) {\n pages.push(page)\n }\n\n if (rightSibling < totalPages - boundaryCount) {\n pages.push('...')\n }\n\n pages.push(...rightBoundary)\n\n return pages\n}\n","import { ChevronLeft, ChevronRight } from 'lucide-react'\n\nimport { IconButton } from '../icon-button'\nimport style from './pagination.module.scss'\nimport { getPagesArray } from './utils/getPagesArray'\n\ntype Props = {\n currentPage: number\n totalPages: number\n onPageChange: (page: number) => void\n siblingCount?: number\n boundaryCount?: number\n}\n\nexport const Pagination = (props: Props) => {\n const {\n boundaryCount = 2,\n currentPage,\n onPageChange,\n siblingCount = 1,\n totalPages,\n } = props\n\n const pagesToRender = getPagesArray({\n boundaryCount,\n currentPage,\n siblingCount,\n totalPages,\n })\n\n const handlePrev = () => {\n if (currentPage > 1) {\n onPageChange(currentPage - 1)\n }\n }\n\n const handleNext = () => {\n if (currentPage < totalPages) {\n onPageChange(currentPage + 1)\n }\n }\n\n return (\n <div className={style.pagination}>\n <IconButton\n onClick={handlePrev}\n disabled={currentPage === 1}\n icon={<ChevronLeft size={16} />}\n variants=\"transparent\"\n />\n\n <div className={style.pages}>\n {pagesToRender.map((page, index) => {\n if (page === '...') {\n return (\n <span className={style.ellipsis} key={`ellipsis-${index}`}>\n ...\n </span>\n )\n }\n\n return (\n <IconButton\n key={page}\n onClick={() => onPageChange(Number(page))}\n icon={page}\n selected={currentPage === page}\n />\n )\n })}\n </div>\n\n <IconButton\n onClick={handleNext}\n disabled={currentPage === totalPages}\n className={style.nextButton}\n icon={<ChevronRight size={16} />}\n variants=\"transparent\"\n />\n </div>\n )\n}\n","import classNames from 'classnames'\nimport { ChevronDown } from 'lucide-react'\nimport { ReactNode, useEffect, useRef } from 'react'\n\nimport { useSelect } from '../../hooks'\nimport { Button } from '../button'\nimport styles from './select.module.scss'\n\nexport interface SelectItem {\n value: string\n label: string\n imageUrl?: string\n}\n\ninterface SelectProps {\n value: string\n title?: string\n options: SelectItem[]\n position?:\n | 'bottom-right'\n | 'bottom-left'\n | 'top-right'\n | 'top-left'\n | 'top'\n | 'left'\n | 'right'\n | 'bottom'\n slot_left?: ReactNode\n slot_right?: ReactNode\n style?: string\n selectedId?: string\n onSelect?: (value: string) => void\n fullWidth?: boolean\n}\n\nexport const Select = ({\n fullWidth = true,\n onSelect,\n options,\n position = 'bottom-left',\n selectedId,\n slot_left,\n slot_right,\n style,\n title = 'Select',\n value,\n}: SelectProps) => {\n const selectRef = useRef<HTMLDivElement | null>(null)\n\n const {\n handleChange,\n handleKeyDown,\n handleOutsideClick,\n highlightedIndex,\n isOpen,\n selectedItem,\n setIsOpen,\n } = useSelect({ onSelect, options, selectedId })\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n selectRef.current &&\n !selectRef.current.contains(event.target as Node)\n ) {\n handleOutsideClick()\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [handleOutsideClick])\n\n const selectClass = classNames(styles.selectMenu, {\n [styles.positionBottom]: position === 'bottom',\n [styles.positionBottomLeft]: position === 'bottom-left',\n [styles.positionBottomRight]: position === 'bottom-right',\n [styles.positionLeft]: position === 'left',\n [styles.positionRight]: position === 'right',\n [styles.positionTop]: position === 'top',\n [styles.positionTopLeft]: position === 'top-left',\n [styles.positionTopRight]: position === 'top-right',\n })\n\n return (\n <div\n ref={selectRef}\n className={styles.selectContainer}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n >\n <Button\n id={value}\n aria-label=\"Toggle select\"\n variant={'tertiary'}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n type=\"button\"\n onClick={() => setIsOpen(!isOpen)}\n className={classNames(styles.selectButton, style)}\n fullWidth={fullWidth}\n >\n <span>{selectedItem?.label || title}</span>\n <ChevronDown\n size={20}\n className={classNames(styles.selectIcon, {\n [styles.selectIconOpen]: isOpen,\n })}\n />\n </Button>\n {isOpen && (\n <div aria-label=\"Select menu\" className={selectClass}>\n <ul role=\"menu\" aria-labelledby={value} aria-orientation=\"vertical\">\n {options?.map((item, index) => (\n <li\n key={item.value}\n onClick={() => handleChange(item)}\n className={classNames(styles.menuItem, styles.menuItemHover, {\n [styles.menuItemHighlighted]: highlightedIndex === index,\n [styles.menuItemSelected]: selectedItem?.value === item.value,\n })}\n >\n {slot_left}\n <span>{item.label}</span>\n {slot_right}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n )\n}\n","import classNames from 'classnames'\nimport { ReactNode } from 'react'\n\nimport style from './shortcut.module.scss'\n\ninterface GroupProps {\n className?: string\n title?: string\n children: ReactNode\n}\n\nconst Group = (props: GroupProps) => {\n const { children, className, title } = props\n\n return (\n <div className={classNames(style.group, className)}>\n <h4 className={style.groupTitle}>{title}</h4>\n {children}\n </div>\n )\n}\n\ninterface ListProps {\n className?: string\n children: ReactNode\n}\n\nconst List = (props: ListProps) => {\n const { children, className } = props\n\n return <div className={classNames(style.list, className)}>{children}</div>\n}\n\ntype Keys = string[]\ninterface ItemProps {\n className?: string\n description: string\n keysVariants: Keys[]\n}\n\nconst Item = (props: ItemProps) => {\n const { className, description, keysVariants } = props\n\n const mapKeys = (keys: Keys) => {\n return keys.map((key, index) => (\n <span className={style.itemKey} key={index}>\n {key}\n </span>\n ))\n }\n\n return (\n <div className={classNames(style.item, className)}>\n <div className={style.itemDescription}>{description}</div>\n <div className={style.itemKeysVariants}>\n {keysVariants.map((keys, keysVariantsIndex) =>\n keysVariantsIndex === 0 ? (\n mapKeys(keys)\n ) : (\n <>\n <span className={style.itemKeysSeparator}>or</span>\n {mapKeys(keys)}\n </>\n )\n )}\n </div>\n </div>\n )\n}\n\nexport const Shortcut = { Group, Item, List }\n","import classNames from 'classnames'\nimport React, { useRef, useState } from 'react'\n\nimport s from './slider.module.scss'\n\ninterface Props {\n min?: number\n max?: number\n step?: number\n initialValue?: number\n onChange?: (value: number) => void\n}\n\nexport const Slider = (props: Props) => {\n const { initialValue = 50, max = 100, min = 0, onChange, step = 1 } = props\n const [value, setValue] = useState<number>(initialValue)\n const [isFocused, setIsFocused] = useState<boolean>(false)\n const sliderRef = useRef<HTMLInputElement>(null)\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = Number(event.target.value)\n setValue(newValue)\n if (onChange) {\n onChange(newValue)\n }\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'ArrowRight') {\n setValue((prevValue) => Math.min(prevValue + step, max))\n } else if (event.key === 'ArrowLeft') {\n setValue((prevValue) => Math.max(prevValue - step, min))\n }\n }\n\n const handleFocus = () => setIsFocused(true)\n const handleBlur = () => setIsFocused(false)\n\n const progressPercentage = ((value - min) / (max - min)) * 100\n\n return (\n <div className={classNames(s.container, isFocused && s.focused)}>\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n ref={sliderRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={0}\n className={s.slider}\n style={\n {\n '--slider-background-color': '#ddd',\n '--slider-fill-color': '#6965db',\n background: isFocused\n ? `linear-gradient(to right, #363399 ${progressPercentage}%, #ccc ${progressPercentage}%)`\n : `linear-gradient(to right, var(--slider-fill-color) ${progressPercentage}%, var(--slider-background-color) ${progressPercentage}%)`,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nexport default Slider\n","import classNames from 'classnames'\nimport { Computer, Moon, Sun } from 'lucide-react'\nimport { ReactNode } from 'react'\n\nimport { ThemeValue } from '../../features'\nimport { IconButton } from '../icon-button'\nimport style from './theme-switcher.module.scss'\n\ninterface ThemeOption {\n value: ThemeValue\n label: string\n icon: ReactNode\n}\n\ntype Props = {\n theme: ThemeValue\n setTheme: (value: ThemeValue) => void\n}\n\nexport const ThemeSwitcher = ({ setTheme, theme }: Props) => {\n const themes: ThemeOption[] = [\n { icon: <Sun />, label: 'Light', value: 'light' },\n { icon: <Moon />, label: 'Dark', value: 'dark' },\n { icon: <Computer />, label: 'System', value: 'system' },\n ]\n\n return (\n <div className={style.themeSwitcher}>\n {themes.map((themeOption) => (\n <IconButton\n icon={themeOption.icon}\n key={themeOption.value}\n variants={'transparent'}\n onClick={() => setTheme(themeOption.value)}\n aria-label={themeOption.label}\n selected={themeOption.value === theme}\n className={classNames(\n style.themeButton,\n themeOption.value === theme && style.selectedButton\n )}\n />\n ))}\n </div>\n )\n}\n","import classNames from 'classnames'\nimport { HTMLAttributes, ReactNode, useState } from 'react'\n\nimport { Button } from '../button'\nimport { IconButton } from '../icon-button'\nimport style from './toggle-switch.module.scss'\n\ntype Value = string | number | readonly string[] | undefined\n\ninterface OptionI extends HTMLAttributes<HTMLButtonElement> {\n value: Value\n leftSlot?: ReactNode\n rightSlot?: ReactNode\n icon?: ReactNode\n}\n\ninterface Props extends HTMLAttributes<HTMLDivElement> {\n options: OptionI[]\n defaultValue?: Value\n}\n\nexport const ToggleSwitch = (props: Props) => {\n const { defaultValue, options, ...divProps } = props\n const [selectedValue, setSelectedValue] = useState<Value>(\n defaultValue || options[0].value\n )\n\n const onClickHandler = (value: Value) => {\n setSelectedValue(value)\n }\n\n return (\n <div className={classNames(style.toggleSwitch)} {...divProps}>\n {options.map(({ icon, leftSlot, rightSlot, value, ...buttonProps }) => {\n return leftSlot || rightSlot ? (\n <Button\n variant={'text'}\n className={classNames(\n style.button,\n selectedValue === value && style.selected\n )}\n onClick={() => onClickHandler(value)}\n >\n {leftSlot}\n {icon}\n {rightSlot}\n </Button>\n ) : (\n <IconButton\n variants={'transparent'}\n className={classNames(\n style.button,\n selectedValue === value && style.selected\n )}\n onClick={() => onClickHandler(value)}\n icon={icon}\n {...buttonProps}\n />\n )\n })}\n </div>\n )\n}\n","import classNames from 'classnames'\nimport { ReactNode } from 'react'\n\nimport s from './toolbar.module.scss'\n\ninterface RootProps {\n children: ReactNode\n direction?: 'horizontal' | 'vertical'\n className?: string\n}\n\nconst Root = (props: RootProps) => {\n const { children, className, direction = 'horizontal' } = props\n return (\n <div\n className={classNames(s.toolbar, direction && s[direction], className)}\n >\n {children}\n </div>\n )\n}\n\ninterface SeparatorProps {}\n\nconst Separator = ({}: SeparatorProps) => {\n return <div className={s.separator}></div>\n}\n\nexport const Toolbar = { Root, Separator }\n"],"names":["ButtonsGroup","buttons","className","jsx","classNames","styles","button","index","isSingle","isFirst","isLast","jsxs","lightenColor","r","g","b","percentage","getShadow","baseColor","targetIndex","hexToRgb","newR","newG","newB","rgbToHex","hex","normalizedHex","bigint","value","getContrastingColor","hexColor","ColorButton","props","color","disabled","hotkey","selected","size","buttonProps","s","defaultColors","usePalette","colors","selectedColor","selectedShadeIndex","activeShade","setActiveShade","useState","palette","setPalette","updatePalette","activeColor","setActiveColor","handleUpdatePalette","shade","updatedPalette","updateActiveColor","handleSetActiveColor","applyShade","useEffect","useSelect","onSelect","options","selectedId","isOpen","setIsOpen","highlightedIndex","setHighlightedIndex","selectedItem","setSelectedItem","item","newSelectedItem","handleChange","useCallback","handleKeyDown","event","prev","handleOutsideClick","useKeyboardControls","handlers","handler","usePaletteControls","setActiveColorHandler","shadeIndex","pressedKey","updatedColor","IconButton","icon","variants","buttonsProps","HexInput","slot","onChange","placeholder","rest","inputValue","setInputValue","copied","setCopied","isValidHex","newHex","handleCopy","fullHex","style","ClipboardCopy","Palette","ShadesList","shades","defaultColor","ColorPicker","changeColor","initialColors","DropDown","getPagesArray","boundaryCount","currentPage","siblingCount","totalPages","totalDisplayed","_","i","pages","leftBoundary","rightBoundary","leftSibling","rightSibling","page","Pagination","onPageChange","pagesToRender","handlePrev","handleNext","ChevronLeft","ChevronRight","Select","fullWidth","position","slot_left","slot_right","title","selectRef","useRef","handleClickOutside","selectClass","Button","ChevronDown","Group","children","List","Item","description","keysVariants","mapKeys","keys","key","keysVariantsIndex","Fragment","Shortcut","Slider","initialValue","max","min","step","setValue","isFocused","setIsFocused","sliderRef","newValue","prevValue","handleFocus","handleBlur","progressPercentage","ThemeSwitcher","setTheme","theme","themes","Sun","Moon","Computer","themeOption","ToggleSwitch","defaultValue","divProps","selectedValue","setSelectedValue","onClickHandler","leftSlot","rightSlot","Root","direction","Separator","Toolbar"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/buttons-group/ButtonsGroup.tsx","../src/utils/colorUtils.ts","../src/components/color-button/ColorButton.tsx","../src/components/color-picker/colors.ts","../src/components/color-picker/hooks/usePalette.ts","../src/hooks/useSelect.ts","../src/hooks/useKeyboardControls.ts","../src/components/color-picker/hooks/usePaletteControls.ts","../src/components/icon-button/IconButton.tsx","../src/components/color-picker/parts/hex-input/HexInput.tsx","../src/components/color-picker/parts/palette/Palette.tsx","../src/components/color-picker/parts/shadow-list/ShadesList.tsx","../src/components/color-picker/ColorPicker.tsx","../src/components/pagination/utils/getPagesArray.ts","../src/components/pagination/Pagination.tsx","../src/components/select/Select.tsx","../src/components/shortcut/Shortcut.tsx","../src/components/slider/Slider.tsx","../src/components/theme-switcher/ThemeSwitcher.tsx","../src/components/toggle-switch/ToggleSwitch.tsx","../src/components/toolbar/Toolbar.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport { HTMLAttributes, ReactNode } from 'react'\n\nimport styles from './buttons-group.module.scss'\n\ninterface ButtonProps extends HTMLAttributes<HTMLButtonElement> {\n label?: string\n icon?: ReactNode\n onClick?: () => void\n disabled?: boolean\n selected?: boolean\n}\n\ninterface Props {\n buttons: ButtonProps[]\n className?: string\n}\n\nexport const ButtonsGroup = ({ buttons, className }: Props) => {\n return (\n <div className={classNames(styles.buttonGroup, className)}>\n {buttons.map((button, index) => {\n const isSingle = buttons.length === 1\n const isFirst = index === 0 && !isSingle\n const isLast = index === buttons.length - 1 && !isSingle\n\n return (\n <button\n key={index}\n onClick={button.onClick}\n disabled={button.disabled}\n className={classNames(styles.button, {\n [styles.first]: isFirst,\n [styles.last]: isLast,\n [styles.selected]: button.selected,\n [styles.single]: isSingle,\n })}\n {...button}\n >\n {button.icon && button.icon}\n {button.label && (\n <span className={styles.label}>{button.label}</span>\n )}\n </button>\n )\n })}\n </div>\n )\n}\n","const lightenColor = (\n r: number,\n g: number,\n b: number,\n percentage: number\n): [number, number, number] => {\n return [\n Math.min(255, Math.round(r + (255 - r) * percentage)),\n Math.min(255, Math.round(g + (255 - g) * percentage)),\n Math.min(255, Math.round(b + (255 - b) * percentage)),\n ]\n}\n\nexport const getShadow = (baseColor: string, targetIndex: number): string => {\n if (targetIndex === 5) {\n return baseColor\n }\n\n if (\n baseColor === 'transparent' ||\n baseColor === '#ffffff' ||\n baseColor === '#1e1e1e'\n ) {\n return baseColor\n }\n\n const [r, g, b] = hexToRgb(baseColor)\n\n const percentage = (5 - targetIndex) * 0.2\n const [newR, newG, newB] = lightenColor(r, g, b, percentage)\n\n return rgbToHex(newR, newG, newB)\n}\nconst hexToRgb = (hex: string): [number, number, number] => {\n const normalizedHex = hex.replace('#', '')\n const bigint = parseInt(normalizedHex, 16)\n return [(bigint >> 16) & 255, (bigint >> 8) & 255, bigint & 255]\n}\n\nconst rgbToHex = (r: number, g: number, b: number): string => {\n return (\n '#' +\n [r, g, b]\n .map((value) => {\n const hex = value.toString(16)\n return hex.length === 1 ? '0' + hex : hex\n })\n .join('')\n )\n}\n\nexport const getContrastingColor = (hexColor: string): string => {\n if (hexColor === 'transparent') {\n return '#000'\n }\n\n const [r, g, b] = hexToRgb(hexColor)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000\n return brightness > 128 ? '#000' : '#fff'\n}\n","import classNames from 'classnames'\nimport { CSSProperties, HTMLAttributes } from 'react'\n\nimport { getContrastingColor } from '../../utils'\nimport s from './color-button.module.scss'\n\ninterface ColorButtonProps extends HTMLAttributes<HTMLButtonElement> {\n color: string\n disabled?: boolean\n selected?: boolean\n hotkey?: string\n size?: 'small' | 'medium' | 'large'\n}\n\nexport const ColorButton = (props: ColorButtonProps) => {\n const {\n className,\n color,\n disabled,\n hotkey,\n selected,\n size = 'small',\n ...buttonProps\n } = props\n\n return (\n <button\n className={classNames(\n s.colorButton,\n s[size],\n disabled && s.disabled,\n selected && s.selected,\n color === 'transparent' && s.transparent,\n className\n )}\n style={{ '--swatch-color': color } as CSSProperties}\n disabled={disabled}\n {...buttonProps}\n >\n <p className={s.hotkey} style={{ color: getContrastingColor(color) }}>\n {hotkey}\n </p>\n </button>\n )\n}\n","import { ColorItem } from './types'\n\nexport const defaultColors: ColorItem[] = [\n {\n color: 'transparent',\n hotkey: 'q',\n name: 'transparent',\n },\n {\n color: '#ffffff',\n hotkey: 'w',\n name: 'white',\n },\n {\n color: '#343a40',\n hotkey: 'e',\n name: 'gray',\n },\n {\n color: '#1e1e1e',\n hotkey: 'r',\n name: 'black',\n },\n {\n color: '#846358',\n hotkey: 't',\n name: 'bronze',\n },\n {\n color: '#0c8599',\n hotkey: 'a',\n name: 'cyan',\n },\n {\n color: '#1971c2',\n hotkey: 's',\n name: 'blue',\n },\n {\n color: '#6741d9',\n hotkey: 'd',\n name: 'violet',\n },\n {\n color: '#9c36b5',\n hotkey: 'f',\n name: 'grape',\n },\n {\n color: '#c2255c',\n hotkey: 'g',\n name: 'pink',\n },\n {\n color: '#2f9e44',\n hotkey: 'z',\n name: 'green',\n },\n {\n color: '#099268',\n hotkey: 'x',\n name: 'teal',\n },\n {\n color: '#f08c00',\n hotkey: 'c',\n name: 'yellow',\n },\n {\n color: '#e8590c',\n hotkey: 'v',\n name: 'orange',\n },\n {\n color: '#e03131',\n hotkey: 'b',\n name: 'red',\n },\n]\n","import { useEffect, useState } from 'react'\n\nimport { getShadow } from '../../../utils'\nimport { ActiveColor, ColorItem, ShadesIndex } from '../types'\n\ninterface Props {\n selectedShadeIndex: ShadesIndex\n selectedColor?: ActiveColor\n colors: ColorItem[]\n}\n\nexport const usePalette = ({\n colors,\n selectedColor,\n selectedShadeIndex,\n}: Props) => {\n const [activeShade, setActiveShade] = useState(selectedShadeIndex)\n const [palette, setPalette] = useState(() =>\n updatePalette(colors, selectedShadeIndex)\n )\n const [activeColor, setActiveColor] = useState<ActiveColor>(() => ({\n ...(selectedColor ?? { ...colors[0], index: 0 }),\n index: selectedColor?.index ?? 0,\n }))\n\n const handleUpdatePalette = (shade: ShadesIndex): void => {\n const updatedPalette = updatePalette(colors, shade)\n console.log(updatedPalette)\n setPalette(updatedPalette)\n setActiveColor(updateActiveColor(updatedPalette, activeColor))\n }\n\n const handleSetActiveColor = (color: ColorItem, index = 999) => {\n setActiveColor({ ...applyShade(color, activeShade), index })\n }\n\n useEffect(() => {\n handleUpdatePalette(activeShade)\n }, [activeShade, colors, activeColor.index])\n\n return {\n activeColor,\n activeShade,\n palette,\n setActiveColorHandler: handleSetActiveColor,\n setActiveShade,\n }\n}\n\nconst applyShade = (color: ColorItem, shade: ShadesIndex) => ({\n ...color,\n color: getShadow(color.color, shade),\n})\n\nconst updatePalette = (colors: ColorItem[], shade: ShadesIndex) =>\n colors.map((color) => applyShade(color, shade))\n\nconst updateActiveColor = (\n palette: ColorItem[],\n activeColor: ActiveColor\n): ActiveColor => ({\n ...(palette[activeColor.index] ?? palette[0]),\n index: activeColor.index ?? 0,\n})\n","import React, { useCallback, useState, useEffect } from 'react'\n\nimport { SelectItem } from '../components'\n\ninterface UseSelectProps {\n options: SelectItem[]\n onSelect?: (value: string) => void\n selectedId?: string\n}\n\nexport const useSelect = ({\n onSelect,\n options,\n selectedId,\n}: UseSelectProps) => {\n const [isOpen, setIsOpen] = useState(false)\n const [highlightedIndex, setHighlightedIndex] = useState<number | null>(null)\n const [selectedItem, setSelectedItem] = useState<SelectItem | null>(\n selectedId\n ? options.find((item) => item.value === selectedId) || null\n : null\n )\n\n useEffect(() => {\n if (selectedId) {\n const newSelectedItem = options.find((item) => item.value === selectedId)\n setSelectedItem(newSelectedItem || null)\n }\n }, [selectedId, options])\n\n const handleChange = useCallback(\n (item: SelectItem) => {\n setSelectedItem(item)\n if (onSelect) {\n onSelect(item.value)\n }\n setIsOpen(false)\n setHighlightedIndex(null)\n },\n [onSelect]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (!isOpen) {\n if (event.key === 'Enter' || event.key === ' ') {\n setIsOpen(true)\n setHighlightedIndex(0)\n }\n return\n }\n\n switch (event.key) {\n case 'ArrowDown': {\n setHighlightedIndex((prev) =>\n prev === null ? 0 : Math.min(prev + 1, options.length - 1)\n )\n break\n }\n case 'ArrowUp': {\n setHighlightedIndex((prev) =>\n prev === null ? options.length - 1 : Math.max(prev - 1, 0)\n )\n break\n }\n case 'Enter': {\n if (highlightedIndex !== null) {\n handleChange(options[highlightedIndex])\n }\n break\n }\n case 'Escape': {\n setIsOpen(false)\n break\n }\n }\n },\n [isOpen, highlightedIndex, options, handleChange]\n )\n\n const handleOutsideClick = useCallback(() => {\n setIsOpen(false)\n setHighlightedIndex(null)\n }, [])\n\n return {\n handleChange,\n handleKeyDown,\n handleOutsideClick,\n highlightedIndex,\n isOpen,\n selectedItem,\n setIsOpen,\n }\n}\n","import { useEffect } from 'react'\n\ntype KeyHandler = (event: KeyboardEvent) => void\n\nexport const useKeyboardControls = (handlers: KeyHandler[]) => {\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n handlers.forEach((handler) => handler(event))\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => {\n window.removeEventListener('keydown', handleKeyDown)\n }\n }, [handlers])\n}\n","import { useKeyboardControls } from '../../../hooks'\nimport { ColorItem, ShadesIndex } from '../types'\n\ninterface Props {\n palette: ColorItem[]\n setActiveShade: (shade: ShadesIndex) => void\n setActiveColorHandler: (color: ColorItem, index?: number) => void\n}\n\nexport const usePaletteControls = (props: Props) => {\n const { palette, setActiveColorHandler, setActiveShade } = props\n\n const handleShadeKey = (event: KeyboardEvent) => {\n if (event.shiftKey && event.code.startsWith('Digit')) {\n const shadeIndex = parseInt(event.code.replace('Digit', ''), 10)\n if (shadeIndex >= 1 && shadeIndex <= 5) {\n setActiveShade(shadeIndex as ShadesIndex)\n }\n }\n }\n\n const handleColorKey = (event: KeyboardEvent) => {\n const pressedKey = event.key.toLowerCase()\n const index = palette.findIndex(\n (color) => color?.hotkey?.toLowerCase() === pressedKey\n )\n const updatedColor = palette[index]\n\n if (index !== -1) {\n setActiveColorHandler(updatedColor, index)\n }\n }\n useKeyboardControls([handleShadeKey, handleColorKey])\n}\n","import classNames from 'classnames'\nimport { HTMLAttributes, ReactNode } from 'react'\n\nimport s from './icon-button.module.scss'\n\ninterface IconButtonProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, 'className'> {\n className?: string\n variants?: 'primary' | 'secondary' | 'transparent'\n icon: ReactNode\n selected?: boolean\n disabled?: boolean\n}\n\nexport const IconButton = (props: IconButtonProps) => {\n const {\n className,\n disabled,\n icon,\n selected,\n variants = 'primary',\n ...buttonsProps\n } = props\n\n return (\n <button\n className={classNames(\n s.iconButton,\n s[variants],\n selected && s.selected,\n disabled && s.disabled,\n className\n )}\n disabled={disabled}\n {...buttonsProps}\n >\n {icon}\n </button>\n )\n}\n","import classNames from 'classnames'\nimport { ClipboardCopy } from 'lucide-react'\nimport React, { HTMLAttributes, ReactNode, useEffect, useState } from 'react'\n\nimport { IconButton } from '../../../icon-button'\nimport style from './hex-input.module.scss'\n\ntype Props = {\n color: string\n onChange: (color: string) => void\n placeholder?: string\n children?: ReactNode\n} & Omit<HTMLAttributes<HTMLInputElement>, 'onChange'>\n\nexport const HexInput = (props: Props) => {\n const {\n children: slot,\n className,\n color,\n onChange,\n placeholder = 'RRGGBB',\n ...rest\n } = props\n\n const [inputValue, setInputValue] = useState(\n color.startsWith('#') ? color.slice(1) : color\n )\n const [copied, setCopied] = useState(false)\n\n useEffect(() => {\n setInputValue(color.startsWith('#') ? color.slice(1) : color)\n }, [color])\n\n const isValidHex = (value: string) =>\n /^#([0-9A-F]{3}|[0-9A-F]{6})$/i.test('#' + value)\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newHex = event.target.value\n setInputValue(newHex)\n\n if (isValidHex(newHex)) {\n onChange('#' + newHex)\n }\n }\n\n const handleCopy = () => {\n const fullHex = '#' + inputValue\n navigator.clipboard.writeText(fullHex)\n setCopied(true)\n setTimeout(() => setCopied(false), 1000)\n }\n\n return (\n <div className={style.hexInput}>\n <IconButton\n icon={<ClipboardCopy />}\n onClick={handleCopy}\n className={style.copyButton}\n />\n <div className={style.inputContainer}>\n <span className={style.hash}>#</span>\n <input\n {...rest}\n className={classNames(\n style.input,\n isValidHex(inputValue) ? '' : style.error,\n className\n )}\n value={inputValue}\n onChange={handleChange}\n placeholder={placeholder}\n aria-label=\"Hex code\"\n />\n </div>\n {copied && (\n <div className={style.copiedMessage}>\n <span>Copied!</span>\n </div>\n )}\n {slot && <div className={style.slot}>{slot}</div>}\n </div>\n )\n}\n","import { ColorButton } from '../../../color-button'\nimport { ActiveColor, ColorItem } from '../../types'\nimport style from './palette.module.scss'\n\ninterface PaletteProps {\n palette: ColorItem[]\n activeColor: ActiveColor\n setActiveColorHandler: (color: ColorItem, index: number) => void\n}\n\nexport const Palette = ({\n activeColor,\n palette,\n setActiveColorHandler,\n}: PaletteProps) => (\n <div className={style.colorsList}>\n {palette.map((color, index) => (\n <ColorButton\n key={color.name}\n color={color.color}\n hotkey={color.hotkey}\n selected={activeColor.index === index}\n onClick={() => setActiveColorHandler(color, index)}\n size={'large'}\n />\n ))}\n </div>\n)\n","import { getShadow } from '../../../../utils'\nimport { ColorButton } from '../../../color-button'\nimport { ActiveColor, ColorItem, ShadesIndex } from '../../types'\nimport style from './shadow-list.module.scss'\n\ninterface ShadesListProps {\n activeShade: ShadesIndex\n activeColor: ActiveColor\n colors: ColorItem[]\n setActiveShade: (shade: ShadesIndex) => void\n}\n\nexport const ShadesList = ({\n activeColor,\n activeShade,\n colors,\n setActiveShade,\n}: ShadesListProps) => {\n const shades: ShadesIndex[] = [1, 2, 3, 4, 5]\n const defaultColor = colors[activeColor.index]\n\n if (\n ['#ffffff', 'transparent', '#000000', '#1e1e1e'].includes(\n activeColor?.color\n ) ||\n !colors[activeColor.index]\n ) {\n return (\n <div className={style.shadowText}>\n <p>No shades available for this color</p>\n </div>\n )\n }\n\n return (\n <div className={style.shadowList}>\n {shades.map((shade) => (\n <ColorButton\n key={shade}\n color={getShadow(defaultColor.color, shade)}\n hotkey={`⇧+${shade}`}\n selected={activeShade === shade}\n onClick={() => setActiveShade(shade)}\n size={'large'}\n />\n ))}\n </div>\n )\n}\n","import { ColorButton } from '../color-button'\nimport { DropDown } from '../drop-down'\nimport style from './color-picker.module.scss'\nimport { defaultColors } from './colors'\nimport { usePalette } from './hooks/usePalette'\nimport { usePaletteControls } from './hooks/usePaletteControls'\nimport { HexInput } from './parts/hex-input/HexInput'\nimport { Palette } from './parts/palette/Palette'\nimport { ShadesList } from './parts/shadow-list/ShadesList'\nimport { ActiveColor, ColorItem, ShadesIndex } from './types'\n\ninterface Props {\n selectedColor?: ActiveColor\n colors: ColorItem[]\n selectedShadeIndex?: ShadesIndex\n changeColor?: (color: ColorItem) => void\n}\n\nexport const ColorPicker = (props: Props) => {\n const { changeColor, colors, selectedColor, selectedShadeIndex = 5 } = props\n const initialColors = defaultColors || colors\n\n const {\n activeColor,\n activeShade,\n palette,\n setActiveColorHandler,\n setActiveShade,\n } = usePalette({ colors: initialColors, selectedColor, selectedShadeIndex })\n\n usePaletteControls({\n palette,\n setActiveColorHandler,\n setActiveShade,\n })\n\n return (\n <DropDown.Root>\n <DropDown.Trigger>\n <ColorButton size=\"medium\" color={activeColor.color} />\n </DropDown.Trigger>\n <DropDown.Content className={style.content}>\n <div className={style.section}>\n <h3 className={style.title}>Colors</h3>\n <Palette\n palette={palette}\n activeColor={activeColor}\n setActiveColorHandler={(color, index: number) => {\n setActiveColorHandler(color, index)\n if (changeColor) changeColor(color)\n }}\n />\n </div>\n <div className={style.section}>\n <h3 className={style.title}>Shades</h3>\n <ShadesList\n colors={initialColors}\n activeShade={activeShade}\n activeColor={activeColor}\n setActiveShade={setActiveShade}\n />\n </div>\n <div className={style.section}>\n <h3 className={style.title}>Hex code</h3>\n <HexInput\n color={activeColor.color}\n onChange={(newHex) => {\n setActiveColorHandler({ ...activeColor, color: newHex })\n if (changeColor) changeColor({ ...activeColor, color: newHex })\n }}\n />\n </div>\n </DropDown.Content>\n </DropDown.Root>\n )\n}\n","export function getPagesArray({\n boundaryCount,\n currentPage,\n siblingCount,\n totalPages,\n}: {\n currentPage: number\n totalPages: number\n boundaryCount: number\n siblingCount: number\n}): Array<number | '...'> {\n const totalDisplayed = boundaryCount * 2 + siblingCount * 2 + 1\n if (totalPages <= totalDisplayed) {\n return Array.from({ length: totalPages }, (_, i) => i + 1)\n }\n\n const pages: Array<number | '...'> = []\n\n const leftBoundary = Array.from({ length: boundaryCount }, (_, i) => i + 1)\n const rightBoundary = Array.from(\n { length: boundaryCount },\n (_, i) => totalPages - boundaryCount + i + 1\n )\n\n const leftSibling = Math.max(currentPage - siblingCount, boundaryCount + 1)\n const rightSibling = Math.min(\n currentPage + siblingCount,\n totalPages - boundaryCount\n )\n\n pages.push(...leftBoundary)\n\n if (leftSibling > boundaryCount + 1) {\n pages.push('...')\n }\n\n for (let page = leftSibling; page <= rightSibling; page++) {\n pages.push(page)\n }\n\n if (rightSibling < totalPages - boundaryCount) {\n pages.push('...')\n }\n\n pages.push(...rightBoundary)\n\n return pages\n}\n","import { ChevronLeft, ChevronRight } from 'lucide-react'\n\nimport { IconButton } from '../icon-button'\nimport style from './pagination.module.scss'\nimport { getPagesArray } from './utils/getPagesArray'\n\ntype Props = {\n currentPage: number\n totalPages: number\n onPageChange: (page: number) => void\n siblingCount?: number\n boundaryCount?: number\n}\n\nexport const Pagination = (props: Props) => {\n const {\n boundaryCount = 2,\n currentPage,\n onPageChange,\n siblingCount = 1,\n totalPages,\n } = props\n\n const pagesToRender = getPagesArray({\n boundaryCount,\n currentPage,\n siblingCount,\n totalPages,\n })\n\n const handlePrev = () => {\n if (currentPage > 1) {\n onPageChange(currentPage - 1)\n }\n }\n\n const handleNext = () => {\n if (currentPage < totalPages) {\n onPageChange(currentPage + 1)\n }\n }\n\n return (\n <div className={style.pagination}>\n <IconButton\n onClick={handlePrev}\n disabled={currentPage === 1}\n icon={<ChevronLeft size={16} />}\n variants=\"transparent\"\n />\n\n <div className={style.pages}>\n {pagesToRender.map((page, index) => {\n if (page === '...') {\n return (\n <span className={style.ellipsis} key={`ellipsis-${index}`}>\n ...\n </span>\n )\n }\n\n return (\n <IconButton\n key={page}\n onClick={() => onPageChange(Number(page))}\n icon={page}\n selected={currentPage === page}\n />\n )\n })}\n </div>\n\n <IconButton\n onClick={handleNext}\n disabled={currentPage === totalPages}\n className={style.nextButton}\n icon={<ChevronRight size={16} />}\n variants=\"transparent\"\n />\n </div>\n )\n}\n","import classNames from 'classnames'\nimport { ChevronDown } from 'lucide-react'\nimport { ReactNode, useEffect, useRef } from 'react'\n\nimport { useSelect } from '../../hooks'\nimport { Button } from '../button'\nimport styles from './select.module.scss'\n\nexport interface SelectItem {\n value: string\n label: string\n imageUrl?: string\n}\n\ninterface SelectProps {\n value: string\n title?: string\n options: SelectItem[]\n position?:\n | 'bottom-right'\n | 'bottom-left'\n | 'top-right'\n | 'top-left'\n | 'top'\n | 'left'\n | 'right'\n | 'bottom'\n slot_left?: ReactNode\n slot_right?: ReactNode\n style?: string\n selectedId?: string\n onSelect?: (value: string) => void\n fullWidth?: boolean\n}\n\nexport const Select = ({\n fullWidth = true,\n onSelect,\n options,\n position = 'bottom-left',\n selectedId,\n slot_left,\n slot_right,\n style,\n title = 'Select',\n value,\n}: SelectProps) => {\n const selectRef = useRef<HTMLDivElement | null>(null)\n\n const {\n handleChange,\n handleKeyDown,\n handleOutsideClick,\n highlightedIndex,\n isOpen,\n selectedItem,\n setIsOpen,\n } = useSelect({ onSelect, options, selectedId })\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n selectRef.current &&\n !selectRef.current.contains(event.target as Node)\n ) {\n handleOutsideClick()\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [handleOutsideClick])\n\n const selectClass = classNames(styles.selectMenu, {\n [styles.positionBottom]: position === 'bottom',\n [styles.positionBottomLeft]: position === 'bottom-left',\n [styles.positionBottomRight]: position === 'bottom-right',\n [styles.positionLeft]: position === 'left',\n [styles.positionRight]: position === 'right',\n [styles.positionTop]: position === 'top',\n [styles.positionTopLeft]: position === 'top-left',\n [styles.positionTopRight]: position === 'top-right',\n })\n\n return (\n <div\n ref={selectRef}\n className={styles.selectContainer}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n >\n <Button\n id={value}\n aria-label=\"Toggle select\"\n variant={'tertiary'}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n type=\"button\"\n onClick={() => setIsOpen(!isOpen)}\n className={classNames(styles.selectButton, style)}\n fullWidth={fullWidth}\n >\n <span>{selectedItem?.label || title}</span>\n <ChevronDown\n size={20}\n className={classNames(styles.selectIcon, {\n [styles.selectIconOpen]: isOpen,\n })}\n />\n </Button>\n {isOpen && (\n <div aria-label=\"Select menu\" className={selectClass}>\n <ul role=\"menu\" aria-labelledby={value} aria-orientation=\"vertical\">\n {options?.map((item, index) => (\n <li\n key={item.value}\n onClick={() => handleChange(item)}\n className={classNames(styles.menuItem, styles.menuItemHover, {\n [styles.menuItemHighlighted]: highlightedIndex === index,\n [styles.menuItemSelected]: selectedItem?.value === item.value,\n })}\n >\n {slot_left}\n <span>{item.label}</span>\n {slot_right}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n )\n}\n","import classNames from 'classnames'\nimport { ReactNode } from 'react'\n\nimport style from './shortcut.module.scss'\n\ninterface GroupProps {\n className?: string\n title?: string\n children: ReactNode\n}\n\nconst Group = (props: GroupProps) => {\n const { children, className, title } = props\n\n return (\n <div className={classNames(style.group, className)}>\n <h4 className={style.groupTitle}>{title}</h4>\n {children}\n </div>\n )\n}\n\ninterface ListProps {\n className?: string\n children: ReactNode\n}\n\nconst List = (props: ListProps) => {\n const { children, className } = props\n\n return <div className={classNames(style.list, className)}>{children}</div>\n}\n\ntype Keys = string[]\ninterface ItemProps {\n className?: string\n description: string\n keysVariants: Keys[]\n}\n\nconst Item = (props: ItemProps) => {\n const { className, description, keysVariants } = props\n\n const mapKeys = (keys: Keys) => {\n return keys.map((key, index) => (\n <span className={style.itemKey} key={index}>\n {key}\n </span>\n ))\n }\n\n return (\n <div className={classNames(style.item, className)}>\n <div className={style.itemDescription}>{description}</div>\n <div className={style.itemKeysVariants}>\n {keysVariants.map((keys, keysVariantsIndex) =>\n keysVariantsIndex === 0 ? (\n mapKeys(keys)\n ) : (\n <>\n <span className={style.itemKeysSeparator}>or</span>\n {mapKeys(keys)}\n </>\n )\n )}\n </div>\n </div>\n )\n}\n\nexport const Shortcut = { Group, Item, List }\n","import classNames from 'classnames'\nimport React, { useRef, useState } from 'react'\n\nimport s from './slider.module.scss'\n\ninterface Props {\n min?: number\n max?: number\n step?: number\n initialValue?: number\n onChange?: (value: number) => void\n}\n\nexport const Slider = (props: Props) => {\n const { initialValue = 50, max = 100, min = 0, onChange, step = 1 } = props\n const [value, setValue] = useState<number>(initialValue)\n const [isFocused, setIsFocused] = useState<boolean>(false)\n const sliderRef = useRef<HTMLInputElement>(null)\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = Number(event.target.value)\n setValue(newValue)\n if (onChange) {\n onChange(newValue)\n }\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'ArrowRight') {\n setValue((prevValue) => Math.min(prevValue + step, max))\n } else if (event.key === 'ArrowLeft') {\n setValue((prevValue) => Math.max(prevValue - step, min))\n }\n }\n\n const handleFocus = () => setIsFocused(true)\n const handleBlur = () => setIsFocused(false)\n\n const progressPercentage = ((value - min) / (max - min)) * 100\n\n return (\n <div className={classNames(s.container, isFocused && s.focused)}>\n <input\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n ref={sliderRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={0}\n className={s.slider}\n style={\n {\n '--slider-background-color': '#ddd',\n '--slider-fill-color': '#6965db',\n background: isFocused\n ? `linear-gradient(to right, #363399 ${progressPercentage}%, #ccc ${progressPercentage}%)`\n : `linear-gradient(to right, var(--slider-fill-color) ${progressPercentage}%, var(--slider-background-color) ${progressPercentage}%)`,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nexport default Slider\n","import classNames from 'classnames'\nimport { Computer, Moon, Sun } from 'lucide-react'\nimport { ReactNode } from 'react'\n\nimport { IconButton } from '../icon-button'\nimport style from './theme-switcher.module.scss'\n\ninterface ThemeOption {\n value: string\n label: string\n icon: ReactNode\n}\n\ntype Props = {\n theme: string\n setTheme: (value: string) => void\n}\n\nexport const ThemeSwitcher = ({ setTheme, theme }: Props) => {\n const themes: ThemeOption[] = [\n { icon: <Sun />, label: 'Light', value: 'light' },\n { icon: <Moon />, label: 'Dark', value: 'dark' },\n { icon: <Computer />, label: 'System', value: 'system' },\n ]\n\n return (\n <div className={style.themeSwitcher}>\n {themes.map((themeOption) => (\n <IconButton\n icon={themeOption.icon}\n key={themeOption.value}\n variants={'transparent'}\n onClick={() => setTheme(themeOption.value)}\n aria-label={themeOption.label}\n selected={themeOption.value === theme}\n className={classNames(\n style.themeButton,\n themeOption.value === theme && style.selectedButton\n )}\n />\n ))}\n </div>\n )\n}\n","import classNames from 'classnames'\nimport { HTMLAttributes, ReactNode, useState } from 'react'\n\nimport { Button } from '../button'\nimport { IconButton } from '../icon-button'\nimport style from './toggle-switch.module.scss'\n\ntype Value = string | number | readonly string[] | undefined\n\ninterface OptionI extends HTMLAttributes<HTMLButtonElement> {\n value: Value\n leftSlot?: ReactNode\n rightSlot?: ReactNode\n icon?: ReactNode\n}\n\ninterface Props extends HTMLAttributes<HTMLDivElement> {\n options: OptionI[]\n defaultValue?: Value\n}\n\nexport const ToggleSwitch = (props: Props) => {\n const { defaultValue, options, ...divProps } = props\n const [selectedValue, setSelectedValue] = useState<Value>(\n defaultValue || options[0].value\n )\n\n const onClickHandler = (value: Value) => {\n setSelectedValue(value)\n }\n\n return (\n <div className={classNames(style.toggleSwitch)} {...divProps}>\n {options.map(({ icon, leftSlot, rightSlot, value, ...buttonProps }) => {\n return leftSlot || rightSlot ? (\n <Button\n variant={'text'}\n className={classNames(\n style.button,\n selectedValue === value && style.selected\n )}\n onClick={() => onClickHandler(value)}\n >\n {leftSlot}\n {icon}\n {rightSlot}\n </Button>\n ) : (\n <IconButton\n variants={'transparent'}\n className={classNames(\n style.button,\n selectedValue === value && style.selected\n )}\n onClick={() => onClickHandler(value)}\n icon={icon}\n {...buttonProps}\n />\n )\n })}\n </div>\n )\n}\n","import classNames from 'classnames'\nimport { ReactNode } from 'react'\n\nimport s from './toolbar.module.scss'\n\ninterface RootProps {\n children: ReactNode\n direction?: 'horizontal' | 'vertical'\n className?: string\n}\n\nconst Root = (props: RootProps) => {\n const { children, className, direction = 'horizontal' } = props\n return (\n <div\n className={classNames(s.toolbar, direction && s[direction], className)}\n >\n {children}\n </div>\n )\n}\n\ninterface SeparatorProps {}\n\nconst Separator = ({}: SeparatorProps) => {\n return <div className={s.separator}></div>\n}\n\nexport const Toolbar = { Root, Separator }\n"],"names":["ButtonsGroup","buttons","className","jsx","classNames","styles","button","index","isSingle","isFirst","isLast","jsxs","lightenColor","r","g","b","percentage","getShadow","baseColor","targetIndex","hexToRgb","newR","newG","newB","rgbToHex","hex","normalizedHex","bigint","value","getContrastingColor","hexColor","ColorButton","props","color","disabled","hotkey","selected","size","buttonProps","s","defaultColors","usePalette","colors","selectedColor","selectedShadeIndex","activeShade","setActiveShade","useState","palette","setPalette","updatePalette","activeColor","setActiveColor","handleUpdatePalette","shade","updatedPalette","updateActiveColor","handleSetActiveColor","applyShade","useEffect","useSelect","onSelect","options","selectedId","isOpen","setIsOpen","highlightedIndex","setHighlightedIndex","selectedItem","setSelectedItem","item","newSelectedItem","handleChange","useCallback","handleKeyDown","event","prev","handleOutsideClick","useKeyboardControls","handlers","handler","usePaletteControls","setActiveColorHandler","shadeIndex","pressedKey","updatedColor","IconButton","icon","variants","buttonsProps","HexInput","slot","onChange","placeholder","rest","inputValue","setInputValue","copied","setCopied","isValidHex","newHex","handleCopy","fullHex","style","ClipboardCopy","Palette","ShadesList","shades","defaultColor","ColorPicker","changeColor","initialColors","DropDown","getPagesArray","boundaryCount","currentPage","siblingCount","totalPages","totalDisplayed","_","i","pages","leftBoundary","rightBoundary","leftSibling","rightSibling","page","Pagination","onPageChange","pagesToRender","handlePrev","handleNext","ChevronLeft","ChevronRight","Select","fullWidth","position","slot_left","slot_right","title","selectRef","useRef","handleClickOutside","selectClass","Button","ChevronDown","Group","children","List","Item","description","keysVariants","mapKeys","keys","key","keysVariantsIndex","Fragment","Shortcut","Slider","initialValue","max","min","step","setValue","isFocused","setIsFocused","sliderRef","newValue","prevValue","handleFocus","handleBlur","progressPercentage","ThemeSwitcher","setTheme","theme","themes","Sun","Moon","Computer","themeOption","ToggleSwitch","defaultValue","divProps","selectedValue","setSelectedValue","onClickHandler","leftSlot","rightSlot","Root","direction","Separator","Toolbar"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@yourbestsoft/studio-screen-ui-kit",
3
3
  "private": false,
4
- "version": "0.0.2",
4
+ "version": "0.0.3",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",