@woobee/ui 0.2.3 → 0.3.0
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.
- package/dist/index.js +52 -53
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +52 -53
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/classNames.ts","../src/components/Button.tsx","../src/components/Tag.tsx","../src/components/TagGroup.tsx","../src/components/Tabs.tsx","../src/components/Toggle.tsx","../src/components/Loading.tsx","../src/components/CheckboxList.tsx","../src/contexts/ModalContext.tsx","../src/components/Transition.tsx","../src/components/Modal/Footer.tsx","../src/components/Modal/index.tsx","../src/components/ConfirmationBox.tsx","../src/components/Drawer.tsx","../src/components/SortIcon.tsx","../src/components/InlinePrompt.tsx","../src/components/Breadcrumb.tsx","../src/components/Tab.tsx","../src/components/ButtonGroup.tsx","../src/components/HTML.tsx","../src/components/Table/Table.tsx","../src/components/Table/Thead.tsx","../src/components/Table/Tr.tsx","../src/components/Table/Th.tsx","../src/components/Table/Tbody.tsx","../src/components/Table/Td.tsx","../src/components/Form/Input.tsx","../src/components/Form/Label.tsx","../src/components/Form/Select.tsx","../src/components/Form/SelectInput.tsx","../src/components/Form/Textarea.tsx","../src/components/Form/TagInput.tsx","../src/components/module/NoData.tsx","../src/contexts/ThemeContext.tsx","../src/components/module/ThemeToggle.tsx","../src/utils/debounce.ts","../src/hooks/useDebounce.ts","../src/hooks/useResizeListener.ts","../src/contexts/PopoverContext.tsx","../src/components/module/Popover.tsx","../src/utils/format.ts","../src/components/module/Dragger.tsx","../src/components/module/ExcelTable.tsx","../src/components/module/Coverflow.tsx","../src/components/module/DataGrid/CurrencyDisplay.tsx","../src/components/module/DataGrid/DataTable.tsx","../src/components/module/DataGrid/NumberDisplay.tsx","../src/components/module/DataGrid/ChangeDisplay.tsx","../src/components/module/DataGrid/DateTimeDisplay.tsx","../src/components/module/DataGrid/ThumbnailDisplay.tsx","../src/components/module/DataGrid/index.tsx"],"names":["jsxs","jsx","forwardRef","useRef","useEffect","Fragment","createContext","useContext","useState","reducer","useReducer","ReactCSSTransition","React","createPortal","DefaultLink","useImperativeHandle","useCallback","useMemo","B","updated"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Builds a className string from an object mapping class names to boolean values.\n *\n * @example\n * classNames({ \"text-sm\": true, \"font-bold\": isActive, \"hidden\": false })\n * // => \"text-sm font-bold\" (if isActive is true)\n */\nexport function classNames(classNameHash: Record<string, boolean | undefined | null>): string {\n return Object.entries(classNameHash)\n .filter(([, value]) => !!value)\n .map(([key]) => key)\n .join(' ')\n}\n\n/**\n * Converts a space-separated className string into an object mapping each\n * class name to `true`. Useful for spreading into a `classNames()` call.\n *\n * @example\n * classNameObject(\"text-sm font-bold\")\n * // => { \"text-sm\": true, \"font-bold\": true }\n */\nexport function classNameObject(classNameString?: string | null): Record<string, boolean> {\n if (!classNameString) return {}\n return classNameString.split(' ').reduce<Record<string, boolean>>((prev, className) => {\n if (className) {\n prev[className] = true\n }\n return prev\n }, {})\n}\n","import React, { type ReactNode, type ButtonHTMLAttributes } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'form-input' | 'flat'\nexport type ButtonSize = 'small' | 'medium' | 'big' | 'huge'\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n children?: ReactNode\n onClick?: () => void\n placeholder?: ReactNode\n variant?: ButtonVariant\n size?: ButtonSize\n className?: string\n type?: 'button' | 'submit' | 'reset'\n loading?: boolean\n disabled?: boolean\n leftIcon?: ReactNode\n rightIcon?: ReactNode\n compact?: boolean\n darkMode?: boolean\n}\n\nexport default function Button({\n children,\n onClick,\n placeholder = null,\n variant = 'primary',\n size = 'medium',\n className = '',\n type = 'button',\n loading = false,\n disabled = false,\n leftIcon = null,\n rightIcon = null,\n compact = false,\n darkMode = false,\n ...props\n}: ButtonProps) {\n return (\n <button\n type={type}\n onClick={onClick}\n disabled={disabled || loading}\n className={classNames({\n 'items-center justify-center rounded-lg focus:outline-none focus:ring-0 disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed shadow-sm': true,\n 'relative': !!leftIcon || !!rightIcon,\n 'px-2.5 py-1.5 text-xs': size === 'small',\n 'px-4 py-2 text-sm': size === 'medium',\n 'px-5 py-3 text-base': size === 'big',\n 'px-5 py-3 text-lg font-medium': size === 'huge',\n '!px-1 !py-0.5': compact,\n 'border bg-brown-500 border-transparent text-white': variant === 'primary' && !darkMode,\n 'dark:bg-primary-500 dark:hover:bg-primary-600 dark:text-black': variant === 'primary' && !darkMode,\n 'border bg-primary-500 hover:bg-primary-600 border-transparent text-black': variant === 'primary' && !!darkMode,\n 'text-gray-700 bg-white border border-gray-300 hover:text-gray-500': variant === 'secondary' && !darkMode,\n 'text-charcoal-100 bg-charcoal-800 hover:bg-charcoal-700 border border-charcoal-700': variant === 'secondary' && !!darkMode,\n '!rounded-md text-left w-full text-gray-700 bg-white border border-gray-200 hover:bg-gray-50 hover:text-gray-500': variant === 'form-input' && !darkMode,\n '!rounded-md text-left w-full text-charcoal-100 bg-charcoal-800 hover:bg-charcoal-700 border border-charcoal-700': variant === 'form-input' && !!darkMode,\n 'dark:bg-charcoal-800 dark:hover:bg-charcoal-700 dark:text-charcoal-100 dark:border-charcoal-700': (variant === 'secondary' || variant === 'form-input') && !darkMode,\n 'hover:text-brown-500 !shadow-none': variant === 'flat' && !darkMode,\n 'dark:text-charcoal-100 dark:hover:text-primary-500': variant === 'flat' && !darkMode,\n 'text-charcoal-100 hover:text-primary-500 !shadow-none': variant === 'flat' && !!darkMode,\n '!text-gray-300 hover:!text-gray-400': !children && !darkMode,\n 'dark:!text-charcoal-400': !children && !darkMode,\n '!text-charcoal-400': !children && !!darkMode,\n ...classNameObject(className),\n })}\n {...props}\n >\n {loading && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3\">\n <svg className=\"w-4 h-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </div>\n )}\n {!loading && leftIcon && (\n <span className=\"absolute inset-y-0 left-0 flex items-center pl-3\">\n {leftIcon}\n </span>\n )}\n <span>{children || placeholder}</span>\n {!loading && rightIcon && (\n <span className=\"absolute inset-y-0 right-0 flex items-center pr-3\">\n {rightIcon}\n </span>\n )}\n </button>\n )\n}\n","import React, { type ReactNode, type CSSProperties } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\nimport Button from './Button'\n\nexport type TagSize = 'small' | 'medium'\n\nexport interface TagProps {\n children?: ReactNode\n className?: string\n onRemove?: () => void\n color?: string\n style?: CSSProperties\n size?: TagSize\n}\n\nexport default function Tag({\n children,\n className = '',\n onRemove,\n color,\n style,\n size = 'medium',\n}: TagProps) {\n const customStyle = color ? { backgroundColor: color, ...style } : style\n\n return (\n <span\n className={classNames({\n 'inline-flex items-center rounded font-medium whitespace-nowrap': true,\n 'bg-cream-200 dark:bg-charcoal-700 text-gray-800 dark:text-gray-200': !color,\n 'text-white': !!color,\n // medium size\n 'text-sm': size === 'medium',\n 'pl-2.5 pr-1 py-0.5 space-x-1': size === 'medium' && !!onRemove,\n 'px-2 py-0.5': size === 'medium' && !onRemove,\n // small size\n 'text-xs': size === 'small',\n 'pl-2 pr-0.5 py-0.5 space-x-0.5': size === 'small' && !!onRemove,\n 'px-1.5 py-0.5': size === 'small' && !onRemove,\n ...classNameObject(className),\n })}\n style={customStyle}\n >\n <span>{children}</span>\n {onRemove && (\n <Button\n variant=\"flat\"\n compact={true}\n size={size === 'small' ? 'small' : 'medium'}\n className=\"!text-red-500 hover:text-red-700 !px-0.5\"\n onClick={onRemove}\n >\n <span>×</span>\n </Button>\n )}\n </span>\n )\n}\n","import React from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\nimport Tag from './Tag'\n\nexport interface TagItem {\n id?: string\n name: string\n color?: string\n}\n\nexport interface TagGroupProps {\n tags?: TagItem[]\n onRemove?: (tag: TagItem) => void\n placeholder?: string\n className?: string\n}\n\nexport default function TagGroup({\n tags = [],\n onRemove,\n placeholder = 'No tags selected',\n className = '',\n}: TagGroupProps) {\n return (\n <div\n className={classNames({\n 'flex flex-wrap h-11 gap-1.5 items-center': true,\n ...classNameObject(className),\n })}\n >\n {tags.length > 0 ? (\n tags.map((tag) => (\n <Tag\n key={tag.id || tag.name}\n color={tag.color}\n onRemove={onRemove ? () => onRemove(tag) : undefined}\n >\n {tag.name}\n </Tag>\n ))\n ) : (\n placeholder && (\n <span className=\"text-gray-300 dark:text-charcoal-400 text-sm flex items-center\">\n {placeholder}\n </span>\n )\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport interface TabOption {\n id: string\n label: string\n}\n\nexport interface TabsProps {\n value: string\n onChange: (id: string) => void\n options?: TabOption[]\n className?: string\n}\n\nexport default function Tabs({\n value,\n onChange,\n options = [\n { id: 'point', label: 'Point' },\n { id: 'percentage', label: 'Percentage' },\n ],\n className = '',\n}: TabsProps) {\n return (\n <div\n className={classNames({\n 'inline-flex rounded-lg bg-cream-50 dark:bg-charcoal-800/90 dark:backdrop-filter dark:backdrop-blur-sm overflow-hidden text-xs p-1 space-x-0.5 rounded-xl': true,\n ...classNameObject(className),\n })}\n >\n {options.map((option) => (\n <button\n key={option.id}\n className={classNames({\n 'px-3 py-2 transition-colors rounded-lg': true,\n 'bg-white text-brown-500 dark:text-primary-500 dark:bg-charcoal-600': value === option.id,\n 'hover:text-brown-500 dark:text-charcoal-300 dark:hover:text-primary-500': value !== option.id,\n })}\n onClick={() => onChange(option.id)}\n >\n {option.label}\n </button>\n ))}\n </div>\n )\n}\n","import React, { useEffect, useRef, forwardRef, type Ref } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport type ToggleSize = 'small' | 'medium'\n\nexport interface ToggleProps {\n listening?: boolean\n size?: ToggleSize\n name?: string\n value: boolean\n onChange: (value: boolean) => void\n className?: string\n}\n\nconst Toggle = forwardRef<HTMLSpanElement, ToggleProps>(\n ({ listening, size, name, value, onChange, className }, ref) => {\n const internalRef = useRef<HTMLSpanElement>(null)\n const spanRef = (ref as React.RefObject<HTMLSpanElement>) || internalRef\n\n useEffect(() => {\n if (listening && spanRef && 'current' in spanRef && spanRef.current && value !== null) {\n ;(spanRef.current as HTMLSpanElement & { value: boolean }).value = value\n }\n }, [value, listening, spanRef])\n\n return (\n <span\n ref={spanRef}\n role=\"checkbox\"\n aria-checked={value}\n tabIndex={0}\n onClick={() => onChange(!value)}\n className={classNames({\n 'relative inline-block flex-shrink-0 border-2 border-transparent rounded-full transition-colors ease-in-out duration-200 focus:outline-none focus:shadow-outline': true,\n 'h-6 w-11': !size || size === 'medium',\n 'h-4 w-7': size === 'small',\n 'bg-brown-500 dark:bg-primary-500': value,\n 'bg-gray-200 dark:bg-charcoal-300': !value,\n 'cursor-pointer': !(className || '').includes('cursor-'),\n ...classNameObject(className),\n })}\n >\n <span\n aria-hidden=\"true\"\n className={classNames({\n 'rounded-full bg-white shadow transform transition ease-in-out duration-200': true,\n 'inline-block h-5 w-5': !size || size === 'medium',\n 'block h-3 w-3': size === 'small',\n 'translate-x-5': value && (!size || size === 'medium'),\n 'translate-x-0': !value,\n 'translate-x-3': value && size === 'small',\n })}\n ></span>\n </span>\n )\n }\n)\n\nToggle.displayName = 'Toggle'\n\nexport default Toggle\n","import React from 'react'\nimport { classNames } from '../utils/classNames'\n\nexport type LoadingLayout = 'fixed' | 'fill'\n\nexport interface LoadingProps {\n title?: string\n layout?: LoadingLayout\n className?: string\n spinClassName?: string\n spinSizeClassName?: string\n}\n\nexport default function Loading({\n title,\n layout,\n className = '',\n spinClassName = '',\n spinSizeClassName = 'w-24 h-24',\n}: LoadingProps) {\n return (\n <div\n className={classNames({\n 'space-y-3': true,\n 'flex flex-col items-center justify-center fixed inset-0': layout === 'fixed',\n 'w-full': layout === 'fill',\n [className]: true,\n })}\n >\n <div\n className={classNames({\n [spinClassName]: true,\n [spinSizeClassName]: true,\n 'relative border-8 border-gray-500 rounded-full animate-spin': true,\n })}\n >\n <div className=\"absolute -left-4 -top-4 right-2/4 bottom-2/4 bg-white/50 bg-opacity-75 rounded-full rounded-b-none rounded-r-none\" />\n </div>\n {!!title && title.length > 0 && <div>{title}</div>}\n </div>\n )\n}\n","import React, { useRef, type ReactNode } from 'react'\nimport { classNames } from '../utils/classNames'\nimport Loading from './Loading'\n\nexport interface CheckboxListProps<T = Record<string, unknown>> {\n items?: T[]\n selected?: (T | string)[]\n onToggle?: (item: T) => void\n itemKey?: string | ((item: T) => string | number)\n itemLabel?: string | ((item: T) => ReactNode)\n isChecked?: (item: T, selected: (T | string)[]) => boolean\n loading?: boolean\n placeholder?: ReactNode\n}\n\nexport default function CheckboxList<T extends Record<string, unknown> = Record<string, unknown>>({\n items = [],\n selected = [],\n onToggle,\n itemKey = 'id',\n itemLabel = (item: T) => (item.name || item.label || item.fullName) as string,\n isChecked,\n loading = false,\n placeholder = 'No items found.',\n}: CheckboxListProps<T>) {\n const hasLoadedRef = useRef(false)\n if (!loading) {\n hasLoadedRef.current = true\n }\n\n const getFinalKey = (item: T, index: number): string | number => {\n const key = typeof itemKey === 'function' ? itemKey(item) : (item[itemKey] as string | number)\n return key !== undefined && key !== null ? key : index\n }\n\n const renderPlaceholder = () => {\n if (typeof placeholder === 'string') {\n return (\n <div className=\"p-4 text-center text-sm text-gray-500 dark:text-charcoal-400\">\n {placeholder}\n </div>\n )\n }\n return placeholder\n }\n\n return (\n <div className=\"w-full border border-gray-300 dark:border-charcoal-700 rounded-lg shadow-sm bg-white dark:bg-charcoal-800 overflow-hidden\">\n <div className=\"max-h-60 overflow-y-auto divide-y divide-gray-100 dark:divide-charcoal-700\">\n {loading && !hasLoadedRef.current ? (\n <div className=\"p-4 flex items-center justify-center min-h-36\">\n <Loading spinSizeClassName=\"w-6 h-6\" className=\"inline-block\" />\n </div>\n ) : (\n <>\n {items.length > 0 ? (\n items.map((item, index) => {\n const finalKey = getFinalKey(item, index)\n const label = typeof itemLabel === 'function' ? itemLabel(item) : (item[itemLabel as string] as string)\n const checked = typeof isChecked === 'function'\n ? isChecked(item, selected)\n : selected.some(\n (s) => (s && typeof s === 'object' ? (s as Record<string, unknown>).id : s) === finalKey\n )\n\n return (\n <div\n key={finalKey}\n className={classNames({\n 'px-2 py-2 cursor-pointer flex items-center justify-between transition-colors': true,\n 'hover:bg-gray-50 dark:hover:bg-charcoal-700': !checked,\n 'bg-gray-50 dark:bg-primary-900/20': checked,\n })}\n onClick={() => onToggle && onToggle(item)}\n >\n <div className=\"flex items-center space-x-3\">\n <div\n className={classNames({\n 'w-5 h-5 rounded border flex items-center justify-center transition-colors cursor-pointer': true,\n 'border-gray-300 bg-white dark:border-charcoal-700 dark:bg-charcoal-700': !checked,\n 'border-brown-500 bg-brown-500 dark:bg-primary-500 dark:border-primary-500 dark:text-black text-white': checked,\n })}\n >\n {checked && (\n <svg className=\"w-4 h-4\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z\" />\n </svg>\n )}\n </div>\n <span\n className={classNames({\n 'text-sm': true,\n 'text-gray-900 dark:text-gray-100': !checked,\n 'dark:text-primary-400': checked,\n })}\n >\n {label}\n </span>\n </div>\n </div>\n )\n })\n ) : (\n renderPlaceholder()\n )}\n </>\n )}\n </div>\n </div>\n )\n}\n","import React, { createContext, useContext, useEffect, useState, useReducer, type ReactNode } from 'react'\n\ninterface ModalContextValue {\n modalShowing: boolean\n drawerShowing: boolean\n setModalShowing: (value: boolean) => void\n setDrawerShowing: (value: boolean) => void\n}\n\ninterface ModalState {\n modalShowing: boolean\n drawerShowing: boolean\n}\n\ntype ModalAction =\n | { modalShowing: boolean; render?: boolean }\n | { drawerShowing: boolean; render?: boolean }\n\nexport const ModalContext = createContext<ModalContextValue>({\n modalShowing: false,\n drawerShowing: false,\n setModalShowing: () => {},\n setDrawerShowing: () => {},\n})\n\nexport function useModalContext(): ModalContextValue {\n return useContext(ModalContext)\n}\n\ninterface ModalProviderProps {\n children: ReactNode\n}\n\nexport function ModalProvider({ children }: ModalProviderProps) {\n const [currentState, setCurrentState] = useState(0)\n\n function reducer(state: ModalState, action: Record<string, unknown>): ModalState {\n const updatedValues = { ...state }\n\n if ('modalShowing' in action) {\n updatedValues.modalShowing = action.modalShowing as boolean\n }\n if ('drawerShowing' in action) {\n updatedValues.drawerShowing = action.drawerShowing as boolean\n }\n if ('render' in action && !!action.render) {\n setCurrentState(1 - currentState)\n }\n\n return updatedValues\n }\n\n const [values, dispatch] = useReducer(reducer, {\n modalShowing: false,\n drawerShowing: false,\n })\n\n const { modalShowing, drawerShowing } = values\n\n useEffect(() => {\n if (typeof document === 'undefined') return\n\n const bodyEl = document.getElementsByTagName('BODY')[0]\n if (!bodyEl) return\n\n if (modalShowing) {\n bodyEl.classList.add('overflow-hidden')\n } else {\n bodyEl.classList.remove('overflow-hidden')\n }\n }, [modalShowing])\n\n return (\n <ModalContext.Provider\n value={{\n modalShowing,\n drawerShowing,\n setModalShowing: (value: boolean) =>\n dispatch({ modalShowing: value, render: modalShowing !== value }),\n setDrawerShowing: (value: boolean) =>\n dispatch({ drawerShowing: value, render: drawerShowing !== value }),\n }}\n >\n {children}\n </ModalContext.Provider>\n )\n}\n","import React, { useRef, useEffect, useContext, createContext, type ReactNode, type ReactElement } from 'react'\nimport { CSSTransition as ReactCSSTransition } from 'react-transition-group'\n\ninterface TransitionContextValue {\n parent: {\n show?: boolean\n isInitialRender?: boolean\n appear?: boolean\n }\n}\n\nconst TransitionContext = createContext<TransitionContextValue>({\n parent: {},\n})\n\nfunction useIsInitialRender(): boolean {\n const isInitialRender = useRef(true)\n useEffect(() => {\n isInitialRender.current = false\n }, [])\n return isInitialRender.current\n}\n\ninterface CSSTransitionProps {\n show?: boolean\n enter?: string\n enterFrom?: string\n enterTo?: string\n leave?: string\n leaveFrom?: string\n leaveTo?: string\n appear?: boolean\n children: ReactElement\n onEnter?: (node: HTMLElement) => void\n onEntering?: (node: HTMLElement) => void\n onEntered?: (node: HTMLElement) => void\n onExit?: (node: HTMLElement) => void\n onExiting?: (node: HTMLElement) => void\n onExited?: (node: HTMLElement) => void\n}\n\nfunction CSSTransitionComponent({\n show,\n enter = '',\n enterFrom = '',\n enterTo = '',\n leave = '',\n leaveFrom = '',\n leaveTo = '',\n appear,\n children,\n onEnter = () => {},\n onEntering = () => {},\n onEntered = () => {},\n onExit = () => {},\n onExiting = () => {},\n onExited = () => {},\n}: CSSTransitionProps) {\n const enterClasses = enter.split(' ').filter((s) => s.length)\n const enterFromClasses = enterFrom.split(' ').filter((s) => s.length)\n const enterToClasses = enterTo.split(' ').filter((s) => s.length)\n const leaveClasses = leave.split(' ').filter((s) => s.length)\n const leaveFromClasses = leaveFrom.split(' ').filter((s) => s.length)\n const leaveToClasses = leaveTo.split(' ').filter((s) => s.length)\n\n const nodeRef = useRef<HTMLElement>(null)\n\n function addClasses(node: HTMLElement, classes: string[]) {\n classes.length && node.classList.add(...classes)\n }\n\n function removeClasses(node: HTMLElement, classes: string[]) {\n classes.length && node.classList.remove(...classes)\n }\n\n return (\n <ReactCSSTransition\n nodeRef={nodeRef}\n appear={appear}\n unmountOnExit\n in={show}\n addEndListener={(done: () => void) => {\n if (!nodeRef.current) return done()\n nodeRef.current.addEventListener('transitionend', done, false)\n }}\n onEnter={() => {\n if (!nodeRef.current) return\n addClasses(nodeRef.current, [...enterClasses, ...enterFromClasses])\n onEnter(nodeRef.current)\n }}\n onEntering={() => {\n if (!nodeRef.current) return\n removeClasses(nodeRef.current, enterFromClasses)\n addClasses(nodeRef.current, enterToClasses)\n onEntering(nodeRef.current)\n }}\n onEntered={() => {\n if (!nodeRef.current) return\n removeClasses(nodeRef.current, [...enterToClasses, ...enterClasses])\n onEntered(nodeRef.current)\n }}\n onExit={() => {\n if (!nodeRef.current) return\n addClasses(nodeRef.current, [...leaveClasses, ...leaveFromClasses])\n onExit(nodeRef.current)\n }}\n onExiting={() => {\n if (!nodeRef.current) return\n removeClasses(nodeRef.current, leaveFromClasses)\n addClasses(nodeRef.current, leaveToClasses)\n onExiting(nodeRef.current)\n }}\n onExited={() => {\n if (!nodeRef.current) return\n removeClasses(nodeRef.current, [...leaveToClasses, ...leaveClasses])\n onExited(nodeRef.current)\n }}\n >\n {React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n ;(nodeRef as React.MutableRefObject<HTMLElement | null>).current = node\n const childRef = (children as React.ReactElement & { ref?: React.Ref<HTMLElement> }).ref\n if (typeof childRef === 'function') {\n childRef(node)\n } else if (childRef && typeof childRef === 'object') {\n ;(childRef as React.MutableRefObject<HTMLElement | null>).current = node\n }\n },\n } as Record<string, unknown>)}\n </ReactCSSTransition>\n )\n}\n\nexport interface TransitionProps {\n show?: boolean\n appear?: boolean\n enter?: string\n enterFrom?: string\n enterTo?: string\n leave?: string\n leaveFrom?: string\n leaveTo?: string\n children: ReactElement\n onEnter?: (node: HTMLElement) => void\n onEntering?: (node: HTMLElement) => void\n onEntered?: (node: HTMLElement) => void\n onExit?: (node: HTMLElement) => void\n onExiting?: (node: HTMLElement) => void\n onExited?: (node: HTMLElement) => void\n}\n\nexport default function Transition({ show, appear, ...rest }: TransitionProps) {\n const { parent } = useContext(TransitionContext)\n const isInitialRender = useIsInitialRender()\n const isChild = show === undefined\n\n if (isChild) {\n return (\n <CSSTransitionComponent\n appear={parent.appear || !parent.isInitialRender}\n show={parent.show}\n {...rest}\n />\n )\n }\n\n return (\n <TransitionContext.Provider\n value={{\n parent: {\n show,\n isInitialRender,\n appear,\n },\n }}\n >\n <CSSTransitionComponent appear={appear} show={show} {...rest} />\n </TransitionContext.Provider>\n )\n}\n","import React, { type ReactNode } from 'react'\nimport { classNames } from '../../utils/classNames'\nimport Button from '../Button'\n\nexport interface ModalFooterProps {\n footer?: ReactNode\n disabled?: boolean\n onCancel?: () => void\n onSubmit?: (e?: React.MouseEvent) => void\n onChange?: () => void\n closeText?: string\n submitText?: string\n submitColor?: string\n changeText?: string\n darkMode?: boolean\n}\n\nexport default function ModalFooter({\n footer,\n disabled,\n onCancel,\n onSubmit,\n onChange,\n closeText,\n submitText,\n submitColor,\n changeText,\n darkMode,\n}: ModalFooterProps) {\n if (footer) {\n return (\n <div\n className={classNames({\n 'px-3 pt-5 pb-4 bg-gray-100 border-t border-gray-300 dark:border-charcoal-700 sm:px-6 sm:pt-3 sm:pb-3 dark:bg-black/40': true,\n '!bg-charcoal-700 !border-t-charcoal-600': !!darkMode,\n })}\n >\n {footer}\n </div>\n )\n }\n\n const hasSubmit = typeof onSubmit === 'function'\n const hasCancel = typeof onCancel === 'function'\n const hasChange = typeof onChange === 'function'\n\n function handleSubmit(e: React.MouseEvent) {\n if (typeof onSubmit === 'function' && !disabled) {\n onSubmit(e)\n }\n }\n\n let submitVariant: 'primary' | 'secondary' | undefined = 'primary'\n let submitBtnClassName = 'w-full'\n\n if (submitColor) {\n if (submitColor === 'red') {\n submitVariant = undefined\n submitBtnClassName = 'w-full bg-red-600 hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-600 border-transparent text-white'\n } else if (submitColor === 'primary') {\n submitVariant = 'primary'\n } else {\n submitVariant = undefined\n submitBtnClassName = classNames({ 'w-full': true, [submitColor]: true })\n }\n }\n\n return (\n (hasSubmit || hasCancel || hasChange) ? (\n <div className=\"flex justify-between px-3 py-3 space-x-2 bg-transparent sm:px-6 sm:pt-3 sm:pb-3\">\n {hasChange && (\n <div className=\"flex space-x-2\">\n <span className=\"rounded-2xl\">\n <Button variant=\"secondary\" onClick={onChange}>\n {changeText || 'Change'}\n </Button>\n </span>\n </div>\n )}\n {(hasSubmit || hasCancel) && (\n <div className=\"flex justify-end flex-grow space-x-2\">\n {hasCancel && (\n <span className=\"flex shadow-sm rounded-2xl\">\n <Button className=\"w-full\" variant=\"secondary\" onClick={onCancel}>\n {closeText || 'Cancel'}\n </Button>\n </span>\n )}\n {hasSubmit && (\n <span className=\"flex w-full shadow-sm rounded-2xl sm:w-auto\">\n <Button\n className={submitBtnClassName}\n variant={submitVariant}\n disabled={disabled}\n onClick={() => handleSubmit({} as React.MouseEvent)}\n >\n {submitText || 'Submit'}\n </Button>\n </span>\n )}\n </div>\n )}\n </div>\n ) : null\n )\n}\n","import React, { useContext, useEffect, useState, type ReactNode } from 'react'\nimport { createPortal } from 'react-dom'\nimport { classNames, classNameObject } from '../../utils/classNames'\nimport { ModalContext } from '../../contexts/ModalContext'\nimport Transition from '../Transition'\nimport Button from '../Button'\nimport ModalFooter from './Footer'\n\nlet MODAL_OPEN_COUNT = 0\n\nexport type ModalSize = 'small' | 'medium' | 'large' | 'full'\n\nexport interface ModalOpts {\n darkMode?: boolean\n sidebarPosition?: 'left' | 'right'\n mobileSidebarPosition?: 'top' | 'above' | 'bottom'\n}\n\nexport interface ModalProps {\n wrapperClassName?: string\n open: boolean\n size?: ModalSize\n title?: string\n description?: string\n transparent?: boolean\n header?: ReactNode\n sidebar?: ReactNode\n footer?: ReactNode\n children?: ReactNode\n disabled?: boolean\n onClose?: () => void\n onExited?: () => void\n onCancel?: () => void\n onSubmit?: (e?: React.MouseEvent) => void\n onChange?: () => void\n closeText?: string\n submitText?: string\n submitColor?: string\n changeText?: string\n fullscreen?: boolean\n opts?: ModalOpts\n}\n\nexport default function Modal({\n wrapperClassName,\n open,\n size,\n title,\n description,\n transparent,\n header,\n sidebar,\n footer,\n children,\n disabled,\n onClose,\n onExited = () => {},\n onCancel,\n onSubmit,\n onChange,\n closeText,\n submitText,\n submitColor,\n changeText,\n fullscreen,\n opts,\n}: ModalProps) {\n const { setModalShowing } = useContext(ModalContext)\n const { darkMode, sidebarPosition = 'right', mobileSidebarPosition = 'bottom' } = opts || {}\n const isMobileSidebarTop = mobileSidebarPosition === 'top' || mobileSidebarPosition === 'above'\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n useEffect(() => {\n if (typeof document === 'undefined') return\n\n const bodyEl = document.getElementsByTagName('BODY')[0]\n\n if (open) {\n setModalShowing(true)\n if (MODAL_OPEN_COUNT === 0) {\n bodyEl?.classList?.add('overflow-hidden')\n }\n MODAL_OPEN_COUNT++\n } else {\n setModalShowing(false)\n }\n\n return () => {\n if (open) {\n MODAL_OPEN_COUNT--\n if (MODAL_OPEN_COUNT === 0) {\n bodyEl?.classList?.remove('overflow-hidden')\n }\n }\n }\n }, [open])\n\n function handleClose() {\n if (typeof onClose === 'function') {\n onClose()\n }\n setModalShowing(false)\n }\n\n if (!mounted) return null\n\n return createPortal(\n <Transition show={open} onExited={onExited}>\n <div className=\"fixed inset-x-0 text-sm bottom-0 z-[1300] px-0 bg-opacity-30 lg:px-6 lg:inset-0 lg:flex lg:items-center lg:justify-center\">\n <div\n className={classNames({\n 'max-h-[100dvh] overflow-y-auto sm:w-full': true,\n 'lg:max-w-2xl': !size,\n 'lg:max-w-md': size === 'small',\n 'lg:max-w-3xl': size === 'medium',\n 'lg:max-w-6xl': size === 'large',\n 'h-[100dvh] lg:h-auto lg:max-w-3xl': size === 'full',\n })}\n >\n <Transition\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 transition-opacity\">\n <div className=\"absolute inset-0 bg-gray-500 dark:bg-charcoal-800 opacity-75\"></div>\n </div>\n </Transition>\n <Transition\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n enterTo=\"opacity-100 translate-y-0 sm:scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 translate-y-0 sm:scale-100\"\n leaveTo=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n >\n <div\n className={classNames({\n 'relative flex flex-col z-40 max-h-[100dvh] sm:max-h-9/10 sm:rounded-xl overflow-hidden transform transition-all sm:w-full': true,\n 'sm:max-w-2xl': !size,\n 'sm:max-w-md': size === 'small',\n 'sm:max-w-4xl': size === 'medium',\n 'sm:max-w-6xl': size === 'large',\n 'sm:max-w-full sm:!max-h-full': size === 'full',\n 'shadow-xl': !transparent,\n 'bg-white dark:bg-black': !transparent && !wrapperClassName,\n 'bg-transparent ': !!transparent && !wrapperClassName,\n ...classNameObject(wrapperClassName),\n })}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"modal-headline\"\n >\n {!header && (\n <div\n className={classNames({\n 'flex items-center justify-between px-3 pt-3 pb-2 space-x-2 sm:px-6 sm:pt-6 sm:pb-3': true,\n 'sm:border-b sm:border-gray-200 dark:sm:border-charcoal-700 sm:shadow-sm': !!sidebar,\n })}\n >\n <div className=\"flex-1\">\n <h3 className=\"my-0 text-base font-semibold leading-tight text-gray-900 dark:text-white\">{title}</h3>\n {!!description && description.length > 0 && (\n <p className=\"text-sm text-primary-700\">{description}</p>\n )}\n </div>\n <Button variant=\"flat\" compact={true} onClick={handleClose}>\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </Button>\n </div>\n )}\n {!!header && <>{header}</>}\n <div\n className={classNames({\n 'pb-3 max-h-full overflow-y-auto': true,\n 'h-[100dvh] lg:h-auto': fullscreen || size === 'full',\n 'sm:pt-4 sm:relative border-b border-gray-200 dark:border-charcoal-700': !!sidebar,\n 'sm:pr-80': !!sidebar && sidebarPosition === 'right',\n 'sm:pl-80': !!sidebar && sidebarPosition === 'left',\n })}\n >\n <div className=\"flex-grow px-3 sm:px-6\">\n {!!sidebar && isMobileSidebarTop && (\n <div\n className={classNames({\n 'sm:absolute sm:top-0 sm:bottom-0 sm:w-80 sm:max-h-full sm:overflow-y-scroll sm:px-5 sm:py-4': true,\n 'sm:right-0 sm:border-l sm:border-gray-200 dark:sm:border-charcoal-700': sidebarPosition === 'right',\n 'sm:left-0 sm:border-r sm:border-gray-200 dark:sm:border-charcoal-700': sidebarPosition === 'left',\n 'pb-6 mb-6 border-b border-gray-200 dark:border-charcoal-700 sm:border-b-0 sm:pb-0 sm:mb-0': true,\n })}\n >\n {sidebar}\n </div>\n )}\n {children}\n {!!sidebar && !isMobileSidebarTop && (\n <div\n className={classNames({\n 'sm:absolute sm:top-0 sm:bottom-0 sm:w-80 sm:max-h-full sm:overflow-y-scroll sm:px-5 sm:py-4': true,\n 'sm:right-0 sm:border-l sm:border-gray-200 dark:sm:border-charcoal-700': sidebarPosition === 'right',\n 'sm:left-0 sm:border-r sm:border-gray-200 dark:sm:border-charcoal-700': sidebarPosition === 'left',\n 'pt-6 mt-6 border-t border-gray-200 dark:border-charcoal-700 sm:border-t-0 sm:mt-0': true,\n })}\n >\n {sidebar}\n </div>\n )}\n </div>\n </div>\n <ModalFooter\n footer={footer}\n disabled={disabled}\n onCancel={onCancel}\n onSubmit={onSubmit}\n onChange={onChange}\n closeText={closeText}\n submitText={submitText}\n submitColor={submitColor}\n changeText={changeText}\n darkMode={darkMode}\n />\n </div>\n </Transition>\n </div>\n </div>\n </Transition>,\n document.body\n )\n}\n","import React from 'react'\nimport Modal from './Modal'\n\nexport type ConfirmationType = 'danger' | 'warning' | 'info'\n\nexport interface ConfirmationBoxProps {\n open: boolean\n title?: string\n description?: string\n cancelText?: string\n confirmText?: string\n confirmColor?: string\n type?: ConfirmationType\n disabled?: boolean\n onClose?: () => void\n onConfirm?: () => void\n}\n\nexport default function ConfirmationBox({\n open,\n title = 'Confirm Action',\n description = 'Are you sure you want to perform this action?',\n cancelText = 'Cancel',\n confirmText = 'Confirm',\n confirmColor,\n type = 'danger',\n disabled = false,\n onClose,\n onConfirm,\n}: ConfirmationBoxProps) {\n let iconContainerClass = ''\n let iconSvg: React.ReactNode = null\n let defaultConfirmColor = 'primary'\n\n if (type === 'danger') {\n iconContainerClass = 'bg-red-50 dark:bg-red-950/30 text-red-600 dark:text-red-400'\n defaultConfirmColor = 'red'\n iconSvg = (\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n </svg>\n )\n } else if (type === 'warning') {\n iconContainerClass = 'bg-yellow-50 dark:bg-yellow-950/30 text-yellow-600 dark:text-yellow-400'\n defaultConfirmColor = 'primary'\n iconSvg = (\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n </svg>\n )\n } else {\n iconContainerClass = 'bg-blue-50 dark:bg-blue-950/30 text-blue-600 dark:text-blue-400'\n defaultConfirmColor = 'primary'\n iconSvg = (\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n )\n }\n\n const resolvedConfirmColor = confirmColor || defaultConfirmColor\n\n return (\n <Modal\n open={open}\n size=\"small\"\n title={title}\n onClose={onClose}\n onCancel={onClose}\n onSubmit={onConfirm}\n closeText={cancelText}\n submitText={confirmText}\n submitColor={resolvedConfirmColor}\n disabled={disabled}\n >\n <div className=\"flex items-start space-x-4\">\n {iconSvg && (\n <div className={`flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full ${iconContainerClass}`}>\n {iconSvg}\n </div>\n )}\n <div className=\"flex-1 pt-1.5\">\n <p className=\"text-sm text-gray-500 dark:text-gray-400 font-medium\">\n {description}\n </p>\n </div>\n </div>\n </Modal>\n )\n}\n","import React, { useEffect, useContext, type ReactNode } from 'react'\nimport { ModalContext } from '../contexts/ModalContext'\nimport { classNames, classNameObject } from '../utils/classNames'\nimport Transition from './Transition'\n\nexport type DrawerLevel = 'base' | 'middle' | 'top' | 'ceil' | 'extra-wide' | 'full'\nexport type DrawerTheme =\n | 'WHITE' | 'BLACK' | 'RED' | 'ORANGE' | 'YELLOW'\n | 'LIME' | 'GREEN' | 'BROWN' | 'BLUE' | 'DARK_BLUE'\n | 'PURPLE' | 'FLAMINGO' | 'PINK'\n\nexport interface DrawerAnimationProps {\n enter?: string\n enterFrom?: string\n enterTo?: string\n leave?: string\n leaveFrom?: string\n leaveTo?: string\n}\n\nexport interface DrawerProps {\n theme?: DrawerTheme\n open: boolean\n onClose?: () => void\n title?: string\n level?: DrawerLevel\n description?: string\n children?: ReactNode\n footer?: ReactNode\n animation?: DrawerAnimationProps\n wrapperClassName?: string\n sectionClassName?: string\n}\n\nexport default function Drawer({\n theme,\n open,\n onClose,\n title,\n level,\n description,\n children,\n footer,\n animation = {},\n wrapperClassName,\n sectionClassName = '',\n}: DrawerProps) {\n const { setDrawerShowing } = useContext(ModalContext)\n\n useEffect(() => {\n setDrawerShowing(open)\n }, [open])\n\n function handleClose() {\n if (typeof onClose === 'function') {\n onClose()\n }\n }\n\n return (\n <Transition\n show={open}\n enter=\"transform transition ease-in-out duration-500 sm:duration-700\"\n enterFrom=\"translate-x-full\"\n enterTo=\"translate-x-0\"\n leave=\"transform transition ease-in-out duration-500 sm:duration-700\"\n leaveFrom=\"translate-x-0\"\n leaveTo=\"translate-x-full\"\n {...animation}\n >\n <section\n className={classNames({\n 'fixed inset-y-0 max-w-full right-0 flex': true,\n 'z-20': !level || level === 'base' || level === 'extra-wide' || level === 'full',\n 'z-30': level === 'middle',\n 'z-40': level === 'top',\n 'z-50': level === 'ceil',\n [sectionClassName]: true,\n })}\n >\n <div\n className={classNames({\n 'w-screen': true,\n 'sm:max-w-7xl': level === 'extra-wide',\n 'sm:max-w-full': level === 'full',\n 'sm:max-w-4xl': !level || level === 'base',\n 'sm:max-w-2xl': level === 'middle',\n 'sm:max-w-md': level === 'top',\n 'sm:max-w-sm': level === 'ceil',\n })}\n >\n <div\n className={classNames({\n 'h-full flex flex-col shadow-xl': true,\n 'bg-white dark:bg-primary-800': !wrapperClassName,\n ...classNameObject(wrapperClassName),\n })}\n >\n <div className=\"flex flex-col h-full\">\n <header\n className={classNames({\n 'h-auto py-2.5 sm:py-3 px-4 sm:px-6': true,\n 'bg-primary-100 dark:bg-primary-900': !theme && (!level || level === 'base' || level === 'extra-wide' || level === 'full'),\n 'bg-primary-200 dark:bg-primary-900': !theme && level === 'middle',\n 'bg-primary-300 dark:bg-primary-900': !theme && level === 'top',\n 'bg-primary-50 dark:bg-primary-900 border-b border-primary-100': !theme && level === 'ceil',\n 'bg-white': theme === 'WHITE',\n 'bg-black': theme === 'BLACK',\n 'bg-red-500': theme === 'RED',\n 'bg-orange-500': theme === 'ORANGE',\n 'bg-yellow-500': theme === 'YELLOW',\n 'bg-lime-500': theme === 'LIME',\n 'bg-green-500': theme === 'GREEN',\n 'bg-brown-500': theme === 'BROWN',\n 'bg-blue-500': theme === 'BLUE',\n 'bg-dark-blue-500': theme === 'DARK_BLUE',\n 'bg-purple-500': theme === 'PURPLE',\n 'bg-flamingo-500': theme === 'FLAMINGO',\n 'bg-pink-500': theme === 'PINK',\n })}\n >\n <div className=\"flex items-center justify-between space-x-3\">\n <h2 className=\"text-base sm:text-lg leading-7 font-medium\">\n {title}\n </h2>\n <div className=\"h-7 flex items-center\">\n <div\n aria-label=\"Close\"\n className=\"-mr-3 text-primary-700 dark:text-white hover:text-primary-500 p-1.5 rounded-lg hover:bg-primary-100 transition ease-in-out duration-150\"\n onClick={handleClose}\n >\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </div>\n </div>\n </div>\n <div>\n <p className=\"text-sm leading-5 text-primary-300\">\n {description}\n </p>\n </div>\n </header>\n <div className=\"py-3 flex-1 flex flex-col justify-between overflow-y-auto\">\n <div className=\"px-4 sm:px-6\">\n {children}\n </div>\n </div>\n {!!footer && (\n <div className=\"sm:border-t sm:border-cool-gray-200 sm:dark:border-gray-700 py-2.5 sm:py-4 px-4 sm:px-6\">\n {footer}\n </div>\n )}\n </div>\n </div>\n </div>\n </section>\n </Transition>\n )\n}\n","import React from 'react'\n\nexport type SortDirection = 'ASC' | 'DESC'\n\nexport interface SortIconProps {\n direction?: SortDirection\n}\n\nexport default function SortIcon({ direction }: SortIconProps) {\n if (direction === 'DESC') {\n return (\n <span className=\"ml-2 text-sm\">\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 4h13M3 8h9m-9 4h9m5-4v12m0 0l-4-4m4 4l4-4\" />\n </svg>\n </span>\n )\n }\n\n if (direction === 'ASC') {\n return (\n <span className=\"ml-2 text-sm\">\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12\" />\n </svg>\n </span>\n )\n }\n\n return null\n}\n","import React, { useState, useEffect, useRef, type ReactNode } from 'react'\nimport Transition from './Transition'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport interface InlinePromptProps {\n title: ReactNode\n onConfirm: () => void\n className?: string\n withText?: boolean\n confirmText?: string\n cancelText?: string\n opts?: {\n condensed?: boolean\n blocked?: boolean\n }\n}\n\nexport default function InlinePrompt({\n title,\n onConfirm,\n className = '',\n withText,\n confirmText,\n cancelText,\n opts,\n}: InlinePromptProps) {\n const [isOpen, setIsOpen] = useState(false)\n const nodeTarget = useRef<HTMLAnchorElement>(null)\n const nodeWindow = useRef<HTMLDivElement>(null)\n\n const { condensed, blocked } = opts || {}\n\n function handleClickOutside(e: MouseEvent) {\n if (\n nodeTarget.current?.contains(e.target as Node) ||\n nodeWindow.current?.contains(e.target as Node)\n ) {\n return\n }\n setIsOpen(false)\n }\n\n function handleOpenConfirmation() {\n if (!blocked) {\n setIsOpen(true)\n }\n }\n\n function handleCloseConfirmation() {\n setIsOpen(false)\n }\n\n function handleConfirm() {\n onConfirm()\n setIsOpen(false)\n }\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n } else {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n return (\n <div className=\"inline-block text-left\">\n <div className=\"rounded-md w-full relative\">\n <a\n ref={nodeTarget}\n onClick={handleOpenConfirmation}\n className={classNames({\n 'inline-flex justify-center w-full rounded-md bg-transparent font-medium focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-50 transition ease-in-out duration-150 cursor-pointer': true,\n 'leading-5 px-4 py-2': !condensed,\n 'text-gray-700 hover:text-gray-500 active:text-gray-800 text-md': !className.includes('text-'),\n ...classNameObject(className),\n })}\n aria-haspopup=\"true\"\n aria-expanded=\"true\"\n >\n {title}\n </a>\n <Transition\n show={isOpen}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"opacity-0 scale-95\"\n enterTo=\"opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"opacity-100 scale-100\"\n leaveTo=\"opacity-0 scale-95\"\n >\n <div\n ref={nodeWindow}\n className=\"absolute top-0 left-0 min-w-full border border-gray-200 rounded-md bg-gray-50 flex justify-center z-20\"\n >\n <a onClick={handleConfirm} className=\"inline-flex items-center cursor-pointer m-1 text-sm text-green-500\">\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"text-green-500 w-6 h-6\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n {withText && confirmText}\n </a>\n <a\n className=\"inline-flex items-center cursor-pointer m-1 text-sm text-red-500\"\n onClick={handleCloseConfirmation}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"text-red-500 w-6 h-6\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n {withText && cancelText}\n </a>\n </div>\n </Transition>\n </div>\n </div>\n )\n}\n","import React, { type ReactNode } from 'react'\n\nexport interface BreadcrumbLink {\n name: string\n href: string\n}\n\nexport interface BreadcrumbProps {\n links?: BreadcrumbLink[]\n onBack?: () => void\n linkComponent?: (props: { href: string; className?: string; children: ReactNode }) => ReactNode\n}\n\nfunction DefaultLink({ href, className, children }: { href: string; className?: string; children: ReactNode }) {\n return <a href={href} className={className}>{children}</a>\n}\n\nexport default function Breadcrumb({\n links,\n onBack,\n linkComponent: LinkComponent = DefaultLink,\n}: BreadcrumbProps) {\n function clickBack(e: React.MouseEvent) {\n e.preventDefault()\n if (onBack) {\n onBack()\n }\n }\n\n return (\n <>\n <div className=\"pb-5 px-4 sm:px-6 lg:px-8\">\n {onBack && (\n <nav className=\"sm:hidden\">\n <a\n onClick={clickBack}\n className=\"flex items-center text-sm leading-5 font-medium text-gray-500 hover:text-gray-700 transition duration-150 ease-in-out cursor-pointer\"\n >\n <svg className=\"flex-shrink-0 -ml-1 mr-1 h-5 w-5 text-gray-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n Back\n </a>\n </nav>\n )}\n <nav className=\"hidden sm:flex items-center text-sm leading-5 font-medium\">\n {links &&\n links.length > 0 &&\n links.map((link, index) => (\n <span className=\"inline-flex\" key={`breadcrumb-link-${index}-${link.name}`}>\n <LinkComponent href={link.href} className=\"text-gray-500 hover:text-gray-700 transition duration-150 ease-in-out\">\n {link.name}\n </LinkComponent>\n {index !== links.length - 1 && (\n <svg className=\"flex-shrink-0 mx-2 h-5 w-5 text-gray-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n </span>\n ))}\n </nav>\n </div>\n </>\n )\n}\n","import React, { useState, useEffect, type ReactNode } from 'react'\nimport { classNames } from '../utils/classNames'\n\nexport interface TabItem {\n id: string\n link?: string\n [key: string]: any\n}\n\nexport interface TabProps {\n items: TabItem[]\n label: string\n value?: string | null\n defaultValue?: string | null\n allowRedirect?: boolean\n onChange?: (item: TabItem) => void\n rightContent?: ReactNode\n linkComponent?: (props: { href: string; className?: string; children: ReactNode; onClick?: () => void }) => ReactNode\n}\n\nfunction DefaultLink({ href, className, children, onClick }: { href: string; className?: string; children: ReactNode; onClick?: () => void }) {\n return <a href={href} className={className} onClick={onClick}>{children}</a>\n}\n\nfunction TabItemComponent({\n allowRedirect,\n item,\n label,\n isActive,\n onSelect,\n linkComponent: LinkComponent = DefaultLink,\n}: {\n allowRedirect?: boolean\n item: TabItem\n label: string\n isActive: boolean\n onSelect: (item: TabItem) => void\n linkComponent?: TabProps['linkComponent']\n}) {\n function handleTabSelect() {\n onSelect(item)\n }\n\n if (!!allowRedirect && !!item.link) {\n return (\n <LinkComponent\n href={item.link}\n className={classNames({\n 'whitespace-no-wrap -mb-px cursor-pointer border-b-2 py-2 px-3 text-center text-sm font-medium leading-5 tracking-tight focus:outline-none sm:px-5 sm:text-base sm:tracking-normal': true,\n 'border-primary-500 text-primary-500 focus:border-primary-500 focus:text-primary-500':\n isActive,\n 'text-cool-gray-500 hover:text-cool-gray-700 focus:text-cool-gray-700 border-transparent hover:border-transparent focus:border-transparent':\n !isActive,\n })}\n onClick={handleTabSelect}\n >\n {item[label]}\n </LinkComponent>\n )\n }\n\n return null\n}\n\nexport default function Tab({\n items,\n label,\n value,\n defaultValue,\n allowRedirect,\n onChange,\n rightContent,\n linkComponent,\n}: TabProps) {\n const [selected, setSelected] = useState(defaultValue)\n\n useEffect(() => {\n setSelected(value)\n }, [value])\n\n function handleSelect(item: TabItem) {\n if (typeof onChange === 'function') {\n onChange(item)\n }\n\n setSelected((item && item.id) || null)\n }\n\n return (\n <div className=\"no-scrollbar flex w-full items-stretch pb-1 sm:pb-2\">\n <nav className=\"border-cool-gray-200 -mb-px flex w-full items-end border-b\">\n {items.map((item) => (\n <TabItemComponent\n key={item.id}\n item={item}\n label={label}\n isActive={selected === item.id}\n allowRedirect={allowRedirect}\n onSelect={handleSelect}\n linkComponent={linkComponent}\n />\n ))}\n </nav>\n {rightContent && (\n <nav className=\"border-cool-gray-200 -mb-px flex flex flex-shrink-0 items-center border-b px-4\">\n {rightContent}\n </nav>\n )}\n </div>\n )\n}\n","import React, { useState, type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport interface ButtonGroupNavLink {\n url: string\n label: string\n icon?: ReactNode\n}\n\nexport interface ButtonGroupItem {\n id: string\n label?: string\n image?: ReactNode | string\n icon?: ReactNode\n url?: string\n subgroups?: ButtonGroupItem[]\n}\n\nexport interface ButtonGroupProps {\n buttons?: ButtonGroupItem[]\n direction?: 'horizontal' | 'vertical'\n iconPosition?: 'front' | 'back'\n activeId?: string\n onChange?: (id: string) => void\n className?: string\n itemClassName?: string\n currentPath?: string\n navLinks?: ButtonGroupNavLink[]\n linkComponent?: (props: { href: string; children: ReactNode }) => ReactNode\n subgroupModal?: (props: {\n open: boolean\n label?: string\n items?: ButtonGroupItem[]\n onClose: () => void\n onChange?: (id: string) => void\n }) => ReactNode\n}\n\nfunction DefaultLink({ href, children }: { href: string; children: ReactNode }) {\n return <a href={href}>{children}</a>\n}\n\nfunction ButtonItem({\n className,\n active,\n direction,\n iconPosition,\n button,\n onChange,\n onChangeGroup,\n currentPath,\n navLinks,\n linkComponent: LinkComponent = DefaultLink,\n}: {\n className?: string\n active: boolean\n direction?: string\n iconPosition?: string\n button: ButtonGroupItem\n onChange?: (id: string) => void\n onChangeGroup: (group: ButtonGroupItem) => void\n currentPath?: string\n navLinks?: ButtonGroupNavLink[]\n linkComponent?: ButtonGroupProps['linkComponent']\n}) {\n let currentButton: ButtonGroupItem = { ...button }\n\n if (active && navLinks && currentPath) {\n const navItem = navLinks.find(navLink => navLink.url === currentPath)\n\n if (navItem) {\n currentButton.label = navItem.label\n currentButton.image = (\n <div className=\"w-5 h-5\">\n {navItem.icon}\n </div>\n )\n currentButton.icon = undefined\n }\n }\n\n const buttonContent = (\n <div\n className={classNames({\n \"p-3 rounded-xl mx-auto text-charcoal-700/70 dark:text-charcoal-50/50 flex justify-center cursor-pointer\": true,\n \"w-full\": direction === \"vertical\",\n \"w-full overflow-hidden\": direction === \"horizontal\",\n \"!text-charcoal-700 dark:!text-primary-500 bg-white/50 dark:bg-charcoal-800/90 dark:backdrop-filter dark:backdrop-blur-sm border border-white lg:border-transparent dark:border-charcoal-700 shadow-xs dark:shadow-none\": active,\n ...classNameObject(className)\n })}\n >\n <div\n className={classNames({\n \"flex items-center justify-center\": true,\n \"flex-col md:flex-row md:space-x-1.5\": !!currentButton.image,\n \"gap-2\": !currentButton.image && !!currentButton.icon,\n \"flex-row-reverse\": !currentButton.image && iconPosition === \"back\",\n \"flex-row\": !currentButton.image && iconPosition !== \"back\"\n })}\n >\n {/* Image Section */}\n {currentButton.image && (\n <div className=\"relative mb-0.5 md:mb-0\">\n {\n typeof currentButton.image === \"string\" &&\n <img\n src={currentButton.image}\n alt={currentButton.label}\n className=\"w-6 h-6 object-cover rounded-full pointer-events-none\"\n />\n }\n {\n typeof currentButton.image === \"object\" &&\n currentButton.image\n }\n </div>\n )}\n\n {/* Icon Section */}\n {!currentButton.image && currentButton.icon && (\n <span className=\"text-sm\">\n {currentButton.icon}\n </span>\n )}\n\n {/* Label */}\n <div\n className={classNames({\n \"text-xs font-thin tracking-tight\": true,\n \"!font-normal\": active\n })}\n >\n <div className=\"line-clamp-1\">\n {currentButton.label}\n </div>\n </div>\n </div>\n </div>\n )\n\n if (currentButton.subgroups) {\n return (\n <div\n onClick={() => onChangeGroup(button)}\n >\n {buttonContent}\n </div>\n )\n }\n\n if (currentButton.url) {\n return (\n <LinkComponent href={currentButton.url}>\n {buttonContent}\n </LinkComponent>\n )\n }\n\n return (\n <div\n onClick={() => onChange && onChange(button.id)}\n >\n {buttonContent}\n </div>\n )\n}\n\nexport default function ButtonGroup({\n buttons = [],\n direction = \"horizontal\",\n iconPosition = \"front\",\n activeId,\n onChange,\n className,\n itemClassName,\n currentPath,\n navLinks,\n linkComponent,\n subgroupModal,\n}: ButtonGroupProps) {\n const [selectedGroup, setSelectedGroup] = useState<ButtonGroupItem | null>(null)\n\n function handleCloseModal() {\n setSelectedGroup(null)\n }\n\n return (\n <div\n className={classNames({\n \"gap-2 scrollbar-hide\": true,\n \"w-full\": direction === \"vertical\",\n \"grid grid-cols-5 w-full items-center\": direction === \"horizontal\",\n ...classNameObject(className)\n })}\n >\n {buttons.map((button) => {\n const isActive = activeId === button.id\n\n return (\n <ButtonItem\n key={button.id}\n className={itemClassName}\n button={button}\n direction={direction}\n iconPosition={iconPosition}\n onChange={onChange}\n onChangeGroup={(group) => setSelectedGroup(group)}\n active={isActive}\n currentPath={currentPath}\n navLinks={navLinks}\n linkComponent={linkComponent}\n />\n )\n })}\n {subgroupModal && subgroupModal({\n open: !!selectedGroup,\n label: selectedGroup?.label,\n items: selectedGroup?.subgroups,\n onClose: handleCloseModal,\n onChange: onChange,\n })}\n </div>\n )\n}\n","import React, { type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport interface HTMLHeadingProps {\n id?: string\n className?: string\n children?: ReactNode\n}\n\nexport function H1({ className, children }: HTMLHeadingProps) {\n return (\n <h1\n className={classNames({\n 'text-lg sm:text-xl font-title text-primary-500 font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h1>\n )\n}\n\nexport function H2({ className, children }: HTMLHeadingProps) {\n return (\n <h2\n className={classNames({\n 'text-2xl font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h2>\n )\n}\n\nexport function H3({ id, className, children }: HTMLHeadingProps) {\n if (id) {\n return (\n <>\n <div id={id} className=\"-mt-24\"></div>\n <h3\n className={classNames({\n 'pt-20 mb-0 text-lg font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h3>\n </>\n )\n }\n\n return (\n <h3\n className={classNames({\n 'text-lg mb-0 font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h3>\n )\n}\n\nexport function H4({ id, className, children }: HTMLHeadingProps) {\n if (id) {\n return (\n <>\n <div id={id} className=\"-mt-24\"></div>\n <h4\n className={classNames({\n 'pt-20 mb-0 text-base font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h4>\n </>\n )\n }\n\n return (\n <h4\n className={classNames({\n 'text-base mb-0 font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h4>\n )\n}\n\nexport interface BoldProps {\n children?: ReactNode\n}\n\nexport function B({ children }: BoldProps) {\n return <b className=\"font-semibold\">{children}</b>\n}\n","import React, { type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface TableProps {\n children?: ReactNode\n className?: string\n}\n\nexport default function Table({ children, className }: TableProps) {\n return (\n <div\n className={classNames({\n ...classNameObject(className),\n 'flex flex-col relative': true,\n 'sm:px-0 lg:px-8': !className || !className.includes('px-'),\n })}\n >\n <div className=\"-my-2 py-2 px-0.5 sm:px-0 overflow-x-auto sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8\">\n <div className=\"align-middle inline-block min-w-full shadow overflow-hidden rounded-lg border-b border-t border-gray-200\">\n <table className=\"min-w-full\">{children}</table>\n </div>\n </div>\n </div>\n )\n}\n","import React, { type ReactNode } from 'react'\n\nexport interface TheadProps {\n children?: ReactNode\n}\n\nexport default function Thead({ children }: TheadProps) {\n return <thead>{children}</thead>\n}\n","import React, { type ReactNode } from 'react'\n\nexport interface TrProps {\n children?: ReactNode\n}\n\nexport default function Tr({ children }: TrProps) {\n return <tr>{children}</tr>\n}\n","import React, { type ReactNode, type ThHTMLAttributes } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface ThProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'className'> {\n condensed?: boolean\n className?: string\n children?: ReactNode\n sticky?: boolean\n}\n\nexport default function Th({ condensed, className, children, sticky, ...opts }: ThProps) {\n return (\n <th\n className={classNames({\n ...classNameObject(className),\n 'sticky z-10 top-0': !!sticky,\n 'border-b border-gray-200 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider': true,\n 'px-6': !condensed,\n 'py-4': !condensed && (!className || !className.includes('py-')),\n 'px-2.5': !!condensed,\n 'py-2': !!condensed && (!className || !className.includes('py-')),\n })}\n {...opts}\n >\n {children}\n </th>\n )\n}\n","import React, { type ReactNode } from 'react'\n\nexport interface TbodyProps {\n children?: ReactNode\n}\n\nexport default function Tbody({ children }: TbodyProps) {\n return <tbody className=\"bg-white\">{children}</tbody>\n}\n","import React, { type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface TdProps {\n className?: string\n align?: 'left' | 'center' | 'right'\n colSpan?: number\n condensed?: boolean\n narrow?: boolean\n children?: ReactNode\n}\n\nexport default function Td({ className, align, colSpan, condensed, narrow, children }: TdProps) {\n return (\n <td\n align={align}\n colSpan={colSpan}\n className={classNames({\n ...classNameObject(className),\n 'whitespace-no-wrap border-b border-gray-200': true,\n 'px-6': !condensed && !narrow,\n 'py-4': !condensed && !narrow && (!className || !className.includes('py-')),\n 'px-2': !!condensed,\n 'py-2': !!condensed && (!className || !className.includes('py-')),\n 'px-0': !!narrow,\n 'py-0': !!narrow && (!className || !className.includes('py-')),\n })}\n >\n {children}\n </td>\n )\n}\n","import React, { useState, useRef, useEffect, useImperativeHandle, forwardRef } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport type InputType =\n | 'text' | 'password' | 'email' | 'url' | 'date' | 'month'\n | 'time' | 'date-time' | 'datetime-local' | 'week' | 'number'\n | 'search' | 'tel' | 'color' | 'radio' | 'checkbox' | 'hidden' | 'button'\n\nexport interface InputProps {\n id?: string\n theme?: string\n className?: string\n label?: string\n placeholder?: string\n active?: boolean\n pattern?: string\n maxLength?: number\n inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\n prefix?: string\n type?: InputType\n info?: string\n defaultValue?: string | number\n checked?: boolean\n min?: number | string\n max?: number | string\n error?: boolean\n errorMessage?: string\n readOnly?: boolean\n name?: string\n autoComplete?: 'on' | 'off'\n autoFocus?: boolean\n spellCheck?: boolean\n noBorder?: boolean\n listening?: boolean\n onChange?: (value: string | boolean) => void\n onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void\n onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void\n onClick?: (e: React.MouseEvent<HTMLInputElement>) => void\n onKeyUp?: (e: React.KeyboardEvent<HTMLInputElement>) => void\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void\n hideIndicator?: boolean\n darkMode?: boolean\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const {\n id,\n theme,\n className,\n label,\n placeholder,\n active,\n pattern,\n maxLength,\n inputMode,\n prefix,\n type = 'text',\n info,\n defaultValue,\n checked,\n min,\n max,\n error = false,\n errorMessage,\n readOnly = false,\n name,\n autoComplete = 'off',\n autoFocus,\n spellCheck,\n noBorder,\n listening,\n onChange,\n onFocus,\n onBlur,\n onClick,\n onKeyUp,\n onKeyDown,\n hideIndicator,\n darkMode,\n } = props\n\n const [focused, setFocused] = useState(false)\n const inputRef = useRef<HTMLInputElement>(null)\n const hasPrefix = !!prefix && prefix.length > 0\n\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n useEffect(() => {\n if (listening && inputRef.current && defaultValue !== null && defaultValue !== undefined) {\n if (hasPrefix) {\n inputRef.current.value = prefix + String(defaultValue)\n } else {\n inputRef.current.value = String(defaultValue)\n }\n }\n }, [defaultValue])\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n const value = e.target.value\n\n if (hasPrefix && inputRef.current) {\n const plainValue = hasPrefix\n ? value.length < prefix!.length\n ? value.length === 1\n ? value\n : ''\n : value.replace(prefix!, '')\n : value\n\n inputRef.current.value = prefix + plainValue\n if (typeof onChange === 'function') {\n if (type === 'checkbox') {\n onChange(e.target.checked)\n } else {\n onChange(plainValue)\n }\n }\n } else {\n if (typeof onChange === 'function') {\n if (type === 'checkbox') {\n onChange(e.target.checked)\n } else {\n onChange(value)\n }\n }\n }\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n if (type === 'search') {\n setFocused(true)\n }\n if (typeof onFocus === 'function') {\n onFocus(e)\n }\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n if (type === 'search') {\n setFocused(false)\n }\n if (typeof onBlur === 'function') {\n onBlur(e)\n }\n }\n\n return (\n <>\n <div className=\"relative w-full\">\n <input\n id={id}\n className={classNames({\n ...classNameObject(className),\n 'px-3 group form-input placeholder-gray-300 dark:placeholder-charcoal-400 focus:outline-none block transition ease-in-out duration-150 text-black dark:text-charcoal-100 dark:bg-charcoal-800 shadow-sm focus:dark:text-primary-500 focus:dark:border-primary-500 focus:dark:ring-primary-500': true,\n '!text-white !border-charcoal-400 !placeholder-charcoal-400 focus:!text-primary-500 focus:!border-primary-500 focus:!ring-primary-500': !!darkMode,\n 'h-11': !className || !className.includes('h-'),\n 'text-sm': type !== 'tel',\n 'text-lg': type === 'tel',\n 'rounded-lg': type !== 'radio',\n 'rounded-full': type === 'radio',\n 'border border-gray-200 dark:border-charcoal-700 shadow-sm text-black': !noBorder && !readOnly && type !== 'radio',\n 'border border-opacity-20 bg-gray-100 cursor-not-allowed': readOnly,\n 'border-transparent': !!noBorder,\n 'border-red-300 text-red-900 placeholder-red-100 focus:placeholder-red-100 focus:border-red-500 focus:ring-red-300': error,\n 'focus:ring-primary-500': !error && type !== 'radio',\n 'focus:ring-transparent': type === 'radio',\n 'w-full': type !== 'radio' && (!className || className.includes('w-full') || !className.includes('w-')),\n 'sm:leading-normal': !className || !className.includes('leading-'),\n 'cursor-pointer': type === 'checkbox' || type === 'button',\n 'text-black h-4 w-4': type === 'radio',\n 'pr-10': type === 'search',\n })}\n {...(type === 'button' ? { value: label } : {})}\n inputMode={inputMode}\n pattern={pattern}\n name={name}\n min={min}\n max={max}\n ref={inputRef}\n type={type}\n maxLength={maxLength}\n defaultValue={defaultValue}\n placeholder={placeholder}\n readOnly={readOnly}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n spellCheck={spellCheck}\n onClick={onClick}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n />\n {error && !hideIndicator && (\n <div\n className={classNames({\n 'absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none': true,\n '!text-white focus:!text-primary-500': !!darkMode,\n })}\n >\n <svg className=\"w-5 h-5 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )}\n {type === 'search' && (\n <div\n className={classNames({\n 'absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none focus:outline-none active:outline-none': true,\n '!text-white': !!darkMode,\n 'text-gray-600': !focused,\n '!text-primary-500': focused,\n })}\n >\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )}\n </div>\n {error && errorMessage && <p className=\"mt-2 text-sm text-red-600\">{errorMessage}</p>}\n {info != null && !error && <p className=\"mt-2 text-sm text-gray-500\">{info}</p>}\n </>\n )\n})\n\nInput.displayName = 'Input'\n\nexport default Input\n","import React, { type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface LabelProps {\n className?: string\n error?: boolean\n htmlFor?: string\n info?: string\n mandatory?: boolean\n opts?: {\n dark?: boolean\n }\n children?: ReactNode\n}\n\nexport default function Label({\n className,\n error = false,\n htmlFor,\n info,\n mandatory,\n opts,\n children,\n}: LabelProps) {\n return (\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={htmlFor}\n className={classNames({\n 'block text-sm font-medium mb-1.5 text-black dark:text-white': true,\n 'text-black dark:text-white/80': !error,\n 'text-red-600': error,\n ...classNameObject(className),\n })}\n >\n {children}\n {mandatory && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n {info && (\n <span\n className={classNames({\n 'text-sm leading-5 text-black mb-1.5': true,\n 'text-red-600': error,\n })}\n >\n {info}\n </span>\n )}\n </div>\n )\n}\n","import React, { type ReactNode, forwardRef } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface SelectProps {\n id?: string\n loading?: boolean\n className?: string\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void\n error?: boolean\n errorMessage?: string\n info?: string\n readOnly?: boolean\n name?: string\n children?: ReactNode\n value?: string | number\n}\n\nconst Select = forwardRef<HTMLSelectElement, SelectProps>((props, ref) => {\n const {\n id,\n loading = false,\n className,\n onChange,\n error = false,\n errorMessage,\n info,\n readOnly = false,\n name,\n children,\n value,\n } = props\n\n return (\n <>\n {!loading && (\n <div className=\"rounded-md shadow-sm border border-gray-200\">\n <select\n id={id}\n value={value}\n className={classNames({\n ...classNameObject(className),\n ...classNameObject(\n `form-select block w-full transition duration-150 ease-in-out ${\n error\n ? 'border-red-300 text-red-900 placeholder-red-300 focus:border-red-300 focus:shadow-outline-red'\n : ''\n }`\n ),\n })}\n ref={ref}\n name={name}\n disabled={readOnly}\n onChange={onChange}\n >\n {children}\n </select>\n </div>\n )}\n {loading && <span className=\"inline-flex relative w-6 loading\" />}\n {error && errorMessage && <p className=\"mt-2 text-sm text-red-600\">{errorMessage}</p>}\n {info != null && !error && <p className=\"mt-2 text-sm text-gray-500\">{info}</p>}\n </>\n )\n})\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import React, { forwardRef } from 'react'\nimport { classNames } from '../../utils/classNames'\n\nexport interface SelectInputItem {\n id: string\n name: string\n}\n\nexport interface SelectInputProps {\n className?: string\n placeholder?: string\n items?: SelectInputItem[]\n selectedValue?: string\n readOnly?: boolean\n error?: boolean\n onChange?: (value: string) => void\n}\n\nconst SelectInput = forwardRef<HTMLSelectElement, SelectInputProps>((props, ref) => {\n const {\n className,\n placeholder = 'Select an option',\n items = [],\n selectedValue = '',\n readOnly = false,\n error = false,\n onChange = () => {},\n } = props\n\n function handleOnChange(event: React.ChangeEvent<HTMLSelectElement>) {\n const value = event.target.value\n if (typeof onChange === 'function') {\n onChange(value)\n }\n }\n\n return (\n <select\n onChange={handleOnChange}\n value={selectedValue || ''}\n disabled={readOnly}\n className={classNames({\n 'form-select block w-full transition duration-150 ease-in-out border border-gray-200 rounded-md shadow-sm text-sm px-3 h-11 text-black': true,\n 'cursor-not-allowed border bg-gray-100': readOnly,\n 'border-red-300 text-red-900 placeholder-red-100 focus:placeholder-red-100 focus:border-red-500 focus:ring-red-300': error,\n })}\n >\n <option value=\"\" key=\"\">\n {placeholder}\n </option>\n {items.map((item, index) => (\n <option value={item.id} key={index}>\n {item.name}\n </option>\n ))}\n </select>\n )\n})\n\nSelectInput.displayName = 'SelectInput'\n\nexport default SelectInput\n","import React, { forwardRef } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface TextareaProps {\n id?: string\n className?: string\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n onFocus?: (e: React.FocusEvent<HTMLTextAreaElement>) => void\n onMouseDown?: (e: React.MouseEvent<HTMLTextAreaElement>) => void\n placeholder?: string\n error?: boolean\n errorMessage?: string\n info?: string\n readOnly?: boolean\n name?: string\n defaultValue?: string\n rows?: number\n opts?: {\n plateFocus?: string\n }\n autoFocus?: boolean\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>((props, ref) => {\n const {\n id,\n className,\n onChange,\n onFocus,\n onMouseDown,\n placeholder,\n error = false,\n errorMessage,\n info,\n readOnly = false,\n name,\n defaultValue,\n rows,\n opts,\n autoFocus,\n } = props\n\n return (\n <>\n <div className=\"relative rounded-xl shadow-sm\" data-plate-focus={opts?.plateFocus}>\n <textarea\n data-plate-focus={opts?.plateFocus}\n autoFocus={autoFocus}\n id={id}\n rows={rows}\n placeholder={placeholder}\n className={classNames({\n ...classNameObject(className),\n 'form-input border block w-full placeholder-gray-300 dark:placeholder-white/50 dark:focus:placeholder-charcoal-400 text-sm transition ease-in-out duration-150 px-3 py-2 border-gray-200 dark:border-charcoal-700 text-black dark:text-charcoal-100 dark:bg-charcoal-800 rounded-lg': true,\n 'focus:ring-white dark:focus:ring-1 dark:focus:border-primary-600 dark:focus:ring-primary-500': !error,\n 'focus:outline-none focus:ring-0 focus:ring-offset-0 dark:focus:border-primary-500': true,\n 'border-red-300 text-red-900 placeholder-red-300 dark:placeholder-red-600 focus:border-red-300 focus:shadow-outline-red': error,\n })}\n name={name}\n ref={ref}\n defaultValue={defaultValue}\n onFocus={onFocus}\n onMouseDown={onMouseDown}\n onChange={onChange}\n readOnly={readOnly}\n ></textarea>\n {error && (\n <div className=\"absolute top-2 right-0 pr-3 flex pointer-events-none\">\n <svg className=\"h-5 w-5 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )}\n </div>\n {error && errorMessage && <p className=\"mt-2 text-sm text-red-600\">{errorMessage}</p>}\n {info != null && !error && <p className=\"mt-2 text-sm text-gray-500\">{info}</p>}\n </>\n )\n})\n\nTextarea.displayName = 'Textarea'\n\nexport default Textarea\n","import React, { useRef, useState, useReducer, useEffect } from 'react'\n\nexport interface TagInputProps {\n name?: string\n defaultValue?: string[]\n onChange?: (tags: string[]) => void\n placeholder?: string\n}\n\ninterface TagInputState {\n tags: string[]\n}\n\ntype TagInputAction =\n | { tags: string[]; render?: boolean }\n | { reset: boolean; render?: boolean }\n\nexport default function TagInput({\n name,\n defaultValue,\n onChange,\n placeholder,\n}: TagInputProps) {\n const [currentState, setCurrentState] = useState(0)\n const tagInputRef = useRef<HTMLInputElement>(null)\n\n function reducer(state: TagInputState, action: Record<string, unknown>): TagInputState {\n const updatedValues = { ...state }\n if ('tags' in action) {\n updatedValues.tags = Array.from(new Set(action.tags as string[]))\n }\n if ('reset' in action && action.reset) {\n updatedValues.tags = []\n }\n if ('render' in action && action.render) {\n setCurrentState(1 - currentState)\n }\n return updatedValues\n }\n\n const [values, dispatch] = useReducer(reducer, {\n tags: [],\n })\n const { tags } = values\n\n useEffect(() => {\n if (defaultValue) {\n dispatch({ tags: defaultValue, render: true })\n } else {\n dispatch({ reset: true, render: true })\n }\n }, [defaultValue])\n\n function handleAddTag(event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key === 'Enter') {\n const value = (event.target as HTMLInputElement).value\n if (!value) return false\n const newTags = Array.from(new Set([...tags, value]))\n dispatch({ tags: newTags, render: true })\n if (typeof onChange === 'function') {\n onChange(newTags)\n }\n if (tagInputRef.current) {\n tagInputRef.current.value = ''\n }\n }\n }\n\n function handleRemoveTag(tag: string) {\n if (!tag) return false\n const newTags = tags.filter((i) => i !== tag)\n dispatch({ tags: newTags, render: true })\n if (typeof onChange === 'function') {\n onChange(newTags)\n }\n }\n\n return (\n <div className=\"flex items-center w-full flex-wrap px-2 pt-2 pb-1 border border-gray-300 rounded-md\">\n {tags.map((tag, index) => (\n <span\n key={index}\n className=\"inline-flex bg-primary-200 text-primary-800 text-sm rounded-full h-6 px-3 justify-center items-center mr-1 mb-1\"\n >\n {tag}\n <svg\n className=\"w-4 h-4 ml-1 cursor-pointer\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={() => handleRemoveTag(tag)}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n ))}\n <input\n ref={tagInputRef}\n className=\"ml-2 text-sm focus:border-transparent focus:outline-none mb-1\"\n placeholder={tags && tags.length > 0 ? '' : placeholder}\n onKeyDown={handleAddTag}\n />\n </div>\n )\n}\n","import React from 'react'\n\nexport interface NoDataProps {\n className?: string\n}\n\nexport default function NoData({ className }: NoDataProps) {\n return (\n <div className={`flex flex-col items-center text-center my-8 ${className || ''}`}>\n <img\n src=\"/img/no-data.png\"\n width={420}\n height={307}\n className='max-w-[90%]'\n alt=\"no data found\"\n />\n <div className='max-w-[90%] flex flex-col text-center'>\n <h4 className='text-6 font-medium text-gray-900 mt-3 dark:text-white/50'>It's empty.</h4>\n <p className='text-4 text-gray-700 dark:text-white/60'>Nothing to do for now.</p>\n </div>\n </div>\n )\n}\n","import React, { useState, useEffect, useContext, createContext } from 'react'\n\nexport interface ThemeContextProps {\n theme: string\n darkMode: boolean\n handleToggleTheme: (theme: string) => void\n}\n\nexport const ThemeContext = createContext<ThemeContextProps | undefined>(undefined)\n\nlet currentIsDark = false\ninterface MockListener {\n listener: any\n query: string\n}\nconst matchMediaListeners = new Set<MockListener>()\nlet originalMatchMedia: typeof window.matchMedia | null = null\n\nif (typeof window !== 'undefined') {\n originalMatchMedia = window.matchMedia\n\n try {\n const saved = localStorage.getItem(\"theme\")\n const prefersDark = originalMatchMedia.call(window, '(prefers-color-scheme: dark)').matches\n const isSystemOrNone = !saved || saved === \"system\"\n currentIsDark = saved === \"dark\" || (isSystemOrNone && prefersDark)\n } catch (e) {\n // Ignore errors during synchronous initialization\n }\n\n window.matchMedia = function (query: string) {\n const normalized = query.replace(/\\s+/g, '').toLowerCase()\n const isDarkQuery = normalized.includes('prefers-color-scheme:dark')\n const isLightQuery = normalized.includes('prefers-color-scheme:light')\n\n if (isDarkQuery || isLightQuery) {\n const matches = isDarkQuery ? currentIsDark : !currentIsDark\n return {\n matches,\n media: query,\n onchange: null,\n addListener(listener: any) {\n matchMediaListeners.add({ listener, query })\n },\n removeListener(listener: any) {\n for (const item of matchMediaListeners) {\n if (item.listener === listener) {\n matchMediaListeners.delete(item)\n }\n }\n },\n addEventListener(type: string, listener: any) {\n if (type === 'change') {\n matchMediaListeners.add({ listener, query })\n }\n },\n removeEventListener(type: string, listener: any) {\n if (type === 'change') {\n for (const item of matchMediaListeners) {\n if (item.listener === listener) {\n matchMediaListeners.delete(item)\n }\n }\n }\n },\n dispatchEvent(event: Event) {\n return true\n }\n } as unknown as MediaQueryList\n }\n return originalMatchMedia!.call(window, query)\n }\n}\n\nexport interface ThemeProviderProps {\n children: React.ReactNode\n defaultTheme?: string\n}\n\nexport function ThemeProvider({ children, defaultTheme = \"system\" }: ThemeProviderProps) {\n const [mode, setMode] = useState<string>(defaultTheme)\n const [isDark, setIsDark] = useState<boolean>(false)\n const [mounted, setMounted] = useState<boolean>(false)\n\n useEffect(() => {\n const saved = localStorage.getItem(\"theme\") || defaultTheme\n setMode(saved)\n setMounted(true)\n }, [defaultTheme])\n\n useEffect(() => {\n if (!mounted) return\n\n const media = originalMatchMedia\n ? originalMatchMedia.call(window, \"(prefers-color-scheme: dark)\")\n : null\n\n const updateTheme = () => {\n const prefersDark = media ? media.matches : false\n const currentIsDarkVal = mode === \"dark\" || (mode === \"system\" && prefersDark)\n\n if (currentIsDarkVal) {\n document.documentElement.classList.add(\"dark\")\n document.documentElement.classList.remove(\"light\")\n } else {\n document.documentElement.classList.remove(\"dark\")\n document.documentElement.classList.add(\"light\")\n }\n\n currentIsDark = currentIsDarkVal\n setIsDark(currentIsDarkVal)\n\n // Notify matchMedia change listeners\n matchMediaListeners.forEach(({ listener, query }) => {\n try {\n const normalized = query.replace(/\\s+/g, '').toLowerCase()\n const isDarkQuery = normalized.includes('prefers-color-scheme:dark')\n const matches = isDarkQuery ? currentIsDarkVal : !currentIsDarkVal\n \n const event = { matches, media: query }\n if (typeof listener === 'function') {\n listener(event)\n } else if (listener && typeof (listener as any).handleEvent === 'function') {\n (listener as any).handleEvent(event)\n }\n } catch (e) {\n console.error(e)\n }\n })\n }\n\n // Defer the theme application to the next event loop tick to ensure it runs after external scripts / extensions initialize\n const timeoutId = setTimeout(updateTheme, 0)\n\n // We also want to listen to changes on media queries dynamically\n const handleMediaChange = () => {\n // Run immediately on query change\n updateTheme()\n }\n \n if (media) {\n media.addEventListener(\"change\", handleMediaChange)\n }\n\n return () => {\n clearTimeout(timeoutId)\n if (media) {\n media.removeEventListener(\"change\", handleMediaChange)\n }\n }\n }, [mode, mounted])\n\n function handleToggleTheme(triggerMode: string) {\n const triggeredMode = (triggerMode === mode) ? \"system\" : triggerMode\n setMode(triggeredMode)\n\n if (!triggeredMode || triggeredMode === \"system\") {\n localStorage.removeItem(\"theme\")\n } else {\n localStorage.setItem(\"theme\", triggeredMode)\n }\n }\n\n return (\n <ThemeContext.Provider\n value={{\n theme: mode,\n darkMode: isDark,\n handleToggleTheme\n }}\n >\n {children}\n </ThemeContext.Provider>\n )\n}\n\nexport function useThemeContext() {\n const context = useContext(ThemeContext)\n if (!context) {\n throw new Error(\"useThemeContext must be used within a ThemeProvider\")\n }\n return context\n}\n","import React from \"react\"\nimport { classNames } from \"../../utils/classNames\"\nimport { useThemeContext } from \"../../contexts/ThemeContext\"\n\nexport default function ThemeToggle() {\n const { theme, handleToggleTheme } = useThemeContext()\n\n return (\n <div className=\"text-charcoal-700 dark:text-white z-30 flex space-x-1.5 items-center\">\n <div\n className={classNames({\n \"opacity-20 cursor-pointer\": true,\n \"!opacity-100\": theme === \"light\"\n })}\n onClick={() => handleToggleTheme(\"light\")}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-6 h-6\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z\" />\n </svg>\n </div>\n <div\n className={classNames({\n \"opacity-20 cursor-pointer\": true,\n \"!opacity-100\": theme === \"dark\"\n })}\n onClick={() => handleToggleTheme(\"dark\")}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-5 h-5\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z\" />\n </svg>\n </div>\n </div>\n )\n}\n","export function debounce<T extends (...args: any[]) => void>(fn: T, delay: number) {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n return function(this: any, ...args: Parameters<T>) {\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n fn.apply(this, args);\n }, delay);\n };\n}\n","import { useCallback } from 'react'\nimport { debounce } from '../utils/debounce'\n\nexport default function useDebounce<T extends (...args: any[]) => void>(\n callback: T,\n delay: number,\n deps: any[] = []\n) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const callbackFn = useCallback(debounce(callback, delay), deps)\n return [callbackFn]\n}\n","import { useState, useEffect } from 'react'\nimport useDebounce from './useDebounce'\n\nexport interface ResizeListenerProps {\n mobileAgent?: boolean\n}\n\nexport interface ResizeValues {\n screenWidth: number\n screenHeight: number\n viewport: 'mobile' | 'desktop' | null\n viewMode: 'portrait-view' | 'landscape-view' | null\n mobileView: boolean | null\n tabletView: boolean | null\n}\n\nexport default function useResizeListener(props: ResizeListenerProps = {}) {\n const [values, setValues] = useState<[\n number,\n number,\n ('mobile' | 'desktop' | null),\n ('portrait-view' | 'landscape-view' | null),\n (boolean | null),\n (boolean | null)\n ]>(\n [\n typeof window === 'undefined' ? (props.mobileAgent ? 375 : 1080) : window.innerWidth,\n typeof window === 'undefined' ? (props.mobileAgent ? 812 : 750) : window.innerHeight,\n typeof window === 'undefined' ? null : (window.innerWidth < 576 ? 'mobile' : 'desktop'),\n typeof window === 'undefined' ? null : (window.innerWidth < 576 ? 'portrait-view' : 'landscape-view'),\n typeof window === 'undefined' ? (props.mobileAgent || null) : (window.innerWidth < 576 ? true : false),\n typeof window === 'undefined' ? (props.mobileAgent || null) : ((window.innerWidth >= 576 && window.innerWidth < 992) ? true : false)\n ]\n )\n const [screenWidth, screenHeight, viewport, viewMode, mobileView, tabletView] = values || []\n\n function handleChangeViewport() {\n setValues([\n window.innerWidth,\n window.innerHeight,\n window.innerWidth < 576 ? 'mobile' : 'desktop',\n window.innerWidth < 576 ? 'portrait-view' : 'landscape-view',\n window.innerWidth < 576 ? true : false,\n (window.innerWidth >= 576 && window.innerWidth < 992) ? true : false\n ])\n }\n\n const [debouncedSetValue] = useDebounce(handleChangeViewport, 300)\n\n useEffect(() => {\n window.addEventListener('resize', debouncedSetValue)\n return () => {\n window.removeEventListener('resize', debouncedSetValue)\n }\n }, [debouncedSetValue])\n\n return { screenWidth, screenHeight, viewport, viewMode, mobileView, tabletView }\n}\n","import React, { useReducer, useContext, createContext, useCallback, useMemo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { classNames } from \"../utils/classNames\"\n\nexport interface PopoverActionItem {\n id: string\n label: string\n action?: () => void | Promise<void>\n onClick?: () => void | Promise<void>\n}\n\nexport interface PopoverAction {\n id: string\n section?: string\n items: PopoverActionItem[]\n}\n\nexport interface PopoverState {\n show: boolean\n style: React.CSSProperties | null\n tooltipStyle: React.CSSProperties | null\n position: 'top' | 'bottom' | null\n description?: string | null\n actions: PopoverAction[] | null\n}\n\nexport interface PopoverContextProps {\n showPopover: boolean\n setPopover: (params: PopoverState) => void\n}\n\nexport const PopoverContext = createContext<PopoverContextProps | undefined>(undefined)\n\nfunction PopoverCard({\n show,\n style,\n tooltipStyle,\n position,\n description,\n actions,\n onClose\n}: PopoverState & { onClose: () => void }) {\n function handleMenuClick(action?: (() => void | Promise<void>)) {\n if (typeof action === 'function') {\n action()\n }\n if (typeof onClose === 'function') {\n onClose()\n }\n }\n\n function handleCloseMenu() {\n if (typeof onClose === 'function') {\n onClose()\n }\n }\n\n const stickyTop = position === \"top\"\n\n if (typeof document === \"undefined\") return null\n\n return createPortal(\n <>\n {/* DESKTOP VIEW */}\n <div\n className={classNames({\n \"hidden sm:block fixed text-sm z-[9999] w-52 max-h-64 overflow-y-auto border border-gray-100 bg-white dark:bg-charcoal-800 dark:border-charcoal-700 shadow-md rounded-md pt-3 pb-2\": true,\n \"pointer-events-none opacity-0\": !show,\n \"opacity-100\": show\n })}\n style={style || undefined}\n >\n {\n !!description &&\n <p className=\"px-3 pb-1 opacity-70\">\n {description}\n </p>\n }\n {\n actions && actions.length > 0 &&\n <div className=\"space-y-1.5 w-full\">\n {\n actions.filter(action => (action.items || []).length > 0).map((action, actionIndex) => (\n <div key={action.id}>\n {\n actionIndex > 0 &&\n <div className=\"w-full h-px bg-gray-100 dark:bg-charcoal-800 mb-3\">\n </div>\n }\n {\n action.section &&\n <p className=\"px-3 text-xxs sm:text-xs uppercase text-gray-500 dark:text-white dark:hover\">\n {action.section}\n </p>\n }\n <div\n className={classNames({\n \"mt-1\": !!action.section\n })}\n >\n {\n (action.items || []).map(item => (\n <div\n key={item.id}\n className=\"text-sm sm:text-base px-3 py-1.5 text-charcoal-700 dark:text-charcoal-300 hover:text-gray-900 hover:bg-gray-200 hover:dark:text-charcoal-200 hover:dark:bg-charcoal-700 cursor-pointer whitespace-normal\"\n onClick={() => handleMenuClick(item.action || item.onClick)}\n >\n {item.label}\n </div>\n ))\n }\n </div>\n </div>\n ))\n }\n </div>\n }\n </div>\n <div\n className={classNames({\n \"hidden sm:block fixed z-[9999] rotate-45 w-4 h-4 overflow-y-auto border-gray-100 bg-white dark:bg-charcoal-700 dark:border-charcoal-800\": true,\n \"border-t border-l\": !stickyTop,\n \"border-b border-r\": stickyTop,\n \"pointer-events-none opacity-0\": !show,\n \"opacity-100\": show\n })}\n style={tooltipStyle || undefined}\n />\n\n {/* MOBILE VIEW (BOTTOM SHEET) */}\n <div className={classNames({\n \"block sm:hidden fixed inset-0 z-[9999] pointer-events-none\": true,\n })}>\n {/* Backdrop */}\n <div\n className={classNames({\n \"absolute inset-0 bg-black/50 transition-opacity duration-300\": true,\n \"opacity-0\": !show,\n \"opacity-100 pointer-events-auto\": show\n })}\n onClick={handleCloseMenu}\n ></div>\n\n {/* Sheet */}\n <div\n className={classNames({\n \"absolute bottom-0 left-0 right-0 bg-white dark:bg-charcoal-800 overflow-hidden transition-transform duration-300 transform\": true,\n \"translate-y-full\": !show,\n \"translate-y-0 pointer-events-auto\": show\n })}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3\">\n <h3 className=\"font-semibold text-gray-900 dark:text-white\">Menu</h3>\n <div\n onClick={handleCloseMenu}\n className=\"p-1 -mr-1 text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-charcoal-700 rounded-full\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"px-4 pb-6 max-h-[70vh] overflow-y-auto\">\n {\n !!description &&\n <p className=\"mb-4 text-sm text-gray-500 dark:text-gray-400\">\n {description}\n </p>\n }\n <div className=\"space-y-4\">\n {\n actions && actions.filter(action => (action.items || []).length > 0).map((action, actionIndex) => (\n <div key={action.id}>\n {\n action.section &&\n <p className=\"text-xs font-medium uppercase text-gray-500 dark:text-gray-400 mb-2\">\n {action.section}\n </p>\n }\n <div className=\"space-y-1\">\n {\n (action.items || []).map(item => (\n <div\n key={item.id}\n className=\"py-1.5 px-2 -mx-2 flex items-center text-base text-gray-900 dark:text-gray-200 active:bg-gray-50 dark:active:bg-charcoal-700 rounded-lg cursor-pointer\"\n onClick={() => handleMenuClick(item.action || item.onClick)}\n >\n {item.label}\n </div>\n ))\n }\n </div>\n {/* Divider if not last */}\n {\n actionIndex < actions.length - 1 &&\n <hr className=\"mt-2 border-transparent\" />\n }\n </div>\n ))\n }\n </div>\n </div>\n </div>\n </div>\n\n {/* Close Overlay for Desktop */}\n {\n show &&\n <div\n className=\"hidden sm:block fixed inset-0\"\n onClick={handleCloseMenu}\n >\n\n </div>\n }\n </>,\n document.body\n )\n}\n\nconst resetValues: PopoverState = {\n show: false,\n style: null,\n tooltipStyle: null,\n position: null,\n description: null,\n actions: null\n}\n\nfunction reducer(state: PopoverState, action: Partial<PopoverState>) {\n let changed = false\n for (const k in action) {\n const key = k as keyof PopoverState\n if (action[key] !== state[key]) {\n changed = true\n break\n }\n }\n if (!changed) return state\n\n const updatedValues = { ...state }\n\n if ('show' in action) { updatedValues.show = action.show! }\n if ('style' in action) { updatedValues.style = action.style! }\n if ('tooltipStyle' in action) { updatedValues.tooltipStyle = action.tooltipStyle! }\n if ('position' in action) { updatedValues.position = action.position! }\n if ('description' in action) { updatedValues.description = action.description }\n if ('actions' in action) { updatedValues.actions = action.actions! }\n\n return updatedValues\n}\n\nexport function PopoverProvider({ children }: { children: React.ReactNode }) {\n const [values, dispatch] = useReducer(reducer, resetValues)\n\n const { show, style, tooltipStyle, position, description, actions } = values\n\n const handleShowPopover = useCallback((params: PopoverState) => {\n dispatch(params)\n }, [])\n\n const handleClosePopover = useCallback(() => {\n dispatch(resetValues)\n }, [])\n\n const contextValue = useMemo(() => ({\n showPopover: show,\n setPopover: handleShowPopover,\n }), [show, handleShowPopover])\n\n return (\n <PopoverContext.Provider value={contextValue}>\n {children}\n {\n !!show &&\n <PopoverCard\n show={show}\n style={style}\n tooltipStyle={tooltipStyle}\n position={position}\n description={description}\n actions={actions}\n onClose={handleClosePopover}\n />\n }\n </PopoverContext.Provider>\n )\n}\n\nexport function usePopoverContext() {\n const context = useContext(PopoverContext)\n if (!context) {\n throw new Error(\"usePopoverContext must be used within a PopoverProvider\")\n }\n return context\n}\n","import React, { useRef, useEffect, useState } from \"react\"\nimport { classNames, classNameObject } from \"../../utils/classNames\"\nimport useResizeListener from \"../../hooks/useResizeListener\"\nimport { usePopoverContext, PopoverAction } from \"../../contexts/PopoverContext\"\n\nexport interface PopoverProps {\n className?: string\n description?: string | null\n actions: PopoverAction[]\n children: React.ReactNode\n opts?: {\n activated?: boolean\n condensed?: boolean\n compact?: boolean\n asBlock?: boolean\n align?: string\n }\n}\n\nexport default function Popover({ className, description, actions, children, opts }: PopoverProps) {\n const { activated } = opts || {}\n const { showPopover, setPopover } = usePopoverContext()\n\n const { screenWidth, screenHeight } = useResizeListener()\n const [menuData, setMenuData] = useState({ showMenu: false, x: 0, y: 0, left: 0, right: 0, top: 0, bottom: 0 })\n\n const parentRef = useRef<HTMLDivElement>(null)\n const prevShowMenuRef = useRef(false)\n const prevShowPopoverRef = useRef(false)\n\n const hasAction = (actions || []).some(action => (action.items || []).length > 0)\n\n useEffect(() => {\n const wasOpen = prevShowMenuRef.current\n prevShowMenuRef.current = menuData.showMenu\n\n // Only update context if we are currently open, OR if we were open and are now closing.\n // This prevents infinite render loops when the popover is closed and during initial mounts.\n if (!menuData.showMenu && !wasOpen) {\n return\n }\n\n const stickyTop = menuData.showMenu && screenHeight - (menuData.y + 14) < 300\n\n setPopover({\n show: menuData.showMenu,\n style: !stickyTop ? {\n top: menuData.bottom + 14,\n right: screenWidth - menuData.right - 6\n } : {\n bottom: screenHeight - menuData.top + 12,\n right: screenWidth - menuData.right - 6\n },\n tooltipStyle: !stickyTop ? {\n top: menuData.bottom + 6,\n right: screenWidth - menuData.right + 6\n } : {\n bottom: screenHeight - menuData.top + 4,\n right: screenWidth - menuData.right + 6\n },\n position: stickyTop ? \"top\" : \"bottom\",\n description: description,\n actions: actions\n })\n }, [menuData, screenWidth, screenHeight, description, actions, setPopover])\n\n useEffect(() => {\n if (prevShowPopoverRef.current && !showPopover) {\n setMenuData(prev => ({\n ...prev,\n showMenu: false\n }))\n }\n prevShowPopoverRef.current = showPopover\n }, [showPopover])\n\n function handleToggleMenu(e: React.MouseEvent) {\n e.stopPropagation()\n\n if (menuData.showMenu) {\n handleCloseMenu()\n } else {\n handleOpenMenu()\n }\n }\n\n function handleOpenMenu() {\n if (parentRef && parentRef.current) {\n const coords = parentRef.current.getBoundingClientRect()\n setMenuData({\n showMenu: true,\n left: coords.left,\n right: coords.right,\n top: coords.top,\n bottom: coords.bottom,\n x: screenWidth - coords.right,\n y: coords.bottom\n })\n }\n }\n\n function handleCloseMenu() {\n setMenuData({\n showMenu: false,\n x: 0,\n y: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n })\n }\n\n return (\n <div className=\"block h-full\">\n <div\n ref={parentRef}\n className={classNames({\n \"cursor-pointer py-0.5 px-2 h-full flex items-center justify-center hover:bg-gray-300/50 hover:dark:bg-charcoal-700 rounded-xl\": true,\n \"bg-gray-300/50 dark:bg-charcoal-700\": menuData.showMenu && !activated,\n ...classNameObject(className)\n })}\n onClick={handleToggleMenu}\n >\n {children}\n </div>\n </div>\n )\n}\n","const srgbToLinear = (c: number) => {\n c /= 255\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\n}\n\nconst luminance = (r: number, g: number, b: number) => {\n const R = srgbToLinear(r)\n const G = srgbToLinear(g)\n const B = srgbToLinear(b)\n return 0.2126 * R + 0.7152 * G + 0.0722 * B\n}\n\nconst contrastRatio = (L1: number, L2: number) => {\n const [light, dark] = L1 > L2 ? [L1, L2] : [L2, L1]\n return (light + 0.05) / (dark + 0.05)\n}\n\nconst hexToRgb = (hex: string) => {\n hex = hex.replace(/^#/, \"\")\n if (hex.length === 3) {\n hex = hex.split(\"\").map(x => x + x).join(\"\")\n }\n const num = parseInt(hex, 16)\n return {\n r: (num >> 16) & 255,\n g: (num >> 8) & 255,\n b: num & 255,\n }\n}\n\nexport function bestTextColorForBg(hex?: string | null): 'white' | 'black' {\n const { r, g, b } = hexToRgb(hex || \"#FFFFFF\")\n const Lbg = luminance(r, g, b)\n const contrastWithWhite = contrastRatio(Lbg, 1)\n const contrastWithBlack = contrastRatio(Lbg, 0)\n return contrastWithWhite >= contrastWithBlack ? \"white\" : \"black\"\n}\n\nexport const numberFormatter = (\n x?: number | string | null,\n decimal?: number | null,\n opts?: { decimalSign?: string; thousandSign?: string }\n): string => {\n const { decimalSign, thousandSign } = opts || {}\n\n if (x === null || x === undefined || x === \"\") return \"\"\n const parsedX = typeof x === \"string\" ? parseFloat(x) : x\n if (isNaN(parsedX)) return \"\"\n\n const value = Math.round(parsedX * 100) / 100\n\n if (typeof decimal == \"number\") {\n if (Math.floor(value) == value) {\n return value\n .toFixed(decimal || 0)\n .toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSign || \",\")\n }\n\n return value\n .toFixed(decimal)\n .toString()\n .replace(\".\", decimalSign || \".\")\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSign || \",\")\n }\n\n return parsedX.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSign || \",\")\n}\n\nexport function moveItem<T>(items: T[], movedItem: T, fromIndex: number, toIndex: number): T[] {\n return items.reduce<T[]>((prev, item, itemIndex) => {\n if (itemIndex === fromIndex) {\n return prev\n }\n\n if (itemIndex === toIndex) {\n if (fromIndex < toIndex) {\n return [...prev, item, movedItem]\n } else {\n return [...prev, movedItem, item]\n }\n }\n\n return [...prev, item]\n }, [])\n}\n","import React, { useEffect, useReducer, useState } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\nimport { moveItem } from '../../utils/format'\n\nexport interface DraggerProps {\n type?: 'table' | 'div'\n parentClassName?: string\n header?: React.ReactNode\n records: any[]\n timestamp?: any\n disabled?: boolean\n children: React.ReactElement\n onChange?: (updatedRecords: any[]) => void\n}\n\ninterface DraggerState {\n items: React.ReactElement[] | null\n displayItems: React.ReactElement[] | null\n dragging: boolean\n dragItem: React.ReactElement | null\n dragFrom: number | null\n dragTo: number | null\n updated: boolean\n timer?: ReturnType<typeof setTimeout> | null\n cursorX?: number\n cursorY?: number\n}\n\nexport default function Dragger({\n type,\n parentClassName,\n header,\n records,\n timestamp,\n disabled,\n children,\n onChange\n}: DraggerProps) {\n const [, setCurrentState] = useState(0)\n\n const [values, dispatch] = useReducer(reducer, {\n items: null,\n displayItems: null,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n updated: false,\n timer: null\n } as DraggerState)\n\n const { items, displayItems, dragging, dragItem, dragFrom, dragTo, updated } = values || {}\n const grandChildren = children && (children.props as any).children\n const isValid = !disabled && !!records && !!children && !!grandChildren && grandChildren.length > 0\n\n useEffect(() => {\n dispatch({\n items: grandChildren,\n updated: false,\n render: true\n })\n }, [timestamp, grandChildren])\n\n useEffect(() => {\n if (!updated) {\n if (grandChildren && grandChildren.length > 0) {\n dispatch({\n items: grandChildren,\n displayItems: grandChildren,\n updated: false,\n render: true\n })\n } else {\n dispatch({\n items: [],\n displayItems: [],\n updated: false,\n render: true\n })\n }\n }\n }, [grandChildren, updated])\n\n function reducer(state: DraggerState, action: Partial<DraggerState> & { render?: boolean }) {\n const updatedValues = { ...state }\n\n if ('items' in action) { updatedValues.items = action.items! }\n if ('displayItems' in action) { updatedValues.displayItems = action.displayItems! }\n if ('dragging' in action) { updatedValues.dragging = action.dragging! }\n\n if ('dragItem' in action) { updatedValues.dragItem = action.dragItem! }\n if ('dragFrom' in action) { updatedValues.dragFrom = action.dragFrom! }\n if ('dragTo' in action) { updatedValues.dragTo = action.dragTo! }\n\n if ('updated' in action) { updatedValues.updated = action.updated! }\n\n if ('timer' in action) { updatedValues.timer = action.timer }\n if ('cursorX' in action) { updatedValues.cursorX = action.cursorX }\n if ('cursorY' in action) { updatedValues.cursorY = action.cursorY }\n\n if (action.render) { setCurrentState(prev => 1 - prev) }\n\n return updatedValues\n }\n\n if (!isValid) {\n if (type === \"table\") {\n return (\n <table className={parentClassName}>\n {header}\n {children}\n </table>\n )\n }\n\n return children\n }\n\n function handleDragStart(e: React.DragEvent, item: React.ReactElement, index: number) {\n e.stopPropagation()\n\n dispatch({\n dragging: true,\n dragItem: item,\n dragFrom: index,\n render: true\n })\n }\n\n function handleDragEnd() {\n if (dragFrom !== dragTo) {\n const updatedItems = moveItem(items || [], dragItem!, dragFrom!, dragTo!)\n\n dispatch({\n items: updatedItems,\n displayItems: updatedItems,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n updated: true,\n render: true\n })\n\n if (typeof onChange === 'function') {\n const updated = !!updatedItems && updatedItems.map(updatedItem => records.find(record => record.id === updatedItem.key))\n onChange(updated)\n }\n } else {\n dispatch({\n items: items,\n displayItems: displayItems,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n render: true\n })\n }\n }\n\n function handleDragOver(ev: React.DragEvent, index: number) {\n ev.preventDefault()\n\n if (dragging && dragTo !== index) {\n if (dragFrom !== index) {\n const updatedItems = moveItem(items || [], dragItem!, dragFrom!, index)\n\n dispatch({\n displayItems: updatedItems,\n dragTo: index,\n render: dragTo !== index\n })\n }\n else {\n dispatch({\n displayItems: items,\n dragTo: index,\n render: dragTo !== index\n })\n }\n }\n }\n\n function handleContextMenu(e: React.MouseEvent) {\n e.preventDefault()\n }\n\n function handleTouchStart(e: React.TouchEvent) {\n const touch = e.touches[0] || e.changedTouches[0]\n const { clientX, clientY } = touch\n\n const timer = setTimeout(() => handleLongTouchStart({ clientX, clientY }), 500)\n dispatch({\n timer: timer,\n cursorX: clientX,\n cursorY: clientY,\n dragging: false\n })\n }\n\n function handleLongTouchStart({ clientX, clientY }: { clientX: number, clientY: number }) {\n const difference = Math.abs(clientY - (values.cursorY || 0))\n\n if (difference > 40) {\n return false\n }\n\n dispatch({ dragging: true })\n\n const cards = records\n\n let elementInBoundary: HTMLElement | null = null\n let elementIndex: number | null = null\n for (let i = 0; i < cards.length; i++) {\n const cardItem = cards[i]\n\n if (!!cardItem) {\n const element = document.getElementById(cardItem.id)\n if (element) {\n const { top, right, bottom, left } = element.getBoundingClientRect()\n\n if (left <= clientX && clientX <= right && top <= clientY && clientY <= bottom) {\n elementInBoundary = element\n elementIndex = i\n break\n }\n }\n }\n }\n\n if (elementInBoundary && elementIndex !== null && items) {\n dispatch({\n dragging: true,\n dragItem: items[elementIndex],\n dragFrom: elementIndex,\n render: true\n })\n }\n }\n\n function handleTouchMove(e: React.TouchEvent) {\n const touch = e.touches[0] || e.changedTouches[0]\n const { clientX, clientY } = touch\n\n dispatch({\n cursorX: clientX,\n cursorY: clientY\n })\n\n if (values.dragging && items) {\n const cards = records\n\n let targetIndex: number | null = null\n for (let i = 0; i < cards.length; i++) {\n const cardItem = cards[i]\n\n if (!!cardItem) {\n const element = document.getElementById(cardItem.id)\n if (element) {\n const { top, right, bottom, left } = element.getBoundingClientRect()\n\n if (left <= clientX && clientX <= right && top <= clientY && clientY <= bottom) {\n targetIndex = i\n break\n }\n }\n }\n }\n\n if (targetIndex !== null && values.dragFrom !== targetIndex) {\n const updatedItems = moveItem(items, values.dragItem!, values.dragFrom!, targetIndex)\n\n dispatch({\n displayItems: updatedItems,\n dragTo: targetIndex,\n render: dragTo !== targetIndex\n })\n } else {\n dispatch({\n displayItems: items,\n dragTo: values.dragFrom,\n render: dragTo !== values.dragFrom\n })\n }\n }\n }\n\n function handleTouchEnd() {\n if (dragFrom !== dragTo) {\n const updatedItems = moveItem(values.items || [], values.dragItem!, values.dragFrom!, values.dragTo!)\n\n dispatch({\n items: updatedItems,\n displayItems: updatedItems,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n updated: true,\n render: true\n })\n\n if (typeof onChange === 'function') {\n const updated = !!updatedItems && updatedItems.map(updatedItem => records.find(record => record.id === updatedItem.key))\n onChange(updated)\n }\n } else {\n dispatch({\n items: items,\n displayItems: displayItems,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n render: true\n })\n }\n\n if (values.timer) {\n clearTimeout(values.timer)\n }\n\n dispatch({ dragging: false })\n }\n\n const derivedItems = !!items && React.cloneElement(children as React.ReactElement<any>, {\n children: items.map((grandChild, index) => {\n return React.cloneElement(grandChild as React.ReactElement<any>, {\n id: (records[index] || {}).id,\n draggable: true,\n className: classNames({\n ...classNameObject((grandChild.props as any).className),\n \"opacity-0\": !!dragging && dragTo === index\n }),\n onDragStart: (e: React.DragEvent) => handleDragStart(e, grandChild, index),\n onDragEnd: () => handleDragEnd(),\n onDragOver: (ev: React.DragEvent) => handleDragOver(ev, index),\n onTouchStart: (e: React.TouchEvent) => handleTouchStart(e),\n onTouchMove: (e: React.TouchEvent) => handleTouchMove(e),\n onTouchEnd: () => handleTouchEnd(),\n onContextMenu: (e: React.MouseEvent) => handleContextMenu(e)\n })\n })\n })\n\n const derivedDisplayItems = !!displayItems && React.cloneElement(children as React.ReactElement<any>, {\n children: displayItems.map((grandChild, index) => {\n return React.cloneElement(grandChild as React.ReactElement<any>, {\n draggable: true,\n className: classNames({\n ...classNameObject((grandChild.props as any).className),\n \"opacity-25 sm:opacity-0\": !!dragging && dragTo === index\n })\n })\n })\n })\n\n if (type === \"table\") {\n return (\n <table\n className={classNames({\n \"relative\": true,\n ...classNameObject(parentClassName)\n })}\n >\n {header}\n {derivedItems}\n <tbody\n className={classNames({\n \"absolute top-10 left-0 right-0 z-20 pointer-events-none\": true,\n \"hidden\": !dragging\n })}\n >\n {derivedDisplayItems}\n </tbody>\n </table>\n )\n }\n\n return (\n <div className=\"relative\">\n {derivedItems}\n <div\n className={classNames({\n \"absolute top-0 left-0 right-0 z-20 pointer-events-none bg-white dark:bg-gray-900\": true,\n \"hidden\": !dragging\n })}\n >\n {derivedDisplayItems}\n </div>\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { classNames } from \"../../utils/classNames\"\n\nexport interface ExcelColumn {\n id: string\n label: string | React.ReactNode\n width?: string\n align?: 'left' | 'center' | 'right'\n type?: 'text' | 'number' | 'textarea' | 'checkbox'\n}\n\nexport interface ExcelTableProps {\n columns: ExcelColumn[]\n data: any[]\n onChange?: (newData: any[]) => void\n onRowAdd?: () => void\n onRowDelete?: (index: number) => void\n placeholder?: string | ((rowIndex: number) => string)\n isAddRowVisible?: boolean\n addRowLabel?: string\n}\n\nexport default function ExcelTable({\n columns = [],\n data = [],\n onChange,\n onRowAdd,\n onRowDelete,\n placeholder,\n isAddRowVisible = true,\n addRowLabel = \"+ Add Option\"\n}: ExcelTableProps) {\n const [editingCell, setEditingCell] = useState<{ row: number; col: number } | null>(null)\n\n // Auto-resize textareas on initial load and data change\n useEffect(() => {\n setTimeout(() => {\n const textareas = document.querySelectorAll('.excel-table-textarea') as NodeListOf<HTMLTextAreaElement>\n textareas.forEach(ta => {\n ta.style.height = 'auto'\n ta.style.height = ta.scrollHeight + 'px'\n })\n }, 0)\n }, [data])\n\n const handleCellNavigation = (e: React.KeyboardEvent<HTMLElement>, currentRow: number, currentCol: number) => {\n const isEditing = editingCell?.row === currentRow && editingCell?.col === currentCol\n\n const totalRows = data.length\n const totalCols = columns.length + 1\n const addRowIndex = totalRows\n\n let nextRow = currentRow\n let nextCol = currentCol\n\n const isAddRow = currentRow === addRowIndex\n\n if (isEditing) {\n if (e.key === 'Enter' && !e.shiftKey) {\n setEditingCell(null)\n if (currentRow < totalRows - 1) nextRow = currentRow + 1\n else if (currentRow === totalRows - 1) nextRow = addRowIndex\n } else {\n return\n }\n } else {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {\n e.preventDefault()\n\n if (e.key === 'ArrowUp') {\n if (isAddRow) nextRow = totalRows - 1\n else nextRow = Math.max(0, currentRow - 1)\n }\n if (e.key === 'ArrowDown') {\n if (currentRow < totalRows - 1) nextRow = currentRow + 1\n else if (currentRow === totalRows - 1) nextRow = addRowIndex\n }\n if (e.key === 'ArrowLeft') nextCol = Math.max(0, currentCol - 1)\n if (e.key === 'ArrowRight') nextCol = Math.min(totalCols - 1, currentCol + 1)\n }\n else if (e.key === 'Enter') {\n e.preventDefault()\n\n if (isAddRow) {\n onRowAdd && onRowAdd()\n setTimeout(() => {\n const target = document.querySelector(`[data-row=\"${totalRows}\"][data-col=\"0\"]`) as HTMLInputElement | null\n if (target) {\n target.focus()\n target.click()\n }\n }, 0)\n return\n } else if (currentCol < columns.length) {\n setEditingCell({ row: currentRow, col: currentCol })\n } else {\n onRowDelete && onRowDelete(currentRow)\n setTimeout(() => {\n const targetRow = currentRow < data.length - 1 ? currentRow : Math.max(0, currentRow - 1)\n const target = document.querySelector(`[data-row=\"${targetRow}\"][data-col=\"${columns.length}\"]`) as HTMLElement | null\n if (target) target.focus()\n else {\n const addBtn = document.getElementById('add-option-btn')\n if (addBtn) addBtn.focus()\n }\n }, 0)\n return\n }\n }\n else if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey && !isAddRow && currentCol < columns.length) {\n setEditingCell({ row: currentRow, col: currentCol })\n return\n }\n }\n\n if (nextRow !== currentRow || nextCol !== currentCol) {\n if (nextRow === addRowIndex) {\n const target = document.getElementById('add-option-btn')\n if (target) target.focus()\n } else {\n const target = document.querySelector(`[data-row=\"${nextRow}\"][data-col=\"${nextCol}\"]`) as HTMLInputElement | HTMLTextAreaElement | null\n if (target) {\n target.focus()\n if ((target.tagName === 'INPUT' && (target as HTMLInputElement).type !== 'checkbox') || target.tagName === 'TEXTAREA') {\n target.select()\n }\n }\n }\n }\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>, row: number, col: number) => {\n if (editingCell?.row !== row || editingCell?.col !== col) {\n setEditingCell(null)\n e.target.select()\n }\n }\n\n const handleChange = (rowIdx: number, colId: string, val: any) => {\n const newData = [...data]\n newData[rowIdx] = { ...newData[rowIdx], [colId]: val }\n onChange && onChange(newData)\n }\n\n const handlePaste = (e: React.ClipboardEvent<HTMLElement>, startRow: number, startCol: number) => {\n e.preventDefault()\n const clipboardData = e.clipboardData.getData('text/plain')\n const rows = clipboardData.split(/\\r\\n|\\n|\\r/).filter(row => row.trim() !== \"\")\n\n let newData = [...data]\n\n rows.forEach((row, rIdx) => {\n const targetRowIdx = startRow + rIdx\n const cells = row.split('\\t')\n\n if (!newData[targetRowIdx]) {\n newData[targetRowIdx] = {}\n }\n\n columns.forEach((col, cIdx) => {\n const colIndexInPaste = cIdx - startCol\n\n if (colIndexInPaste >= 0 && cells[colIndexInPaste] !== undefined) {\n const val = cells[colIndexInPaste]\n newData[targetRowIdx] = { ...newData[targetRowIdx], [col.id]: val }\n }\n })\n })\n\n onChange && onChange(newData)\n }\n\n return (\n <div className=\"border border-gray-200 dark:border-charcoal-600 rounded-sm overflow-hidden\">\n <table className=\"w-full border-collapse bg-white dark:bg-charcoal-900\">\n <thead>\n <tr>\n {columns.map((col, idx) => (\n <th\n key={col.id || idx}\n className={classNames({\n \"border-b border-r border-gray-200 dark:border-charcoal-600 bg-gray-50 dark:bg-charcoal-800 px-3 py-2 text-xs font-semibold text-gray-500\": true,\n \"w-auto\": !col.width,\n [col.width || \"\"]: !!col.width,\n \"text-left\": !col.align,\n \"text-center\": col.align === \"center\",\n \"text-right\": col.align === \"right\"\n })}\n >\n {col.label}\n </th>\n ))}\n <th className=\"border-b border-gray-200 dark:border-charcoal-600 bg-gray-50 dark:bg-charcoal-800 w-8\"></th>\n </tr>\n </thead>\n <tbody>\n {data.map((row, rowIdx) => (\n <tr key={rowIdx} className=\"group\">\n {columns.map((col, colIdx) => (\n <td\n key={col.id || colIdx}\n className=\"border-b border-r border-gray-200 dark:border-charcoal-600 p-0 relative align-top h-auto\"\n >\n {col.type === 'textarea' ? (\n <textarea\n rows={1}\n value={row[col.id] || \"\"}\n onChange={(e) => {\n handleChange(rowIdx, col.id, e.target.value)\n e.target.style.height = 'auto'\n e.target.style.height = e.target.scrollHeight + 'px'\n }}\n onFocus={(e) => handleFocus(e, rowIdx, colIdx)}\n onKeyDown={(e) => handleCellNavigation(e, rowIdx, colIdx)}\n onPaste={(e) => handlePaste(e, rowIdx, colIdx)}\n data-row={rowIdx}\n data-col={colIdx}\n placeholder={typeof placeholder === 'function' ? placeholder(rowIdx) : placeholder}\n className=\"excel-table-textarea w-full min-h-[38px] px-3 py-2 border-none focus:ring-2 focus:ring-primary-500 focus:ring-inset bg-transparent outline-none text-sm text-gray-900 dark:text-white placeholder-gray-400 resize-none overflow-hidden leading-normal block\"\n style={{ height: 'auto' }}\n />\n ) : col.type === 'checkbox' ? (\n <div className=\"flex items-center justify-center h-[38px]\">\n <input\n type=\"checkbox\"\n checked={!!row[col.id]}\n onChange={(e) => handleChange(rowIdx, col.id, e.target.checked)}\n onKeyDown={(e) => handleCellNavigation(e, rowIdx, colIdx)}\n data-row={rowIdx}\n data-col={colIdx}\n className=\"w-5 h-5 cursor-pointer accent-primary-500\"\n />\n </div>\n ) : (\n <input\n type={col.type === 'number' ? 'number' : 'text'}\n value={row[col.id] || \"\"}\n onChange={(e) => handleChange(rowIdx, col.id, e.target.value)}\n onFocus={(e) => handleFocus(e, rowIdx, colIdx)}\n onKeyDown={(e) => handleCellNavigation(e, rowIdx, colIdx)}\n onPaste={(e) => handlePaste(e, rowIdx, colIdx)}\n data-row={rowIdx}\n data-col={colIdx}\n className={classNames({\n \"w-full h-full min-h-[38px] px-3 py-1 border-none focus:ring-2 focus:ring-primary-500 focus:ring-inset bg-transparent outline-none text-sm text-gray-900 dark:text-white\": true,\n \"text-left\": col.align !== \"center\" && col.align !== \"right\",\n \"text-center\": col.align === \"center\",\n \"text-right\": col.align === \"right\"\n })}\n placeholder={col.type === 'number' ? '0' : ''}\n />\n )}\n </td>\n ))}\n\n <td className=\"border-b border-gray-200 dark:border-charcoal-600 p-0 text-center align-top h-auto\">\n <div\n onClick={() => onRowDelete && onRowDelete(rowIdx)}\n onFocus={() => setEditingCell(null)}\n onKeyDown={(e) => handleCellNavigation(e, rowIdx, columns.length)}\n data-row={rowIdx}\n data-col={columns.length}\n tabIndex={0}\n className=\"cursor-pointer text-gray-300 hover:text-red-500 w-full h-[38px] flex items-center justify-center transition-colors focus:ring-2 focus:ring-inset focus:ring-primary-500 outline-none\"\n >\n ×\n </div>\n </td>\n </tr>\n ))}\n\n {isAddRowVisible && (\n <tr>\n <td colSpan={columns.length + 1} className=\"p-0\">\n <div\n id=\"add-option-btn\"\n onClick={onRowAdd}\n onKeyDown={(e) => handleCellNavigation(e, data.length, 0)}\n tabIndex={0}\n className=\"w-full cursor-pointer text-left px-3 py-2 text-gray-400 text-xs font-medium hover:text-primary-500 hover:bg-gray-50 dark:hover:bg-charcoal-800 transition-colors focus:ring-2 focus:ring-inset focus:ring-primary-500 outline-none\"\n >\n {addRowLabel}\n </div>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )\n}\n","import React, { useState, useEffect, useRef } from \"react\"\nimport { classNames } from \"../../utils/classNames\"\nimport { createPortal } from \"react-dom\"\nimport { H3 } from \"../HTML\"\n\nexport interface CoverflowImage {\n id?: string | number\n imageUrl: string\n imageTitle?: string\n imageDescription?: string\n}\n\nexport interface CoverflowProps {\n images: CoverflowImage[]\n onClose?: () => void\n}\n\nexport default function Coverflow({ images = [], onClose }: CoverflowProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const thumbnailContainerRef = useRef<HTMLDivElement>(null)\n\n const [visualIndex, setVisualIndex] = useState(0)\n const isJumpingRef = useRef(false)\n const wheelLockRef = useRef(false)\n const wheelTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const [isReady, setIsReady] = useState(false)\n\n const [isMounted, setIsMounted] = useState(false)\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n const count = images.length\n const hasMultiple = count > 1\n\n const extendedImages = hasMultiple\n ? [images[count - 1], ...images, images[0]]\n : images\n\n useEffect(() => {\n if (hasMultiple && scrollContainerRef.current) {\n const container = scrollContainerRef.current\n const width = container.offsetWidth\n container.scrollLeft = width\n setVisualIndex(1)\n\n requestAnimationFrame(() => setIsReady(true))\n } else {\n setIsReady(true)\n }\n }, [hasMultiple])\n\n useEffect(() => {\n if (hasMultiple && thumbnailContainerRef.current) {\n const thumbContainer = thumbnailContainerRef.current\n const thumbNode = thumbContainer.children[visualIndex] as HTMLElement | null\n if (thumbNode) {\n thumbNode.scrollIntoView({\n behavior: isJumpingRef.current ? 'auto' : 'smooth',\n block: 'nearest',\n inline: 'center'\n })\n }\n }\n }, [visualIndex, hasMultiple])\n\n useEffect(() => {\n const container = scrollContainerRef.current\n if (!container || !hasMultiple) return\n\n const handleWheel = (e: WheelEvent) => {\n if (e.ctrlKey) return\n\n e.preventDefault()\n\n if (!wheelLockRef.current) {\n const threshold = 10\n if (Math.abs(e.deltaX) > threshold || Math.abs(e.deltaY) > threshold) {\n const width = container.offsetWidth\n const currentIndex = Math.round(container.scrollLeft / width)\n let targetIndex = currentIndex\n\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) {\n targetIndex = e.deltaX > 0 ? currentIndex + 1 : currentIndex - 1\n } else {\n targetIndex = e.deltaY > 0 ? currentIndex + 1 : currentIndex - 1\n }\n\n container.scrollTo({\n left: targetIndex * width,\n behavior: 'smooth'\n })\n\n wheelLockRef.current = true\n }\n }\n\n if (wheelTimeoutRef.current) clearTimeout(wheelTimeoutRef.current)\n wheelTimeoutRef.current = setTimeout(() => {\n wheelLockRef.current = false\n }, 200)\n }\n\n container.addEventListener('wheel', handleWheel, { passive: false })\n return () => {\n container.removeEventListener('wheel', handleWheel)\n if (wheelTimeoutRef.current) clearTimeout(wheelTimeoutRef.current)\n }\n }, [hasMultiple])\n\n const handleScroll = () => {\n if (!scrollContainerRef.current) return\n const container = scrollContainerRef.current\n const { scrollLeft, offsetWidth } = container\n\n const scrollIndex = scrollLeft / offsetWidth\n const roundedIndex = Math.round(scrollIndex)\n\n if (roundedIndex !== visualIndex) {\n setVisualIndex(roundedIndex)\n }\n\n if (isJumpingRef.current) return\n\n if (scrollLeft <= 0) {\n performJump(count * offsetWidth)\n } else if (Math.abs(scrollLeft - (count + 1) * offsetWidth) < 2) {\n performJump(offsetWidth)\n }\n }\n\n const performJump = (targetLeft: number) => {\n if (!scrollContainerRef.current) return\n isJumpingRef.current = true\n const container = scrollContainerRef.current\n\n container.style.scrollBehavior = 'auto'\n container.scrollLeft = targetLeft\n container.style.scrollBehavior = ''\n\n const newIndex = Math.round(targetLeft / container.offsetWidth)\n setVisualIndex(newIndex)\n\n if (thumbnailContainerRef.current) {\n const thumbContainer = thumbnailContainerRef.current\n const thumbNode = thumbContainer.children[newIndex] as HTMLElement | null\n if (thumbNode) {\n thumbNode.scrollIntoView({\n behavior: 'auto',\n block: 'nearest',\n inline: 'center'\n })\n }\n }\n\n setTimeout(() => { isJumpingRef.current = false }, 50)\n }\n\n const scrollToIndex = (targetVisualIndex: number) => {\n if (!scrollContainerRef.current) return\n const container = scrollContainerRef.current\n const width = container.offsetWidth\n container.scrollTo({\n left: width * targetVisualIndex,\n behavior: 'smooth'\n })\n }\n\n const nextSlide = (e?: React.MouseEvent) => {\n e?.stopPropagation()\n if (!scrollContainerRef.current) return\n const container = scrollContainerRef.current\n const width = container.offsetWidth\n const nextIndex = Math.round(container.scrollLeft / width) + 1\n\n container.scrollTo({\n left: nextIndex * width,\n behavior: 'smooth'\n })\n }\n\n const prevSlide = (e?: React.MouseEvent) => {\n e?.stopPropagation()\n if (!scrollContainerRef.current) return\n const container = scrollContainerRef.current\n const width = container.offsetWidth\n const prevIndex = Math.round(container.scrollLeft / width) - 1\n\n container.scrollTo({\n left: prevIndex * width,\n behavior: 'smooth'\n })\n }\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose && onClose()\n if (e.key === \"ArrowLeft\") prevSlide()\n if (e.key === \"ArrowRight\") nextSlide()\n }\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [onClose])\n\n if (!isMounted || !images || images.length === 0) return null\n\n return createPortal(\n <div className=\"fixed inset-0 z-[1400] bg-black/95 flex flex-col justify-between animate-fadeIn transition-opacity duration-300\">\n {/* Close Button */}\n <div\n onClick={onClose}\n className=\"absolute top-4 right-4 z-[110] p-2 bg-black/20 hover:bg-white/20 rounded-full text-white transition-colors cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"w-6 h-6\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </div>\n\n {/* Main Slideshow */}\n <div className=\"flex-1 relative flex items-center justify-center overflow-hidden w-full h-full\">\n <div\n ref={scrollContainerRef}\n onScroll={handleScroll}\n className={classNames({\n \"w-full h-full flex overflow-x-auto snap-x snap-mandatory scrollbar-none\": true,\n \"opacity-0\": hasMultiple && !isReady,\n \"opacity-100\": !hasMultiple || isReady\n })}\n >\n {extendedImages.map((img, index) => {\n const key = `${img.id || index}-${index}`\n return (\n <div\n key={key}\n className=\"w-full h-full flex-shrink-0 flex items-center justify-center snap-center relative p-4\"\n >\n <div className=\"relative w-full h-full max-w-4xl max-h-[75vh] flex items-center justify-center\">\n <img\n src={img.imageUrl}\n alt={img.imageTitle || \"Gallery Image\"}\n className=\"max-w-full max-h-full object-contain drop-shadow-2xl\"\n />\n\n {/* Captions Overlay */}\n {(img.imageTitle || img.imageDescription) && (\n <div className=\"absolute bottom-0 left-0 right-0 p-3 bg-gradient-to-t from-black/90 via-black/50 to-transparent text-white text-center pointer-events-none\">\n {img.imageTitle && (\n <H3 className=\"!text-base mb-1\">{img.imageTitle}</H3>\n )}\n {img.imageDescription && (\n <p className=\"text-xs text-charcoal-200 max-w-2xl mx-auto\">{img.imageDescription}</p>\n )}\n </div>\n )}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n\n {/* Bottom Navigation */}\n {hasMultiple && (\n <div className=\"w-full p-4 pb-8 bg-gradient-to-t from-black to-transparent flex items-center justify-center gap-4 z-50\">\n {/* Left Arrow */}\n <div\n onClick={() => prevSlide()}\n className=\"p-2 rounded-full hover:bg-white/10 text-white transition-colors flex-shrink-0 cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"w-8 h-8\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\" />\n </svg>\n </div>\n\n {/* Thumbnail Strip */}\n <div\n ref={thumbnailContainerRef}\n className=\"flex gap-2 overflow-x-auto no-scrollbar max-w-xl px-2 snap-x\"\n >\n {extendedImages.map((img, idx) => (\n <div\n key={`${img.id || idx}-${idx}`}\n onClick={() => scrollToIndex(idx)}\n className={classNames({\n \"relative w-14 h-14 flex-shrink-0 rounded-md overflow-hidden border transition-all duration-300 snap-center cursor-pointer\": true,\n \"border-primary-500 opacity-100\": visualIndex === idx,\n \"border-transparent opacity-40 hover:opacity-80\": visualIndex !== idx\n })}\n >\n <img\n src={img.imageUrl}\n alt=\"Thumbnail\"\n className=\"w-full h-full object-cover transition-transform duration-300\"\n />\n </div>\n ))}\n </div>\n\n {/* Right Arrow */}\n <div\n onClick={() => nextSlide()}\n className=\"p-2 rounded-full hover:bg-white/10 text-white transition-colors flex-shrink-0 cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"w-8 h-8\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" />\n </svg>\n </div>\n </div>\n )}\n </div>,\n document.body\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\nimport { numberFormatter } from \"../../../utils/format\"\n\nexport interface CurrencyDisplayProps {\n loading?: boolean\n error?: boolean\n currency?: string\n amount: number\n decimal?: number\n opts?: {\n contentFull?: boolean\n }\n}\n\nexport default function CurrencyDisplay({ loading, error, currency, amount, decimal = 2, opts }: CurrencyDisplayProps) {\n const { contentFull } = opts || {}\n\n return (\n <div\n className={classNames({\n \"flex space-x-2 justify-between items-center group\": true,\n \"w-full\": !!contentFull,\n \"-ml-1.5 text-red-500\": amount < 0,\n \"text-red-500\": !!error,\n \"animate-pulse bg-gray-100 text-transparent rounded-md\": !!loading\n })}\n >\n <span\n className={classNames({\n \"group-hover:text-inherit\": true,\n \"!text-transparent\": !!loading,\n \"text-red-200\": amount < 0 || !!error,\n \"text-gray-200\": (!amount || amount >= 0) && !error\n })}\n >\n {amount < 0 && \"-\"}{currency || \"$\"}\n </span>\n <span>{amount ? numberFormatter(Math.abs(amount), decimal) : \"-\"}</span>\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { classNames, classNameObject } from \"../../../utils/classNames\"\nimport { numberFormatter, bestTextColorForBg } from \"../../../utils/format\"\nimport useResizeListener from \"../../../hooks/useResizeListener\"\nimport CurrencyDisplay from \"./CurrencyDisplay\"\n\nexport interface DataTableRowProps {\n index: number\n selected: boolean\n label: React.ReactNode\n description?: string | null\n additionalDescription?: string | null\n data: any[]\n opts?: {\n labelCenter?: boolean\n vertical?: string\n darkMode?: boolean\n }\n}\n\nfunction DataTableRow({ index, selected, label, description, additionalDescription, data, opts }: DataTableRowProps) {\n const { labelCenter, vertical, darkMode } = opts || {}\n\n return (\n <tr\n className={classNames({\n \"align-top group dark:even:bg-charcoal-800 dark:odd:bg-charcoal-700\": true,\n \"!bg-primary-500/30 dark:!bg-primary-500/10 !text-black dark:!text-primary-400\": selected,\n \"even:bg-cream-50 odd:bg-white\": !darkMode,\n \"even:bg-charcoal-800 odd:bg-charcoal-700\": !!darkMode\n })}\n >\n <td\n className={classNames({\n \"py-1.5 px-2 sm:px-3 cursor-default whitespace-nowrap first:rounded-l-lg last:rounded-r-lg cursor-pointer\": true,\n \"text-center\": !!labelCenter,\n \"align-middle\": vertical === \"middle\"\n })}\n >\n {label}\n </td>\n {\n description &&\n <td className=\"px-2 py-1.5 sm:px-3 min-w-64 cursor-default first:rounded-l-lg last:rounded-r-lg cursor-pointer\">\n {description}\n {\n additionalDescription &&\n <p className=\"uppercase opacity-50\">{additionalDescription}</p>\n }\n </td>\n }\n {\n data.map((dataItem, dataIndex) => (\n <td\n key={`${dataIndex}-${index}`}\n className={classNames({\n \"text-center py-1.5 px-2 sm:px-3 cursor-default first:rounded-l-lg last:rounded-r-lg cursor-pointer\": true,\n \"!bg-primary-100 !text-primary-500 font-semibold\": !!dataItem.threshold && dataItem.data[index] > dataItem.threshold,\n \"!text-left\": dataItem.align === \"left\",\n \"align-middle\": vertical === \"middle\"\n })}\n >\n {\n typeof dataItem.data[index] === \"string\" || React.isValidElement(dataItem.data[index]) ?\n dataItem.data[index] :\n numberFormatter(dataItem.data[index], dataItem.decimal != null ? dataItem.decimal : 1)\n }\n </td>\n ))\n }\n </tr>\n )\n}\n\nexport interface DataTableProps {\n headers: React.ReactNode[]\n labels?: React.ReactNode[]\n selectedId?: string | null\n descriptions?: string[] | null\n additionalDescriptions?: string[] | null\n colors?: string[] | null\n data: any[]\n total?: any[] | null\n opts?: {\n ignoreTotal?: boolean\n showCurrency?: boolean\n labelTitle?: string\n labelCentered?: boolean\n vertical?: string\n darkMode?: boolean\n }\n}\n\nexport default function DataTable({\n headers,\n labels,\n selectedId,\n descriptions,\n additionalDescriptions,\n colors,\n data,\n total,\n opts\n}: DataTableProps) {\n const { mobileView } = useResizeListener()\n const { ignoreTotal, showCurrency, labelTitle, labelCentered, vertical, darkMode } = opts || {}\n\n const [displayHeaders, setDisplayHeaders] = useState<React.ReactNode[]>([])\n\n useEffect(() => {\n setDisplayHeaders(headers)\n }, [headers])\n\n return (\n <table\n className={classNames({\n \"w-full text-sm dark:text-charcoal-100 rounded-xl border-separate border-spacing-0\": true,\n \"text-charcoal-100\": !!darkMode,\n \"text-charcoal-500\": !darkMode\n })}\n >\n <thead>\n {\n !displayHeaders &&\n <tr className=\"font-semibold uppercase\">\n <td\n className={classNames({\n \"px-2 py-2.5 px-2 sm:px-3 whitespace-nowrap w-4\": true,\n \"text-center\": !!labelCentered\n })}\n >\n {mobileView ? \"#\" : (labelTitle || \"Code\")}\n </td>\n {(descriptions || []).length > 0 && <td className=\"py-2.5 px-2 sm:px-3 bg-gray-50\">Description</td>}\n {\n data.map((dataItem, dataIndex) => (\n <td\n key={dataItem.key || dataItem.label}\n className={classNames({\n \"w-4 py-2.5 px-2 sm:px-3 whitespace-nowrap text-center\": true,\n \"bg-gray-50\": !colors,\n \"!text-left\": dataItem.align === \"left\"\n })}\n style={colors && colors[dataIndex] ? {\n backgroundColor: `${colors[dataIndex]}`,\n color: bestTextColorForBg(colors[dataIndex])\n } : undefined}\n >\n {dataItem.label}\n </td>\n ))\n }\n </tr>\n }\n {\n displayHeaders &&\n <tr className=\"text-xs font-semibold uppercase\">\n {displayHeaders}\n </tr>\n }\n </thead>\n <tbody>\n {\n (labels || []).map((label, index) => {\n const keyData = data[0]?.data || []\n return (\n <DataTableRow\n key={(keyData[index] || {}).key || index}\n index={index}\n label={label}\n selected={selectedId === keyData[index]?.props?.recordId}\n description={descriptions && descriptions[index]}\n additionalDescription={additionalDescriptions && additionalDescriptions[index]}\n data={data}\n opts={{\n labelCenter: labelCentered,\n vertical: vertical,\n darkMode: darkMode\n }}\n />\n )\n })\n }\n </tbody>\n {\n !ignoreTotal &&\n <tfoot>\n <tr className=\"group\">\n <td\n colSpan={(descriptions || []).length === 0 ? 1 : 2}\n className={classNames({\n \"border-t dark:border-charcoal-500 py-2.5 px-2 sm:px-3 font-semibold uppercase\": true,\n \"border-charcoal-500\": !!darkMode,\n \"border-gray-100 bg-gray-50\": !darkMode\n })}\n >\n Total\n </td>\n {\n !total &&\n (\n data.map((dataItem, dataIndex) => {\n const sumVal = dataItem.data ? dataItem.data.reduce((a: number, b: number) => a + (Number(b) || 0), 0) : 0\n return (\n <td\n key={`${dataIndex}-total`}\n className={classNames({\n \"border-t dark:border-charcoal-500 py-2.5 px-2 sm:px-3 text-center font-semibold\": true,\n \"bg-gray-50\": !colors && !darkMode,\n \"border-gray-100\": !darkMode,\n \"border-charcoal-500\": !!darkMode\n })}\n style={colors && colors[dataIndex] ? {\n backgroundColor: `${colors[dataIndex]}`,\n color: bestTextColorForBg(colors[dataIndex])\n } : undefined}\n >\n {\n typeof dataItem.total === \"string\" ?\n (dataItem.total != null ? dataItem.total : sumVal)\n :\n showCurrency ?\n <CurrencyDisplay\n amount={dataItem.total}\n />\n :\n numberFormatter(dataItem.total != null ? dataItem.total : sumVal, 1)\n }\n </td>\n )\n })\n )\n }\n {\n !!total &&\n (\n total.map((dataItem, dataIndex) => (\n <td\n key={`${dataIndex}-total`}\n className={classNames({\n \"border-t dark:border-charcoal-500 py-2.5 px-2 sm:px-3 text-center font-semibold\": true,\n \"bg-gray-50\": !colors && !darkMode,\n \"border-gray-100\": !darkMode,\n \"border-charcoal-500\": !!darkMode\n })}\n style={colors && colors[dataIndex] ? {\n backgroundColor: `${colors[dataIndex]}`,\n color: bestTextColorForBg(colors[dataIndex])\n } : undefined}\n >\n {\n typeof total[dataIndex] === \"string\" || React.isValidElement(total[dataIndex]) ?\n total[dataIndex]\n :\n showCurrency ?\n <CurrencyDisplay amount={total[dataIndex]} />\n :\n numberFormatter(total[dataIndex], 1)\n }\n </td>\n ))\n )\n }\n </tr>\n </tfoot>\n }\n </table>\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\nimport { numberFormatter } from \"../../../utils/format\"\n\nexport interface NumberDisplayProps {\n loading?: boolean\n amount: number\n error?: boolean\n decimal?: number\n}\n\nexport default function NumberDisplay({ loading, amount, error, decimal = 0 }: NumberDisplayProps) {\n return (\n <div\n className={classNames({\n \"flex space-x-2 items-center justify-between group w-full\": true,\n \"text-red-500\": amount < 0 || !!error,\n \"animate-pulse bg-gray-100 text-transparent rounded-md\": !!loading\n })}\n >\n <span\n className={classNames({\n \"group-hover:text-inherit\": true,\n \"!text-transparent\": !!loading,\n \"text-red-200\": amount < 0 || !!error,\n \"text-gray-200\": amount >= 0 && !error,\n })}\n >\n {amount < 0 && \"-\"}\n </span>\n <span className=\"text-right\">\n {amount ? numberFormatter(Math.abs(amount), decimal) : \"\"}\n </span>\n </div>\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\nimport { numberFormatter } from \"../../../utils/format\"\n\nexport interface ChangeDisplayProps {\n postfix?: string\n data?: [number, number] | any[]\n decimal?: number\n}\n\nexport default function ChangeDisplay({ postfix = \"%\", data = [], decimal = 0 }: ChangeDisplayProps) {\n const [current, prev] = data\n\n function calculateGrowthPercentage(curr: number, previous: number) {\n if (!previous && !curr) {\n return 0\n }\n if (!previous) {\n return Infinity\n }\n return (curr - previous) * 100 / previous\n }\n\n const CAPPED = 10000\n\n const growth = calculateGrowthPercentage(current, prev)\n const displayGrowth = Math.max(Math.min(growth, CAPPED), -CAPPED)\n\n if (prev > 0 && current === 0) {\n return (\n <div className=\"flex justify-between items-center space-x-2 text-red-600 w-full\">\n <div className=\"flex-1 text-right\">Lost</div>\n <div className=\"opacity-30 group-hover:opacity-100\">▼</div>\n </div>\n )\n }\n\n if (growth === Infinity) {\n return (\n <div className=\"flex justify-between items-center space-x-2 text-green-600 w-full\">\n <div className=\"flex-1 text-right\">New</div>\n <div className=\"opacity-30 group-hover:opacity-100\">▲</div>\n </div>\n )\n }\n\n if (growth === 0) {\n return (\n <div className=\"flex justify-between items-center space-x-2 w-full\">\n <div className=\"flex-1 text-right\">-</div>\n <div> </div>\n </div>\n )\n }\n\n return (\n <div\n className={classNames({\n \"flex justify-between items-center space-x-2 whitespace-nowrap w-full\": true,\n \"text-red-600\": growth < 0,\n \"text-green-600\": growth > 0\n })}\n >\n <div className=\"flex-1 text-right\">\n {Math.abs(growth) <= CAPPED && (growth >= 0 ? \"+\" : \"-\")}{growth > CAPPED && \" >\"}{growth < -CAPPED && \" <\"}{numberFormatter(Math.abs(displayGrowth), decimal)}{postfix}\n </div>\n <div className=\"opacity-30 group-hover:opacity-100\">{growth > 0 ? <>▲</> : <>▼</>}</div>\n </div>\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\n\nexport interface DateTimeDisplayProps {\n loading?: boolean\n value: string | number | Date\n}\n\nexport default function DateTimeDisplay({ loading, value }: DateTimeDisplayProps) {\n let formatted = \"-\"\n try {\n if (value) {\n formatted = new Intl.DateTimeFormat('en-GB', {\n weekday: 'short',\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n }).format(new Date(value))\n }\n } catch (e) {\n formatted = String(value)\n }\n\n return (\n <div\n className={classNames({\n \"w-full whitespace-nowrap\": true,\n \"animate-pulse bg-gray-100 text-transparent rounded-md\": !!loading\n })}\n >\n {formatted}\n </div>\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\n\nexport interface ThumbnailDisplayProps {\n loading?: boolean\n value: any\n}\n\nexport default function ThumbnailDisplay({ loading, value }: ThumbnailDisplayProps) {\n const image = Array.isArray(value) ? (value.length > 0 ? value[0] : null) : value\n const { imageUrl, imageDescription } = image || {}\n\n return (\n <div\n className={classNames({\n \"w-full whitespace-nowrap\": true,\n \"animate-pulse bg-gray-100 text-transparent rounded-md\": !!loading\n })}\n >\n {image && imageUrl && (\n <img\n src={imageUrl}\n alt={imageDescription || \"\"}\n className=\"w-8 min-w-8 h-8 object-cover rounded-md\"\n />\n )}\n {\n !image && (\n <div className=\"w-8 min-w-8 h-8 bg-gray-100 dark:bg-charcoal-800 rounded-md\" />\n )\n }\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\n\nimport DataTable from \"./DataTable\"\nimport Popover from \"../Popover\"\nimport CurrencyDisplay from \"./CurrencyDisplay\"\nimport NumberDisplay from \"./NumberDisplay\"\nimport ChangeDisplay from \"./ChangeDisplay\"\nimport DateTimeDisplay from \"./DateTimeDisplay\"\nimport ThumbnailDisplay from \"./ThumbnailDisplay\"\n\nexport interface DataGridHeaderConfig {\n id: string\n label: string\n align?: 'left' | 'center' | 'right'\n grow?: boolean\n noWrap?: boolean\n sort?: boolean\n type?: 'currency' | 'number' | 'change' | 'datetime' | 'thumbnail' | 'text'\n hidden?: boolean\n error?: string\n menu?: any[]\n params?: any\n vertical?: string\n lineClamp?: number\n}\n\nexport interface DataGridHeaderProps {\n sort?: boolean\n onClick?: () => void\n opts?: {\n align?: string\n grow?: boolean\n noWrap?: boolean\n isSorted?: 'asc' | 'desc' | null\n stickyHeader?: boolean\n darkMode?: boolean\n }\n children: React.ReactNode\n}\n\nfunction DataGridHeader({ sort, onClick, opts, children }: DataGridHeaderProps) {\n const { align, grow, noWrap, isSorted, stickyHeader, darkMode } = opts || {}\n\n if (sort) {\n return (\n <th\n className={classNames({\n \"py-2.5 px-2 sm:px-3 whitespace-nowrap text-center cursor-pointer font-semibold\": true,\n \"w-4\": !grow,\n \"!text-left\": align === \"left\",\n \"!text-right\": align === \"right\",\n \"whitespace-nowrap\": !!noWrap,\n \"sticky top-0 z-10 dark:bg-charcoal-800\": !!stickyHeader,\n \"bg-cream-50\": !darkMode,\n \"bg-charcoal-800\": !!darkMode\n })}\n onClick={onClick}\n >\n <span className=\"relative\">\n {children}\n {\n isSorted &&\n <div className=\"absolute top-0 bottom-0 -right-3.5 flex items-center\">\n {\n isSorted === \"asc\" &&\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-3 h-3\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 6.75 12 3m0 0 3.75 3.75M12 3v18\" />\n </svg>\n }\n {\n isSorted === \"desc\" &&\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-3 h-3\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15.75 17.25 12 21m0 0-3.75-3.75M12 21V3\" />\n </svg>\n }\n </div>\n }\n </span>\n </th>\n )\n }\n\n return (\n <th\n className={classNames({\n \"py-2.5 px-2 sm:px-3 text-center font-semibold\": true,\n \"w-4\": !grow,\n \"!text-left\": align === \"left\",\n \"whitespace-nowrap\": !!noWrap,\n \"sticky top-0 z-10 dark:bg-charcoal-800\": !!stickyHeader,\n \"bg-cream-50\": !darkMode,\n \"bg-charcoal-800\": !!darkMode\n })}\n >\n {children}\n </th>\n )\n}\n\ninterface DataGridElementProps {\n processing?: boolean\n type?: string\n value: any\n error?: boolean\n menu?: any[]\n params?: any\n opts?: any\n onSelect?: (row: any) => void\n}\n\nfunction DataGridElement({ processing: defaultProcessing, type, value, error, menu, params, opts, onSelect }: DataGridElementProps) {\n const [processing, setProcessing] = useState(defaultProcessing)\n\n useEffect(() => {\n setProcessing(defaultProcessing)\n }, [defaultProcessing])\n\n const { align } = opts || {}\n\n if (!processing && menu) {\n return (\n <Popover\n actions={[\n {\n id: \"edit-section\",\n section: \"Action\",\n items: menu.map(menuItem => {\n return {\n id: menuItem.id,\n label: menuItem.label,\n action: async () => {\n setProcessing(true)\n await menuItem.onClick(params)\n setProcessing(false)\n },\n }\n })\n },\n ]}\n opts={{ compact: true, asBlock: true, align: align }}\n >\n <DataGridContent\n loading={processing}\n error={error}\n type={type}\n value={value}\n opts={{\n ...opts,\n contentFull: true\n }}\n />\n </Popover>\n )\n }\n\n return (\n <DataGridContent\n loading={processing}\n error={error}\n type={type}\n value={value}\n opts={opts}\n onClick={() => {\n if (typeof onSelect === \"function\") {\n onSelect(params?.row)\n }\n }}\n />\n )\n}\n\ninterface DataGridContentProps {\n loading?: boolean\n error?: boolean\n type?: string\n value: any\n opts?: any\n onClick?: () => void\n}\n\nfunction DataGridContent({ loading, error, type, value, opts, onClick }: DataGridContentProps) {\n if (type === \"currency\") {\n return (\n <CurrencyDisplay loading={loading} error={error} amount={value} opts={opts} />\n )\n }\n\n if (type === \"number\") {\n return (\n <NumberDisplay loading={loading} error={error} amount={value} />\n )\n }\n\n if (type === \"change\") {\n const [current, previous] = value || []\n return (\n <ChangeDisplay data={[current, previous]} decimal={0} />\n )\n }\n\n if (type === \"datetime\") {\n return (\n <DateTimeDisplay value={value} />\n )\n }\n\n if (type === \"thumbnail\") {\n return (\n <ThumbnailDisplay value={value} />\n )\n }\n\n const { noWrap, lineClamp } = opts || {}\n\n return (\n <div\n className={classNames({\n \"whitespace-nowrap\": !!noWrap,\n \"line-clamp-1\": lineClamp === 1,\n \"line-clamp-2\": lineClamp === 2,\n \"line-clamp-3\": lineClamp === 3,\n \"animate-pulse bg-gray-100 text-transparent pointer-events-none\": !!loading,\n })}\n onClick={onClick}\n >\n {value}\n </div>\n )\n}\n\nexport interface DataGridProps {\n headers: DataGridHeaderConfig[]\n data: any[]\n selectedId?: string | null\n footers?: any[] | null\n opts?: {\n stickyHeader?: boolean\n darkMode?: boolean\n showCurrency?: boolean\n labelTitle?: string\n labelCentered?: boolean\n vertical?: string\n }\n onSelect?: (row: any) => void\n}\n\nexport default function DataGrid({ headers, data, selectedId, footers, opts, onSelect }: DataGridProps) {\n const [displayedData, setDisplayedData] = useState<any[]>([])\n const [orderByState, setOrderByState] = useState<{ category: string; direction: 'asc' | 'desc' }>({\n category: headers[0]?.id || \"\",\n direction: \"asc\"\n })\n\n const displayedHeaders = (headers || []).filter(header => !header.hidden)\n\n function handleSort(category: string) {\n if (orderByState.category !== category) {\n setOrderByState({ category, direction: \"asc\" })\n } else {\n setOrderByState({ category, direction: orderByState.direction === \"asc\" ? \"desc\" : \"asc\" })\n }\n }\n\n useEffect(() => {\n if ((data || []).length > 0) {\n const availableKeys = (headers || []).map(header => header.id)\n const { category, direction } = orderByState\n\n const sortCategory = availableKeys.includes(category) ? category : headers[0]?.id\n const sortDirection = [\"asc\", \"desc\"].includes(direction) ? direction : \"asc\"\n const targetHeader = headers.find(header => header.id === sortCategory)\n const headerType = targetHeader?.type\n\n let sortedData = [...data]\n\n if (headerType === \"change\") {\n sortedData = sortedData.sort((a, b) => {\n const x = a[sortCategory] || [0, 0]\n const y = b[sortCategory] || [0, 0]\n\n const left = x[1] ? (x[0] - x[1]) / x[1] : Infinity\n const right = y[1] ? (y[0] - y[1]) / y[1] : Infinity\n\n const multiplier = sortDirection === \"asc\" ? 1 : -1\n\n if (left < right) { return multiplier * -1 }\n if (left > right) { return multiplier * 1 }\n\n if ((x[0] - x[1]) < (y[0] - y[1])) {\n return multiplier * -1\n }\n\n if ((x[0] - x[1]) > (y[0] - y[1])) {\n return multiplier * 1\n }\n\n return 0\n })\n } else {\n // Native sort replacement for lodash _.orderBy\n sortedData.sort((a, b) => {\n let aVal = a[sortCategory]\n let bVal = b[sortCategory]\n\n if (aVal === bVal) return 0\n if (aVal === null || aVal === undefined) return 1\n if (bVal === null || bVal === undefined) return -1\n\n if (typeof aVal === 'string') {\n aVal = aVal.toLowerCase()\n }\n if (typeof bVal === 'string') {\n bVal = bVal.toLowerCase()\n }\n\n const comparison = aVal < bVal ? -1 : 1\n return sortDirection === 'asc' ? comparison : -comparison\n })\n }\n\n const updatedData = (displayedHeaders || []).map(header => {\n return {\n key: header.id,\n label: header.label,\n align: header.align,\n data: (sortedData || []).map((row, rowIndex) => {\n const isError = header.error && Function(\"value\", `return ${header.error}`)(row[header.id])\n\n const [timestamp] = (header.id || \"\").split(\" - \")\n const isProcessing = row[`${timestamp} - processing`]\n\n return (\n <DataGridElement\n key={`${header.id}-${row.id}`}\n processing={isProcessing}\n type={header.type}\n value={row[header.id]}\n menu={header.menu}\n opts={{\n align: header.align,\n noWrap: header.noWrap,\n vAlign: header.vertical,\n lineClamp: header.lineClamp\n }}\n params={{\n id: row.id,\n data: sortedData,\n row: row,\n headerId: header.id,\n params: header.params\n }}\n error={isError}\n onSelect={onSelect}\n />\n )\n })\n }\n })\n\n setDisplayedData(updatedData)\n } else {\n setDisplayedData([])\n }\n }, [data, orderByState, headers])\n\n const displayedLabels = (displayedData || [])[0]?.data\n const renderedData = (displayedData || []).filter((_, index) => index > 0)\n\n const renderedHeaders = (displayedHeaders || []).map((header) => (\n <DataGridHeader\n key={header.id}\n sort={header.sort}\n opts={{\n align: header.align,\n noWrap: header.noWrap,\n grow: header.grow,\n isSorted: header.id === orderByState.category ? orderByState.direction : null,\n stickyHeader: opts?.stickyHeader,\n darkMode: opts?.darkMode\n }}\n onClick={() => handleSort(header.id)}\n >\n {header.label}\n </DataGridHeader>\n ))\n\n return (\n <DataTable\n headers={renderedHeaders}\n labels={displayedLabels}\n data={renderedData}\n selectedId={selectedId}\n total={footers}\n opts={{\n ...opts,\n ignoreTotal: !footers\n }}\n />\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/classNames.ts","../src/components/Button.tsx","../src/components/Tag.tsx","../src/components/TagGroup.tsx","../src/components/Tabs.tsx","../src/components/Toggle.tsx","../src/components/Loading.tsx","../src/components/CheckboxList.tsx","../src/contexts/ModalContext.tsx","../src/components/Transition.tsx","../src/components/Modal/Footer.tsx","../src/components/Modal/index.tsx","../src/components/ConfirmationBox.tsx","../src/components/Drawer.tsx","../src/components/SortIcon.tsx","../src/components/InlinePrompt.tsx","../src/components/Breadcrumb.tsx","../src/components/Tab.tsx","../src/components/ButtonGroup.tsx","../src/components/HTML.tsx","../src/components/Table/Table.tsx","../src/components/Table/Thead.tsx","../src/components/Table/Tr.tsx","../src/components/Table/Th.tsx","../src/components/Table/Tbody.tsx","../src/components/Table/Td.tsx","../src/components/Form/Input.tsx","../src/components/Form/Label.tsx","../src/components/Form/Select.tsx","../src/components/Form/SelectInput.tsx","../src/components/Form/Textarea.tsx","../src/components/Form/TagInput.tsx","../src/components/module/NoData.tsx","../src/contexts/ThemeContext.tsx","../src/components/module/ThemeToggle.tsx","../src/utils/debounce.ts","../src/hooks/useDebounce.ts","../src/hooks/useResizeListener.ts","../src/contexts/PopoverContext.tsx","../src/components/module/Popover.tsx","../src/utils/format.ts","../src/components/module/Dragger.tsx","../src/components/module/ExcelTable.tsx","../src/components/module/Coverflow.tsx","../src/components/module/DataGrid/CurrencyDisplay.tsx","../src/components/module/DataGrid/DataTable.tsx","../src/components/module/DataGrid/NumberDisplay.tsx","../src/components/module/DataGrid/ChangeDisplay.tsx","../src/components/module/DataGrid/DateTimeDisplay.tsx","../src/components/module/DataGrid/ThumbnailDisplay.tsx","../src/components/module/DataGrid/index.tsx"],"names":["jsxs","jsx","forwardRef","useRef","useEffect","Fragment","createContext","useContext","useState","reducer","useReducer","ReactCSSTransition","React","createPortal","DefaultLink","useImperativeHandle","useCallback","useMemo","B","updated"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Builds a className string from an object mapping class names to boolean values.\n *\n * @example\n * classNames({ \"text-sm\": true, \"font-bold\": isActive, \"hidden\": false })\n * // => \"text-sm font-bold\" (if isActive is true)\n */\nexport function classNames(classNameHash: Record<string, boolean | undefined | null>): string {\n return Object.entries(classNameHash)\n .filter(([, value]) => !!value)\n .map(([key]) => key)\n .join(' ')\n}\n\n/**\n * Converts a space-separated className string into an object mapping each\n * class name to `true`. Useful for spreading into a `classNames()` call.\n *\n * @example\n * classNameObject(\"text-sm font-bold\")\n * // => { \"text-sm\": true, \"font-bold\": true }\n */\nexport function classNameObject(classNameString?: string | null): Record<string, boolean> {\n if (!classNameString) return {}\n return classNameString.split(' ').reduce<Record<string, boolean>>((prev, className) => {\n if (className) {\n prev[className] = true\n }\n return prev\n }, {})\n}\n","import React, { type ReactNode, type ButtonHTMLAttributes } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'form-input' | 'flat'\nexport type ButtonSize = 'small' | 'medium' | 'big' | 'huge'\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n children?: ReactNode\n onClick?: () => void\n placeholder?: ReactNode\n variant?: ButtonVariant\n size?: ButtonSize\n className?: string\n type?: 'button' | 'submit' | 'reset'\n loading?: boolean\n disabled?: boolean\n leftIcon?: ReactNode\n rightIcon?: ReactNode\n compact?: boolean\n darkMode?: boolean\n}\n\nexport default function Button({\n children,\n onClick,\n placeholder = null,\n variant = 'primary',\n size = 'medium',\n className = '',\n type = 'button',\n loading = false,\n disabled = false,\n leftIcon = null,\n rightIcon = null,\n compact = false,\n darkMode = false,\n ...props\n}: ButtonProps) {\n return (\n <button\n type={type}\n onClick={onClick}\n disabled={disabled || loading}\n className={classNames({\n 'items-center justify-center rounded-lg focus:outline-none focus:ring-0 disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed shadow-sm': true,\n 'relative': !!leftIcon || !!rightIcon,\n 'px-2.5 py-1.5 text-xs': size === 'small',\n 'px-4 py-2 text-sm': size === 'medium',\n 'px-5 py-3 text-base': size === 'big',\n 'px-5 py-3 text-lg font-medium': size === 'huge',\n '!px-1 !py-0.5': compact,\n 'border bg-brown-500 border-transparent text-white': variant === 'primary' && !darkMode,\n 'dark:bg-primary-500 dark:hover:bg-primary-600 dark:text-black': variant === 'primary' && !darkMode,\n 'border bg-primary-500 hover:bg-primary-600 border-transparent text-black': variant === 'primary' && !!darkMode,\n 'text-content-primary bg-white border border-gray-300 hover:text-content-secondary': variant === 'secondary' && !darkMode,\n 'text-charcoal-100 bg-charcoal-800 hover:bg-charcoal-700 border border-charcoal-700': variant === 'secondary' && !!darkMode,\n '!rounded-md text-left w-full text-content-primary bg-white border border-gray-200 hover:bg-gray-50 hover:text-content-secondary': variant === 'form-input' && !darkMode,\n '!rounded-md text-left w-full text-charcoal-100 bg-charcoal-800 hover:bg-charcoal-700 border border-charcoal-700': variant === 'form-input' && !!darkMode,\n 'dark:bg-charcoal-800 dark:hover:bg-charcoal-700 dark:text-content-primary dark:border-charcoal-700': (variant === 'secondary' || variant === 'form-input') && !darkMode,\n 'hover:text-brown-500 !shadow-none': variant === 'flat' && !darkMode,\n 'dark:text-content-primary dark:hover:text-primary-500': variant === 'flat' && !darkMode,\n 'text-charcoal-100 hover:text-primary-500 !shadow-none': variant === 'flat' && !!darkMode,\n '!text-content-disabled hover:!text-content-placeholder': !children && !darkMode,\n 'dark:!text-charcoal-400': !children && !darkMode,\n '!text-charcoal-400': !children && !!darkMode,\n ...classNameObject(className),\n })}\n {...props}\n >\n {loading && (\n <div className=\"absolute inset-y-0 left-0 flex items-center pl-3\">\n <svg className=\"w-4 h-4 animate-spin\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </div>\n )}\n {!loading && leftIcon && (\n <span className=\"absolute inset-y-0 left-0 flex items-center pl-3\">\n {leftIcon}\n </span>\n )}\n <span>{children || placeholder}</span>\n {!loading && rightIcon && (\n <span className=\"absolute inset-y-0 right-0 flex items-center pr-3\">\n {rightIcon}\n </span>\n )}\n </button>\n )\n}\n","import React, { type ReactNode, type CSSProperties } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\nimport Button from './Button'\n\nexport type TagSize = 'small' | 'medium'\n\nexport interface TagProps {\n children?: ReactNode\n className?: string\n onRemove?: () => void\n color?: string\n style?: CSSProperties\n size?: TagSize\n}\n\nexport default function Tag({\n children,\n className = '',\n onRemove,\n color,\n style,\n size = 'medium',\n}: TagProps) {\n const customStyle = color ? { backgroundColor: color, ...style } : style\n\n return (\n <span\n className={classNames({\n 'inline-flex items-center rounded font-medium whitespace-nowrap': true,\n 'bg-cream-200 dark:bg-charcoal-700 text-content-title dark:text-content-primary': !color,\n 'text-white': !!color,\n // medium size\n 'text-sm': size === 'medium',\n 'pl-2.5 pr-1 py-0.5 space-x-1': size === 'medium' && !!onRemove,\n 'px-2 py-0.5': size === 'medium' && !onRemove,\n // small size\n 'text-xs': size === 'small',\n 'pl-2 pr-0.5 py-0.5 space-x-0.5': size === 'small' && !!onRemove,\n 'px-1.5 py-0.5': size === 'small' && !onRemove,\n ...classNameObject(className),\n })}\n style={customStyle}\n >\n <span>{children}</span>\n {onRemove && (\n <Button\n variant=\"flat\"\n compact={true}\n size={size === 'small' ? 'small' : 'medium'}\n className=\"!text-red-500 hover:text-red-700 !px-0.5\"\n onClick={onRemove}\n >\n <span>×</span>\n </Button>\n )}\n </span>\n )\n}\n","import React from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\nimport Tag from './Tag'\n\nexport interface TagItem {\n id?: string\n name: string\n color?: string\n}\n\nexport interface TagGroupProps {\n tags?: TagItem[]\n onRemove?: (tag: TagItem) => void\n placeholder?: string\n className?: string\n}\n\nexport default function TagGroup({\n tags = [],\n onRemove,\n placeholder = 'No tags selected',\n className = '',\n}: TagGroupProps) {\n return (\n <div\n className={classNames({\n 'flex flex-wrap h-11 gap-1.5 items-center': true,\n ...classNameObject(className),\n })}\n >\n {tags.length > 0 ? (\n tags.map((tag) => (\n <Tag\n key={tag.id || tag.name}\n color={tag.color}\n onRemove={onRemove ? () => onRemove(tag) : undefined}\n >\n {tag.name}\n </Tag>\n ))\n ) : (\n placeholder && (\n <span className=\"text-content-disabled dark:text-content-placeholder text-sm flex items-center\">\n {placeholder}\n </span>\n )\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport interface TabOption {\n id: string\n label: string\n}\n\nexport interface TabsProps {\n value: string\n onChange: (id: string) => void\n options?: TabOption[]\n className?: string\n}\n\nexport default function Tabs({\n value,\n onChange,\n options = [\n { id: 'point', label: 'Point' },\n { id: 'percentage', label: 'Percentage' },\n ],\n className = '',\n}: TabsProps) {\n return (\n <div\n className={classNames({\n 'inline-flex rounded-lg bg-cream-50 dark:bg-charcoal-800/90 dark:backdrop-filter dark:backdrop-blur-sm overflow-hidden text-xs p-1 space-x-0.5 rounded-xl': true,\n ...classNameObject(className),\n })}\n >\n {options.map((option) => (\n <button\n key={option.id}\n className={classNames({\n 'px-3 py-2 transition-colors rounded-lg': true,\n 'bg-white text-brown-500 dark:text-primary-500 dark:bg-charcoal-600': value === option.id,\n 'hover:text-brown-500 dark:text-content-secondary dark:hover:text-primary-500': value !== option.id,\n })}\n onClick={() => onChange(option.id)}\n >\n {option.label}\n </button>\n ))}\n </div>\n )\n}\n","import React, { useEffect, useRef, forwardRef, type Ref } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport type ToggleSize = 'small' | 'medium'\n\nexport interface ToggleProps {\n listening?: boolean\n size?: ToggleSize\n name?: string\n value: boolean\n onChange: (value: boolean) => void\n className?: string\n}\n\nconst Toggle = forwardRef<HTMLSpanElement, ToggleProps>(\n ({ listening, size, name, value, onChange, className }, ref) => {\n const internalRef = useRef<HTMLSpanElement>(null)\n const spanRef = (ref as React.RefObject<HTMLSpanElement>) || internalRef\n\n useEffect(() => {\n if (listening && spanRef && 'current' in spanRef && spanRef.current && value !== null) {\n ;(spanRef.current as HTMLSpanElement & { value: boolean }).value = value\n }\n }, [value, listening, spanRef])\n\n return (\n <span\n ref={spanRef}\n role=\"checkbox\"\n aria-checked={value}\n tabIndex={0}\n onClick={() => onChange(!value)}\n className={classNames({\n 'relative inline-block flex-shrink-0 border-2 border-transparent rounded-full transition-colors ease-in-out duration-200 focus:outline-none focus:shadow-outline': true,\n 'h-6 w-11': !size || size === 'medium',\n 'h-4 w-7': size === 'small',\n 'bg-brown-500 dark:bg-primary-500': value,\n 'bg-gray-200 dark:bg-charcoal-300': !value,\n 'cursor-pointer': !(className || '').includes('cursor-'),\n ...classNameObject(className),\n })}\n >\n <span\n aria-hidden=\"true\"\n className={classNames({\n 'rounded-full bg-white shadow transform transition ease-in-out duration-200': true,\n 'inline-block h-5 w-5': !size || size === 'medium',\n 'block h-3 w-3': size === 'small',\n 'translate-x-5': value && (!size || size === 'medium'),\n 'translate-x-0': !value,\n 'translate-x-3': value && size === 'small',\n })}\n ></span>\n </span>\n )\n }\n)\n\nToggle.displayName = 'Toggle'\n\nexport default Toggle\n","import React from 'react'\nimport { classNames } from '../utils/classNames'\n\nexport type LoadingLayout = 'fixed' | 'fill'\n\nexport interface LoadingProps {\n title?: string\n layout?: LoadingLayout\n className?: string\n spinClassName?: string\n spinSizeClassName?: string\n}\n\nexport default function Loading({\n title,\n layout,\n className = '',\n spinClassName = '',\n spinSizeClassName = 'w-24 h-24',\n}: LoadingProps) {\n return (\n <div\n className={classNames({\n 'space-y-3': true,\n 'flex flex-col items-center justify-center fixed inset-0': layout === 'fixed',\n 'w-full': layout === 'fill',\n [className]: true,\n })}\n >\n <div\n className={classNames({\n [spinClassName]: true,\n [spinSizeClassName]: true,\n 'relative border-8 border-gray-500 rounded-full animate-spin': true,\n })}\n >\n <div className=\"absolute -left-4 -top-4 right-2/4 bottom-2/4 bg-white/50 bg-opacity-75 rounded-full rounded-b-none rounded-r-none\" />\n </div>\n {!!title && title.length > 0 && <div>{title}</div>}\n </div>\n )\n}\n","import React, { useRef, type ReactNode } from 'react'\nimport { classNames } from '../utils/classNames'\nimport Loading from './Loading'\n\nexport interface CheckboxListProps<T = Record<string, unknown>> {\n items?: T[]\n selected?: (T | string)[]\n onToggle?: (item: T) => void\n itemKey?: string | ((item: T) => string | number)\n itemLabel?: string | ((item: T) => ReactNode)\n isChecked?: (item: T, selected: (T | string)[]) => boolean\n loading?: boolean\n placeholder?: ReactNode\n}\n\nexport default function CheckboxList<T extends Record<string, unknown> = Record<string, unknown>>({\n items = [],\n selected = [],\n onToggle,\n itemKey = 'id',\n itemLabel = (item: T) => (item.name || item.label || item.fullName) as string,\n isChecked,\n loading = false,\n placeholder = 'No items found.',\n}: CheckboxListProps<T>) {\n const hasLoadedRef = useRef(false)\n if (!loading) {\n hasLoadedRef.current = true\n }\n\n const getFinalKey = (item: T, index: number): string | number => {\n const key = typeof itemKey === 'function' ? itemKey(item) : (item[itemKey] as string | number)\n return key !== undefined && key !== null ? key : index\n }\n\n const renderPlaceholder = () => {\n if (typeof placeholder === 'string') {\n return (\n <div className=\"p-4 text-center text-sm text-content-secondary dark:text-content-placeholder\">\n {placeholder}\n </div>\n )\n }\n return placeholder\n }\n\n return (\n <div className=\"w-full border border-gray-300 dark:border-charcoal-700 rounded-lg shadow-sm bg-white dark:bg-charcoal-800 overflow-hidden\">\n <div className=\"max-h-60 overflow-y-auto divide-y divide-gray-100 dark:divide-charcoal-700\">\n {loading && !hasLoadedRef.current ? (\n <div className=\"p-4 flex items-center justify-center min-h-36\">\n <Loading spinSizeClassName=\"w-6 h-6\" className=\"inline-block\" />\n </div>\n ) : (\n <>\n {items.length > 0 ? (\n items.map((item, index) => {\n const finalKey = getFinalKey(item, index)\n const label = typeof itemLabel === 'function' ? itemLabel(item) : (item[itemLabel as string] as string)\n const checked = typeof isChecked === 'function'\n ? isChecked(item, selected)\n : selected.some(\n (s) => (s && typeof s === 'object' ? (s as Record<string, unknown>).id : s) === finalKey\n )\n\n return (\n <div\n key={finalKey}\n className={classNames({\n 'px-2 py-2 cursor-pointer flex items-center justify-between transition-colors': true,\n 'hover:bg-gray-50 dark:hover:bg-charcoal-700': !checked,\n 'bg-gray-50 dark:bg-primary-900/20': checked,\n })}\n onClick={() => onToggle && onToggle(item)}\n >\n <div className=\"flex items-center space-x-3\">\n <div\n className={classNames({\n 'w-5 h-5 rounded border flex items-center justify-center transition-colors cursor-pointer': true,\n 'border-gray-300 bg-white dark:border-charcoal-700 dark:bg-charcoal-700': !checked,\n 'border-brown-500 bg-brown-500 dark:bg-primary-500 dark:border-primary-500 dark:text-black text-white': checked,\n })}\n >\n {checked && (\n <svg className=\"w-4 h-4\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z\" />\n </svg>\n )}\n </div>\n <span\n className={classNames({\n 'text-sm': true,\n 'text-content-title dark:text-content-primary': !checked,\n 'dark:text-primary-400': checked,\n })}\n >\n {label}\n </span>\n </div>\n </div>\n )\n })\n ) : (\n renderPlaceholder()\n )}\n </>\n )}\n </div>\n </div>\n )\n}\n","import React, { createContext, useContext, useEffect, useState, useReducer, type ReactNode } from 'react'\n\ninterface ModalContextValue {\n modalShowing: boolean\n drawerShowing: boolean\n setModalShowing: (value: boolean) => void\n setDrawerShowing: (value: boolean) => void\n}\n\ninterface ModalState {\n modalShowing: boolean\n drawerShowing: boolean\n}\n\ntype ModalAction =\n | { modalShowing: boolean; render?: boolean }\n | { drawerShowing: boolean; render?: boolean }\n\nexport const ModalContext = createContext<ModalContextValue>({\n modalShowing: false,\n drawerShowing: false,\n setModalShowing: () => {},\n setDrawerShowing: () => {},\n})\n\nexport function useModalContext(): ModalContextValue {\n return useContext(ModalContext)\n}\n\ninterface ModalProviderProps {\n children: ReactNode\n}\n\nexport function ModalProvider({ children }: ModalProviderProps) {\n const [currentState, setCurrentState] = useState(0)\n\n function reducer(state: ModalState, action: Record<string, unknown>): ModalState {\n const updatedValues = { ...state }\n\n if ('modalShowing' in action) {\n updatedValues.modalShowing = action.modalShowing as boolean\n }\n if ('drawerShowing' in action) {\n updatedValues.drawerShowing = action.drawerShowing as boolean\n }\n if ('render' in action && !!action.render) {\n setCurrentState(1 - currentState)\n }\n\n return updatedValues\n }\n\n const [values, dispatch] = useReducer(reducer, {\n modalShowing: false,\n drawerShowing: false,\n })\n\n const { modalShowing, drawerShowing } = values\n\n useEffect(() => {\n if (typeof document === 'undefined') return\n\n const bodyEl = document.getElementsByTagName('BODY')[0]\n if (!bodyEl) return\n\n if (modalShowing) {\n bodyEl.classList.add('overflow-hidden')\n } else {\n bodyEl.classList.remove('overflow-hidden')\n }\n }, [modalShowing])\n\n return (\n <ModalContext.Provider\n value={{\n modalShowing,\n drawerShowing,\n setModalShowing: (value: boolean) =>\n dispatch({ modalShowing: value, render: modalShowing !== value }),\n setDrawerShowing: (value: boolean) =>\n dispatch({ drawerShowing: value, render: drawerShowing !== value }),\n }}\n >\n {children}\n </ModalContext.Provider>\n )\n}\n","import React, { useRef, useEffect, useContext, createContext, type ReactNode, type ReactElement } from 'react'\nimport { CSSTransition as ReactCSSTransition } from 'react-transition-group'\n\ninterface TransitionContextValue {\n parent: {\n show?: boolean\n isInitialRender?: boolean\n appear?: boolean\n }\n}\n\nconst TransitionContext = createContext<TransitionContextValue>({\n parent: {},\n})\n\nfunction useIsInitialRender(): boolean {\n const isInitialRender = useRef(true)\n useEffect(() => {\n isInitialRender.current = false\n }, [])\n return isInitialRender.current\n}\n\ninterface CSSTransitionProps {\n show?: boolean\n enter?: string\n enterFrom?: string\n enterTo?: string\n leave?: string\n leaveFrom?: string\n leaveTo?: string\n appear?: boolean\n children: ReactElement\n onEnter?: (node: HTMLElement) => void\n onEntering?: (node: HTMLElement) => void\n onEntered?: (node: HTMLElement) => void\n onExit?: (node: HTMLElement) => void\n onExiting?: (node: HTMLElement) => void\n onExited?: (node: HTMLElement) => void\n}\n\nfunction CSSTransitionComponent({\n show,\n enter = '',\n enterFrom = '',\n enterTo = '',\n leave = '',\n leaveFrom = '',\n leaveTo = '',\n appear,\n children,\n onEnter = () => {},\n onEntering = () => {},\n onEntered = () => {},\n onExit = () => {},\n onExiting = () => {},\n onExited = () => {},\n}: CSSTransitionProps) {\n const enterClasses = enter.split(' ').filter((s) => s.length)\n const enterFromClasses = enterFrom.split(' ').filter((s) => s.length)\n const enterToClasses = enterTo.split(' ').filter((s) => s.length)\n const leaveClasses = leave.split(' ').filter((s) => s.length)\n const leaveFromClasses = leaveFrom.split(' ').filter((s) => s.length)\n const leaveToClasses = leaveTo.split(' ').filter((s) => s.length)\n\n const nodeRef = useRef<HTMLElement>(null)\n\n function addClasses(node: HTMLElement, classes: string[]) {\n classes.length && node.classList.add(...classes)\n }\n\n function removeClasses(node: HTMLElement, classes: string[]) {\n classes.length && node.classList.remove(...classes)\n }\n\n return (\n <ReactCSSTransition\n nodeRef={nodeRef}\n appear={appear}\n unmountOnExit\n in={show}\n addEndListener={(done: () => void) => {\n if (!nodeRef.current) return done()\n nodeRef.current.addEventListener('transitionend', done, false)\n }}\n onEnter={() => {\n if (!nodeRef.current) return\n addClasses(nodeRef.current, [...enterClasses, ...enterFromClasses])\n onEnter(nodeRef.current)\n }}\n onEntering={() => {\n if (!nodeRef.current) return\n removeClasses(nodeRef.current, enterFromClasses)\n addClasses(nodeRef.current, enterToClasses)\n onEntering(nodeRef.current)\n }}\n onEntered={() => {\n if (!nodeRef.current) return\n removeClasses(nodeRef.current, [...enterToClasses, ...enterClasses])\n onEntered(nodeRef.current)\n }}\n onExit={() => {\n if (!nodeRef.current) return\n addClasses(nodeRef.current, [...leaveClasses, ...leaveFromClasses])\n onExit(nodeRef.current)\n }}\n onExiting={() => {\n if (!nodeRef.current) return\n removeClasses(nodeRef.current, leaveFromClasses)\n addClasses(nodeRef.current, leaveToClasses)\n onExiting(nodeRef.current)\n }}\n onExited={() => {\n if (!nodeRef.current) return\n removeClasses(nodeRef.current, [...leaveToClasses, ...leaveClasses])\n onExited(nodeRef.current)\n }}\n >\n {React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n ;(nodeRef as React.MutableRefObject<HTMLElement | null>).current = node\n const childRef = (children as React.ReactElement & { ref?: React.Ref<HTMLElement> }).ref\n if (typeof childRef === 'function') {\n childRef(node)\n } else if (childRef && typeof childRef === 'object') {\n ;(childRef as React.MutableRefObject<HTMLElement | null>).current = node\n }\n },\n } as Record<string, unknown>)}\n </ReactCSSTransition>\n )\n}\n\nexport interface TransitionProps {\n show?: boolean\n appear?: boolean\n enter?: string\n enterFrom?: string\n enterTo?: string\n leave?: string\n leaveFrom?: string\n leaveTo?: string\n children: ReactElement\n onEnter?: (node: HTMLElement) => void\n onEntering?: (node: HTMLElement) => void\n onEntered?: (node: HTMLElement) => void\n onExit?: (node: HTMLElement) => void\n onExiting?: (node: HTMLElement) => void\n onExited?: (node: HTMLElement) => void\n}\n\nexport default function Transition({ show, appear, ...rest }: TransitionProps) {\n const { parent } = useContext(TransitionContext)\n const isInitialRender = useIsInitialRender()\n const isChild = show === undefined\n\n if (isChild) {\n return (\n <CSSTransitionComponent\n appear={parent.appear || !parent.isInitialRender}\n show={parent.show}\n {...rest}\n />\n )\n }\n\n return (\n <TransitionContext.Provider\n value={{\n parent: {\n show,\n isInitialRender,\n appear,\n },\n }}\n >\n <CSSTransitionComponent appear={appear} show={show} {...rest} />\n </TransitionContext.Provider>\n )\n}\n","import React, { type ReactNode } from 'react'\nimport { classNames } from '../../utils/classNames'\nimport Button from '../Button'\n\nexport interface ModalFooterProps {\n footer?: ReactNode\n disabled?: boolean\n onCancel?: () => void\n onSubmit?: (e?: React.MouseEvent) => void\n onChange?: () => void\n closeText?: string\n submitText?: string\n submitColor?: string\n changeText?: string\n darkMode?: boolean\n}\n\nexport default function ModalFooter({\n footer,\n disabled,\n onCancel,\n onSubmit,\n onChange,\n closeText,\n submitText,\n submitColor,\n changeText,\n darkMode,\n}: ModalFooterProps) {\n if (footer) {\n return (\n <div\n className={classNames({\n 'px-3 pt-5 pb-4 bg-gray-100 border-t border-gray-300 dark:border-charcoal-700 sm:px-6 sm:pt-3 sm:pb-3 dark:bg-black/40': true,\n '!bg-charcoal-700 !border-t-charcoal-600': !!darkMode,\n })}\n >\n {footer}\n </div>\n )\n }\n\n const hasSubmit = typeof onSubmit === 'function'\n const hasCancel = typeof onCancel === 'function'\n const hasChange = typeof onChange === 'function'\n\n function handleSubmit(e: React.MouseEvent) {\n if (typeof onSubmit === 'function' && !disabled) {\n onSubmit(e)\n }\n }\n\n let submitVariant: 'primary' | 'secondary' | undefined = 'primary'\n let submitBtnClassName = 'w-full'\n\n if (submitColor) {\n if (submitColor === 'red') {\n submitVariant = undefined\n submitBtnClassName = 'w-full bg-red-600 hover:bg-red-700 dark:bg-red-500 dark:hover:bg-red-600 border-transparent text-white'\n } else if (submitColor === 'primary') {\n submitVariant = 'primary'\n } else {\n submitVariant = undefined\n submitBtnClassName = classNames({ 'w-full': true, [submitColor]: true })\n }\n }\n\n return (\n (hasSubmit || hasCancel || hasChange) ? (\n <div className=\"flex justify-between px-3 py-3 space-x-2 bg-transparent sm:px-6 sm:pt-3 sm:pb-3\">\n {hasChange && (\n <div className=\"flex space-x-2\">\n <span className=\"rounded-2xl\">\n <Button variant=\"secondary\" onClick={onChange}>\n {changeText || 'Change'}\n </Button>\n </span>\n </div>\n )}\n {(hasSubmit || hasCancel) && (\n <div className=\"flex justify-end flex-grow space-x-2\">\n {hasCancel && (\n <span className=\"flex shadow-sm rounded-2xl\">\n <Button className=\"w-full\" variant=\"secondary\" onClick={onCancel}>\n {closeText || 'Cancel'}\n </Button>\n </span>\n )}\n {hasSubmit && (\n <span className=\"flex w-full shadow-sm rounded-2xl sm:w-auto\">\n <Button\n className={submitBtnClassName}\n variant={submitVariant}\n disabled={disabled}\n onClick={() => handleSubmit({} as React.MouseEvent)}\n >\n {submitText || 'Submit'}\n </Button>\n </span>\n )}\n </div>\n )}\n </div>\n ) : null\n )\n}\n","import React, { useContext, useEffect, useState, type ReactNode } from 'react'\nimport { createPortal } from 'react-dom'\nimport { classNames, classNameObject } from '../../utils/classNames'\nimport { ModalContext } from '../../contexts/ModalContext'\nimport Transition from '../Transition'\nimport Button from '../Button'\nimport ModalFooter from './Footer'\n\nlet MODAL_OPEN_COUNT = 0\n\nexport type ModalSize = 'small' | 'medium' | 'large' | 'full'\n\nexport interface ModalOpts {\n darkMode?: boolean\n sidebarPosition?: 'left' | 'right'\n mobileSidebarPosition?: 'top' | 'above' | 'bottom'\n}\n\nexport interface ModalProps {\n wrapperClassName?: string\n open: boolean\n size?: ModalSize\n title?: string\n description?: string\n transparent?: boolean\n header?: ReactNode\n sidebar?: ReactNode\n footer?: ReactNode\n children?: ReactNode\n disabled?: boolean\n onClose?: () => void\n onExited?: () => void\n onCancel?: () => void\n onSubmit?: (e?: React.MouseEvent) => void\n onChange?: () => void\n closeText?: string\n submitText?: string\n submitColor?: string\n changeText?: string\n fullscreen?: boolean\n opts?: ModalOpts\n}\n\nexport default function Modal({\n wrapperClassName,\n open,\n size,\n title,\n description,\n transparent,\n header,\n sidebar,\n footer,\n children,\n disabled,\n onClose,\n onExited = () => { },\n onCancel,\n onSubmit,\n onChange,\n closeText,\n submitText,\n submitColor,\n changeText,\n fullscreen,\n opts,\n}: ModalProps) {\n const { setModalShowing } = useContext(ModalContext)\n const { darkMode, sidebarPosition = 'right', mobileSidebarPosition = 'bottom' } = opts || {}\n const isMobileSidebarTop = mobileSidebarPosition === 'top' || mobileSidebarPosition === 'above'\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n useEffect(() => {\n if (typeof document === 'undefined') return\n\n const bodyEl = document.getElementsByTagName('BODY')[0]\n\n if (open) {\n setModalShowing(true)\n if (MODAL_OPEN_COUNT === 0) {\n bodyEl?.classList?.add('overflow-hidden')\n }\n MODAL_OPEN_COUNT++\n } else {\n setModalShowing(false)\n }\n\n return () => {\n if (open) {\n MODAL_OPEN_COUNT--\n if (MODAL_OPEN_COUNT === 0) {\n bodyEl?.classList?.remove('overflow-hidden')\n }\n }\n }\n }, [open])\n\n function handleClose() {\n if (typeof onClose === 'function') {\n onClose()\n }\n setModalShowing(false)\n }\n\n if (!mounted) return null\n\n return createPortal(\n <Transition show={open} onExited={onExited}>\n <div className=\"fixed inset-x-0 text-sm bottom-0 z-[1300] px-0 bg-opacity-30 md:px-6 md:inset-0 md:flex md:items-center md:justify-center\">\n <div\n className={classNames({\n 'max-h-[100dvh] overflow-y-auto sm:w-full': true,\n 'md:max-w-2xl': !size || size === 'medium',\n 'md:max-w-md': size === 'small',\n 'md:max-w-4xl': size === 'large',\n 'h-[100dvh] md:h-auto md:max-w-3xl': size === 'full',\n })}\n >\n <Transition\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 transition-opacity\">\n <div className=\"absolute inset-0 bg-gray-500 dark:bg-charcoal-800 opacity-75\"></div>\n </div>\n </Transition>\n <Transition\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n enterTo=\"opacity-100 translate-y-0 sm:scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 translate-y-0 sm:scale-100\"\n leaveTo=\"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95\"\n >\n <div\n className={classNames({\n 'relative flex flex-col z-40 max-h-[100dvh] sm:max-h-9/10 sm:rounded-xl overflow-hidden transform transition-all sm:w-full': true,\n 'sm:max-w-2xl': !size,\n 'sm:max-w-md': size === 'small',\n 'sm:max-w-4xl': size === 'medium',\n 'sm:max-w-6xl': size === 'large',\n 'sm:max-w-full sm:!max-h-full': size === 'full',\n 'shadow-xl': !transparent,\n 'bg-white dark:bg-black': !transparent && !wrapperClassName,\n 'bg-transparent ': !!transparent && !wrapperClassName,\n ...classNameObject(wrapperClassName),\n })}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"modal-headline\"\n >\n {!header && (\n <div\n className={classNames({\n 'flex items-center justify-between px-3 pt-3 pb-2 space-x-2 sm:px-6 sm:pt-6 sm:pb-3': true,\n 'sm:border-b sm:border-gray-200 dark:sm:border-charcoal-700 sm:shadow-sm': !!sidebar,\n })}\n >\n <div className=\"flex-1\">\n <h3 className=\"my-0 text-base font-semibold leading-tight text-content-title \">{title}</h3>\n {!!description && description.length > 0 && (\n <p className=\"text-sm text-primary-700\">{description}</p>\n )}\n </div>\n <Button variant=\"flat\" compact={true} onClick={handleClose}>\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </Button>\n </div>\n )}\n {!!header && <>{header}</>}\n <div\n className={classNames({\n 'pb-3 max-h-full overflow-y-auto': true,\n 'h-[100dvh] lg:h-auto': fullscreen || size === 'full',\n 'sm:pt-4 sm:relative border-b border-gray-200 dark:border-charcoal-700': !!sidebar,\n 'sm:pr-80': !!sidebar && sidebarPosition === 'right',\n 'sm:pl-80': !!sidebar && sidebarPosition === 'left',\n })}\n >\n <div className=\"flex-grow px-3 sm:px-6\">\n {!!sidebar && isMobileSidebarTop && (\n <div\n className={classNames({\n 'sm:absolute sm:top-0 sm:bottom-0 sm:w-80 sm:max-h-full sm:overflow-y-scroll sm:px-5 sm:py-4': true,\n 'sm:right-0 sm:border-l sm:border-gray-200 dark:sm:border-charcoal-700': sidebarPosition === 'right',\n 'sm:left-0 sm:border-r sm:border-gray-200 dark:sm:border-charcoal-700': sidebarPosition === 'left',\n 'pb-6 mb-6 border-b border-gray-200 dark:border-charcoal-700 sm:border-b-0 sm:pb-0 sm:mb-0': true,\n })}\n >\n {sidebar}\n </div>\n )}\n {children}\n {!!sidebar && !isMobileSidebarTop && (\n <div\n className={classNames({\n 'sm:absolute sm:top-0 sm:bottom-0 sm:w-80 sm:max-h-full sm:overflow-y-scroll sm:px-5 sm:py-4': true,\n 'sm:right-0 sm:border-l sm:border-gray-200 dark:sm:border-charcoal-700': sidebarPosition === 'right',\n 'sm:left-0 sm:border-r sm:border-gray-200 dark:sm:border-charcoal-700': sidebarPosition === 'left',\n 'pt-6 mt-6 border-t border-gray-200 dark:border-charcoal-700 sm:border-t-0 sm:mt-0': true,\n })}\n >\n {sidebar}\n </div>\n )}\n </div>\n </div>\n <ModalFooter\n footer={footer}\n disabled={disabled}\n onCancel={onCancel}\n onSubmit={onSubmit}\n onChange={onChange}\n closeText={closeText}\n submitText={submitText}\n submitColor={submitColor}\n changeText={changeText}\n darkMode={darkMode}\n />\n </div>\n </Transition>\n </div>\n </div>\n </Transition>,\n document.body\n )\n}\n","import React from 'react'\nimport Modal from './Modal'\n\nexport type ConfirmationType = 'danger' | 'warning' | 'info'\n\nexport interface ConfirmationBoxProps {\n open: boolean\n title?: string\n description?: string\n cancelText?: string\n confirmText?: string\n confirmColor?: string\n type?: ConfirmationType\n disabled?: boolean\n onClose?: () => void\n onConfirm?: () => void\n}\n\nexport default function ConfirmationBox({\n open,\n title = 'Confirm Action',\n description = 'Are you sure you want to perform this action?',\n cancelText = 'Cancel',\n confirmText = 'Confirm',\n confirmColor,\n type = 'danger',\n disabled = false,\n onClose,\n onConfirm,\n}: ConfirmationBoxProps) {\n let iconContainerClass = ''\n let iconSvg: React.ReactNode = null\n let defaultConfirmColor = 'primary'\n\n if (type === 'danger') {\n iconContainerClass = 'bg-red-50 dark:bg-red-950/30 text-red-600 dark:text-red-400'\n defaultConfirmColor = 'red'\n iconSvg = (\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n </svg>\n )\n } else if (type === 'warning') {\n iconContainerClass = 'bg-yellow-50 dark:bg-yellow-950/30 text-yellow-600 dark:text-yellow-400'\n defaultConfirmColor = 'primary'\n iconSvg = (\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\" />\n </svg>\n )\n } else {\n iconContainerClass = 'bg-blue-50 dark:bg-blue-950/30 text-blue-600 dark:text-blue-400'\n defaultConfirmColor = 'primary'\n iconSvg = (\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n )\n }\n\n const resolvedConfirmColor = confirmColor || defaultConfirmColor\n\n return (\n <Modal\n open={open}\n size=\"small\"\n title={title}\n onClose={onClose}\n onCancel={onClose}\n onSubmit={onConfirm}\n closeText={cancelText}\n submitText={confirmText}\n submitColor={resolvedConfirmColor}\n disabled={disabled}\n >\n <div className=\"flex items-start space-x-4\">\n {iconSvg && (\n <div className={`flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full ${iconContainerClass}`}>\n {iconSvg}\n </div>\n )}\n <div className=\"flex-1 pt-1.5\">\n <p className=\"text-sm text-content-secondary font-medium\">\n {description}\n </p>\n </div>\n </div>\n </Modal>\n )\n}\n","import React, { useEffect, useContext, type ReactNode } from 'react'\nimport { ModalContext } from '../contexts/ModalContext'\nimport { classNames, classNameObject } from '../utils/classNames'\nimport Transition from './Transition'\n\nexport type DrawerLevel = 'base' | 'middle' | 'top' | 'ceil' | 'extra-wide' | 'full'\nexport type DrawerTheme =\n | 'WHITE' | 'BLACK' | 'RED' | 'ORANGE' | 'YELLOW'\n | 'LIME' | 'GREEN' | 'BROWN' | 'BLUE' | 'DARK_BLUE'\n | 'PURPLE' | 'FLAMINGO' | 'PINK'\n\nexport interface DrawerAnimationProps {\n enter?: string\n enterFrom?: string\n enterTo?: string\n leave?: string\n leaveFrom?: string\n leaveTo?: string\n}\n\nexport interface DrawerProps {\n theme?: DrawerTheme\n open: boolean\n onClose?: () => void\n title?: string\n level?: DrawerLevel\n description?: string\n children?: ReactNode\n footer?: ReactNode\n animation?: DrawerAnimationProps\n wrapperClassName?: string\n sectionClassName?: string\n}\n\nexport default function Drawer({\n theme,\n open,\n onClose,\n title,\n level,\n description,\n children,\n footer,\n animation = {},\n wrapperClassName,\n sectionClassName = '',\n}: DrawerProps) {\n const { setDrawerShowing } = useContext(ModalContext)\n\n useEffect(() => {\n setDrawerShowing(open)\n }, [open])\n\n function handleClose() {\n if (typeof onClose === 'function') {\n onClose()\n }\n }\n\n return (\n <Transition\n show={open}\n enter=\"transform transition ease-in-out duration-500 sm:duration-700\"\n enterFrom=\"translate-x-full\"\n enterTo=\"translate-x-0\"\n leave=\"transform transition ease-in-out duration-500 sm:duration-700\"\n leaveFrom=\"translate-x-0\"\n leaveTo=\"translate-x-full\"\n {...animation}\n >\n <section\n className={classNames({\n 'fixed inset-y-0 max-w-full right-0 flex': true,\n 'z-20': !level || level === 'base' || level === 'extra-wide' || level === 'full',\n 'z-30': level === 'middle',\n 'z-40': level === 'top',\n 'z-50': level === 'ceil',\n [sectionClassName]: true,\n })}\n >\n <div\n className={classNames({\n 'w-screen': true,\n 'sm:max-w-7xl': level === 'extra-wide',\n 'sm:max-w-full': level === 'full',\n 'sm:max-w-4xl': !level || level === 'base',\n 'sm:max-w-2xl': level === 'middle',\n 'sm:max-w-md': level === 'top',\n 'sm:max-w-sm': level === 'ceil',\n })}\n >\n <div\n className={classNames({\n 'h-full flex flex-col shadow-xl': true,\n 'bg-white dark:bg-primary-800': !wrapperClassName,\n ...classNameObject(wrapperClassName),\n })}\n >\n <div className=\"flex flex-col h-full\">\n <header\n className={classNames({\n 'h-auto py-2.5 sm:py-3 px-4 sm:px-6': true,\n 'bg-primary-100 dark:bg-primary-900': !theme && (!level || level === 'base' || level === 'extra-wide' || level === 'full'),\n 'bg-primary-200 dark:bg-primary-900': !theme && level === 'middle',\n 'bg-primary-300 dark:bg-primary-900': !theme && level === 'top',\n 'bg-primary-50 dark:bg-primary-900 border-b border-primary-100': !theme && level === 'ceil',\n 'bg-white': theme === 'WHITE',\n 'bg-black': theme === 'BLACK',\n 'bg-red-500': theme === 'RED',\n 'bg-orange-500': theme === 'ORANGE',\n 'bg-yellow-500': theme === 'YELLOW',\n 'bg-lime-500': theme === 'LIME',\n 'bg-green-500': theme === 'GREEN',\n 'bg-brown-500': theme === 'BROWN',\n 'bg-blue-500': theme === 'BLUE',\n 'bg-dark-blue-500': theme === 'DARK_BLUE',\n 'bg-purple-500': theme === 'PURPLE',\n 'bg-flamingo-500': theme === 'FLAMINGO',\n 'bg-pink-500': theme === 'PINK',\n })}\n >\n <div className=\"flex items-center justify-between space-x-3\">\n <h2 className=\"text-base sm:text-lg leading-7 font-medium\">\n {title}\n </h2>\n <div className=\"h-7 flex items-center\">\n <div\n aria-label=\"Close\"\n className=\"-mr-3 text-primary-700 dark:text-content-title hover:text-primary-500 p-1.5 rounded-lg hover:bg-primary-100 transition ease-in-out duration-150\"\n onClick={handleClose}\n >\n <svg className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </div>\n </div>\n </div>\n <div>\n <p className=\"text-sm leading-5 text-primary-300\">\n {description}\n </p>\n </div>\n </header>\n <div className=\"py-3 flex-1 flex flex-col justify-between overflow-y-auto\">\n <div className=\"px-4 sm:px-6\">\n {children}\n </div>\n </div>\n {!!footer && (\n <div className=\"sm:border-t sm:border-cool-gray-200 sm:dark:border-gray-700 py-2.5 sm:py-4 px-4 sm:px-6\">\n {footer}\n </div>\n )}\n </div>\n </div>\n </div>\n </section>\n </Transition>\n )\n}\n","import React from 'react'\n\nexport type SortDirection = 'ASC' | 'DESC'\n\nexport interface SortIconProps {\n direction?: SortDirection\n}\n\nexport default function SortIcon({ direction }: SortIconProps) {\n if (direction === 'DESC') {\n return (\n <span className=\"ml-2 text-sm\">\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 4h13M3 8h9m-9 4h9m5-4v12m0 0l-4-4m4 4l4-4\" />\n </svg>\n </span>\n )\n }\n\n if (direction === 'ASC') {\n return (\n <span className=\"ml-2 text-sm\">\n <svg className=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M3 4h13M3 8h9m-9 4h6m4 0l4-4m0 0l4 4m-4-4v12\" />\n </svg>\n </span>\n )\n }\n\n return null\n}\n","import React, { useState, useEffect, useRef, type ReactNode } from 'react'\nimport Transition from './Transition'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport interface InlinePromptProps {\n title: ReactNode\n onConfirm: () => void\n className?: string\n withText?: boolean\n confirmText?: string\n cancelText?: string\n opts?: {\n condensed?: boolean\n blocked?: boolean\n }\n}\n\nexport default function InlinePrompt({\n title,\n onConfirm,\n className = '',\n withText,\n confirmText,\n cancelText,\n opts,\n}: InlinePromptProps) {\n const [isOpen, setIsOpen] = useState(false)\n const nodeTarget = useRef<HTMLAnchorElement>(null)\n const nodeWindow = useRef<HTMLDivElement>(null)\n\n const { condensed, blocked } = opts || {}\n\n function handleClickOutside(e: MouseEvent) {\n if (\n nodeTarget.current?.contains(e.target as Node) ||\n nodeWindow.current?.contains(e.target as Node)\n ) {\n return\n }\n setIsOpen(false)\n }\n\n function handleOpenConfirmation() {\n if (!blocked) {\n setIsOpen(true)\n }\n }\n\n function handleCloseConfirmation() {\n setIsOpen(false)\n }\n\n function handleConfirm() {\n onConfirm()\n setIsOpen(false)\n }\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n } else {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n return (\n <div className=\"inline-block text-left\">\n <div className=\"rounded-md w-full relative\">\n <a\n ref={nodeTarget}\n onClick={handleOpenConfirmation}\n className={classNames({\n 'inline-flex justify-center w-full rounded-md bg-transparent font-medium focus:outline-none focus:border-blue-300 focus:shadow-outline-blue active:bg-gray-50 transition ease-in-out duration-150 cursor-pointer': true,\n 'leading-5 px-4 py-2': !condensed,\n 'text-content-primary hover:text-content-secondary active:text-content-title text-md': !className.includes('text-'),\n ...classNameObject(className),\n })}\n aria-haspopup=\"true\"\n aria-expanded=\"true\"\n >\n {title}\n </a>\n <Transition\n show={isOpen}\n enter=\"transition ease-out duration-100\"\n enterFrom=\"opacity-0 scale-95\"\n enterTo=\"opacity-100 scale-100\"\n leave=\"transition ease-in duration-75\"\n leaveFrom=\"opacity-100 scale-100\"\n leaveTo=\"opacity-0 scale-95\"\n >\n <div\n ref={nodeWindow}\n className=\"absolute top-0 left-0 min-w-full border border-gray-200 rounded-md bg-gray-50 flex justify-center z-20\"\n >\n <a onClick={handleConfirm} className=\"inline-flex items-center cursor-pointer m-1 text-sm text-green-500\">\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"text-green-500 w-6 h-6\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n {withText && confirmText}\n </a>\n <a\n className=\"inline-flex items-center cursor-pointer m-1 text-sm text-red-500\"\n onClick={handleCloseConfirmation}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"text-red-500 w-6 h-6\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n {withText && cancelText}\n </a>\n </div>\n </Transition>\n </div>\n </div>\n )\n}\n","import React, { type ReactNode } from 'react'\n\nexport interface BreadcrumbLink {\n name: string\n href: string\n}\n\nexport interface BreadcrumbProps {\n links?: BreadcrumbLink[]\n onBack?: () => void\n linkComponent?: (props: { href: string; className?: string; children: ReactNode }) => ReactNode\n}\n\nfunction DefaultLink({ href, className, children }: { href: string; className?: string; children: ReactNode }) {\n return <a href={href} className={className}>{children}</a>\n}\n\nexport default function Breadcrumb({\n links,\n onBack,\n linkComponent: LinkComponent = DefaultLink,\n}: BreadcrumbProps) {\n function clickBack(e: React.MouseEvent) {\n e.preventDefault()\n if (onBack) {\n onBack()\n }\n }\n\n return (\n <>\n <div className=\"pb-5 px-4 sm:px-6 lg:px-8\">\n {onBack && (\n <nav className=\"sm:hidden\">\n <a\n onClick={clickBack}\n className=\"flex items-center text-sm leading-5 font-medium text-content-secondary hover:text-content-primary transition duration-150 ease-in-out cursor-pointer\"\n >\n <svg className=\"flex-shrink-0 -ml-1 mr-1 h-5 w-5 text-content-placeholder\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n Back\n </a>\n </nav>\n )}\n <nav className=\"hidden sm:flex items-center text-sm leading-5 font-medium\">\n {links &&\n links.length > 0 &&\n links.map((link, index) => (\n <span className=\"inline-flex\" key={`breadcrumb-link-${index}-${link.name}`}>\n <LinkComponent href={link.href} className=\"text-content-secondary hover:text-content-primary transition duration-150 ease-in-out\">\n {link.name}\n </LinkComponent>\n {index !== links.length - 1 && (\n <svg className=\"flex-shrink-0 mx-2 h-5 w-5 text-content-placeholder\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n </span>\n ))}\n </nav>\n </div>\n </>\n )\n}\n","import React, { useState, useEffect, type ReactNode } from 'react'\nimport { classNames } from '../utils/classNames'\n\nexport interface TabItem {\n id: string\n link?: string\n [key: string]: any\n}\n\nexport interface TabProps {\n items: TabItem[]\n label: string\n value?: string | null\n defaultValue?: string | null\n allowRedirect?: boolean\n onChange?: (item: TabItem) => void\n rightContent?: ReactNode\n linkComponent?: (props: { href: string; className?: string; children: ReactNode; onClick?: () => void }) => ReactNode\n}\n\nfunction DefaultLink({ href, className, children, onClick }: { href: string; className?: string; children: ReactNode; onClick?: () => void }) {\n return <a href={href} className={className} onClick={onClick}>{children}</a>\n}\n\nfunction TabItemComponent({\n allowRedirect,\n item,\n label,\n isActive,\n onSelect,\n linkComponent: LinkComponent = DefaultLink,\n}: {\n allowRedirect?: boolean\n item: TabItem\n label: string\n isActive: boolean\n onSelect: (item: TabItem) => void\n linkComponent?: TabProps['linkComponent']\n}) {\n function handleTabSelect() {\n onSelect(item)\n }\n\n if (!!allowRedirect && !!item.link) {\n return (\n <LinkComponent\n href={item.link}\n className={classNames({\n 'whitespace-no-wrap -mb-px cursor-pointer border-b-2 py-2 px-3 text-center text-sm font-medium leading-5 tracking-tight focus:outline-none sm:px-5 sm:text-base sm:tracking-normal': true,\n 'border-primary-500 text-primary-500 focus:border-primary-500 focus:text-primary-500':\n isActive,\n 'text-cool-gray-500 hover:text-cool-gray-700 focus:text-cool-gray-700 border-transparent hover:border-transparent focus:border-transparent':\n !isActive,\n })}\n onClick={handleTabSelect}\n >\n {item[label]}\n </LinkComponent>\n )\n }\n\n return null\n}\n\nexport default function Tab({\n items,\n label,\n value,\n defaultValue,\n allowRedirect,\n onChange,\n rightContent,\n linkComponent,\n}: TabProps) {\n const [selected, setSelected] = useState(defaultValue)\n\n useEffect(() => {\n setSelected(value)\n }, [value])\n\n function handleSelect(item: TabItem) {\n if (typeof onChange === 'function') {\n onChange(item)\n }\n\n setSelected((item && item.id) || null)\n }\n\n return (\n <div className=\"no-scrollbar flex w-full items-stretch pb-1 sm:pb-2\">\n <nav className=\"border-cool-gray-200 -mb-px flex w-full items-end border-b\">\n {items.map((item) => (\n <TabItemComponent\n key={item.id}\n item={item}\n label={label}\n isActive={selected === item.id}\n allowRedirect={allowRedirect}\n onSelect={handleSelect}\n linkComponent={linkComponent}\n />\n ))}\n </nav>\n {rightContent && (\n <nav className=\"border-cool-gray-200 -mb-px flex flex flex-shrink-0 items-center border-b px-4\">\n {rightContent}\n </nav>\n )}\n </div>\n )\n}\n","import React, { useState, type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport interface ButtonGroupNavLink {\n url: string\n label: string\n icon?: ReactNode\n}\n\nexport interface ButtonGroupItem {\n id: string\n label?: string\n image?: ReactNode | string\n icon?: ReactNode\n url?: string\n subgroups?: ButtonGroupItem[]\n}\n\nexport interface ButtonGroupProps {\n buttons?: ButtonGroupItem[]\n direction?: 'horizontal' | 'vertical'\n iconPosition?: 'front' | 'back'\n activeId?: string\n onChange?: (id: string) => void\n className?: string\n itemClassName?: string\n currentPath?: string\n navLinks?: ButtonGroupNavLink[]\n linkComponent?: (props: { href: string; children: ReactNode }) => ReactNode\n subgroupModal?: (props: {\n open: boolean\n label?: string\n items?: ButtonGroupItem[]\n onClose: () => void\n onChange?: (id: string) => void\n }) => ReactNode\n}\n\nfunction DefaultLink({ href, children }: { href: string; children: ReactNode }) {\n return <a href={href}>{children}</a>\n}\n\nfunction ButtonItem({\n className,\n active,\n direction,\n iconPosition,\n button,\n onChange,\n onChangeGroup,\n currentPath,\n navLinks,\n linkComponent: LinkComponent = DefaultLink,\n}: {\n className?: string\n active: boolean\n direction?: string\n iconPosition?: string\n button: ButtonGroupItem\n onChange?: (id: string) => void\n onChangeGroup: (group: ButtonGroupItem) => void\n currentPath?: string\n navLinks?: ButtonGroupNavLink[]\n linkComponent?: ButtonGroupProps['linkComponent']\n}) {\n let currentButton: ButtonGroupItem = { ...button }\n\n if (active && navLinks && currentPath) {\n const navItem = navLinks.find(navLink => navLink.url === currentPath)\n\n if (navItem) {\n currentButton.label = navItem.label\n currentButton.image = (\n <div className=\"w-5 h-5\">\n {navItem.icon}\n </div>\n )\n currentButton.icon = undefined\n }\n }\n\n const buttonContent = (\n <div\n className={classNames({\n \"p-3 rounded-xl mx-auto text-content-primary/70 dark:text-content-title/50 flex justify-center cursor-pointer\": true,\n \"w-full\": direction === \"vertical\",\n \"w-full overflow-hidden\": direction === \"horizontal\",\n \"!text-content-primary dark:!text-primary-500 bg-white/50 dark:bg-charcoal-800/90 dark:backdrop-filter dark:backdrop-blur-sm border border-white lg:border-transparent dark:border-charcoal-700 shadow-xs dark:shadow-none\": active,\n ...classNameObject(className)\n })}\n >\n <div\n className={classNames({\n \"flex items-center justify-center\": true,\n \"flex-col md:flex-row md:space-x-1.5\": !!currentButton.image,\n \"gap-2\": !currentButton.image && !!currentButton.icon,\n \"flex-row-reverse\": !currentButton.image && iconPosition === \"back\",\n \"flex-row\": !currentButton.image && iconPosition !== \"back\"\n })}\n >\n {/* Image Section */}\n {currentButton.image && (\n <div className=\"relative mb-0.5 md:mb-0\">\n {\n typeof currentButton.image === \"string\" &&\n <img\n src={currentButton.image}\n alt={currentButton.label}\n className=\"w-6 h-6 object-cover rounded-full pointer-events-none\"\n />\n }\n {\n typeof currentButton.image === \"object\" &&\n currentButton.image\n }\n </div>\n )}\n\n {/* Icon Section */}\n {!currentButton.image && currentButton.icon && (\n <span className=\"text-sm\">\n {currentButton.icon}\n </span>\n )}\n\n {/* Label */}\n <div\n className={classNames({\n \"text-xs font-thin tracking-tight\": true,\n \"!font-normal\": active\n })}\n >\n <div className=\"line-clamp-1\">\n {currentButton.label}\n </div>\n </div>\n </div>\n </div>\n )\n\n if (currentButton.subgroups) {\n return (\n <div\n onClick={() => onChangeGroup(button)}\n >\n {buttonContent}\n </div>\n )\n }\n\n if (currentButton.url) {\n return (\n <LinkComponent href={currentButton.url}>\n {buttonContent}\n </LinkComponent>\n )\n }\n\n return (\n <div\n onClick={() => onChange && onChange(button.id)}\n >\n {buttonContent}\n </div>\n )\n}\n\nexport default function ButtonGroup({\n buttons = [],\n direction = \"horizontal\",\n iconPosition = \"front\",\n activeId,\n onChange,\n className,\n itemClassName,\n currentPath,\n navLinks,\n linkComponent,\n subgroupModal,\n}: ButtonGroupProps) {\n const [selectedGroup, setSelectedGroup] = useState<ButtonGroupItem | null>(null)\n\n function handleCloseModal() {\n setSelectedGroup(null)\n }\n\n return (\n <div\n className={classNames({\n \"gap-2 scrollbar-hide\": true,\n \"w-full\": direction === \"vertical\",\n \"grid grid-cols-5 w-full items-center\": direction === \"horizontal\",\n ...classNameObject(className)\n })}\n >\n {buttons.map((button) => {\n const isActive = activeId === button.id\n\n return (\n <ButtonItem\n key={button.id}\n className={itemClassName}\n button={button}\n direction={direction}\n iconPosition={iconPosition}\n onChange={onChange}\n onChangeGroup={(group) => setSelectedGroup(group)}\n active={isActive}\n currentPath={currentPath}\n navLinks={navLinks}\n linkComponent={linkComponent}\n />\n )\n })}\n {subgroupModal && subgroupModal({\n open: !!selectedGroup,\n label: selectedGroup?.label,\n items: selectedGroup?.subgroups,\n onClose: handleCloseModal,\n onChange: onChange,\n })}\n </div>\n )\n}\n","import React, { type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../utils/classNames'\n\nexport interface HTMLHeadingProps {\n id?: string\n className?: string\n children?: ReactNode\n}\n\nexport function H1({ className, children }: HTMLHeadingProps) {\n return (\n <h1\n className={classNames({\n 'text-lg sm:text-xl font-title text-primary-500 font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h1>\n )\n}\n\nexport function H2({ className, children }: HTMLHeadingProps) {\n return (\n <h2\n className={classNames({\n 'text-2xl font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h2>\n )\n}\n\nexport function H3({ id, className, children }: HTMLHeadingProps) {\n if (id) {\n return (\n <>\n <div id={id} className=\"-mt-24\"></div>\n <h3\n className={classNames({\n 'pt-20 mb-0 text-lg font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h3>\n </>\n )\n }\n\n return (\n <h3\n className={classNames({\n 'text-lg mb-0 font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h3>\n )\n}\n\nexport function H4({ id, className, children }: HTMLHeadingProps) {\n if (id) {\n return (\n <>\n <div id={id} className=\"-mt-24\"></div>\n <h4\n className={classNames({\n 'pt-20 mb-0 text-base font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h4>\n </>\n )\n }\n\n return (\n <h4\n className={classNames({\n 'text-base mb-0 font-semibold': true,\n ...classNameObject(className),\n })}\n >\n {children}\n </h4>\n )\n}\n\nexport interface BoldProps {\n children?: ReactNode\n}\n\nexport function B({ children }: BoldProps) {\n return <b className=\"font-semibold\">{children}</b>\n}\n","import React, { type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface TableProps {\n children?: ReactNode\n className?: string\n}\n\nexport default function Table({ children, className }: TableProps) {\n return (\n <div\n className={classNames({\n ...classNameObject(className),\n 'flex flex-col relative': true,\n 'sm:px-0 lg:px-8': !className || !className.includes('px-'),\n })}\n >\n <div className=\"-my-2 py-2 px-0.5 sm:px-0 overflow-x-auto sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8\">\n <div className=\"align-middle inline-block min-w-full shadow overflow-hidden rounded-lg border-b border-t border-gray-200\">\n <table className=\"min-w-full\">{children}</table>\n </div>\n </div>\n </div>\n )\n}\n","import React, { type ReactNode } from 'react'\n\nexport interface TheadProps {\n children?: ReactNode\n}\n\nexport default function Thead({ children }: TheadProps) {\n return <thead>{children}</thead>\n}\n","import React, { type ReactNode } from 'react'\n\nexport interface TrProps {\n children?: ReactNode\n}\n\nexport default function Tr({ children }: TrProps) {\n return <tr>{children}</tr>\n}\n","import React, { type ReactNode, type ThHTMLAttributes } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface ThProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'className'> {\n condensed?: boolean\n className?: string\n children?: ReactNode\n sticky?: boolean\n}\n\nexport default function Th({ condensed, className, children, sticky, ...opts }: ThProps) {\n return (\n <th\n className={classNames({\n ...classNameObject(className),\n 'sticky z-10 top-0': !!sticky,\n 'border-b border-gray-200 bg-gray-50 text-left text-xs leading-4 font-medium text-content-secondary uppercase tracking-wider': true,\n 'px-6': !condensed,\n 'py-4': !condensed && (!className || !className.includes('py-')),\n 'px-2.5': !!condensed,\n 'py-2': !!condensed && (!className || !className.includes('py-')),\n })}\n {...opts}\n >\n {children}\n </th>\n )\n}\n","import React, { type ReactNode } from 'react'\n\nexport interface TbodyProps {\n children?: ReactNode\n}\n\nexport default function Tbody({ children }: TbodyProps) {\n return <tbody className=\"bg-white\">{children}</tbody>\n}\n","import React, { type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface TdProps {\n className?: string\n align?: 'left' | 'center' | 'right'\n colSpan?: number\n condensed?: boolean\n narrow?: boolean\n children?: ReactNode\n}\n\nexport default function Td({ className, align, colSpan, condensed, narrow, children }: TdProps) {\n return (\n <td\n align={align}\n colSpan={colSpan}\n className={classNames({\n ...classNameObject(className),\n 'whitespace-no-wrap border-b border-gray-200': true,\n 'px-6': !condensed && !narrow,\n 'py-4': !condensed && !narrow && (!className || !className.includes('py-')),\n 'px-2': !!condensed,\n 'py-2': !!condensed && (!className || !className.includes('py-')),\n 'px-0': !!narrow,\n 'py-0': !!narrow && (!className || !className.includes('py-')),\n })}\n >\n {children}\n </td>\n )\n}\n","import React, { useState, useRef, useEffect, useImperativeHandle, forwardRef } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport type InputType =\n | 'text' | 'password' | 'email' | 'url' | 'date' | 'month'\n | 'time' | 'date-time' | 'datetime-local' | 'week' | 'number'\n | 'search' | 'tel' | 'color' | 'radio' | 'checkbox' | 'hidden' | 'button'\n\nexport interface InputProps {\n id?: string\n theme?: string\n className?: string\n label?: string\n placeholder?: string\n active?: boolean\n pattern?: string\n maxLength?: number\n inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\n prefix?: string\n type?: InputType\n info?: string\n defaultValue?: string | number\n checked?: boolean\n min?: number | string\n max?: number | string\n error?: boolean\n errorMessage?: string\n readOnly?: boolean\n name?: string\n autoComplete?: 'on' | 'off'\n autoFocus?: boolean\n spellCheck?: boolean\n noBorder?: boolean\n listening?: boolean\n onChange?: (value: string | boolean) => void\n onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void\n onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void\n onClick?: (e: React.MouseEvent<HTMLInputElement>) => void\n onKeyUp?: (e: React.KeyboardEvent<HTMLInputElement>) => void\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void\n hideIndicator?: boolean\n darkMode?: boolean\n}\n\nconst Input = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const {\n id,\n theme,\n className,\n label,\n placeholder,\n active,\n pattern,\n maxLength,\n inputMode,\n prefix,\n type = 'text',\n info,\n defaultValue,\n checked,\n min,\n max,\n error = false,\n errorMessage,\n readOnly = false,\n name,\n autoComplete = 'off',\n autoFocus,\n spellCheck,\n noBorder,\n listening,\n onChange,\n onFocus,\n onBlur,\n onClick,\n onKeyUp,\n onKeyDown,\n hideIndicator,\n darkMode,\n } = props\n\n const [focused, setFocused] = useState(false)\n const inputRef = useRef<HTMLInputElement>(null)\n const hasPrefix = !!prefix && prefix.length > 0\n\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement)\n\n useEffect(() => {\n if (listening && inputRef.current && defaultValue !== null && defaultValue !== undefined) {\n if (hasPrefix) {\n inputRef.current.value = prefix + String(defaultValue)\n } else {\n inputRef.current.value = String(defaultValue)\n }\n }\n }, [defaultValue])\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n const value = e.target.value\n\n if (hasPrefix && inputRef.current) {\n const plainValue = hasPrefix\n ? value.length < prefix!.length\n ? value.length === 1\n ? value\n : ''\n : value.replace(prefix!, '')\n : value\n\n inputRef.current.value = prefix + plainValue\n if (typeof onChange === 'function') {\n if (type === 'checkbox') {\n onChange(e.target.checked)\n } else {\n onChange(plainValue)\n }\n }\n } else {\n if (typeof onChange === 'function') {\n if (type === 'checkbox') {\n onChange(e.target.checked)\n } else {\n onChange(value)\n }\n }\n }\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n if (type === 'search') {\n setFocused(true)\n }\n if (typeof onFocus === 'function') {\n onFocus(e)\n }\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n if (type === 'search') {\n setFocused(false)\n }\n if (typeof onBlur === 'function') {\n onBlur(e)\n }\n }\n\n return (\n <>\n <div className=\"relative w-full\">\n <input\n id={id}\n className={classNames({\n ...classNameObject(className),\n 'px-3 group form-input placeholder-gray-300 dark:placeholder-charcoal-400 focus:outline-none block transition ease-in-out duration-150 text-black dark:text-content-primary dark:bg-charcoal-800 shadow-sm focus:dark:text-primary-500 focus:dark:border-primary-500 focus:dark:ring-primary-500': true,\n '!text-white !border-charcoal-400 !placeholder-charcoal-400 focus:!text-primary-500 focus:!border-primary-500 focus:!ring-primary-500': !!darkMode,\n 'h-11': !className || !className.includes('h-'),\n 'text-sm': type !== 'tel',\n 'text-lg': type === 'tel',\n 'rounded-lg': type !== 'radio',\n 'rounded-full': type === 'radio',\n 'border border-gray-200 dark:border-charcoal-700 shadow-sm text-black': !noBorder && !readOnly && type !== 'radio',\n 'border border-opacity-20 bg-gray-100 cursor-not-allowed': readOnly,\n 'border-transparent': !!noBorder,\n 'border-red-300 text-red-900 placeholder-red-100 focus:placeholder-red-100 focus:border-red-500 focus:ring-red-300': error,\n 'focus:ring-primary-500': !error && type !== 'radio',\n 'focus:ring-transparent': type === 'radio',\n 'w-full': type !== 'radio' && (!className || className.includes('w-full') || !className.includes('w-')),\n 'sm:leading-normal': !className || !className.includes('leading-'),\n 'cursor-pointer': type === 'checkbox' || type === 'button',\n 'text-black h-4 w-4': type === 'radio',\n 'pr-10': type === 'search',\n })}\n {...(type === 'button' ? { value: label } : {})}\n inputMode={inputMode}\n pattern={pattern}\n name={name}\n min={min}\n max={max}\n ref={inputRef}\n type={type}\n maxLength={maxLength}\n defaultValue={defaultValue}\n placeholder={placeholder}\n readOnly={readOnly}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n spellCheck={spellCheck}\n onClick={onClick}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyUp={onKeyUp}\n onKeyDown={onKeyDown}\n />\n {error && !hideIndicator && (\n <div\n className={classNames({\n 'absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none': true,\n '!text-white focus:!text-primary-500': !!darkMode,\n })}\n >\n <svg className=\"w-5 h-5 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )}\n {type === 'search' && (\n <div\n className={classNames({\n 'absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none focus:outline-none active:outline-none': true,\n '!text-white': !!darkMode,\n 'text-content-secondary': !focused,\n '!text-primary-500': focused,\n })}\n >\n <svg className=\"w-5 h-5\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )}\n </div>\n {error && errorMessage && <p className=\"mt-2 text-sm text-red-600\">{errorMessage}</p>}\n {info != null && !error && <p className=\"mt-2 text-sm text-content-secondary\">{info}</p>}\n </>\n )\n})\n\nInput.displayName = 'Input'\n\nexport default Input\n","import React, { type ReactNode } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface LabelProps {\n className?: string\n error?: boolean\n htmlFor?: string\n info?: string\n mandatory?: boolean\n opts?: {\n dark?: boolean\n }\n children?: ReactNode\n}\n\nexport default function Label({\n className,\n error = false,\n htmlFor,\n info,\n mandatory,\n opts,\n children,\n}: LabelProps) {\n return (\n <div className=\"flex items-center justify-between\">\n <label\n htmlFor={htmlFor}\n className={classNames({\n 'block text-sm font-medium mb-1.5 text-black dark:text-content-title': true,\n 'text-black dark:text-content-title/80': !error,\n 'text-red-600': error,\n ...classNameObject(className),\n })}\n >\n {children}\n {mandatory && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n {info && (\n <span\n className={classNames({\n 'text-sm leading-5 text-black mb-1.5': true,\n 'text-red-600': error,\n })}\n >\n {info}\n </span>\n )}\n </div>\n )\n}\n","import React, { type ReactNode, forwardRef } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface SelectProps {\n id?: string\n loading?: boolean\n className?: string\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void\n error?: boolean\n errorMessage?: string\n info?: string\n readOnly?: boolean\n name?: string\n children?: ReactNode\n value?: string | number\n}\n\nconst Select = forwardRef<HTMLSelectElement, SelectProps>((props, ref) => {\n const {\n id,\n loading = false,\n className,\n onChange,\n error = false,\n errorMessage,\n info,\n readOnly = false,\n name,\n children,\n value,\n } = props\n\n return (\n <>\n {!loading && (\n <div className=\"rounded-md shadow-sm border border-gray-200\">\n <select\n id={id}\n value={value}\n className={classNames({\n ...classNameObject(className),\n ...classNameObject(\n `form-select block w-full transition duration-150 ease-in-out ${\n error\n ? 'border-red-300 text-red-900 placeholder-red-300 focus:border-red-300 focus:shadow-outline-red'\n : ''\n }`\n ),\n })}\n ref={ref}\n name={name}\n disabled={readOnly}\n onChange={onChange}\n >\n {children}\n </select>\n </div>\n )}\n {loading && <span className=\"inline-flex relative w-6 loading\" />}\n {error && errorMessage && <p className=\"mt-2 text-sm text-red-600\">{errorMessage}</p>}\n {info != null && !error && <p className=\"mt-2 text-sm text-content-secondary\">{info}</p>}\n </>\n )\n})\n\nSelect.displayName = 'Select'\n\nexport default Select\n","import React, { forwardRef } from 'react'\nimport { classNames } from '../../utils/classNames'\n\nexport interface SelectInputItem {\n id: string\n name: string\n}\n\nexport interface SelectInputProps {\n className?: string\n placeholder?: string\n items?: SelectInputItem[]\n selectedValue?: string\n readOnly?: boolean\n error?: boolean\n onChange?: (value: string) => void\n}\n\nconst SelectInput = forwardRef<HTMLSelectElement, SelectInputProps>((props, ref) => {\n const {\n className,\n placeholder = 'Select an option',\n items = [],\n selectedValue = '',\n readOnly = false,\n error = false,\n onChange = () => {},\n } = props\n\n function handleOnChange(event: React.ChangeEvent<HTMLSelectElement>) {\n const value = event.target.value\n if (typeof onChange === 'function') {\n onChange(value)\n }\n }\n\n return (\n <select\n onChange={handleOnChange}\n value={selectedValue || ''}\n disabled={readOnly}\n className={classNames({\n 'form-select block w-full transition duration-150 ease-in-out border border-gray-200 rounded-md shadow-sm text-sm px-3 h-11 text-black': true,\n 'cursor-not-allowed border bg-gray-100': readOnly,\n 'border-red-300 text-red-900 placeholder-red-100 focus:placeholder-red-100 focus:border-red-500 focus:ring-red-300': error,\n })}\n >\n <option value=\"\" key=\"\">\n {placeholder}\n </option>\n {items.map((item, index) => (\n <option value={item.id} key={index}>\n {item.name}\n </option>\n ))}\n </select>\n )\n})\n\nSelectInput.displayName = 'SelectInput'\n\nexport default SelectInput\n","import React, { forwardRef } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\n\nexport interface TextareaProps {\n id?: string\n className?: string\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void\n onFocus?: (e: React.FocusEvent<HTMLTextAreaElement>) => void\n onMouseDown?: (e: React.MouseEvent<HTMLTextAreaElement>) => void\n placeholder?: string\n error?: boolean\n errorMessage?: string\n info?: string\n readOnly?: boolean\n name?: string\n defaultValue?: string\n rows?: number\n opts?: {\n plateFocus?: string\n }\n autoFocus?: boolean\n}\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>((props, ref) => {\n const {\n id,\n className,\n onChange,\n onFocus,\n onMouseDown,\n placeholder,\n error = false,\n errorMessage,\n info,\n readOnly = false,\n name,\n defaultValue,\n rows,\n opts,\n autoFocus,\n } = props\n\n return (\n <>\n <div className=\"relative rounded-xl shadow-sm\" data-plate-focus={opts?.plateFocus}>\n <textarea\n data-plate-focus={opts?.plateFocus}\n autoFocus={autoFocus}\n id={id}\n rows={rows}\n placeholder={placeholder}\n className={classNames({\n ...classNameObject(className),\n 'form-input border block w-full placeholder-gray-300 dark:placeholder-white/50 dark:focus:placeholder-charcoal-400 text-sm transition ease-in-out duration-150 px-3 py-2 border-gray-200 dark:border-charcoal-700 text-black dark:text-content-primary dark:bg-charcoal-800 rounded-lg': true,\n 'focus:ring-white dark:focus:ring-1 dark:focus:border-primary-600 dark:focus:ring-primary-500': !error,\n 'focus:outline-none focus:ring-0 focus:ring-offset-0 dark:focus:border-primary-500': true,\n 'border-red-300 text-red-900 placeholder-red-300 dark:placeholder-red-600 focus:border-red-300 focus:shadow-outline-red': error,\n })}\n name={name}\n ref={ref}\n defaultValue={defaultValue}\n onFocus={onFocus}\n onMouseDown={onMouseDown}\n onChange={onChange}\n readOnly={readOnly}\n ></textarea>\n {error && (\n <div className=\"absolute top-2 right-0 pr-3 flex pointer-events-none\">\n <svg className=\"h-5 w-5 text-red-500\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )}\n </div>\n {error && errorMessage && <p className=\"mt-2 text-sm text-red-600\">{errorMessage}</p>}\n {info != null && !error && <p className=\"mt-2 text-sm text-content-secondary\">{info}</p>}\n </>\n )\n})\n\nTextarea.displayName = 'Textarea'\n\nexport default Textarea\n","import React, { useRef, useState, useReducer, useEffect } from 'react'\n\nexport interface TagInputProps {\n name?: string\n defaultValue?: string[]\n onChange?: (tags: string[]) => void\n placeholder?: string\n}\n\ninterface TagInputState {\n tags: string[]\n}\n\ntype TagInputAction =\n | { tags: string[]; render?: boolean }\n | { reset: boolean; render?: boolean }\n\nexport default function TagInput({\n name,\n defaultValue,\n onChange,\n placeholder,\n}: TagInputProps) {\n const [currentState, setCurrentState] = useState(0)\n const tagInputRef = useRef<HTMLInputElement>(null)\n\n function reducer(state: TagInputState, action: Record<string, unknown>): TagInputState {\n const updatedValues = { ...state }\n if ('tags' in action) {\n updatedValues.tags = Array.from(new Set(action.tags as string[]))\n }\n if ('reset' in action && action.reset) {\n updatedValues.tags = []\n }\n if ('render' in action && action.render) {\n setCurrentState(1 - currentState)\n }\n return updatedValues\n }\n\n const [values, dispatch] = useReducer(reducer, {\n tags: [],\n })\n const { tags } = values\n\n useEffect(() => {\n if (defaultValue) {\n dispatch({ tags: defaultValue, render: true })\n } else {\n dispatch({ reset: true, render: true })\n }\n }, [defaultValue])\n\n function handleAddTag(event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key === 'Enter') {\n const value = (event.target as HTMLInputElement).value\n if (!value) return false\n const newTags = Array.from(new Set([...tags, value]))\n dispatch({ tags: newTags, render: true })\n if (typeof onChange === 'function') {\n onChange(newTags)\n }\n if (tagInputRef.current) {\n tagInputRef.current.value = ''\n }\n }\n }\n\n function handleRemoveTag(tag: string) {\n if (!tag) return false\n const newTags = tags.filter((i) => i !== tag)\n dispatch({ tags: newTags, render: true })\n if (typeof onChange === 'function') {\n onChange(newTags)\n }\n }\n\n return (\n <div className=\"flex items-center w-full flex-wrap px-2 pt-2 pb-1 border border-gray-300 rounded-md\">\n {tags.map((tag, index) => (\n <span\n key={index}\n className=\"inline-flex bg-primary-200 text-primary-800 text-sm rounded-full h-6 px-3 justify-center items-center mr-1 mb-1\"\n >\n {tag}\n <svg\n className=\"w-4 h-4 ml-1 cursor-pointer\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n onClick={() => handleRemoveTag(tag)}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n ))}\n <input\n ref={tagInputRef}\n className=\"ml-2 text-sm focus:border-transparent focus:outline-none mb-1\"\n placeholder={tags && tags.length > 0 ? '' : placeholder}\n onKeyDown={handleAddTag}\n />\n </div>\n )\n}\n","import React from 'react'\n\nexport interface NoDataProps {\n className?: string\n}\n\nexport default function NoData({ className }: NoDataProps) {\n return (\n <div className={`flex flex-col items-center text-center my-8 ${className || ''}`}>\n <img\n src=\"/img/no-data.png\"\n width={420}\n height={307}\n className='max-w-[90%]'\n alt=\"no data found\"\n />\n <div className='max-w-[90%] flex flex-col text-center'>\n <h4 className='text-6 font-medium text-content-title mt-3 /50'>It's empty.</h4>\n <p className='text-4 text-content-primary dark:text-content-title/60'>Nothing to do for now.</p>\n </div>\n </div>\n )\n}\n","import React, { useState, useEffect, useContext, createContext } from 'react'\n\nexport interface ThemeContextProps {\n theme: string\n darkMode: boolean\n handleToggleTheme: (theme: string) => void\n}\n\nexport const ThemeContext = createContext<ThemeContextProps | undefined>(undefined)\n\nlet currentIsDark = false\ninterface MockListener {\n listener: any\n query: string\n}\nconst matchMediaListeners = new Set<MockListener>()\nlet originalMatchMedia: typeof window.matchMedia | null = null\n\nif (typeof window !== 'undefined') {\n originalMatchMedia = window.matchMedia\n\n try {\n const saved = localStorage.getItem(\"theme\")\n const prefersDark = originalMatchMedia.call(window, '(prefers-color-scheme: dark)').matches\n const isSystemOrNone = !saved || saved === \"system\"\n currentIsDark = saved === \"dark\" || (isSystemOrNone && prefersDark)\n } catch (e) {\n // Ignore errors during synchronous initialization\n }\n\n window.matchMedia = function (query: string) {\n const normalized = query.replace(/\\s+/g, '').toLowerCase()\n const isDarkQuery = normalized.includes('prefers-color-scheme:dark')\n const isLightQuery = normalized.includes('prefers-color-scheme:light')\n\n if (isDarkQuery || isLightQuery) {\n const matches = isDarkQuery ? currentIsDark : !currentIsDark\n return {\n matches,\n media: query,\n onchange: null,\n addListener(listener: any) {\n matchMediaListeners.add({ listener, query })\n },\n removeListener(listener: any) {\n for (const item of matchMediaListeners) {\n if (item.listener === listener) {\n matchMediaListeners.delete(item)\n }\n }\n },\n addEventListener(type: string, listener: any) {\n if (type === 'change') {\n matchMediaListeners.add({ listener, query })\n }\n },\n removeEventListener(type: string, listener: any) {\n if (type === 'change') {\n for (const item of matchMediaListeners) {\n if (item.listener === listener) {\n matchMediaListeners.delete(item)\n }\n }\n }\n },\n dispatchEvent(event: Event) {\n return true\n }\n } as unknown as MediaQueryList\n }\n return originalMatchMedia!.call(window, query)\n }\n}\n\nexport interface ThemeProviderProps {\n children: React.ReactNode\n defaultTheme?: string\n}\n\nexport function ThemeProvider({ children, defaultTheme = \"system\" }: ThemeProviderProps) {\n const [mode, setMode] = useState<string>(defaultTheme)\n const [isDark, setIsDark] = useState<boolean>(false)\n const [mounted, setMounted] = useState<boolean>(false)\n\n useEffect(() => {\n const saved = localStorage.getItem(\"theme\") || defaultTheme\n setMode(saved)\n setMounted(true)\n }, [defaultTheme])\n\n useEffect(() => {\n if (!mounted) return\n\n const media = originalMatchMedia\n ? originalMatchMedia.call(window, \"(prefers-color-scheme: dark)\")\n : null\n\n const updateTheme = () => {\n const prefersDark = media ? media.matches : false\n const currentIsDarkVal = mode === \"dark\" || (mode === \"system\" && prefersDark)\n\n if (currentIsDarkVal) {\n document.documentElement.classList.add(\"dark\")\n document.documentElement.classList.remove(\"light\")\n } else {\n document.documentElement.classList.remove(\"dark\")\n document.documentElement.classList.add(\"light\")\n }\n\n currentIsDark = currentIsDarkVal\n setIsDark(currentIsDarkVal)\n\n // Notify matchMedia change listeners\n matchMediaListeners.forEach(({ listener, query }) => {\n try {\n const normalized = query.replace(/\\s+/g, '').toLowerCase()\n const isDarkQuery = normalized.includes('prefers-color-scheme:dark')\n const matches = isDarkQuery ? currentIsDarkVal : !currentIsDarkVal\n \n const event = { matches, media: query }\n if (typeof listener === 'function') {\n listener(event)\n } else if (listener && typeof (listener as any).handleEvent === 'function') {\n (listener as any).handleEvent(event)\n }\n } catch (e) {\n console.error(e)\n }\n })\n }\n\n // Defer the theme application to the next event loop tick to ensure it runs after external scripts / extensions initialize\n const timeoutId = setTimeout(updateTheme, 0)\n\n // We also want to listen to changes on media queries dynamically\n const handleMediaChange = () => {\n // Run immediately on query change\n updateTheme()\n }\n \n if (media) {\n media.addEventListener(\"change\", handleMediaChange)\n }\n\n return () => {\n clearTimeout(timeoutId)\n if (media) {\n media.removeEventListener(\"change\", handleMediaChange)\n }\n }\n }, [mode, mounted])\n\n function handleToggleTheme(triggerMode: string) {\n const triggeredMode = (triggerMode === mode) ? \"system\" : triggerMode\n setMode(triggeredMode)\n\n if (!triggeredMode || triggeredMode === \"system\") {\n localStorage.removeItem(\"theme\")\n } else {\n localStorage.setItem(\"theme\", triggeredMode)\n }\n }\n\n return (\n <ThemeContext.Provider\n value={{\n theme: mode,\n darkMode: isDark,\n handleToggleTheme\n }}\n >\n {children}\n </ThemeContext.Provider>\n )\n}\n\nexport function useThemeContext() {\n const context = useContext(ThemeContext)\n if (!context) {\n throw new Error(\"useThemeContext must be used within a ThemeProvider\")\n }\n return context\n}\n","import React from \"react\"\nimport { classNames } from \"../../utils/classNames\"\nimport { useThemeContext } from \"../../contexts/ThemeContext\"\n\nexport default function ThemeToggle() {\n const { theme, handleToggleTheme } = useThemeContext()\n\n return (\n <div className=\"text-content-primary dark:text-content-title z-30 flex space-x-1.5 items-center\">\n <div\n className={classNames({\n \"opacity-20 cursor-pointer\": true,\n \"!opacity-100\": theme === \"light\"\n })}\n onClick={() => handleToggleTheme(\"light\")}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-6 h-6\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z\" />\n </svg>\n </div>\n <div\n className={classNames({\n \"opacity-20 cursor-pointer\": true,\n \"!opacity-100\": theme === \"dark\"\n })}\n onClick={() => handleToggleTheme(\"dark\")}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-5 h-5\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z\" />\n </svg>\n </div>\n </div>\n )\n}\n","export function debounce<T extends (...args: any[]) => void>(fn: T, delay: number) {\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n return function(this: any, ...args: Parameters<T>) {\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n fn.apply(this, args);\n }, delay);\n };\n}\n","import { useCallback } from 'react'\nimport { debounce } from '../utils/debounce'\n\nexport default function useDebounce<T extends (...args: any[]) => void>(\n callback: T,\n delay: number,\n deps: any[] = []\n) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const callbackFn = useCallback(debounce(callback, delay), deps)\n return [callbackFn]\n}\n","import { useState, useEffect } from 'react'\nimport useDebounce from './useDebounce'\n\nexport interface ResizeListenerProps {\n mobileAgent?: boolean\n}\n\nexport interface ResizeValues {\n screenWidth: number\n screenHeight: number\n viewport: 'mobile' | 'desktop' | null\n viewMode: 'portrait-view' | 'landscape-view' | null\n mobileView: boolean | null\n tabletView: boolean | null\n}\n\nexport default function useResizeListener(props: ResizeListenerProps = {}) {\n const [values, setValues] = useState<[\n number,\n number,\n ('mobile' | 'desktop' | null),\n ('portrait-view' | 'landscape-view' | null),\n (boolean | null),\n (boolean | null)\n ]>(\n [\n typeof window === 'undefined' ? (props.mobileAgent ? 375 : 1080) : window.innerWidth,\n typeof window === 'undefined' ? (props.mobileAgent ? 812 : 750) : window.innerHeight,\n typeof window === 'undefined' ? null : (window.innerWidth < 576 ? 'mobile' : 'desktop'),\n typeof window === 'undefined' ? null : (window.innerWidth < 576 ? 'portrait-view' : 'landscape-view'),\n typeof window === 'undefined' ? (props.mobileAgent || null) : (window.innerWidth < 576 ? true : false),\n typeof window === 'undefined' ? (props.mobileAgent || null) : ((window.innerWidth >= 576 && window.innerWidth < 992) ? true : false)\n ]\n )\n const [screenWidth, screenHeight, viewport, viewMode, mobileView, tabletView] = values || []\n\n function handleChangeViewport() {\n setValues([\n window.innerWidth,\n window.innerHeight,\n window.innerWidth < 576 ? 'mobile' : 'desktop',\n window.innerWidth < 576 ? 'portrait-view' : 'landscape-view',\n window.innerWidth < 576 ? true : false,\n (window.innerWidth >= 576 && window.innerWidth < 992) ? true : false\n ])\n }\n\n const [debouncedSetValue] = useDebounce(handleChangeViewport, 300)\n\n useEffect(() => {\n window.addEventListener('resize', debouncedSetValue)\n return () => {\n window.removeEventListener('resize', debouncedSetValue)\n }\n }, [debouncedSetValue])\n\n return { screenWidth, screenHeight, viewport, viewMode, mobileView, tabletView }\n}\n","import React, { useReducer, useContext, createContext, useCallback, useMemo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { classNames } from \"../utils/classNames\"\n\nexport interface PopoverActionItem {\n id: string\n label: string\n action?: () => void | Promise<void>\n onClick?: () => void | Promise<void>\n}\n\nexport interface PopoverAction {\n id: string\n section?: string\n items: PopoverActionItem[]\n}\n\nexport interface PopoverState {\n show: boolean\n style: React.CSSProperties | null\n tooltipStyle: React.CSSProperties | null\n position: 'top' | 'bottom' | null\n description?: string | null\n actions: PopoverAction[] | null\n}\n\nexport interface PopoverContextProps {\n showPopover: boolean\n setPopover: (params: PopoverState) => void\n}\n\nexport const PopoverContext = createContext<PopoverContextProps | undefined>(undefined)\n\nfunction PopoverCard({\n show,\n style,\n tooltipStyle,\n position,\n description,\n actions,\n onClose\n}: PopoverState & { onClose: () => void }) {\n function handleMenuClick(action?: (() => void | Promise<void>)) {\n if (typeof action === 'function') {\n action()\n }\n if (typeof onClose === 'function') {\n onClose()\n }\n }\n\n function handleCloseMenu() {\n if (typeof onClose === 'function') {\n onClose()\n }\n }\n\n const stickyTop = position === \"top\"\n\n if (typeof document === \"undefined\") return null\n\n return createPortal(\n <>\n {/* DESKTOP VIEW */}\n <div\n className={classNames({\n \"hidden sm:block fixed text-sm z-[9999] w-52 max-h-64 overflow-y-auto border border-gray-100 bg-white dark:bg-charcoal-800 dark:border-charcoal-700 shadow-md rounded-md pt-3 pb-2\": true,\n \"pointer-events-none opacity-0\": !show,\n \"opacity-100\": show\n })}\n style={style || undefined}\n >\n {\n !!description &&\n <p className=\"px-3 pb-1 opacity-70\">\n {description}\n </p>\n }\n {\n actions && actions.length > 0 &&\n <div className=\"space-y-1.5 w-full\">\n {\n actions.filter(action => (action.items || []).length > 0).map((action, actionIndex) => (\n <div key={action.id}>\n {\n actionIndex > 0 &&\n <div className=\"w-full h-px bg-gray-100 dark:bg-charcoal-800 mb-3\">\n </div>\n }\n {\n action.section &&\n <p className=\"px-3 text-xxs sm:text-xs uppercase text-content-secondary dark:text-content-title dark:hover\">\n {action.section}\n </p>\n }\n <div\n className={classNames({\n \"mt-1\": !!action.section\n })}\n >\n {\n (action.items || []).map(item => (\n <div\n key={item.id}\n className=\"text-sm sm:text-base px-3 py-1.5 text-content-primary dark:text-content-secondary hover:text-content-title hover:bg-gray-200 hover:dark:text-content-disabled hover:dark:bg-charcoal-700 cursor-pointer whitespace-normal\"\n onClick={() => handleMenuClick(item.action || item.onClick)}\n >\n {item.label}\n </div>\n ))\n }\n </div>\n </div>\n ))\n }\n </div>\n }\n </div>\n <div\n className={classNames({\n \"hidden sm:block fixed z-[9999] rotate-45 w-4 h-4 overflow-y-auto border-gray-100 bg-white dark:bg-charcoal-700 dark:border-charcoal-800\": true,\n \"border-t border-l\": !stickyTop,\n \"border-b border-r\": stickyTop,\n \"pointer-events-none opacity-0\": !show,\n \"opacity-100\": show\n })}\n style={tooltipStyle || undefined}\n />\n\n {/* MOBILE VIEW (BOTTOM SHEET) */}\n <div className={classNames({\n \"block sm:hidden fixed inset-0 z-[9999] pointer-events-none\": true,\n })}>\n {/* Backdrop */}\n <div\n className={classNames({\n \"absolute inset-0 bg-black/50 transition-opacity duration-300\": true,\n \"opacity-0\": !show,\n \"opacity-100 pointer-events-auto\": show\n })}\n onClick={handleCloseMenu}\n ></div>\n\n {/* Sheet */}\n <div\n className={classNames({\n \"absolute bottom-0 left-0 right-0 bg-white dark:bg-charcoal-800 overflow-hidden transition-transform duration-300 transform\": true,\n \"translate-y-full\": !show,\n \"translate-y-0 pointer-events-auto\": show\n })}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-4 py-3\">\n <h3 className=\"font-semibold text-content-title \">Menu</h3>\n <div\n onClick={handleCloseMenu}\n className=\"p-1 -mr-1 text-content-secondary hover:bg-gray-100 dark:hover:bg-charcoal-700 rounded-full\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"px-4 pb-6 max-h-[70vh] overflow-y-auto\">\n {\n !!description &&\n <p className=\"mb-4 text-sm text-content-secondary \">\n {description}\n </p>\n }\n <div className=\"space-y-4\">\n {\n actions && actions.filter(action => (action.items || []).length > 0).map((action, actionIndex) => (\n <div key={action.id}>\n {\n action.section &&\n <p className=\"text-xs font-medium uppercase text-content-secondary mb-2\">\n {action.section}\n </p>\n }\n <div className=\"space-y-1\">\n {\n (action.items || []).map(item => (\n <div\n key={item.id}\n className=\"py-1.5 px-2 -mx-2 flex items-center text-base text-content-title dark:text-content-primary active:bg-gray-50 dark:active:bg-charcoal-700 rounded-lg cursor-pointer\"\n onClick={() => handleMenuClick(item.action || item.onClick)}\n >\n {item.label}\n </div>\n ))\n }\n </div>\n {/* Divider if not last */}\n {\n actionIndex < actions.length - 1 &&\n <hr className=\"mt-2 border-transparent\" />\n }\n </div>\n ))\n }\n </div>\n </div>\n </div>\n </div>\n\n {/* Close Overlay for Desktop */}\n {\n show &&\n <div\n className=\"hidden sm:block fixed inset-0\"\n onClick={handleCloseMenu}\n >\n\n </div>\n }\n </>,\n document.body\n )\n}\n\nconst resetValues: PopoverState = {\n show: false,\n style: null,\n tooltipStyle: null,\n position: null,\n description: null,\n actions: null\n}\n\nfunction reducer(state: PopoverState, action: Partial<PopoverState>) {\n let changed = false\n for (const k in action) {\n const key = k as keyof PopoverState\n if (action[key] !== state[key]) {\n changed = true\n break\n }\n }\n if (!changed) return state\n\n const updatedValues = { ...state }\n\n if ('show' in action) { updatedValues.show = action.show! }\n if ('style' in action) { updatedValues.style = action.style! }\n if ('tooltipStyle' in action) { updatedValues.tooltipStyle = action.tooltipStyle! }\n if ('position' in action) { updatedValues.position = action.position! }\n if ('description' in action) { updatedValues.description = action.description }\n if ('actions' in action) { updatedValues.actions = action.actions! }\n\n return updatedValues\n}\n\nexport function PopoverProvider({ children }: { children: React.ReactNode }) {\n const [values, dispatch] = useReducer(reducer, resetValues)\n\n const { show, style, tooltipStyle, position, description, actions } = values\n\n const handleShowPopover = useCallback((params: PopoverState) => {\n dispatch(params)\n }, [])\n\n const handleClosePopover = useCallback(() => {\n dispatch(resetValues)\n }, [])\n\n const contextValue = useMemo(() => ({\n showPopover: show,\n setPopover: handleShowPopover,\n }), [show, handleShowPopover])\n\n return (\n <PopoverContext.Provider value={contextValue}>\n {children}\n {\n !!show &&\n <PopoverCard\n show={show}\n style={style}\n tooltipStyle={tooltipStyle}\n position={position}\n description={description}\n actions={actions}\n onClose={handleClosePopover}\n />\n }\n </PopoverContext.Provider>\n )\n}\n\nexport function usePopoverContext() {\n const context = useContext(PopoverContext)\n if (!context) {\n throw new Error(\"usePopoverContext must be used within a PopoverProvider\")\n }\n return context\n}\n","import React, { useRef, useEffect, useState } from \"react\"\nimport { classNames, classNameObject } from \"../../utils/classNames\"\nimport useResizeListener from \"../../hooks/useResizeListener\"\nimport { usePopoverContext, PopoverAction } from \"../../contexts/PopoverContext\"\n\nexport interface PopoverProps {\n className?: string\n description?: string | null\n actions: PopoverAction[]\n children: React.ReactNode\n opts?: {\n activated?: boolean\n condensed?: boolean\n compact?: boolean\n asBlock?: boolean\n align?: string\n }\n}\n\nexport default function Popover({ className, description, actions, children, opts }: PopoverProps) {\n const { activated } = opts || {}\n const { showPopover, setPopover } = usePopoverContext()\n\n const { screenWidth, screenHeight } = useResizeListener()\n const [menuData, setMenuData] = useState({ showMenu: false, x: 0, y: 0, left: 0, right: 0, top: 0, bottom: 0 })\n\n const parentRef = useRef<HTMLDivElement>(null)\n const prevShowMenuRef = useRef(false)\n const prevShowPopoverRef = useRef(false)\n\n const hasAction = (actions || []).some(action => (action.items || []).length > 0)\n\n useEffect(() => {\n const wasOpen = prevShowMenuRef.current\n prevShowMenuRef.current = menuData.showMenu\n\n // Only update context if we are currently open, OR if we were open and are now closing.\n // This prevents infinite render loops when the popover is closed and during initial mounts.\n if (!menuData.showMenu && !wasOpen) {\n return\n }\n\n const stickyTop = menuData.showMenu && screenHeight - (menuData.y + 14) < 300\n\n setPopover({\n show: menuData.showMenu,\n style: !stickyTop ? {\n top: menuData.bottom + 14,\n right: screenWidth - menuData.right - 6\n } : {\n bottom: screenHeight - menuData.top + 12,\n right: screenWidth - menuData.right - 6\n },\n tooltipStyle: !stickyTop ? {\n top: menuData.bottom + 6,\n right: screenWidth - menuData.right + 6\n } : {\n bottom: screenHeight - menuData.top + 4,\n right: screenWidth - menuData.right + 6\n },\n position: stickyTop ? \"top\" : \"bottom\",\n description: description,\n actions: actions\n })\n }, [menuData, screenWidth, screenHeight, description, actions, setPopover])\n\n useEffect(() => {\n if (prevShowPopoverRef.current && !showPopover) {\n setMenuData(prev => ({\n ...prev,\n showMenu: false\n }))\n }\n prevShowPopoverRef.current = showPopover\n }, [showPopover])\n\n function handleToggleMenu(e: React.MouseEvent) {\n e.stopPropagation()\n\n if (menuData.showMenu) {\n handleCloseMenu()\n } else {\n handleOpenMenu()\n }\n }\n\n function handleOpenMenu() {\n if (parentRef && parentRef.current) {\n const coords = parentRef.current.getBoundingClientRect()\n setMenuData({\n showMenu: true,\n left: coords.left,\n right: coords.right,\n top: coords.top,\n bottom: coords.bottom,\n x: screenWidth - coords.right,\n y: coords.bottom\n })\n }\n }\n\n function handleCloseMenu() {\n setMenuData({\n showMenu: false,\n x: 0,\n y: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n })\n }\n\n return (\n <div className=\"block h-full\">\n <div\n ref={parentRef}\n className={classNames({\n \"cursor-pointer py-0.5 px-2 h-full flex items-center justify-center hover:bg-gray-300/50 hover:dark:bg-charcoal-700 rounded-xl\": true,\n \"bg-gray-300/50 dark:bg-charcoal-700\": menuData.showMenu && !activated,\n ...classNameObject(className)\n })}\n onClick={handleToggleMenu}\n >\n {children}\n </div>\n </div>\n )\n}\n","const srgbToLinear = (c: number) => {\n c /= 255\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4)\n}\n\nconst luminance = (r: number, g: number, b: number) => {\n const R = srgbToLinear(r)\n const G = srgbToLinear(g)\n const B = srgbToLinear(b)\n return 0.2126 * R + 0.7152 * G + 0.0722 * B\n}\n\nconst contrastRatio = (L1: number, L2: number) => {\n const [light, dark] = L1 > L2 ? [L1, L2] : [L2, L1]\n return (light + 0.05) / (dark + 0.05)\n}\n\nconst hexToRgb = (hex: string) => {\n hex = hex.replace(/^#/, \"\")\n if (hex.length === 3) {\n hex = hex.split(\"\").map(x => x + x).join(\"\")\n }\n const num = parseInt(hex, 16)\n return {\n r: (num >> 16) & 255,\n g: (num >> 8) & 255,\n b: num & 255,\n }\n}\n\nexport function bestTextColorForBg(hex?: string | null): 'white' | 'black' {\n const { r, g, b } = hexToRgb(hex || \"#FFFFFF\")\n const Lbg = luminance(r, g, b)\n const contrastWithWhite = contrastRatio(Lbg, 1)\n const contrastWithBlack = contrastRatio(Lbg, 0)\n return contrastWithWhite >= contrastWithBlack ? \"white\" : \"black\"\n}\n\nexport const numberFormatter = (\n x?: number | string | null,\n decimal?: number | null,\n opts?: { decimalSign?: string; thousandSign?: string }\n): string => {\n const { decimalSign, thousandSign } = opts || {}\n\n if (x === null || x === undefined || x === \"\") return \"\"\n const parsedX = typeof x === \"string\" ? parseFloat(x) : x\n if (isNaN(parsedX)) return \"\"\n\n const value = Math.round(parsedX * 100) / 100\n\n if (typeof decimal == \"number\") {\n if (Math.floor(value) == value) {\n return value\n .toFixed(decimal || 0)\n .toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSign || \",\")\n }\n\n return value\n .toFixed(decimal)\n .toString()\n .replace(\".\", decimalSign || \".\")\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSign || \",\")\n }\n\n return parsedX.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSign || \",\")\n}\n\nexport function moveItem<T>(items: T[], movedItem: T, fromIndex: number, toIndex: number): T[] {\n return items.reduce<T[]>((prev, item, itemIndex) => {\n if (itemIndex === fromIndex) {\n return prev\n }\n\n if (itemIndex === toIndex) {\n if (fromIndex < toIndex) {\n return [...prev, item, movedItem]\n } else {\n return [...prev, movedItem, item]\n }\n }\n\n return [...prev, item]\n }, [])\n}\n","import React, { useEffect, useReducer, useState } from 'react'\nimport { classNames, classNameObject } from '../../utils/classNames'\nimport { moveItem } from '../../utils/format'\n\nexport interface DraggerProps {\n type?: 'table' | 'div'\n parentClassName?: string\n header?: React.ReactNode\n records: any[]\n timestamp?: any\n disabled?: boolean\n children: React.ReactElement\n onChange?: (updatedRecords: any[]) => void\n}\n\ninterface DraggerState {\n items: React.ReactElement[] | null\n displayItems: React.ReactElement[] | null\n dragging: boolean\n dragItem: React.ReactElement | null\n dragFrom: number | null\n dragTo: number | null\n updated: boolean\n timer?: ReturnType<typeof setTimeout> | null\n cursorX?: number\n cursorY?: number\n}\n\nexport default function Dragger({\n type,\n parentClassName,\n header,\n records,\n timestamp,\n disabled,\n children,\n onChange\n}: DraggerProps) {\n const [, setCurrentState] = useState(0)\n\n const [values, dispatch] = useReducer(reducer, {\n items: null,\n displayItems: null,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n updated: false,\n timer: null\n } as DraggerState)\n\n const { items, displayItems, dragging, dragItem, dragFrom, dragTo, updated } = values || {}\n const grandChildren = children && (children.props as any).children\n const isValid = !disabled && !!records && !!children && !!grandChildren && grandChildren.length > 0\n\n useEffect(() => {\n dispatch({\n items: grandChildren,\n updated: false,\n render: true\n })\n }, [timestamp, grandChildren])\n\n useEffect(() => {\n if (!updated) {\n if (grandChildren && grandChildren.length > 0) {\n dispatch({\n items: grandChildren,\n displayItems: grandChildren,\n updated: false,\n render: true\n })\n } else {\n dispatch({\n items: [],\n displayItems: [],\n updated: false,\n render: true\n })\n }\n }\n }, [grandChildren, updated])\n\n function reducer(state: DraggerState, action: Partial<DraggerState> & { render?: boolean }) {\n const updatedValues = { ...state }\n\n if ('items' in action) { updatedValues.items = action.items! }\n if ('displayItems' in action) { updatedValues.displayItems = action.displayItems! }\n if ('dragging' in action) { updatedValues.dragging = action.dragging! }\n\n if ('dragItem' in action) { updatedValues.dragItem = action.dragItem! }\n if ('dragFrom' in action) { updatedValues.dragFrom = action.dragFrom! }\n if ('dragTo' in action) { updatedValues.dragTo = action.dragTo! }\n\n if ('updated' in action) { updatedValues.updated = action.updated! }\n\n if ('timer' in action) { updatedValues.timer = action.timer }\n if ('cursorX' in action) { updatedValues.cursorX = action.cursorX }\n if ('cursorY' in action) { updatedValues.cursorY = action.cursorY }\n\n if (action.render) { setCurrentState(prev => 1 - prev) }\n\n return updatedValues\n }\n\n if (!isValid) {\n if (type === \"table\") {\n return (\n <table className={parentClassName}>\n {header}\n {children}\n </table>\n )\n }\n\n return children\n }\n\n function handleDragStart(e: React.DragEvent, item: React.ReactElement, index: number) {\n e.stopPropagation()\n\n dispatch({\n dragging: true,\n dragItem: item,\n dragFrom: index,\n render: true\n })\n }\n\n function handleDragEnd() {\n if (dragFrom !== dragTo) {\n const updatedItems = moveItem(items || [], dragItem!, dragFrom!, dragTo!)\n\n dispatch({\n items: updatedItems,\n displayItems: updatedItems,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n updated: true,\n render: true\n })\n\n if (typeof onChange === 'function') {\n const updated = !!updatedItems && updatedItems.map(updatedItem => records.find(record => record.id === updatedItem.key))\n onChange(updated)\n }\n } else {\n dispatch({\n items: items,\n displayItems: displayItems,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n render: true\n })\n }\n }\n\n function handleDragOver(ev: React.DragEvent, index: number) {\n ev.preventDefault()\n\n if (dragging && dragTo !== index) {\n if (dragFrom !== index) {\n const updatedItems = moveItem(items || [], dragItem!, dragFrom!, index)\n\n dispatch({\n displayItems: updatedItems,\n dragTo: index,\n render: dragTo !== index\n })\n }\n else {\n dispatch({\n displayItems: items,\n dragTo: index,\n render: dragTo !== index\n })\n }\n }\n }\n\n function handleContextMenu(e: React.MouseEvent) {\n e.preventDefault()\n }\n\n function handleTouchStart(e: React.TouchEvent) {\n const touch = e.touches[0] || e.changedTouches[0]\n const { clientX, clientY } = touch\n\n const timer = setTimeout(() => handleLongTouchStart({ clientX, clientY }), 500)\n dispatch({\n timer: timer,\n cursorX: clientX,\n cursorY: clientY,\n dragging: false\n })\n }\n\n function handleLongTouchStart({ clientX, clientY }: { clientX: number, clientY: number }) {\n const difference = Math.abs(clientY - (values.cursorY || 0))\n\n if (difference > 40) {\n return false\n }\n\n dispatch({ dragging: true })\n\n const cards = records\n\n let elementInBoundary: HTMLElement | null = null\n let elementIndex: number | null = null\n for (let i = 0; i < cards.length; i++) {\n const cardItem = cards[i]\n\n if (!!cardItem) {\n const element = document.getElementById(cardItem.id)\n if (element) {\n const { top, right, bottom, left } = element.getBoundingClientRect()\n\n if (left <= clientX && clientX <= right && top <= clientY && clientY <= bottom) {\n elementInBoundary = element\n elementIndex = i\n break\n }\n }\n }\n }\n\n if (elementInBoundary && elementIndex !== null && items) {\n dispatch({\n dragging: true,\n dragItem: items[elementIndex],\n dragFrom: elementIndex,\n render: true\n })\n }\n }\n\n function handleTouchMove(e: React.TouchEvent) {\n const touch = e.touches[0] || e.changedTouches[0]\n const { clientX, clientY } = touch\n\n dispatch({\n cursorX: clientX,\n cursorY: clientY\n })\n\n if (values.dragging && items) {\n const cards = records\n\n let targetIndex: number | null = null\n for (let i = 0; i < cards.length; i++) {\n const cardItem = cards[i]\n\n if (!!cardItem) {\n const element = document.getElementById(cardItem.id)\n if (element) {\n const { top, right, bottom, left } = element.getBoundingClientRect()\n\n if (left <= clientX && clientX <= right && top <= clientY && clientY <= bottom) {\n targetIndex = i\n break\n }\n }\n }\n }\n\n if (targetIndex !== null && values.dragFrom !== targetIndex) {\n const updatedItems = moveItem(items, values.dragItem!, values.dragFrom!, targetIndex)\n\n dispatch({\n displayItems: updatedItems,\n dragTo: targetIndex,\n render: dragTo !== targetIndex\n })\n } else {\n dispatch({\n displayItems: items,\n dragTo: values.dragFrom,\n render: dragTo !== values.dragFrom\n })\n }\n }\n }\n\n function handleTouchEnd() {\n if (dragFrom !== dragTo) {\n const updatedItems = moveItem(values.items || [], values.dragItem!, values.dragFrom!, values.dragTo!)\n\n dispatch({\n items: updatedItems,\n displayItems: updatedItems,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n updated: true,\n render: true\n })\n\n if (typeof onChange === 'function') {\n const updated = !!updatedItems && updatedItems.map(updatedItem => records.find(record => record.id === updatedItem.key))\n onChange(updated)\n }\n } else {\n dispatch({\n items: items,\n displayItems: displayItems,\n dragging: false,\n dragItem: null,\n dragFrom: null,\n dragTo: null,\n render: true\n })\n }\n\n if (values.timer) {\n clearTimeout(values.timer)\n }\n\n dispatch({ dragging: false })\n }\n\n const derivedItems = !!items && React.cloneElement(children as React.ReactElement<any>, {\n children: items.map((grandChild, index) => {\n return React.cloneElement(grandChild as React.ReactElement<any>, {\n id: (records[index] || {}).id,\n draggable: true,\n className: classNames({\n ...classNameObject((grandChild.props as any).className),\n \"opacity-0\": !!dragging && dragTo === index\n }),\n onDragStart: (e: React.DragEvent) => handleDragStart(e, grandChild, index),\n onDragEnd: () => handleDragEnd(),\n onDragOver: (ev: React.DragEvent) => handleDragOver(ev, index),\n onTouchStart: (e: React.TouchEvent) => handleTouchStart(e),\n onTouchMove: (e: React.TouchEvent) => handleTouchMove(e),\n onTouchEnd: () => handleTouchEnd(),\n onContextMenu: (e: React.MouseEvent) => handleContextMenu(e)\n })\n })\n })\n\n const derivedDisplayItems = !!displayItems && React.cloneElement(children as React.ReactElement<any>, {\n children: displayItems.map((grandChild, index) => {\n return React.cloneElement(grandChild as React.ReactElement<any>, {\n draggable: true,\n className: classNames({\n ...classNameObject((grandChild.props as any).className),\n \"opacity-25 sm:opacity-0\": !!dragging && dragTo === index\n })\n })\n })\n })\n\n if (type === \"table\") {\n return (\n <table\n className={classNames({\n \"relative\": true,\n ...classNameObject(parentClassName)\n })}\n >\n {header}\n {derivedItems}\n <tbody\n className={classNames({\n \"absolute top-10 left-0 right-0 z-20 pointer-events-none\": true,\n \"hidden\": !dragging\n })}\n >\n {derivedDisplayItems}\n </tbody>\n </table>\n )\n }\n\n return (\n <div className=\"relative\">\n {derivedItems}\n <div\n className={classNames({\n \"absolute top-0 left-0 right-0 z-20 pointer-events-none bg-white dark:bg-gray-900\": true,\n \"hidden\": !dragging\n })}\n >\n {derivedDisplayItems}\n </div>\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { classNames } from \"../../utils/classNames\"\n\nexport interface ExcelColumn {\n id: string\n label: string | React.ReactNode\n width?: string\n align?: 'left' | 'center' | 'right'\n type?: 'text' | 'number' | 'textarea' | 'checkbox'\n}\n\nexport interface ExcelTableProps {\n columns: ExcelColumn[]\n data: any[]\n onChange?: (newData: any[]) => void\n onRowAdd?: () => void\n onRowDelete?: (index: number) => void\n placeholder?: string | ((rowIndex: number) => string)\n isAddRowVisible?: boolean\n addRowLabel?: string\n}\n\nexport default function ExcelTable({\n columns = [],\n data = [],\n onChange,\n onRowAdd,\n onRowDelete,\n placeholder,\n isAddRowVisible = true,\n addRowLabel = \"+ Add Option\"\n}: ExcelTableProps) {\n const [editingCell, setEditingCell] = useState<{ row: number; col: number } | null>(null)\n\n // Auto-resize textareas on initial load and data change\n useEffect(() => {\n setTimeout(() => {\n const textareas = document.querySelectorAll('.excel-table-textarea') as NodeListOf<HTMLTextAreaElement>\n textareas.forEach(ta => {\n ta.style.height = 'auto'\n ta.style.height = ta.scrollHeight + 'px'\n })\n }, 0)\n }, [data])\n\n const handleCellNavigation = (e: React.KeyboardEvent<HTMLElement>, currentRow: number, currentCol: number) => {\n const isEditing = editingCell?.row === currentRow && editingCell?.col === currentCol\n\n const totalRows = data.length\n const totalCols = columns.length + 1\n const addRowIndex = totalRows\n\n let nextRow = currentRow\n let nextCol = currentCol\n\n const isAddRow = currentRow === addRowIndex\n\n if (isEditing) {\n if (e.key === 'Enter' && !e.shiftKey) {\n setEditingCell(null)\n if (currentRow < totalRows - 1) nextRow = currentRow + 1\n else if (currentRow === totalRows - 1) nextRow = addRowIndex\n } else {\n return\n }\n } else {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {\n e.preventDefault()\n\n if (e.key === 'ArrowUp') {\n if (isAddRow) nextRow = totalRows - 1\n else nextRow = Math.max(0, currentRow - 1)\n }\n if (e.key === 'ArrowDown') {\n if (currentRow < totalRows - 1) nextRow = currentRow + 1\n else if (currentRow === totalRows - 1) nextRow = addRowIndex\n }\n if (e.key === 'ArrowLeft') nextCol = Math.max(0, currentCol - 1)\n if (e.key === 'ArrowRight') nextCol = Math.min(totalCols - 1, currentCol + 1)\n }\n else if (e.key === 'Enter') {\n e.preventDefault()\n\n if (isAddRow) {\n onRowAdd && onRowAdd()\n setTimeout(() => {\n const target = document.querySelector(`[data-row=\"${totalRows}\"][data-col=\"0\"]`) as HTMLInputElement | null\n if (target) {\n target.focus()\n target.click()\n }\n }, 0)\n return\n } else if (currentCol < columns.length) {\n setEditingCell({ row: currentRow, col: currentCol })\n } else {\n onRowDelete && onRowDelete(currentRow)\n setTimeout(() => {\n const targetRow = currentRow < data.length - 1 ? currentRow : Math.max(0, currentRow - 1)\n const target = document.querySelector(`[data-row=\"${targetRow}\"][data-col=\"${columns.length}\"]`) as HTMLElement | null\n if (target) target.focus()\n else {\n const addBtn = document.getElementById('add-option-btn')\n if (addBtn) addBtn.focus()\n }\n }, 0)\n return\n }\n }\n else if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey && !isAddRow && currentCol < columns.length) {\n setEditingCell({ row: currentRow, col: currentCol })\n return\n }\n }\n\n if (nextRow !== currentRow || nextCol !== currentCol) {\n if (nextRow === addRowIndex) {\n const target = document.getElementById('add-option-btn')\n if (target) target.focus()\n } else {\n const target = document.querySelector(`[data-row=\"${nextRow}\"][data-col=\"${nextCol}\"]`) as HTMLInputElement | HTMLTextAreaElement | null\n if (target) {\n target.focus()\n if ((target.tagName === 'INPUT' && (target as HTMLInputElement).type !== 'checkbox') || target.tagName === 'TEXTAREA') {\n target.select()\n }\n }\n }\n }\n }\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>, row: number, col: number) => {\n if (editingCell?.row !== row || editingCell?.col !== col) {\n setEditingCell(null)\n e.target.select()\n }\n }\n\n const handleChange = (rowIdx: number, colId: string, val: any) => {\n const newData = [...data]\n newData[rowIdx] = { ...newData[rowIdx], [colId]: val }\n onChange && onChange(newData)\n }\n\n const handlePaste = (e: React.ClipboardEvent<HTMLElement>, startRow: number, startCol: number) => {\n e.preventDefault()\n const clipboardData = e.clipboardData.getData('text/plain')\n const rows = clipboardData.split(/\\r\\n|\\n|\\r/).filter(row => row.trim() !== \"\")\n\n let newData = [...data]\n\n rows.forEach((row, rIdx) => {\n const targetRowIdx = startRow + rIdx\n const cells = row.split('\\t')\n\n if (!newData[targetRowIdx]) {\n newData[targetRowIdx] = {}\n }\n\n columns.forEach((col, cIdx) => {\n const colIndexInPaste = cIdx - startCol\n\n if (colIndexInPaste >= 0 && cells[colIndexInPaste] !== undefined) {\n const val = cells[colIndexInPaste]\n newData[targetRowIdx] = { ...newData[targetRowIdx], [col.id]: val }\n }\n })\n })\n\n onChange && onChange(newData)\n }\n\n return (\n <div className=\"border border-gray-200 dark:border-charcoal-600 rounded-sm overflow-hidden\">\n <table className=\"w-full border-collapse bg-white dark:bg-charcoal-900\">\n <thead>\n <tr>\n {columns.map((col, idx) => (\n <th\n key={col.id || idx}\n className={classNames({\n \"border-b border-r border-gray-200 dark:border-charcoal-600 bg-gray-50 dark:bg-charcoal-800 px-3 py-2 text-xs font-semibold text-content-secondary\": true,\n \"w-auto\": !col.width,\n [col.width || \"\"]: !!col.width,\n \"text-left\": !col.align,\n \"text-center\": col.align === \"center\",\n \"text-right\": col.align === \"right\"\n })}\n >\n {col.label}\n </th>\n ))}\n <th className=\"border-b border-gray-200 dark:border-charcoal-600 bg-gray-50 dark:bg-charcoal-800 w-8\"></th>\n </tr>\n </thead>\n <tbody>\n {data.map((row, rowIdx) => (\n <tr key={rowIdx} className=\"group\">\n {columns.map((col, colIdx) => (\n <td\n key={col.id || colIdx}\n className=\"border-b border-r border-gray-200 dark:border-charcoal-600 p-0 relative align-top h-auto\"\n >\n {col.type === 'textarea' ? (\n <textarea\n rows={1}\n value={row[col.id] || \"\"}\n onChange={(e) => {\n handleChange(rowIdx, col.id, e.target.value)\n e.target.style.height = 'auto'\n e.target.style.height = e.target.scrollHeight + 'px'\n }}\n onFocus={(e) => handleFocus(e, rowIdx, colIdx)}\n onKeyDown={(e) => handleCellNavigation(e, rowIdx, colIdx)}\n onPaste={(e) => handlePaste(e, rowIdx, colIdx)}\n data-row={rowIdx}\n data-col={colIdx}\n placeholder={typeof placeholder === 'function' ? placeholder(rowIdx) : placeholder}\n className=\"excel-table-textarea w-full min-h-[38px] px-3 py-2 border-none focus:ring-2 focus:ring-primary-500 focus:ring-inset bg-transparent outline-none text-sm text-content-title placeholder-gray-400 resize-none overflow-hidden leading-normal block\"\n style={{ height: 'auto' }}\n />\n ) : col.type === 'checkbox' ? (\n <div className=\"flex items-center justify-center h-[38px]\">\n <input\n type=\"checkbox\"\n checked={!!row[col.id]}\n onChange={(e) => handleChange(rowIdx, col.id, e.target.checked)}\n onKeyDown={(e) => handleCellNavigation(e, rowIdx, colIdx)}\n data-row={rowIdx}\n data-col={colIdx}\n className=\"w-5 h-5 cursor-pointer accent-primary-500\"\n />\n </div>\n ) : (\n <input\n type={col.type === 'number' ? 'number' : 'text'}\n value={row[col.id] || \"\"}\n onChange={(e) => handleChange(rowIdx, col.id, e.target.value)}\n onFocus={(e) => handleFocus(e, rowIdx, colIdx)}\n onKeyDown={(e) => handleCellNavigation(e, rowIdx, colIdx)}\n onPaste={(e) => handlePaste(e, rowIdx, colIdx)}\n data-row={rowIdx}\n data-col={colIdx}\n className={classNames({\n \"w-full h-full min-h-[38px] px-3 py-1 border-none focus:ring-2 focus:ring-primary-500 focus:ring-inset bg-transparent outline-none text-sm text-content-title \": true,\n \"text-left\": col.align !== \"center\" && col.align !== \"right\",\n \"text-center\": col.align === \"center\",\n \"text-right\": col.align === \"right\"\n })}\n placeholder={col.type === 'number' ? '0' : ''}\n />\n )}\n </td>\n ))}\n\n <td className=\"border-b border-gray-200 dark:border-charcoal-600 p-0 text-center align-top h-auto\">\n <div\n onClick={() => onRowDelete && onRowDelete(rowIdx)}\n onFocus={() => setEditingCell(null)}\n onKeyDown={(e) => handleCellNavigation(e, rowIdx, columns.length)}\n data-row={rowIdx}\n data-col={columns.length}\n tabIndex={0}\n className=\"cursor-pointer text-content-disabled hover:text-red-500 w-full h-[38px] flex items-center justify-center transition-colors focus:ring-2 focus:ring-inset focus:ring-primary-500 outline-none\"\n >\n ×\n </div>\n </td>\n </tr>\n ))}\n\n {isAddRowVisible && (\n <tr>\n <td colSpan={columns.length + 1} className=\"p-0\">\n <div\n id=\"add-option-btn\"\n onClick={onRowAdd}\n onKeyDown={(e) => handleCellNavigation(e, data.length, 0)}\n tabIndex={0}\n className=\"w-full cursor-pointer text-left px-3 py-2 text-content-placeholder text-xs font-medium hover:text-primary-500 hover:bg-gray-50 dark:hover:bg-charcoal-800 transition-colors focus:ring-2 focus:ring-inset focus:ring-primary-500 outline-none\"\n >\n {addRowLabel}\n </div>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )\n}\n","import React, { useState, useEffect, useRef } from \"react\"\nimport { classNames } from \"../../utils/classNames\"\nimport { createPortal } from \"react-dom\"\nimport { H3 } from \"../HTML\"\n\nexport interface CoverflowImage {\n id?: string | number\n imageUrl: string\n imageTitle?: string\n imageDescription?: string\n}\n\nexport interface CoverflowProps {\n images: CoverflowImage[]\n onClose?: () => void\n}\n\nexport default function Coverflow({ images = [], onClose }: CoverflowProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n const thumbnailContainerRef = useRef<HTMLDivElement>(null)\n\n const [visualIndex, setVisualIndex] = useState(0)\n const isJumpingRef = useRef(false)\n const wheelLockRef = useRef(false)\n const wheelTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const [isReady, setIsReady] = useState(false)\n\n const [isMounted, setIsMounted] = useState(false)\n useEffect(() => {\n setIsMounted(true)\n }, [])\n\n const count = images.length\n const hasMultiple = count > 1\n\n const extendedImages = hasMultiple\n ? [images[count - 1], ...images, images[0]]\n : images\n\n useEffect(() => {\n if (hasMultiple && scrollContainerRef.current) {\n const container = scrollContainerRef.current\n const width = container.offsetWidth\n container.scrollLeft = width\n setVisualIndex(1)\n\n requestAnimationFrame(() => setIsReady(true))\n } else {\n setIsReady(true)\n }\n }, [hasMultiple])\n\n useEffect(() => {\n if (hasMultiple && thumbnailContainerRef.current) {\n const thumbContainer = thumbnailContainerRef.current\n const thumbNode = thumbContainer.children[visualIndex] as HTMLElement | null\n if (thumbNode) {\n thumbNode.scrollIntoView({\n behavior: isJumpingRef.current ? 'auto' : 'smooth',\n block: 'nearest',\n inline: 'center'\n })\n }\n }\n }, [visualIndex, hasMultiple])\n\n useEffect(() => {\n const container = scrollContainerRef.current\n if (!container || !hasMultiple) return\n\n const handleWheel = (e: WheelEvent) => {\n if (e.ctrlKey) return\n\n e.preventDefault()\n\n if (!wheelLockRef.current) {\n const threshold = 10\n if (Math.abs(e.deltaX) > threshold || Math.abs(e.deltaY) > threshold) {\n const width = container.offsetWidth\n const currentIndex = Math.round(container.scrollLeft / width)\n let targetIndex = currentIndex\n\n if (Math.abs(e.deltaX) > Math.abs(e.deltaY)) {\n targetIndex = e.deltaX > 0 ? currentIndex + 1 : currentIndex - 1\n } else {\n targetIndex = e.deltaY > 0 ? currentIndex + 1 : currentIndex - 1\n }\n\n container.scrollTo({\n left: targetIndex * width,\n behavior: 'smooth'\n })\n\n wheelLockRef.current = true\n }\n }\n\n if (wheelTimeoutRef.current) clearTimeout(wheelTimeoutRef.current)\n wheelTimeoutRef.current = setTimeout(() => {\n wheelLockRef.current = false\n }, 200)\n }\n\n container.addEventListener('wheel', handleWheel, { passive: false })\n return () => {\n container.removeEventListener('wheel', handleWheel)\n if (wheelTimeoutRef.current) clearTimeout(wheelTimeoutRef.current)\n }\n }, [hasMultiple])\n\n const handleScroll = () => {\n if (!scrollContainerRef.current) return\n const container = scrollContainerRef.current\n const { scrollLeft, offsetWidth } = container\n\n const scrollIndex = scrollLeft / offsetWidth\n const roundedIndex = Math.round(scrollIndex)\n\n if (roundedIndex !== visualIndex) {\n setVisualIndex(roundedIndex)\n }\n\n if (isJumpingRef.current) return\n\n if (scrollLeft <= 0) {\n performJump(count * offsetWidth)\n } else if (Math.abs(scrollLeft - (count + 1) * offsetWidth) < 2) {\n performJump(offsetWidth)\n }\n }\n\n const performJump = (targetLeft: number) => {\n if (!scrollContainerRef.current) return\n isJumpingRef.current = true\n const container = scrollContainerRef.current\n\n container.style.scrollBehavior = 'auto'\n container.scrollLeft = targetLeft\n container.style.scrollBehavior = ''\n\n const newIndex = Math.round(targetLeft / container.offsetWidth)\n setVisualIndex(newIndex)\n\n if (thumbnailContainerRef.current) {\n const thumbContainer = thumbnailContainerRef.current\n const thumbNode = thumbContainer.children[newIndex] as HTMLElement | null\n if (thumbNode) {\n thumbNode.scrollIntoView({\n behavior: 'auto',\n block: 'nearest',\n inline: 'center'\n })\n }\n }\n\n setTimeout(() => { isJumpingRef.current = false }, 50)\n }\n\n const scrollToIndex = (targetVisualIndex: number) => {\n if (!scrollContainerRef.current) return\n const container = scrollContainerRef.current\n const width = container.offsetWidth\n container.scrollTo({\n left: width * targetVisualIndex,\n behavior: 'smooth'\n })\n }\n\n const nextSlide = (e?: React.MouseEvent) => {\n e?.stopPropagation()\n if (!scrollContainerRef.current) return\n const container = scrollContainerRef.current\n const width = container.offsetWidth\n const nextIndex = Math.round(container.scrollLeft / width) + 1\n\n container.scrollTo({\n left: nextIndex * width,\n behavior: 'smooth'\n })\n }\n\n const prevSlide = (e?: React.MouseEvent) => {\n e?.stopPropagation()\n if (!scrollContainerRef.current) return\n const container = scrollContainerRef.current\n const width = container.offsetWidth\n const prevIndex = Math.round(container.scrollLeft / width) - 1\n\n container.scrollTo({\n left: prevIndex * width,\n behavior: 'smooth'\n })\n }\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose && onClose()\n if (e.key === \"ArrowLeft\") prevSlide()\n if (e.key === \"ArrowRight\") nextSlide()\n }\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [onClose])\n\n if (!isMounted || !images || images.length === 0) return null\n\n return createPortal(\n <div className=\"fixed inset-0 z-[1400] bg-black/95 flex flex-col justify-between animate-fadeIn transition-opacity duration-300\">\n {/* Close Button */}\n <div\n onClick={onClose}\n className=\"absolute top-4 right-4 z-[110] p-2 bg-black/20 hover:bg-white/20 rounded-full text-white transition-colors cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"w-6 h-6\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </div>\n\n {/* Main Slideshow */}\n <div className=\"flex-1 relative flex items-center justify-center overflow-hidden w-full h-full\">\n <div\n ref={scrollContainerRef}\n onScroll={handleScroll}\n className={classNames({\n \"w-full h-full flex overflow-x-auto snap-x snap-mandatory scrollbar-none\": true,\n \"opacity-0\": hasMultiple && !isReady,\n \"opacity-100\": !hasMultiple || isReady\n })}\n >\n {extendedImages.map((img, index) => {\n const key = `${img.id || index}-${index}`\n return (\n <div\n key={key}\n className=\"w-full h-full flex-shrink-0 flex items-center justify-center snap-center relative p-4\"\n >\n <div className=\"relative w-full h-full max-w-4xl max-h-[75vh] flex items-center justify-center\">\n <img\n src={img.imageUrl}\n alt={img.imageTitle || \"Gallery Image\"}\n className=\"max-w-full max-h-full object-contain drop-shadow-2xl\"\n />\n\n {/* Captions Overlay */}\n {(img.imageTitle || img.imageDescription) && (\n <div className=\"absolute bottom-0 left-0 right-0 p-3 bg-gradient-to-t from-black/90 via-black/50 to-transparent text-white text-center pointer-events-none\">\n {img.imageTitle && (\n <H3 className=\"!text-base mb-1\">{img.imageTitle}</H3>\n )}\n {img.imageDescription && (\n <p className=\"text-xs text-content-disabled max-w-2xl mx-auto\">{img.imageDescription}</p>\n )}\n </div>\n )}\n </div>\n </div>\n )\n })}\n </div>\n </div>\n\n {/* Bottom Navigation */}\n {hasMultiple && (\n <div className=\"w-full p-4 pb-8 bg-gradient-to-t from-black to-transparent flex items-center justify-center gap-4 z-50\">\n {/* Left Arrow */}\n <div\n onClick={() => prevSlide()}\n className=\"p-2 rounded-full hover:bg-white/10 text-white transition-colors flex-shrink-0 cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"w-8 h-8\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\" />\n </svg>\n </div>\n\n {/* Thumbnail Strip */}\n <div\n ref={thumbnailContainerRef}\n className=\"flex gap-2 overflow-x-auto no-scrollbar max-w-xl px-2 snap-x\"\n >\n {extendedImages.map((img, idx) => (\n <div\n key={`${img.id || idx}-${idx}`}\n onClick={() => scrollToIndex(idx)}\n className={classNames({\n \"relative w-14 h-14 flex-shrink-0 rounded-md overflow-hidden border transition-all duration-300 snap-center cursor-pointer\": true,\n \"border-primary-500 opacity-100\": visualIndex === idx,\n \"border-transparent opacity-40 hover:opacity-80\": visualIndex !== idx\n })}\n >\n <img\n src={img.imageUrl}\n alt=\"Thumbnail\"\n className=\"w-full h-full object-cover transition-transform duration-300\"\n />\n </div>\n ))}\n </div>\n\n {/* Right Arrow */}\n <div\n onClick={() => nextSlide()}\n className=\"p-2 rounded-full hover:bg-white/10 text-white transition-colors flex-shrink-0 cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"w-8 h-8\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" />\n </svg>\n </div>\n </div>\n )}\n </div>,\n document.body\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\nimport { numberFormatter } from \"../../../utils/format\"\n\nexport interface CurrencyDisplayProps {\n loading?: boolean\n error?: boolean\n currency?: string\n amount: number\n decimal?: number\n opts?: {\n contentFull?: boolean\n }\n}\n\nexport default function CurrencyDisplay({ loading, error, currency, amount, decimal = 2, opts }: CurrencyDisplayProps) {\n const { contentFull } = opts || {}\n\n return (\n <div\n className={classNames({\n \"flex space-x-2 justify-between items-center group\": true,\n \"w-full\": !!contentFull,\n \"-ml-1.5 text-red-500\": amount < 0,\n \"text-red-500\": !!error,\n \"animate-pulse bg-gray-100 text-transparent rounded-md\": !!loading\n })}\n >\n <span\n className={classNames({\n \"group-hover:text-inherit\": true,\n \"!text-transparent\": !!loading,\n \"text-red-200\": amount < 0 || !!error,\n \"text-gray-200\": (!amount || amount >= 0) && !error\n })}\n >\n {amount < 0 && \"-\"}{currency || \"$\"}\n </span>\n <span>{amount ? numberFormatter(Math.abs(amount), decimal) : \"-\"}</span>\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { classNames, classNameObject } from \"../../../utils/classNames\"\nimport { numberFormatter, bestTextColorForBg } from \"../../../utils/format\"\nimport useResizeListener from \"../../../hooks/useResizeListener\"\nimport CurrencyDisplay from \"./CurrencyDisplay\"\n\nexport interface DataTableRowProps {\n index: number\n selected: boolean\n label: React.ReactNode\n description?: string | null\n additionalDescription?: string | null\n data: any[]\n opts?: {\n labelCenter?: boolean\n vertical?: string\n darkMode?: boolean\n }\n}\n\nfunction DataTableRow({ index, selected, label, description, additionalDescription, data, opts }: DataTableRowProps) {\n const { labelCenter, vertical, darkMode } = opts || {}\n\n return (\n <tr\n className={classNames({\n \"align-top group dark:even:bg-charcoal-800 dark:odd:bg-charcoal-700\": true,\n \"!bg-primary-500/30 dark:!bg-primary-500/10 !text-black dark:!text-primary-400\": selected,\n \"even:bg-cream-50 odd:bg-white\": !darkMode,\n \"even:bg-charcoal-800 odd:bg-charcoal-700\": !!darkMode\n })}\n >\n <td\n className={classNames({\n \"py-1.5 px-2 sm:px-3 cursor-default whitespace-nowrap first:rounded-l-lg last:rounded-r-lg cursor-pointer\": true,\n \"text-center\": !!labelCenter,\n \"align-middle\": vertical === \"middle\"\n })}\n >\n {label}\n </td>\n {\n description &&\n <td className=\"px-2 py-1.5 sm:px-3 min-w-64 cursor-default first:rounded-l-lg last:rounded-r-lg cursor-pointer\">\n {description}\n {\n additionalDescription &&\n <p className=\"uppercase opacity-50\">{additionalDescription}</p>\n }\n </td>\n }\n {\n data.map((dataItem, dataIndex) => (\n <td\n key={`${dataIndex}-${index}`}\n className={classNames({\n \"text-center py-1.5 px-2 sm:px-3 cursor-default first:rounded-l-lg last:rounded-r-lg cursor-pointer\": true,\n \"!bg-primary-100 !text-primary-500 font-semibold\": !!dataItem.threshold && dataItem.data[index] > dataItem.threshold,\n \"!text-left\": dataItem.align === \"left\",\n \"align-middle\": vertical === \"middle\"\n })}\n >\n {\n typeof dataItem.data[index] === \"string\" || React.isValidElement(dataItem.data[index]) ?\n dataItem.data[index] :\n numberFormatter(dataItem.data[index], dataItem.decimal != null ? dataItem.decimal : 1)\n }\n </td>\n ))\n }\n </tr>\n )\n}\n\nexport interface DataTableProps {\n headers: React.ReactNode[]\n labels?: React.ReactNode[]\n selectedId?: string | null\n descriptions?: string[] | null\n additionalDescriptions?: string[] | null\n colors?: string[] | null\n data: any[]\n total?: any[] | null\n opts?: {\n ignoreTotal?: boolean\n showCurrency?: boolean\n labelTitle?: string\n labelCentered?: boolean\n vertical?: string\n darkMode?: boolean\n }\n}\n\nexport default function DataTable({\n headers,\n labels,\n selectedId,\n descriptions,\n additionalDescriptions,\n colors,\n data,\n total,\n opts\n}: DataTableProps) {\n const { mobileView } = useResizeListener()\n const { ignoreTotal, showCurrency, labelTitle, labelCentered, vertical, darkMode } = opts || {}\n\n const [displayHeaders, setDisplayHeaders] = useState<React.ReactNode[]>([])\n\n useEffect(() => {\n setDisplayHeaders(headers)\n }, [headers])\n\n return (\n <table\n className={classNames({\n \"w-full text-sm dark:text-content-primary rounded-xl border-separate border-spacing-0\": true,\n \"text-charcoal-100\": !!darkMode,\n \"text-content-secondary\": !darkMode\n })}\n >\n <thead>\n {\n !displayHeaders &&\n <tr className=\"font-semibold uppercase\">\n <td\n className={classNames({\n \"px-2 py-2.5 px-2 sm:px-3 whitespace-nowrap w-4\": true,\n \"text-center\": !!labelCentered\n })}\n >\n {mobileView ? \"#\" : (labelTitle || \"Code\")}\n </td>\n {(descriptions || []).length > 0 && <td className=\"py-2.5 px-2 sm:px-3 bg-gray-50\">Description</td>}\n {\n data.map((dataItem, dataIndex) => (\n <td\n key={dataItem.key || dataItem.label}\n className={classNames({\n \"w-4 py-2.5 px-2 sm:px-3 whitespace-nowrap text-center\": true,\n \"bg-gray-50\": !colors,\n \"!text-left\": dataItem.align === \"left\"\n })}\n style={colors && colors[dataIndex] ? {\n backgroundColor: `${colors[dataIndex]}`,\n color: bestTextColorForBg(colors[dataIndex])\n } : undefined}\n >\n {dataItem.label}\n </td>\n ))\n }\n </tr>\n }\n {\n displayHeaders &&\n <tr className=\"text-xs font-semibold uppercase\">\n {displayHeaders}\n </tr>\n }\n </thead>\n <tbody>\n {\n (labels || []).map((label, index) => {\n const keyData = data[0]?.data || []\n return (\n <DataTableRow\n key={(keyData[index] || {}).key || index}\n index={index}\n label={label}\n selected={selectedId === keyData[index]?.props?.recordId}\n description={descriptions && descriptions[index]}\n additionalDescription={additionalDescriptions && additionalDescriptions[index]}\n data={data}\n opts={{\n labelCenter: labelCentered,\n vertical: vertical,\n darkMode: darkMode\n }}\n />\n )\n })\n }\n </tbody>\n {\n !ignoreTotal &&\n <tfoot>\n <tr className=\"group\">\n <td\n colSpan={(descriptions || []).length === 0 ? 1 : 2}\n className={classNames({\n \"border-t dark:border-charcoal-500 py-2.5 px-2 sm:px-3 font-semibold uppercase\": true,\n \"border-charcoal-500\": !!darkMode,\n \"border-gray-100 bg-gray-50\": !darkMode\n })}\n >\n Total\n </td>\n {\n !total &&\n (\n data.map((dataItem, dataIndex) => {\n const sumVal = dataItem.data ? dataItem.data.reduce((a: number, b: number) => a + (Number(b) || 0), 0) : 0\n return (\n <td\n key={`${dataIndex}-total`}\n className={classNames({\n \"border-t dark:border-charcoal-500 py-2.5 px-2 sm:px-3 text-center font-semibold\": true,\n \"bg-gray-50\": !colors && !darkMode,\n \"border-gray-100\": !darkMode,\n \"border-charcoal-500\": !!darkMode\n })}\n style={colors && colors[dataIndex] ? {\n backgroundColor: `${colors[dataIndex]}`,\n color: bestTextColorForBg(colors[dataIndex])\n } : undefined}\n >\n {\n typeof dataItem.total === \"string\" ?\n (dataItem.total != null ? dataItem.total : sumVal)\n :\n showCurrency ?\n <CurrencyDisplay\n amount={dataItem.total}\n />\n :\n numberFormatter(dataItem.total != null ? dataItem.total : sumVal, 1)\n }\n </td>\n )\n })\n )\n }\n {\n !!total &&\n (\n total.map((dataItem, dataIndex) => (\n <td\n key={`${dataIndex}-total`}\n className={classNames({\n \"border-t dark:border-charcoal-500 py-2.5 px-2 sm:px-3 text-center font-semibold\": true,\n \"bg-gray-50\": !colors && !darkMode,\n \"border-gray-100\": !darkMode,\n \"border-charcoal-500\": !!darkMode\n })}\n style={colors && colors[dataIndex] ? {\n backgroundColor: `${colors[dataIndex]}`,\n color: bestTextColorForBg(colors[dataIndex])\n } : undefined}\n >\n {\n typeof total[dataIndex] === \"string\" || React.isValidElement(total[dataIndex]) ?\n total[dataIndex]\n :\n showCurrency ?\n <CurrencyDisplay amount={total[dataIndex]} />\n :\n numberFormatter(total[dataIndex], 1)\n }\n </td>\n ))\n )\n }\n </tr>\n </tfoot>\n }\n </table>\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\nimport { numberFormatter } from \"../../../utils/format\"\n\nexport interface NumberDisplayProps {\n loading?: boolean\n amount: number\n error?: boolean\n decimal?: number\n}\n\nexport default function NumberDisplay({ loading, amount, error, decimal = 0 }: NumberDisplayProps) {\n return (\n <div\n className={classNames({\n \"flex space-x-2 items-center justify-between group w-full\": true,\n \"text-red-500\": amount < 0 || !!error,\n \"animate-pulse bg-gray-100 text-transparent rounded-md\": !!loading\n })}\n >\n <span\n className={classNames({\n \"group-hover:text-inherit\": true,\n \"!text-transparent\": !!loading,\n \"text-red-200\": amount < 0 || !!error,\n \"text-gray-200\": amount >= 0 && !error,\n })}\n >\n {amount < 0 && \"-\"}\n </span>\n <span className=\"text-right\">\n {amount ? numberFormatter(Math.abs(amount), decimal) : \"\"}\n </span>\n </div>\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\nimport { numberFormatter } from \"../../../utils/format\"\n\nexport interface ChangeDisplayProps {\n postfix?: string\n data?: [number, number] | any[]\n decimal?: number\n}\n\nexport default function ChangeDisplay({ postfix = \"%\", data = [], decimal = 0 }: ChangeDisplayProps) {\n const [current, prev] = data\n\n function calculateGrowthPercentage(curr: number, previous: number) {\n if (!previous && !curr) {\n return 0\n }\n if (!previous) {\n return Infinity\n }\n return (curr - previous) * 100 / previous\n }\n\n const CAPPED = 10000\n\n const growth = calculateGrowthPercentage(current, prev)\n const displayGrowth = Math.max(Math.min(growth, CAPPED), -CAPPED)\n\n if (prev > 0 && current === 0) {\n return (\n <div className=\"flex justify-between items-center space-x-2 text-red-600 w-full\">\n <div className=\"flex-1 text-right\">Lost</div>\n <div className=\"opacity-30 group-hover:opacity-100\">▼</div>\n </div>\n )\n }\n\n if (growth === Infinity) {\n return (\n <div className=\"flex justify-between items-center space-x-2 text-green-600 w-full\">\n <div className=\"flex-1 text-right\">New</div>\n <div className=\"opacity-30 group-hover:opacity-100\">▲</div>\n </div>\n )\n }\n\n if (growth === 0) {\n return (\n <div className=\"flex justify-between items-center space-x-2 w-full\">\n <div className=\"flex-1 text-right\">-</div>\n <div> </div>\n </div>\n )\n }\n\n return (\n <div\n className={classNames({\n \"flex justify-between items-center space-x-2 whitespace-nowrap w-full\": true,\n \"text-red-600\": growth < 0,\n \"text-green-600\": growth > 0\n })}\n >\n <div className=\"flex-1 text-right\">\n {Math.abs(growth) <= CAPPED && (growth >= 0 ? \"+\" : \"-\")}{growth > CAPPED && \" >\"}{growth < -CAPPED && \" <\"}{numberFormatter(Math.abs(displayGrowth), decimal)}{postfix}\n </div>\n <div className=\"opacity-30 group-hover:opacity-100\">{growth > 0 ? <>▲</> : <>▼</>}</div>\n </div>\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\n\nexport interface DateTimeDisplayProps {\n loading?: boolean\n value: string | number | Date\n}\n\nexport default function DateTimeDisplay({ loading, value }: DateTimeDisplayProps) {\n let formatted = \"-\"\n try {\n if (value) {\n formatted = new Intl.DateTimeFormat('en-GB', {\n weekday: 'short',\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n }).format(new Date(value))\n }\n } catch (e) {\n formatted = String(value)\n }\n\n return (\n <div\n className={classNames({\n \"w-full whitespace-nowrap\": true,\n \"animate-pulse bg-gray-100 text-transparent rounded-md\": !!loading\n })}\n >\n {formatted}\n </div>\n )\n}\n","import React from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\n\nexport interface ThumbnailDisplayProps {\n loading?: boolean\n value: any\n}\n\nexport default function ThumbnailDisplay({ loading, value }: ThumbnailDisplayProps) {\n const image = Array.isArray(value) ? (value.length > 0 ? value[0] : null) : value\n const { imageUrl, imageDescription } = image || {}\n\n return (\n <div\n className={classNames({\n \"w-full whitespace-nowrap\": true,\n \"animate-pulse bg-gray-100 text-transparent rounded-md\": !!loading\n })}\n >\n {image && imageUrl && (\n <img\n src={imageUrl}\n alt={imageDescription || \"\"}\n className=\"w-8 min-w-8 h-8 object-cover rounded-md\"\n />\n )}\n {\n !image && (\n <div className=\"w-8 min-w-8 h-8 bg-gray-100 dark:bg-charcoal-800 rounded-md\" />\n )\n }\n </div>\n )\n}\n","import React, { useState, useEffect } from \"react\"\nimport { classNames } from \"../../../utils/classNames\"\n\nimport DataTable from \"./DataTable\"\nimport Popover from \"../Popover\"\nimport CurrencyDisplay from \"./CurrencyDisplay\"\nimport NumberDisplay from \"./NumberDisplay\"\nimport ChangeDisplay from \"./ChangeDisplay\"\nimport DateTimeDisplay from \"./DateTimeDisplay\"\nimport ThumbnailDisplay from \"./ThumbnailDisplay\"\n\nexport interface DataGridHeaderConfig {\n id: string\n label: string\n align?: 'left' | 'center' | 'right'\n grow?: boolean\n noWrap?: boolean\n sort?: boolean\n type?: 'currency' | 'number' | 'change' | 'datetime' | 'thumbnail' | 'text'\n hidden?: boolean\n error?: string\n menu?: any[]\n params?: any\n vertical?: string\n lineClamp?: number\n}\n\nexport interface DataGridHeaderProps {\n sort?: boolean\n onClick?: () => void\n opts?: {\n align?: string\n grow?: boolean\n noWrap?: boolean\n isSorted?: 'asc' | 'desc' | null\n stickyHeader?: boolean\n darkMode?: boolean\n }\n children: React.ReactNode\n}\n\nfunction DataGridHeader({ sort, onClick, opts, children }: DataGridHeaderProps) {\n const { align, grow, noWrap, isSorted, stickyHeader, darkMode } = opts || {}\n\n if (sort) {\n return (\n <th\n className={classNames({\n \"py-2.5 px-2 sm:px-3 whitespace-nowrap text-center cursor-pointer font-semibold\": true,\n \"w-4\": !grow,\n \"!text-left\": align === \"left\",\n \"!text-right\": align === \"right\",\n \"whitespace-nowrap\": !!noWrap,\n \"sticky top-0 z-10 dark:bg-charcoal-800\": !!stickyHeader,\n \"bg-cream-50\": !darkMode,\n \"bg-charcoal-800\": !!darkMode\n })}\n onClick={onClick}\n >\n <span className=\"relative\">\n {children}\n {\n isSorted &&\n <div className=\"absolute top-0 bottom-0 -right-3.5 flex items-center\">\n {\n isSorted === \"asc\" &&\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-3 h-3\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 6.75 12 3m0 0 3.75 3.75M12 3v18\" />\n </svg>\n }\n {\n isSorted === \"desc\" &&\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"w-3 h-3\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15.75 17.25 12 21m0 0-3.75-3.75M12 21V3\" />\n </svg>\n }\n </div>\n }\n </span>\n </th>\n )\n }\n\n return (\n <th\n className={classNames({\n \"py-2.5 px-2 sm:px-3 text-center font-semibold\": true,\n \"w-4\": !grow,\n \"!text-left\": align === \"left\",\n \"whitespace-nowrap\": !!noWrap,\n \"sticky top-0 z-10 dark:bg-charcoal-800\": !!stickyHeader,\n \"bg-cream-50\": !darkMode,\n \"bg-charcoal-800\": !!darkMode\n })}\n >\n {children}\n </th>\n )\n}\n\ninterface DataGridElementProps {\n processing?: boolean\n type?: string\n value: any\n error?: boolean\n menu?: any[]\n params?: any\n opts?: any\n onSelect?: (row: any) => void\n}\n\nfunction DataGridElement({ processing: defaultProcessing, type, value, error, menu, params, opts, onSelect }: DataGridElementProps) {\n const [processing, setProcessing] = useState(defaultProcessing)\n\n useEffect(() => {\n setProcessing(defaultProcessing)\n }, [defaultProcessing])\n\n const { align } = opts || {}\n\n if (!processing && menu) {\n return (\n <Popover\n actions={[\n {\n id: \"edit-section\",\n section: \"Action\",\n items: menu.map(menuItem => {\n return {\n id: menuItem.id,\n label: menuItem.label,\n action: async () => {\n setProcessing(true)\n await menuItem.onClick(params)\n setProcessing(false)\n },\n }\n })\n },\n ]}\n opts={{ compact: true, asBlock: true, align: align }}\n >\n <DataGridContent\n loading={processing}\n error={error}\n type={type}\n value={value}\n opts={{\n ...opts,\n contentFull: true\n }}\n />\n </Popover>\n )\n }\n\n return (\n <DataGridContent\n loading={processing}\n error={error}\n type={type}\n value={value}\n opts={opts}\n onClick={() => {\n if (typeof onSelect === \"function\") {\n onSelect(params?.row)\n }\n }}\n />\n )\n}\n\ninterface DataGridContentProps {\n loading?: boolean\n error?: boolean\n type?: string\n value: any\n opts?: any\n onClick?: () => void\n}\n\nfunction DataGridContent({ loading, error, type, value, opts, onClick }: DataGridContentProps) {\n if (type === \"currency\") {\n return (\n <CurrencyDisplay loading={loading} error={error} amount={value} opts={opts} />\n )\n }\n\n if (type === \"number\") {\n return (\n <NumberDisplay loading={loading} error={error} amount={value} />\n )\n }\n\n if (type === \"change\") {\n const [current, previous] = value || []\n return (\n <ChangeDisplay data={[current, previous]} decimal={0} />\n )\n }\n\n if (type === \"datetime\") {\n return (\n <DateTimeDisplay value={value} />\n )\n }\n\n if (type === \"thumbnail\") {\n return (\n <ThumbnailDisplay value={value} />\n )\n }\n\n const { noWrap, lineClamp } = opts || {}\n\n return (\n <div\n className={classNames({\n \"whitespace-nowrap\": !!noWrap,\n \"line-clamp-1\": lineClamp === 1,\n \"line-clamp-2\": lineClamp === 2,\n \"line-clamp-3\": lineClamp === 3,\n \"animate-pulse bg-gray-100 text-transparent pointer-events-none\": !!loading,\n })}\n onClick={onClick}\n >\n {value}\n </div>\n )\n}\n\nexport interface DataGridProps {\n headers: DataGridHeaderConfig[]\n data: any[]\n selectedId?: string | null\n footers?: any[] | null\n opts?: {\n stickyHeader?: boolean\n darkMode?: boolean\n showCurrency?: boolean\n labelTitle?: string\n labelCentered?: boolean\n vertical?: string\n }\n onSelect?: (row: any) => void\n}\n\nexport default function DataGrid({ headers, data, selectedId, footers, opts, onSelect }: DataGridProps) {\n const [displayedData, setDisplayedData] = useState<any[]>([])\n const [orderByState, setOrderByState] = useState<{ category: string; direction: 'asc' | 'desc' }>({\n category: headers[0]?.id || \"\",\n direction: \"asc\"\n })\n\n const displayedHeaders = (headers || []).filter(header => !header.hidden)\n\n function handleSort(category: string) {\n if (orderByState.category !== category) {\n setOrderByState({ category, direction: \"asc\" })\n } else {\n setOrderByState({ category, direction: orderByState.direction === \"asc\" ? \"desc\" : \"asc\" })\n }\n }\n\n useEffect(() => {\n if ((data || []).length > 0) {\n const availableKeys = (headers || []).map(header => header.id)\n const { category, direction } = orderByState\n\n const sortCategory = availableKeys.includes(category) ? category : headers[0]?.id\n const sortDirection = [\"asc\", \"desc\"].includes(direction) ? direction : \"asc\"\n const targetHeader = headers.find(header => header.id === sortCategory)\n const headerType = targetHeader?.type\n\n let sortedData = [...data]\n\n if (headerType === \"change\") {\n sortedData = sortedData.sort((a, b) => {\n const x = a[sortCategory] || [0, 0]\n const y = b[sortCategory] || [0, 0]\n\n const left = x[1] ? (x[0] - x[1]) / x[1] : Infinity\n const right = y[1] ? (y[0] - y[1]) / y[1] : Infinity\n\n const multiplier = sortDirection === \"asc\" ? 1 : -1\n\n if (left < right) { return multiplier * -1 }\n if (left > right) { return multiplier * 1 }\n\n if ((x[0] - x[1]) < (y[0] - y[1])) {\n return multiplier * -1\n }\n\n if ((x[0] - x[1]) > (y[0] - y[1])) {\n return multiplier * 1\n }\n\n return 0\n })\n } else {\n // Native sort replacement for lodash _.orderBy\n sortedData.sort((a, b) => {\n let aVal = a[sortCategory]\n let bVal = b[sortCategory]\n\n if (aVal === bVal) return 0\n if (aVal === null || aVal === undefined) return 1\n if (bVal === null || bVal === undefined) return -1\n\n if (typeof aVal === 'string') {\n aVal = aVal.toLowerCase()\n }\n if (typeof bVal === 'string') {\n bVal = bVal.toLowerCase()\n }\n\n const comparison = aVal < bVal ? -1 : 1\n return sortDirection === 'asc' ? comparison : -comparison\n })\n }\n\n const updatedData = (displayedHeaders || []).map(header => {\n return {\n key: header.id,\n label: header.label,\n align: header.align,\n data: (sortedData || []).map((row, rowIndex) => {\n const isError = header.error && Function(\"value\", `return ${header.error}`)(row[header.id])\n\n const [timestamp] = (header.id || \"\").split(\" - \")\n const isProcessing = row[`${timestamp} - processing`]\n\n return (\n <DataGridElement\n key={`${header.id}-${row.id}`}\n processing={isProcessing}\n type={header.type}\n value={row[header.id]}\n menu={header.menu}\n opts={{\n align: header.align,\n noWrap: header.noWrap,\n vAlign: header.vertical,\n lineClamp: header.lineClamp\n }}\n params={{\n id: row.id,\n data: sortedData,\n row: row,\n headerId: header.id,\n params: header.params\n }}\n error={isError}\n onSelect={onSelect}\n />\n )\n })\n }\n })\n\n setDisplayedData(updatedData)\n } else {\n setDisplayedData([])\n }\n }, [data, orderByState, headers])\n\n const displayedLabels = (displayedData || [])[0]?.data\n const renderedData = (displayedData || []).filter((_, index) => index > 0)\n\n const renderedHeaders = (displayedHeaders || []).map((header) => (\n <DataGridHeader\n key={header.id}\n sort={header.sort}\n opts={{\n align: header.align,\n noWrap: header.noWrap,\n grow: header.grow,\n isSorted: header.id === orderByState.category ? orderByState.direction : null,\n stickyHeader: opts?.stickyHeader,\n darkMode: opts?.darkMode\n }}\n onClick={() => handleSort(header.id)}\n >\n {header.label}\n </DataGridHeader>\n ))\n\n return (\n <DataTable\n headers={renderedHeaders}\n labels={displayedLabels}\n data={renderedData}\n selectedId={selectedId}\n total={footers}\n opts={{\n ...opts,\n ignoreTotal: !footers\n }}\n />\n )\n}\n"]}
|