corestack-ui 0.1.0 → 0.2.1

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 +1 @@
1
- {"version":3,"sources":["../src/components/Button/Button.tsx","../src/components/Autocomplete/useAutocomplete.ts","../src/components/Autocomplete/Autocomplete.tsx","../src/utils/index.ts","../src/styles/index.ts"],"names":["React2","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import * as React from 'react';\r\nimport { ButtonProps } from './Button.types';\r\n\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ variant = 'primary', size = 'md', className, children, ...rest }, ref) => {\r\n const base = 'cs-btn';\r\n const cls = [base, `cs-btn--${variant}`, `cs-btn--${size}`, className].filter(Boolean).join(' ');\r\n return (\r\n <button ref={ref} className={cls} {...rest}>\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = 'Button';\r\n\r\nexport default Button;\r\n","import { useState, useMemo } from 'react';\r\nimport type { AutocompleteOption } from './Autocomplete.types';\r\n\r\nexport function useAutocomplete(options: AutocompleteOption[]) {\r\n const [input, setInput] = useState('');\r\n\r\n const filtered = useMemo(() => {\r\n const q = input.trim().toLowerCase();\r\n if (!q) return options;\r\n return options.filter((o) => o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q));\r\n }, [input, options]);\r\n\r\n return { input, setInput, filtered } as const;\r\n}\r\n","import * as React from 'react';\r\nimport { AutocompleteProps } from './Autocomplete.types';\r\nimport { useAutocomplete } from './useAutocomplete';\r\n\r\nexport const Autocomplete: React.FC<AutocompleteProps> = ({ options, value, onChange, placeholder, renderItem }) => {\r\n const { input, setInput, filtered } = useAutocomplete(options);\r\n\r\n React.useEffect(() => {\r\n if (value === undefined) return;\r\n setInput(value);\r\n }, [value]);\r\n\r\n return (\r\n <div className=\"cs-autocomplete\">\r\n <input\r\n className=\"cs-autocomplete__input\"\r\n value={input}\r\n onChange={(e) => {\r\n setInput(e.target.value);\r\n onChange?.(e.target.value || undefined);\r\n }}\r\n placeholder={placeholder}\r\n />\r\n <ul className=\"cs-autocomplete__list\">\r\n {filtered.map((opt) => (\r\n <li key={opt.value} className=\"cs-autocomplete__item\">\r\n {renderItem ? renderItem(opt) : opt.label}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Autocomplete;\r\n","// Utility helpers\r\nexport const cn = (...parts: Array<string | false | null | undefined>) => parts.filter(Boolean).join(' ');\r\n","// Minimal styles tokens / export\r\nexport const tokens = {\r\n colors: {\r\n primary: '#0366d6'\r\n }\r\n};\r\n\r\nexport default tokens;\r\n"]}
1
+ {"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Autocomplete/hooks/useAutocomplete.ts","../src/components/Autocomplete/hooks/useDropdownPosition.tsx","../src/components/Autocomplete/Autocomplete.tsx","../src/components/TextField/TextField.tsx","../src/styles/index.ts","../src/providers/ThemeProvider.tsx","../src/index.ts"],"names":["useState","React","useMemo","jsx","jsxs","useRef"],"mappings":"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","file":"index.mjs","sourcesContent":["export type ClassValue = string | false | null | undefined;\r\n\r\nexport const cn = (...parts: ClassValue[]) => parts.filter(Boolean).join(\" \");\r\n","import React from \"react\";\r\nimport { cn } from \"../../utils\";\r\nimport type { ButtonProps } from \"./Button.types\";\r\n\r\nconst getParentBackground = (button: HTMLButtonElement) => {\r\n\tconst computedStyle = getComputedStyle(button);\r\n\tlet bgColor = computedStyle.backgroundColor;\r\n\r\n\tconst fallback = \"rgba(0, 0, 0, 0.1)\";\r\n\r\n\ttry {\r\n\t\tconst match = bgColor.match(/\\d+/g);\r\n\t\tif (match && match.length >= 3) {\r\n\t\t\tconst r = Math.max(0, parseInt(match[0]) - 30);\r\n\t\t\tconst g = Math.max(0, parseInt(match[1]) - 30);\r\n\t\t\tconst b = Math.max(0, parseInt(match[2]) - 30);\r\n\t\t\tconst a = match[3] ? parseFloat(match[3]) : 0.3;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tbgColor: `rgba(${r}, ${g}, ${b}, 0.3)`,\r\n\t\t\t};\r\n\t\t}\r\n\t} catch (err) {\r\n\t\tconsole.warn(\"Error parsing background color:\", err);\r\n\t}\r\n\r\n\treturn { bgColor: fallback };\r\n};\r\n\r\nfunction createRipple(event: React.MouseEvent<HTMLButtonElement>) {\r\n\tconst button = event.currentTarget;\r\n\tconst rect = button.getBoundingClientRect();\r\n\r\n\tconst circle = document.createElement(\"span\");\r\n\tconst diameter = Math.max(button.clientWidth, button.clientHeight);\r\n\tconst radius = diameter / 2;\r\n\r\n\tcircle.style.width = circle.style.height = `${diameter}px`;\r\n\tcircle.style.left = `${event.clientX - rect.left - radius}px`;\r\n\tcircle.style.top = `${event.clientY - rect.top - radius}px`;\r\n\tcircle.classList.add(\"ripple\");\r\n\r\n\tconst { bgColor } = getParentBackground(button);\r\n\r\n\tcircle.style.backgroundColor = bgColor;\r\n\r\n\tconst existingRipple = button.getElementsByClassName(\"ripple\")[0];\r\n\tif (existingRipple) existingRipple.remove();\r\n\r\n\tbutton.appendChild(circle);\r\n\r\n\tconst timer = setTimeout(() => {\r\n\t\t// circle.remove();\r\n\t}, 300);\r\n\r\n\treturn () => clearTimeout(timer);\r\n}\r\n\r\nexport function Button({\r\n\tchildren,\r\n\tdisableRipple,\r\n\tisLoading,\r\n\tclassName,\r\n\tonClick,\r\n\t...props\r\n}: ButtonProps) {\r\n\tconst handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\tif (onClick) onClick(e);\r\n\r\n\t\tif (!disableRipple) createRipple(e);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<button {...props} className={cn(className)} onClick={handleClick}>\r\n\t\t\t{isLoading ? (\r\n\t\t\t\t<svg\r\n\t\t\t\t\taria-hidden=\"true\"\r\n\t\t\t\t\tclassName=\"w-4 h-4 m-auto animate-spin dark:text-gray-500 fill-primary-700 dark:fill-white\"\r\n\t\t\t\t\tviewBox=\"0 0 100 101\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\r\n\t\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\r\n\t\t\t\t\t\tfill=\"currentFill\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t) : (\r\n\t\t\t\tchildren\r\n\t\t\t)}\r\n\t\t</button>\r\n\t);\r\n}\r\n","\"use client\";\r\n\r\nimport React, {\r\n\tuseCallback,\r\n\tuseEffect,\r\n\tuseMemo,\r\n\tuseRef,\r\n\tuseState,\r\n} from \"react\";\r\nimport {\r\n\tAutocompleteChangeReason,\r\n\tAutocompleteProps,\r\n} from \"../Autocomplete.types\";\r\n\r\nexport default function useAutocomplete<T>(props: AutocompleteProps<T>) {\r\n\tconst {\r\n\t\toptions,\r\n\t\tvalue,\r\n\t\tdefaultValue,\r\n\t\tonChange,\r\n\t\tgetOptionLabel,\r\n\t\tisOptionEqualToValue,\r\n\t\tmultiple,\r\n\t\tdisabled,\r\n\t\tdisableCloseOnSelect,\r\n\t} = props;\r\n\r\n\tconst getLabel = useCallback(\r\n\t\t(option: T) => {\r\n\t\t\tif (getOptionLabel) return getOptionLabel(option);\r\n\r\n\t\t\treturn String(option);\r\n\t\t},\r\n\t\t[getOptionLabel]\r\n\t);\r\n\r\n\tconst isEqual = useCallback(\r\n\t\t(option: T, v: T) =>\r\n\t\t\tisOptionEqualToValue\r\n\t\t\t\t? isOptionEqualToValue(option, v)\r\n\t\t\t\t: getLabel(option) === getLabel(v),\r\n\t\t[isOptionEqualToValue, getLabel]\r\n\t);\r\n\r\n\tconst isControlled = value !== undefined;\r\n\r\n\tconst [internalValue, setInternalValue] = useState<T | T[] | null>(() => {\r\n\t\tif (defaultValue !== undefined) return defaultValue;\r\n\t\treturn multiple ? [] : null;\r\n\t});\r\n\r\n\tconst currentValue = (isControlled ? value : internalValue) as T | T[] | null;\r\n\r\n\tconst [open, setOpen] = useState(false);\r\n\r\n\tconst [inputValue, setInputValue] = useState(() => {\r\n\t\tif (multiple) return \"\";\r\n\t\treturn currentValue && !Array.isArray(currentValue)\r\n\t\t\t? getLabel(currentValue as T)\r\n\t\t\t: \"\";\r\n\t});\r\n\r\n\tconst [activeIndex, setActiveIndex] = useState(-1);\r\n\r\n\tconst rootRef = useRef<HTMLDivElement | null>(null);\r\n\r\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n\tconst listboxRef = useRef<HTMLUListElement | null>(null);\r\n\r\n\tconst isFocusedRef = useRef(false);\r\n\r\n\tconst blurTimeoutRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n\tconst filteredOptions = useMemo(() => {\r\n\t\tconst query = inputValue.trim().toLowerCase();\r\n\r\n\t\tif (!query) return options;\r\n\r\n\t\treturn options.filter((option) =>\r\n\t\t\tgetLabel(option).toLowerCase().includes(query)\r\n\t\t);\r\n\t}, [options, inputValue, getLabel]);\r\n\r\n\tconst selectedValues = useMemo(() => {\r\n\t\tif (multiple)\r\n\t\t\treturn (Array.isArray(currentValue) ? currentValue : []) as T[];\r\n\r\n\t\treturn currentValue && !Array.isArray(currentValue)\r\n\t\t\t? [currentValue as T]\r\n\t\t\t: [];\r\n\t}, [currentValue, multiple]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (multiple) return;\r\n\r\n\t\tif (!isFocusedRef.current) {\r\n\t\t\tconst next =\r\n\t\t\t\tcurrentValue && !Array.isArray(currentValue)\r\n\t\t\t\t\t? getLabel(currentValue as T)\r\n\t\t\t\t\t: \"\";\r\n\r\n\t\t\tsetInputValue(next);\r\n\t\t}\r\n\t}, [currentValue, getLabel, multiple]);\r\n\r\n\tconst updateValue = useCallback(\r\n\t\t(\r\n\t\t\tevent: React.SyntheticEvent,\r\n\t\t\tnextValue: T | T[] | null,\r\n\t\t\treason: AutocompleteChangeReason\r\n\t\t) => {\r\n\t\t\tif (!isControlled) {\r\n\t\t\t\tsetInternalValue(nextValue);\r\n\t\t\t}\r\n\t\t\tif (onChange) {\r\n\t\t\t\tif (multiple) {\r\n\t\t\t\t\t(onChange as any)(event, nextValue as T[], reason);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t(onChange as any)(event, nextValue as T | null, reason);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t[isControlled, onChange, multiple]\r\n\t);\r\n\r\n\tconst selectOption = useCallback(\r\n\t\t(event: React.SyntheticEvent, option: T) => {\r\n\t\t\t// Clear any pending blur timeout\r\n\t\t\tif (blurTimeoutRef.current) {\r\n\t\t\t\tclearTimeout(blurTimeoutRef.current);\r\n\t\t\t\tblurTimeoutRef.current = null;\r\n\t\t\t}\r\n\r\n\t\t\tif (multiple) {\r\n\t\t\t\tconst existing = Array.isArray(currentValue) ? currentValue : [];\r\n\t\t\t\tconst isSelected = existing.some((item) => isEqual(item, option));\r\n\t\t\t\tconst next = isSelected\r\n\t\t\t\t\t? existing.filter((item) => !isEqual(item, option))\r\n\t\t\t\t\t: [...existing, option];\r\n\t\t\t\tupdateValue(event, next, isSelected ? \"removeOption\" : \"selectOption\");\r\n\t\t\t\tsetInputValue(\"\");\r\n\t\t\t\tsetActiveIndex(-1);\r\n\t\t\t\tif (disableCloseOnSelect) setOpen(true);\r\n\t\t\t\telse setOpen(false);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateValue(event, option, \"selectOption\");\r\n\t\t\tsetInputValue(getLabel(option));\r\n\t\t\tif (!disableCloseOnSelect) {\r\n\t\t\t\tsetOpen(false);\r\n\t\t\t}\r\n\t\t\tsetActiveIndex(-1);\r\n\t\t},\r\n\t\t[currentValue, getLabel, isEqual, multiple, updateValue]\r\n\t);\r\n\r\n\tconst clearValue = useCallback(\r\n\t\t(event: React.SyntheticEvent) => {\r\n\t\t\tupdateValue(event, multiple ? [] : null, \"clear\");\r\n\t\t\tsetInputValue(\"\");\r\n\t\t\tsetActiveIndex(-1);\r\n\t\t},\r\n\t\t[multiple, updateValue]\r\n\t);\r\n\r\n\tconst removeOption = useCallback(\r\n\t\t(event: React.SyntheticEvent, option: T) => {\r\n\t\t\tif (!multiple) return;\r\n\r\n\t\t\tconst existing = Array.isArray(currentValue) ? currentValue : [];\r\n\t\t\tconst next = existing.filter((item) => !isEqual(item, option));\r\n\t\t\tupdateValue(event, next, \"removeOption\");\r\n\t\t\tsetActiveIndex(-1);\r\n\t\t},\r\n\t\t[currentValue, isEqual, multiple, updateValue]\r\n\t);\r\n\r\n\tconst setInputFocused = useCallback((focused: boolean) => {\r\n\t\tisFocusedRef.current = focused;\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!open || activeIndex < 0 || !listboxRef.current) return;\r\n\t\tconst activeId = `autocomplete-option-${activeIndex}`;\r\n\t\tconst el = listboxRef.current.querySelector<HTMLElement>(`#${activeId}`);\r\n\t\tif (el) {\r\n\t\t\tel.scrollIntoView({ block: \"nearest\" });\r\n\t\t}\r\n\t}, [open, activeIndex]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst handleClickOutside = (event: MouseEvent) => {\r\n\t\t\tconst root = rootRef.current;\r\n\t\t\tconst list = listboxRef.current;\r\n\t\t\tif (!root) return;\r\n\r\n\t\t\t// Don't close if click is inside root or inside the listbox (supports portal)\r\n\t\t\tif (root.contains(event.target as Node) || list?.contains(event.target as Node)) return;\r\n\r\n\t\t\tsetOpen(false);\r\n\r\n\t\t\tsetActiveIndex(-1);\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\r\n\t\treturn () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n\t}, []);\r\n\r\n\tconst handleInputChange = useCallback(\r\n\t\t(event: React.ChangeEvent<HTMLInputElement>) => {\r\n\t\t\tsetInputValue(event.target.value);\r\n\t\t\tsetOpen(true);\r\n\t\t\tsetActiveIndex(0);\r\n\r\n\t\t\tprops.onChange?.(event, event.target.value as any, \"selectOption\");\r\n\t\t},\r\n\t\t[setInputValue, setOpen, setActiveIndex]\r\n\t);\r\n\r\n\tconst handleInputFocus = useCallback(\r\n\t\t(event: React.FocusEvent<HTMLInputElement>) => {\r\n\t\t\tif (!!disabled) return;\r\n\r\n\t\t\t// Clear any pending blur timeout\r\n\t\t\tif (blurTimeoutRef.current) {\r\n\t\t\t\tclearTimeout(blurTimeoutRef.current);\r\n\t\t\t\tblurTimeoutRef.current = null;\r\n\t\t\t}\r\n\r\n\t\t\tsetInputFocused(true);\r\n\t\t\tsetOpen(true);\r\n\t\t\tif (filteredOptions.length > 0) {\r\n\t\t\t\tsetActiveIndex(0);\r\n\t\t\t}\r\n\r\n\t\t\tprops.onFocus?.(event);\r\n\t\t},\r\n\t\t[\r\n\t\t\t!!disabled,\r\n\t\t\tsetInputFocused,\r\n\t\t\tsetOpen,\r\n\t\t\tfilteredOptions.length,\r\n\t\t\tsetActiveIndex,\r\n\t\t]\r\n\t);\r\n\r\n\tconst handleInputBlur = useCallback(\r\n\t\t(event: React.FocusEvent<HTMLInputElement>) => {\r\n\t\t\tsetInputFocused(false);\r\n\r\n\t\t\t// Clear any existing blur timeout\r\n\t\t\tif (blurTimeoutRef.current) {\r\n\t\t\t\tclearTimeout(blurTimeoutRef.current);\r\n\t\t\t}\r\n\r\n\t\t\t// Close dropdown after a delay to allow clicks on options to register\r\n\t\t\tblurTimeoutRef.current = setTimeout(() => {\r\n\t\t\t\tconst root = rootRef.current;\r\n\t\t\t\tif (!root) return;\r\n\r\n\t\t\t\t// If focus moved inside the component (e.g., to listbox), keep open\r\n\t\t\t\tif (root.contains(document.activeElement)) return;\r\n\r\n\t\t\t\tsetOpen(false);\r\n\t\t\t\tsetActiveIndex(-1);\r\n\t\t\t\tblurTimeoutRef.current = null;\r\n\t\t\t}, 150);\r\n\r\n\t\t\tprops.onBlur?.(event);\r\n\t\t},\r\n\t\t[setInputFocused, setOpen, setActiveIndex]\r\n\t);\r\n\r\n\tconst handleToggleClick = useCallback(\r\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\r\n\t\t\tif (!!disabled) return;\r\n\t\t\tevent.preventDefault();\r\n\t\t\tif (open) {\r\n\t\t\t\tsetOpen(false);\r\n\t\t\t\tsetActiveIndex(-1);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsetOpen(true);\r\n\t\t\tsetActiveIndex(0);\r\n\t\t\tinputRef.current?.focus();\r\n\t\t},\r\n\t\t[!!disabled, open, setActiveIndex, setOpen, inputRef]\r\n\t);\r\n\r\n\tconst handleKeyDown = useCallback(\r\n\t\t(event: React.KeyboardEvent<HTMLInputElement>) => {\r\n\t\t\tif (!!disabled) return;\r\n\t\t\tif (event.key === \"ArrowDown\") {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tsetOpen(true);\r\n\t\t\t\tsetActiveIndex((prev) =>\r\n\t\t\t\t\tMath.min(prev + 1, filteredOptions.length - 1)\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (event.key === \"ArrowUp\") {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tsetOpen(true);\r\n\t\t\t\tsetActiveIndex((prev) => Math.max(prev - 1, 0));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (event.key === \"Enter\") {\r\n\t\t\t\tif (!open || activeIndex < 0) return;\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tconst option = filteredOptions[activeIndex];\r\n\t\t\t\tif (option) {\r\n\t\t\t\t\tselectOption(event, option);\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (event.key === \"Escape\") {\r\n\t\t\t\tevent.preventDefault();\r\n\t\t\t\tsetOpen(false);\r\n\t\t\t\tsetActiveIndex(-1);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t},\r\n\t\t[\r\n\t\t\tactiveIndex,\r\n\t\t\tfilteredOptions,\r\n\t\t\t!!disabled,\r\n\t\t\topen,\r\n\t\t\tselectOption,\r\n\t\t\tsetActiveIndex,\r\n\t\t\tsetOpen,\r\n\t\t]\r\n\t);\r\n\r\n\treturn {\r\n\t\trootRef,\r\n\t\tinputRef,\r\n\t\tlistboxRef,\r\n\t\topen,\r\n\t\tinputValue,\r\n\t\tactiveIndex,\r\n\t\tfilteredOptions,\r\n\t\tselectedValues,\r\n\t\tgetLabel,\r\n\t\tisEqual,\r\n\t\tselectOption,\r\n\t\tclearValue,\r\n\t\tremoveOption,\r\n\t\tdisabled: !!disabled,\r\n\t\thandleToggleClick,\r\n\t\thandleInputChange,\r\n\t\thandleInputFocus,\r\n\t\thandleInputBlur,\r\n\t\tsetOpen,\r\n\t\thandleKeyDown,\r\n\t};\r\n}\r\n","import { RefObject, useLayoutEffect, useState } from \"react\";\r\n\r\nexport type AnchorElement = Element | null | (() => Element | null) | undefined;\r\n\r\nexport interface DropdownPosition {\r\n\ttop: number;\r\n\tleft: number;\r\n\twidth: number;\r\n\tplacement: \"bottom\" | \"top\";\r\n}\r\n\r\nconst MARGIN = 16;\r\n\r\nexport default function useDropdownPosition(\r\n\tanchor: AnchorElement,\r\n\tmenuRef: RefObject<HTMLElement | null>\r\n): { position: DropdownPosition | null } {\r\n\tconst [position, setPosition] = useState<DropdownPosition | null>(null);\r\n\r\n\tuseLayoutEffect(() => {\r\n\t\tlet mounted = true;\r\n\t\tlet ro: ResizeObserver | null = null;\r\n\t\tlet rafId: number | null = null;\r\n\t\tlet stopPolling = false;\r\n\r\n\t\tfunction getAnchor(): Element | null {\r\n\t\t\tif (!anchor) return null;\r\n\t\t\treturn typeof anchor === \"function\" ? anchor() : (anchor ?? null);\r\n\t\t}\r\n\r\n\t\tfunction calc(menu: HTMLElement, a: Element): DropdownPosition {\r\n\t\t\tconst aRect = a.getBoundingClientRect();\r\n\t\t\tconst mRect = menu.getBoundingClientRect();\r\n\r\n\t\t\tconst vw = window.innerWidth;\r\n\t\t\tconst vh = window.innerHeight;\r\n\r\n\t\t\tlet placement: DropdownPosition[\"placement\"] = \"bottom\";\r\n\t\t\tlet top = Math.round(aRect.bottom);\r\n\r\n\t\t\tif (aRect.bottom + mRect.height + MARGIN > vh) {\r\n\t\t\t\tplacement = \"top\";\r\n\t\t\t\ttop = Math.round(aRect.top - (mRect.height + MARGIN));\r\n\t\t\t}\r\n\r\n\t\t\tlet left = Math.round(aRect.left);\r\n\t\t\tconst width = Math.round(aRect.width);\r\n\r\n\t\t\tif (left + width + MARGIN > vw) {\r\n\t\t\t\tleft = Math.max(MARGIN, vw - width - MARGIN);\r\n\t\t\t}\r\n\r\n\t\t\treturn { top, left, width, placement };\r\n\t\t}\r\n\r\n\t\tfunction scheduleUpdate(menu: HTMLElement, a: Element) {\r\n\t\t\tif (rafId != null) cancelAnimationFrame(rafId);\r\n\t\t\trafId = requestAnimationFrame(() => {\r\n\t\t\t\tif (!mounted) return;\r\n\t\t\t\tconst next = calc(menu, a);\r\n\t\t\t\tsetPosition((prev) => {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!prev ||\r\n\t\t\t\t\t\tprev.top !== next.top ||\r\n\t\t\t\t\t\tprev.left !== next.left ||\r\n\t\t\t\t\t\tprev.width !== next.width ||\r\n\t\t\t\t\t\tprev.placement !== next.placement\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\treturn next;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn prev;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction setupForMenu(menu: HTMLElement) {\r\n\t\t\tconst a = getAnchor();\r\n\t\t\tif (!a) return;\r\n\r\n\t\t\t// Initial synchronous calculation before paint\r\n\t\t\tconst initial = calc(menu, a);\r\n\t\t\tif (mounted)\r\n\t\t\t\tsetPosition((prev) => {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!prev ||\r\n\t\t\t\t\t\tprev.top !== initial.top ||\r\n\t\t\t\t\t\tprev.left !== initial.left ||\r\n\t\t\t\t\t\tprev.width !== initial.width ||\r\n\t\t\t\t\t\tprev.placement !== initial.placement\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\treturn initial;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn prev;\r\n\t\t\t\t});\r\n\r\n\t\t\t// observe size changes of menu\r\n\t\t\tro = new ResizeObserver(() => scheduleUpdate(menu, a));\r\n\t\t\tro.observe(menu);\r\n\t\t}\r\n\r\n\t\t// Wait until menuRef.current is available. Do not include menuRef.current in deps.\r\n\t\tlet cleanupFn: (() => void) | null = null;\r\n\t\t(function waitForMenu() {\r\n\t\t\tconst menu = menuRef.current;\r\n\t\t\tif (menu) {\r\n\t\t\t\tsetupForMenu(menu);\r\n\t\t\t\t// attach global listeners\r\n\t\t\t\tconst onScroll = () => {\r\n\t\t\t\t\tconst a = getAnchor();\r\n\t\t\t\t\tif (!a || !menu) return;\r\n\t\t\t\t\tscheduleUpdate(menu, a);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst onResize = () => {\r\n\t\t\t\t\tconst a = getAnchor();\r\n\t\t\t\t\tif (!a || !menu) return;\r\n\t\t\t\t\tscheduleUpdate(menu, a);\r\n\t\t\t\t};\r\n\r\n\t\t\t\twindow.addEventListener(\"scroll\", onScroll, true);\r\n\t\t\t\twindow.addEventListener(\"resize\", onResize);\r\n\r\n\t\t\t\t// cleanup handler closure\r\n\t\t\t\tcleanupFn = () => {\r\n\t\t\t\t\tif (ro) {\r\n\t\t\t\t\t\tro!.disconnect();\r\n\t\t\t\t\t\tro = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (rafId != null) {\r\n\t\t\t\t\t\tcancelAnimationFrame(rafId);\r\n\t\t\t\t\t\trafId = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twindow.removeEventListener(\"scroll\", onScroll, true);\r\n\t\t\t\t\twindow.removeEventListener(\"resize\", onResize);\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (stopPolling) return;\r\n\t\t\trequestAnimationFrame(waitForMenu);\r\n\t\t})();\r\n\r\n\t\treturn () => {\r\n\t\t\tmounted = false;\r\n\t\t\tstopPolling = true;\r\n\t\t\tif (cleanupFn) cleanupFn();\r\n\t\t};\r\n\t}, [anchor, menuRef]);\r\n\r\n\treturn { position };\r\n}\r\n","\"use client\";\r\n\r\nimport React, { useMemo, useRef } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { Button } from \"../Button\";\r\nimport { AutocompleteProps, RenderInputParams } from \"./Autocomplete.types\";\r\nimport useAutocomplete from \"./hooks/useAutocomplete\";\r\nimport useDropdownPosition from \"./hooks/useDropdownPosition\";\r\n\r\nexport function Autocomplete<T>(props: AutocompleteProps<T>) {\r\n\tconst {\r\n\t\trenderInput,\r\n\t\tloading,\r\n\t\tdisabled,\r\n\t\tmultiple,\r\n\t\tplaceholder,\r\n\t\tclassName,\r\n\t\trenderOption,\r\n\t} = props;\r\n\r\n\tconst {\r\n\t\trootRef,\r\n\t\tinputRef,\r\n\t\tlistboxRef,\r\n\t\topen,\r\n\t\tsetOpen,\r\n\t\tinputValue,\r\n\t\tactiveIndex,\r\n\t\tfilteredOptions,\r\n\t\tselectedValues,\r\n\t\tgetLabel,\r\n\t\tisEqual,\r\n\t\tselectOption,\r\n\t\tclearValue,\r\n\t\tremoveOption,\r\n\t\tdisabled: isDisabled,\r\n\t\thandleToggleClick,\r\n\t\thandleInputChange,\r\n\t\thandleInputFocus,\r\n\t\thandleInputBlur,\r\n\t\thandleKeyDown,\r\n\t} = useAutocomplete<T>(props);\r\n\r\n\tconst onRemove = React.useCallback(\r\n\t\t(event: React.MouseEvent<HTMLButtonElement>, index: number) => {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tconst option = selectedValues[index];\r\n\t\t\tif (!option || !removeOption) return;\r\n\t\t\tremoveOption(event, option);\r\n\t\t},\r\n\t\t[removeOption, selectedValues]\r\n\t);\r\n\r\n\tconst listboxId = useMemo(\r\n\t\t() => `autocomplete-listbox-${Math.random().toString(36).slice(2, 9)}`,\r\n\t\t[]\r\n\t);\r\n\r\n\tconst startAdornment = useMemo(() => {\r\n\t\tif (!multiple || selectedValues.length === 0) return undefined;\r\n\t\treturn (\r\n\t\t\t<div className=\"flex flex-wrap gap-1\">\r\n\t\t\t\t{selectedValues.map((option, index) => (\r\n\t\t\t\t\t<span\r\n\t\t\t\t\t\tkey={`${getLabel(option)}-${index}`}\r\n\t\t\t\t\t\tclassName=\"inline-flex gap-2 items-center rounded-full bg-slate-100 px-2 py-0.5 text-xs text-slate-700\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{getLabel(option)}\r\n\r\n\t\t\t\t\t\t<Button type=\"button\" className=\"w-4\" onClick={(event) => onRemove(event, index)}>\r\n\t\t\t\t\t\t\t<svg focusable=\"false\" aria-hidden=\"true\" viewBox=\"0 0 24 24\">\r\n\t\t\t\t\t\t\t\t<path d=\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"></path>\r\n\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t</Button>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t))}\r\n\t\t\t</div>\r\n\t\t);\r\n\t}, [getLabel, multiple, onRemove, selectedValues]);\r\n\r\n\tconst endAdornment = useMemo(() => {\r\n\t\treturn (\r\n\t\t\t<div className=\"flex items-center absolute right-3\">\r\n\t\t\t\t{inputValue ? (\r\n\t\t\t\t\t<Button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tclassName={`text-xs text-slate-500 hover:text-slate-700 transition hover:bg-gray-25 size-5 rounded-full flex items-center justify-center ${disabled ? \"hover:bg-transparent\" : \"\"}`}\r\n\t\t\t\t\t\tonClick={(event) => {\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t\tclearValue(event);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\taria-label=\"Clear\"\r\n\t\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<svg\r\n\t\t\t\t\t\t\tfocusable=\"false\"\r\n\t\t\t\t\t\t\taria-hidden=\"true\"\r\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\t\t\tclassName=\"size-4\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\r\n\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t) : null}\r\n\r\n\t\t\t\t<Button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclassName={`flex items-center text-slate-500 hover:text-slate-700 transition hover:bg-gray-25 size-5 justify-center rounded-full ${disabled ? \"hover:bg-transparent\" : \"\"}`}\r\n\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\r\n\t\t\t\t\tonClick={handleToggleClick}\r\n\t\t\t\t\taria-label={open ? \"Close\" : \"Open\"}\r\n\t\t\t\t\tdisabled={isDisabled}\r\n\t\t\t\t>\r\n\t\t\t\t\t<span\r\n\t\t\t\t\t\tclassName={` transition-transform ${open ? \"rotate-180\" : \"rotate-0\"}`}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<svg\r\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\t\t\tviewBox=\"0 0 12 12\"\r\n\t\t\t\t\t\t\twidth=\"12\"\r\n\t\t\t\t\t\t\theight=\"12\"\r\n\t\t\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<path\r\n\t\t\t\t\t\t\t\td=\"M1.5 3.5l4.5 4.5 4.5-4.5\"\r\n\t\t\t\t\t\t\t\tstroke=\"#1E4678\"\r\n\t\t\t\t\t\t\t\tstroke-width=\"1.667\"\r\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\r\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</Button>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}, [clearValue, handleToggleClick, inputValue, isDisabled, loading, open]);\r\n\r\n\tconst inputParams: RenderInputParams = useMemo(\r\n\t\t() => ({\r\n\t\t\t...props,\r\n\t\t\toptions: undefined,\r\n\t\t\tgetOptionLabel: undefined,\r\n\t\t\tref: inputRef,\r\n\t\t\trole: \"combobox\",\r\n\t\t\t\"aria-autocomplete\": \"list\",\r\n\t\t\t\"aria-controls\": open ? listboxId : undefined,\r\n\t\t\t\"aria-expanded\": open,\r\n\t\t\t\"aria-activedescendant\":\r\n\t\t\t\topen && activeIndex >= 0\r\n\t\t\t\t\t? `autocomplete-option-${activeIndex}`\r\n\t\t\t\t\t: undefined,\r\n\t\t\tautocomplete: \"off\",\r\n\t\t\tvalue: inputValue,\r\n\t\t\tplaceholder,\r\n\t\t\tonChange: handleInputChange,\r\n\t\t\tonKeyDown: handleKeyDown,\r\n\t\t\tonFocus: handleInputFocus,\r\n\t\t\tonBlur: handleInputBlur,\r\n\r\n\t\t\tdisabled: isDisabled,\r\n\t\t\tInputProps: {\r\n\t\t\t\tendAdornment,\r\n\t\t\t\tclassName: \"min-h-[40px]\",\r\n\t\t\t},\r\n\t\t}),\r\n\t\t[\r\n\t\t\tactiveIndex,\r\n\t\t\tendAdornment,\r\n\t\t\thandleInputBlur,\r\n\t\t\thandleInputChange,\r\n\t\t\thandleInputFocus,\r\n\t\t\thandleKeyDown,\r\n\t\t\tinputValue,\r\n\t\t\tisDisabled,\r\n\t\t\tlistboxId,\r\n\t\t\topen,\r\n\t\t\tplaceholder,\r\n\t\t\tstartAdornment,\r\n\t\t]\r\n\t);\r\n\r\n\tif (!renderInput) {\r\n\t\treturn <p>Render Input Prop Must be pass </p>;\r\n\t}\r\n\r\n\tconst wrapperRef = useRef<HTMLDivElement | null>(null);\r\n\r\n\tconst { position } = useDropdownPosition(() => rootRef.current, listboxRef);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tref={rootRef}\r\n\t\t\tonClick={() => {\r\n\t\t\t\tif (!open) {\r\n\t\t\t\t\tsetOpen(true);\r\n\t\t\t\t}\r\n\t\t\t}}\r\n\t\t\tclassName={`${className} [&_.input-container]:pe-[54px] [&_.input-container]:gap-0`}\r\n\t\t>\r\n\t\t\t<div className=\"flex flex-col gap-2\">\r\n\t\t\t\t{startAdornment}\r\n\t\t\t\t{renderInput(inputParams)}\r\n\t\t\t</div>\r\n\r\n\t\t\t{open || (open && loading)\r\n\t\t\t\t? (() => {\r\n\t\t\t\t\t\tconst portalNode = document.body;\r\n\t\t\t\t\t\tconst dropdown = (\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tref={wrapperRef}\r\n\t\t\t\t\t\t\t\tclassName=\"p-1.5 rounded-md border border-slate-200 bg-white shadow-lg\"\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\tposition: \"fixed\",\r\n\t\t\t\t\t\t\t\t\ttop: position ? position.top : 0,\r\n\t\t\t\t\t\t\t\t\tleft: position ? position.left : 0,\r\n\t\t\t\t\t\t\t\t\twidth: position ? position.width : undefined,\r\n\t\t\t\t\t\t\t\t\tminWidth: position ? position.width : undefined,\r\n\t\t\t\t\t\t\t\t\tzIndex: 1300,\r\n\t\t\t\t\t\t\t\t\tvisibility: position ? \"visible\" : \"hidden\",\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t<ul\r\n\t\t\t\t\t\t\t\t\tid={listboxId}\r\n\t\t\t\t\t\t\t\t\tref={listboxRef}\r\n\t\t\t\t\t\t\t\t\trole=\"listbox\"\r\n\t\t\t\t\t\t\t\t\tclassName=\"max-h-60 sm:max-h-[325px] w-full overflow-auto \"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{loading ? (\r\n\t\t\t\t\t\t\t\t\t\t<svg\r\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\r\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-4 h-4 m-auto animate-spin dark:text-gray-500 fill-primary-700 dark:fill-white\"\r\n\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 100 101\"\r\n\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<path\r\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t<path\r\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tfill=\"currentFill\"\r\n\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t\t\t\t) : filteredOptions.length === 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t<li className=\"px-3 py-2 text-sm text-slate-500\">\r\n\t\t\t\t\t\t\t\t\t\t\tNo Options\r\n\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\tfilteredOptions.map((option, index) => {\r\n\t\t\t\t\t\t\t\t\t\t\tconst selected = selectedValues.some((item) =>\r\n\t\t\t\t\t\t\t\t\t\t\t\tisEqual(item, option)\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\tconst optionProps: React.HTMLAttributes<HTMLLIElement> = {\r\n\t\t\t\t\t\t\t\t\t\t\t\tid: `autocomplete-option-${index}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\trole: \"option\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"aria-selected\": selected,\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cursor-pointer px-3 py-2 text-sm text-slate-700 hover:bg-slate-100 \" +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(index === activeIndex ? \"bg-slate-100 \" : \"\") +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(selected ? \"bg-slate-50 font-medium text-slate-900\" : \"\"),\r\n\t\t\t\t\t\t\t\t\t\t\t\tonMouseDown: (event) => event.preventDefault(),\r\n\t\t\t\t\t\t\t\t\t\t\t\tonClick: (event) => selectOption(event, option),\r\n\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn renderOption ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\trenderOption(optionProps, option, { selected, index })\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`${getLabel(option)}-${index}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{...optionProps}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{getLabel(option)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\treturn portalNode\r\n\t\t\t\t\t\t\t? ReactDOM.createPortal(dropdown, portalNode)\r\n\t\t\t\t\t\t\t: dropdown;\r\n\t\t\t\t\t})()\r\n\t\t\t\t: null}\r\n\t\t</div>\r\n\t);\r\n}\r\n","\"use client\";\r\nimport React, { forwardRef, useId, useMemo, useState } from \"react\";\r\nimport { TextFieldProps } from \"./TextField.types\";\r\nimport { cn } from \"@/utils\";\r\n\r\nexport const TextField = forwardRef<\r\n\tHTMLInputElement | HTMLTextAreaElement,\r\n\tTextFieldProps\r\n>(\r\n\t(\r\n\t\t{\r\n\t\t\tvalue,\r\n\t\t\tdefaultValue,\r\n\t\t\tonChange,\r\n\t\t\tonBlur,\r\n\t\t\tonFocus,\r\n\t\t\tplaceholder,\r\n\t\t\tlabel,\r\n\t\t\thelperText,\r\n\t\t\terror = false,\r\n\t\t\tdisabled = false,\r\n\t\t\trequired = false,\r\n\t\t\tmultiline = false,\r\n\t\t\trows,\r\n\t\t\ttype = \"text\",\r\n\t\t\tname,\r\n\t\t\tid,\r\n\t\t\tfullWidth = false,\r\n\t\t\tsize = \"medium\",\r\n\t\t\tvariant = \"outlined\",\r\n\t\t\tInputProps,\r\n\t\t\tclassName,\r\n\t\t\t...rest\r\n\t\t},\r\n\t\tref\r\n\t) => {\r\n\t\tconst InputComponent =\r\n\t\t\tInputProps?.inputComponent ?? (multiline ? \"textarea\" : \"input\");\r\n\t\tconst reactId = useId();\r\n\t\tconst inputId = id ?? `textfield-${reactId}`;\r\n\t\tconst isControlled = value !== undefined;\r\n\t\tconst [focused, setFocused] = useState(false);\r\n\r\n\t\tconst handleChange: React.ChangeEventHandler<\r\n\t\t\tHTMLInputElement | HTMLTextAreaElement\r\n\t\t> = (event) => {\r\n\t\t\tonChange?.(event);\r\n\t\t};\r\n\r\n\t\tconst handleFocus: React.FocusEventHandler<\r\n\t\t\tHTMLInputElement | HTMLTextAreaElement\r\n\t\t> = (event) => {\r\n\t\t\tsetFocused(true);\r\n\t\t\tonFocus?.(event);\r\n\t\t};\r\n\r\n\t\tconst handleBlur: React.FocusEventHandler<\r\n\t\t\tHTMLInputElement | HTMLTextAreaElement\r\n\t\t> = (event) => {\r\n\t\t\tsetFocused(false);\r\n\t\t\tonBlur?.(event);\r\n\t\t};\r\n\r\n\t\tconst sizeClasses = useMemo(() => {\r\n\t\t\tif (size === \"small\") {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tcontainer: `${multiline ? \"min-h-10\" : \"h-[45px]\"} text-sm`,\r\n\t\t\t\t\tlabelRest: \"text-base mb-1\",\r\n\t\t\t\t\tpadding: \"py-2.5 px-[14px]\",\r\n\t\t\t\t\tgap: \"gap-1.5\",\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tcontainer: `${multiline ? \"min-h-10\" : \"h-[45px]\"} text-sm`,\r\n\t\t\t\tlabelRest: \"text-base mb-1\",\r\n\t\t\t\tpadding: \"py-2.5 px-[14px]\",\r\n\t\t\t\tgap: \"gap-1.5\",\r\n\t\t\t};\r\n\t\t}, [size]);\r\n\r\n\t\tconst baseLabelColor = disabled ? \"text-gray-400\" : \"text-gray-900\";\r\n\r\n\t\tconst fieldBackground = variant === \"filled\" ? \"bg-gray-50\" : \"bg-white\";\r\n\t\tconst helperColor = error ? \"text-error-500\" : \"text-gray-500\";\r\n\t\tconst withStartAdornment = Boolean(InputProps?.startAdornment);\r\n\t\tconst withEndAdornment = Boolean(InputProps?.endAdornment);\r\n\t\tconst placeholderText = placeholder;\r\n\t\tconst inputValueProps = isControlled ? { value } : { defaultValue };\r\n\r\n\t\tconst outlinedBorder = cn(\r\n\t\t\t\"border transition-colors duration-200 rounded-lg\",\r\n\t\t\tdisabled\r\n\t\t\t\t? \"border-gray-200\"\r\n\t\t\t\t: error\r\n\t\t\t\t\t? \"!border-error-500\"\r\n\t\t\t\t\t: \"border-gray-300\",\r\n\t\t\t!disabled && !error && \"group-hover:border-gray-400\",\r\n\t\t\tfocused && !error && \"border-primary-500\",\r\n\t\t\tfocused && error && \"!border-gray-500\"\r\n\t\t);\r\n\r\n\t\tconst filledBorder = cn(\r\n\t\t\t\"border-b transition-colors duration-200\",\r\n\t\t\tdisabled\r\n\t\t\t\t? \"border-gray-200\"\r\n\t\t\t\t: error\r\n\t\t\t\t\t? \"!border-b-error-500\"\r\n\t\t\t\t\t: \"border-gray-300\",\r\n\t\t\t!disabled && !error && \"group-hover:border-gray-400\",\r\n\t\t\tfocused && !error && \"border-primary-500 border-b-2\",\r\n\t\t\tfocused && error && \"!border-b-error-500 border-b-2\"\r\n\t\t);\r\n\r\n\t\tconst rootClasses = cn(\r\n\t\t\t\"flex flex-col\",\r\n\t\t\tfullWidth ? \"w-full\" : \"w-auto\",\r\n\t\t\tclassName\r\n\t\t);\r\n\t\tconst containerClasses = cn(\r\n\t\t\t\"relative w-full group\",\r\n\t\t\tmultiline ? \"items-start\" : \"items-center\",\r\n\t\t\t\"flex\",\r\n\t\t\tsizeClasses.container,\r\n\t\t\tsizeClasses.padding,\r\n\t\t\tsizeClasses.gap,\r\n\t\t\tfieldBackground,\r\n\t\t\tdisabled && \"bg-gray-100\",\r\n\t\t\tvariant === \"outlined\" && outlinedBorder\r\n\t\t);\r\n\r\n\t\tconst inputClasses = cn(\r\n\t\t\t\"peer w-full bg-transparent outline-none text-gray-900 text-base\",\r\n\t\t\tdisabled && \"!text-[#00000061] cursor-not-allowed\",\r\n\t\t\ttype === \"search\" && \"appearance-none\",\r\n\t\t\twithStartAdornment && \"pl-0\",\r\n\t\t\twithEndAdornment && \"pr-0\",\r\n\t\t\tmultiline && \"min-h-[96px] resize-none\",\r\n\t\t\tInputProps?.className\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div className={rootClasses}>\r\n\t\t\t\t{label && (\r\n\t\t\t\t\t<label\r\n\t\t\t\t\t\thtmlFor={inputId}\r\n\t\t\t\t\t\tclassName={cn(\r\n\t\t\t\t\t\t\t\"mb-1 font-medium\",\r\n\t\t\t\t\t\t\tsizeClasses.labelRest,\r\n\t\t\t\t\t\t\tbaseLabelColor,\r\n\t\t\t\t\t\t\tdisabled && \"cursor-not-allowed\"\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{label}\r\n\t\t\t\t\t\t{required && (\r\n\t\t\t\t\t\t\t<span className=\"text-error-500 font-bold ps-1\">*</span>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</label>\r\n\t\t\t\t)}\r\n\t\t\t\t<div className={`${containerClasses} input-container`}>\r\n\t\t\t\t\t{InputProps?.startAdornment && (\r\n\t\t\t\t\t\t<span className=\"flex items-center text-gray-500\">\r\n\t\t\t\t\t\t\t{InputProps.startAdornment}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<InputComponent\r\n\t\t\t\t\t\tref={ref as React.Ref<HTMLElement>}\r\n\t\t\t\t\t\tid={inputId}\r\n\t\t\t\t\t\tname={name}\r\n\t\t\t\t\t\ttype={multiline ? undefined : type}\r\n\t\t\t\t\t\trows={multiline ? rows : undefined}\r\n\t\t\t\t\t\tplaceholder={placeholderText}\r\n\t\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\t\trequired={required}\r\n\t\t\t\t\t\taria-invalid={error || undefined}\r\n\t\t\t\t\t\taria-required={required || undefined}\r\n\t\t\t\t\t\tclassName={inputClasses}\r\n\t\t\t\t\t\tonChange={handleChange}\r\n\t\t\t\t\t\tonFocus={handleFocus}\r\n\t\t\t\t\t\tonBlur={handleBlur}\r\n\t\t\t\t\t\t{...inputValueProps}\r\n\t\t\t\t\t\t{...rest}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{InputProps?.endAdornment && (\r\n\t\t\t\t\t\t<span className=\"flex items-center text-gray-500\">\r\n\t\t\t\t\t\t\t{InputProps.endAdornment}\r\n\t\t\t\t\t\t</span>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{variant !== \"outlined\" && (\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\taria-hidden\r\n\t\t\t\t\t\t\tclassName={cn(\"absolute inset-x-0 bottom-0\", filledBorder)}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</div>\r\n\t\t\t\t{helperText && (\r\n\t\t\t\t\t<p className={cn(\"mt-1 text-sm\", helperColor)}>{helperText}</p>\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nTextField.displayName = \"TextField\";\r\n\r\n","export const tokens = {\r\n\tcolors: {\r\n\t\tprimary: \"#1E40AF\",\r\n\t\tsecondary: \"#9333EA\",\r\n\t\tsuccess: \"#16A34A\",\r\n\t\tdanger: \"#DC2626\",\r\n\t\twarning: \"#F59E0B\",\r\n\t\tbackground: \"#FFFFFF\",\r\n\t\tsurface: \"#F3F4F6\",\r\n\t\tborder: \"#D1D5DB\",\r\n\t\ttextPrimary: \"#111827\",\r\n\t\ttextSecondary: \"#6B7280\",\r\n\t},\r\n\tfonts: {\r\n\t\tbody: \"Inter, system-ui, sans-serif\",\r\n\t\theading: \"Inter, system-ui, sans-serif\",\r\n\t\tmonospace: \"Menlo, monospace\",\r\n\t\tsize: {\r\n\t\t\tsm: \"12px\",\r\n\t\t\tmd: \"16px\",\r\n\t\t\tlg: \"20px\",\r\n\t\t\txl: \"24px\",\r\n\t\t},\r\n\t\tweight: {\r\n\t\t\tregular: 400,\r\n\t\t\tmedium: 500,\r\n\t\t\tbold: 700,\r\n\t\t},\r\n\t},\r\n\tspacing: {\r\n\t\txs: \"4px\",\r\n\t\tsm: \"8px\",\r\n\t\tmd: \"16px\",\r\n\t\tlg: \"24px\",\r\n\t\txl: \"32px\",\r\n\t},\r\n};\r\n\r\nexport default tokens;\r\n","import tokens from \"@/styles\";\r\nimport React, { createContext, useContext } from \"react\";\r\n\r\nconst defaultTheme = tokens;\r\n\r\nconst ThemeContext = createContext(defaultTheme);\r\n\r\nexport const ThemeProvider = ({\r\n theme,\r\n children,\r\n}: {\r\n theme?: Partial<typeof defaultTheme>;\r\n children: React.ReactNode;\r\n}) => {\r\n const mergedTheme = {\r\n ...defaultTheme,\r\n ...theme,\r\n colors: {\r\n ...defaultTheme.colors,\r\n ...theme?.colors,\r\n },\r\n spacing: {\r\n ...defaultTheme.spacing,\r\n ...theme?.spacing,\r\n },\r\n };\r\n\r\n return (\r\n <ThemeContext.Provider value={mergedTheme}>\r\n {children}\r\n </ThemeContext.Provider>\r\n );\r\n};\r\n\r\nexport const useTheme = () => useContext(ThemeContext);\r\n","export * from \"./components\";\r\nexport * from \"./hooks\";\r\nexport * from \"./providers\";\r\nexport * from \"./styles\";\r\nexport * from \"./types\";\r\nexport * from \"./utils\";\r\nexport const cssFile = \"./styles.css\";\r\n"]}
package/package.json CHANGED
@@ -1,56 +1,59 @@
1
1
  {
2
- "name": "corestack-ui",
3
- "version": "0.1.0",
4
- "private": false,
5
- "description": "A minimal, production-ready React + TypeScript component library",
6
- "main": "dist/index.cjs.js",
7
- "module": "dist/index.esm.js",
8
- "types": "dist/index.d.ts",
9
- "files": [
10
- "dist"
11
- ],
12
- "exports": {
13
- ".": {
14
- "import": "./dist/index.esm.js",
15
- "require": "./dist/index.cjs.js",
16
- "types": "./dist/index.d.ts"
17
- },
18
- "./*": "./dist/*"
19
- },
20
- "sideEffects": false,
21
- "peerDependencies": {
22
- "react": "^17 || ^18",
23
- "react-dom": "^17 || ^18"
24
- },
25
- "scripts": {
26
- "clean": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"",
27
- "build": "tsup",
28
- "dev": "tsup --watch",
29
- "prepare": "npm run build",
30
- "publish": "npm publish --access public"
31
- },
32
- "homepage": "https://github.com/username/corestack-ui#readme",
33
- "bugs": {
34
- "url": "https://github.com/username/corestack-ui/issues"
35
- },
36
- "repository": {
37
- "type": "git",
38
- "url": "https://github.com/ProNabowy/corestack-ui"
39
- },
40
- "keywords": [
41
- "react",
42
- "components",
43
- "ui",
44
- "typescript"
45
- ],
46
- "license": "MIT",
47
- "engines": {
48
- "node": ">=14"
49
- },
50
- "devDependencies": {
51
- "@types/react": "^19.2.14",
52
- "@types/react-dom": "^19.2.3",
53
- "tsup": "^8.5.1",
54
- "typescript": "^5.9.3"
55
- }
2
+ "name": "corestack-ui",
3
+ "version": "0.2.1",
4
+ "private": false,
5
+ "description": "A minimal, production-ready React + TypeScript component library",
6
+ "main": "dist/index.cjs.js",
7
+ "module": "dist/index.esm.js",
8
+ "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.mjs",
16
+ "require": "./dist/index.js"
17
+ },
18
+ "./styles.css": "./dist/index.css"
19
+ },
20
+ "sideEffects": false,
21
+ "peerDependencies": {
22
+ "react": "^17 || ^18 || ^19",
23
+ "react-dom": "^17 || ^18 || ^19",
24
+ "tailwindcss": "^4.1.11"
25
+ },
26
+ "scripts": {
27
+ "clean": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"",
28
+ "build": "tsup && node scripts/copy-styles.js",
29
+ "dev": "tsup --watch",
30
+ "prepare": "npm run build",
31
+ "publish": "npm publish --access public"
32
+ },
33
+ "homepage": "https://github.com/username/corestack-ui#readme",
34
+ "bugs": {
35
+ "url": "https://github.com/username/corestack-ui/issues"
36
+ },
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/ProNabowy/corestack-ui"
40
+ },
41
+ "keywords": [
42
+ "react",
43
+ "components",
44
+ "ui",
45
+ "typescript"
46
+ ],
47
+ "license": "MIT",
48
+ "engines": {
49
+ "node": ">=14"
50
+ },
51
+ "devDependencies": {
52
+ "@types/react": "^19.2.14",
53
+ "prettier": "^3.3.2",
54
+ "prettier-plugin-organize-imports": "^4.2.0",
55
+ "@types/react-dom": "^19.2.3",
56
+ "tsup": "^8.5.1",
57
+ "typescript": "^5.9.3"
58
+ }
56
59
  }