{"version":3,"file":"Button-CwbYYtaX.js","sources":["../../../node_modules/@react-hook/latest/dist/module/index.js","../../../node_modules/@react-hook/debounce/dist/module/index.js","../../../node_modules/@react-hook/event/dist/module/index.js","../../../node_modules/@react-hook/window-size/dist/module/index.js","../../../app/javascript/hooks/useIsScreenSizeBiggerThanTailwindSize.ts","../../../node_modules/@heroicons/react/outline/RefreshIcon.js","../../../app/javascript/hardcover-ui/theme/components/loading-spinner.ts","../../../app/javascript/hardcover-ui/components/LoadingSpinner.tsx","../../../app/javascript/hardcover-ui/theme/components/text.ts","../../../app/javascript/hardcover-ui/theme/components/button.ts","../../../app/javascript/hardcover-ui/components/Button.tsx"],"sourcesContent":["import * as React from 'react';\n\nconst useLatest = current => {\n const storedValue = React.useRef(current);\n React.useEffect(() => {\n storedValue.current = current;\n });\n return storedValue;\n};\n\nexport default useLatest;","import * as React from 'react';\nimport useLatest from '@react-hook/latest';\nexport const useDebounceCallback = (callback, wait = 100, leading = false) => {\n const storedCallback = useLatest(callback);\n const timeout = React.useRef();\n const deps = [wait, leading, storedCallback]; // Cleans up pending timeouts when the deps change\n\n function _ref() {\n timeout.current && clearTimeout(timeout.current);\n timeout.current = void 0;\n }\n\n React.useEffect(() => _ref, deps);\n\n function _ref2() {\n timeout.current = void 0;\n }\n\n return React.useCallback(function () {\n // eslint-disable-next-line prefer-rest-params\n const args = arguments;\n const {\n current\n } = timeout; // Calls on leading edge\n\n if (current === void 0 && leading) {\n timeout.current = setTimeout(_ref2, wait); // eslint-disable-next-line prefer-spread\n\n return storedCallback.current.apply(null, args);\n } // Clear the timeout every call and start waiting again\n\n\n current && clearTimeout(current); // Waits for `wait` before invoking the callback\n\n timeout.current = setTimeout(() => {\n timeout.current = void 0;\n storedCallback.current.apply(null, args);\n }, wait);\n }, deps);\n};\nexport const useDebounce = (initialState, wait, leading) => {\n const state = React.useState(initialState);\n return [state[0], useDebounceCallback(state[1], wait, leading)];\n};","import * as React from 'react';\n\nfunction useEvent(target, type, listener, cleanup) {\n const storedListener = React.useRef(listener);\n const storedCleanup = React.useRef(cleanup);\n React.useEffect(() => {\n storedListener.current = listener;\n storedCleanup.current = cleanup;\n });\n React.useEffect(() => {\n const targetEl = target && 'current' in target ? target.current : target;\n if (!targetEl) return;\n let didUnsubscribe = 0;\n\n function listener(...args) {\n if (didUnsubscribe) return;\n storedListener.current.apply(this, args);\n }\n\n targetEl.addEventListener(type, listener);\n const cleanup = storedCleanup.current;\n return () => {\n didUnsubscribe = 1;\n targetEl.removeEventListener(type, listener);\n cleanup && cleanup();\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [target, type]);\n}\n\nexport default useEvent;","import { useDebounce } from '@react-hook/debounce';\nimport useEvent from '@react-hook/event';\nconst emptyObj = {};\nconst win = typeof window === 'undefined' ? null : window;\nconst wv = win && typeof win.visualViewport !== 'undefined' ? win.visualViewport : null;\n\nconst getSize = () => [document.documentElement.clientWidth, document.documentElement.clientHeight];\n\nexport const useWindowSize = function (options) {\n if (options === void 0) {\n options = emptyObj;\n }\n\n const {\n wait,\n leading,\n initialWidth = 0,\n initialHeight = 0\n } = options;\n const [size, setDebouncedSize] = useDebounce(\n /* istanbul ignore next */\n typeof document === 'undefined' ? [initialWidth, initialHeight] : getSize, wait, leading);\n\n const setSize = () => setDebouncedSize(getSize);\n\n useEvent(win, 'resize', setSize); // @ts-expect-error\n\n useEvent(wv, 'resize', setSize);\n useEvent(win, 'orientationchange', setSize);\n return size;\n};\nexport const useWindowHeight = options => useWindowSize(options)[1];\nexport const useWindowWidth = options => useWindowSize(options)[0];","import { useState, useEffect } from \"react\";\nimport { tailwindThemeScreens } from \"constants/tailwind\";\nimport { useWindowWidth } from \"@react-hook/window-size\";\n\nexport const useIsScreenSizeBiggerThanTailwindSize = (\n size: string\n): boolean => {\n const [isBigger, setIsBigger] = useState(null);\n const width = useWindowWidth({ initialWidth: null });\n\n useEffect(() => {\n if (!width) {\n // Do nothing\n } else {\n setIsBigger(width >= tailwindThemeScreens[size]);\n }\n }, [width]);\n\n return isBigger;\n};\n","const React = require(\"react\");\n\nfunction RefreshIcon(props, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 2,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n ref: svgRef\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n }));\n}\n\nconst ForwardRef = React.forwardRef(RefreshIcon);\nmodule.exports = ForwardRef;","import { ComponentTheme } from \"hardcover-ui/types/base\";\n\nexport type LoadingSpinnerThemeProps = {\n variant: \"primary\" | \"layout\" | \"button\" | \"none\";\n size: \"sm\" | \"md\" | \"lg\";\n};\n\nconst sharedThemeStyles =\n \"animate-reversespin dark:text-gray-400 text-gray-700\";\nexport const loadingSpinnerTheme: ComponentTheme = {\n variant: {\n primary: sharedThemeStyles,\n layout: `${sharedThemeStyles} my-8 mx-auto w-8 h-8`,\n button: `${sharedThemeStyles} text-gray-100`,\n none: \"animate-reversespin\",\n },\n size: {\n sm: \"w-4 h-4\",\n md: \"w-6 h-6\",\n lg: \"w-8 h-8\",\n },\n};\n","/* eslint-disable react/jsx-props-no-spreading */\nimport classNames from \"lib/classNames\";\nimport RefreshIcon from \"@heroicons/react/outline/RefreshIcon\";\nimport {\n loadingSpinnerTheme,\n LoadingSpinnerThemeProps,\n} from \"hardcover-ui/theme/components/loading-spinner\";\n\ntype Props = {\n size?: LoadingSpinnerThemeProps[\"size\"];\n variant?: LoadingSpinnerThemeProps[\"variant\"];\n className?: string;\n};\n\nexport default function LoadingSpinner({\n size = \"md\",\n variant = \"primary\",\n className,\n ...rest\n}: Props) {\n const finalClassName = classNames(\n loadingSpinnerTheme.variant[variant],\n loadingSpinnerTheme.size?.[size],\n className\n );\n\n const props = {\n className: finalClassName,\n ...rest,\n };\n\n return ;\n}\n","import { ComponentTheme } from \"hardcover-ui/types/base\";\n\nexport type TextThemeProps = {\n variant:\n | \"title\"\n | \"normal\"\n | \"secondary\"\n | \"inherit\"\n | \"warning\"\n | \"badge\"\n | \"accent\";\n size: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n as: \"p\" | \"span\" | \"div\" | \"h2\";\n};\n\nexport const textTheme: ComponentTheme = {\n variant: {\n title: \"font-serif text-gray-900 dark:text-yellow-50 font-semibold\",\n normal: `text-gray-800 dark:text-gray-200`,\n secondary: `text-gray-600 dark:text-gray-400`,\n warning: \"text-red-600 dark:text-red-500\",\n accent: \"text-indigo-600 dark:text-yellow-400\",\n inherit: \"\",\n badge:\n \"uppercase text-xs bg-indigo-600 text-white py-0.5 px-1 ml-2 rounded\",\n },\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-md\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n },\n};\n\nexport type TextLinkThemeProps = {\n variant:\n | \"none\"\n | \"normal\"\n | \"secondary\"\n | \"accent\"\n | \"onAccent\"\n | \"breadcrumb\"\n | \"ghost\"\n | \"invert\"\n | \"warning\"\n | \"title\";\n size: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n};\n\nconst textLinkBaseStyles = \"transition-all underline-offset-2\";\n\nexport const textLinkTheme: ComponentTheme = {\n variant: {\n none: \"\",\n title: \"font-serif text-gray-900 dark:text-yellow-50 underline-offset-4\",\n invert: \"no-underline hover:underline\",\n normal: `${textLinkBaseStyles} text-gray-800 dark:text-gray-100 `,\n secondary: `${textLinkBaseStyles} text-gray-500 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300`,\n ghost: `text-gray-500 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-300`,\n accent: `${textLinkBaseStyles} text-accent decoration-accent/50`,\n onAccent: `${textLinkBaseStyles} text-gray-800 dark:text-gray-800 `,\n breadcrumb: `text-gray-700 dark:text-gray-400 text-lg space-x-2 font-semibold inline-flex items-center`,\n warning: \"text-red-600 dark:text-red-500\",\n },\n size: {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-md\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n },\n};\n","import { ComponentTheme } from \"hardcover-ui/types/base\";\nimport { textLinkTheme } from \"hardcover-ui/theme/components/text\";\n\nexport type ButtonThemeProps = {\n variant:\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"accent\"\n | \"warning\"\n | \"ghost\"\n | \"unstyled\"\n | \"link\"\n | \"dangerLink\"\n | \"outline\"\n | \"pill\"\n | \"none\"\n | \"base\";\n size: \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\";\n};\n\nconst buttonBaseStyles =\n \"inline-flex items-center focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 border rounded-lg active:translate-y-1 transition-all w-fit\";\n\nexport const buttonTheme: ComponentTheme = {\n variant: {\n none: `hover:bg-gray-300 focus:ring-gray-200 dark:hover:bg-gray-900 dark:focus:ring-gray-600`,\n base: buttonBaseStyles,\n primary: `${buttonBaseStyles} bg-indigo-600 border-indigo-600 hover:bg-indigo-700 text-white`,\n secondary: `${buttonBaseStyles} bg-white border-gray-300 hover:bg-gray-50 dark:bg-gray-300 dark:hover:bg-gray-100 text-gray-700`,\n tertiary: `${buttonBaseStyles} bg-white hover:bg-gray-50 dark:bg-gray-700 dark:hover:bg-gray-800 text-gray-900 dark:text-white dark:border-gray-700 dark:hover:border-gray-700`,\n accent: `${buttonBaseStyles} bg-accent text-accent-foreground border-accent hover:bg-yellow-500`,\n warning: `${buttonBaseStyles} bg-red-500 border-red-500 hover:bg-red-600 text-white`,\n ghost: `rounded-lg active:translate-y-1 transition-all w-fit inline-flex items-center dark:bg-gray-900/30 dark:hover:bg-gray-900 bg-gray-100/30 hover:bg-gray-100`,\n unstyled: \"inline-flex items-center\",\n outline: `${buttonBaseStyles} border border-gray-200 dark:border-gray-700 hover:border-indigo-600 dark:hover:border-yellow-400`,\n link: textLinkTheme.variant.normal,\n pill: \"inline-flex flex-row items-center bg-gray-100 hover:bg-indigo-100 dark:ring-indigo-600 text-gray-600 dark:bg-gray-900 dark:text-gray-400 rounded-full hover:ring-2\",\n dangerLink:\n \"text-red-600 dark:text-red-400 underline underline-offset-2 dark:hover:text-red-500 hover:text-red-400\",\n },\n size: {\n none: \"\",\n xs: \"py-0.2 px-1.5 text-sm font-normal\",\n sm: \"py-1 px-2 text-sm font-medium\",\n md: \"py-2 px-4 text-sm font-medium\",\n lg: \"py-3 px-4 text-lg font-medium shadow-button active:shadow-none\",\n },\n};\n","/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/button-has-type */\nimport LoadingSpinner from \"hardcover-ui/components/LoadingSpinner\";\nimport {\n ButtonThemeProps,\n buttonTheme,\n} from \"hardcover-ui/theme/components/button\";\nimport classNames from \"lib/classNames\";\nimport { Link } from \"@inertiajs/react\";\nimport { ButtonHTMLAttributes, PropsWithChildren, forwardRef } from \"react\";\n\ntype Props = {\n as?: {\n element: \"link\";\n props: any;\n };\n variant?: ButtonThemeProps[\"variant\"];\n size?: ButtonThemeProps[\"size\"];\n className?: string;\n isLoading?: boolean;\n gap?: number;\n} & Partial>;\n\nconst Button = forwardRef>(\n (\n {\n as,\n children,\n size,\n variant = \"unstyled\",\n className,\n isLoading,\n gap = 2,\n onMouseUp,\n onMouseDown,\n onClick,\n ...rest\n },\n ref\n ) => {\n const finalClassName = classNames(\n buttonTheme.variant[variant],\n buttonTheme.size?.[size],\n `gap-${gap}`,\n className\n );\n\n const props = {\n ref,\n className: finalClassName,\n onMouseUp: isLoading ? () => null : onMouseUp,\n onMouseDown: isLoading ? () => null : onMouseDown,\n onClick: isLoading ? () => null : onClick,\n ...rest,\n };\n\n const content = (\n <>\n {children}\n {isLoading && }\n \n );\n\n if (as?.element === \"link\") {\n return (\n \n {content}\n \n );\n }\n\n return (\n \n );\n }\n);\n\nexport default Button;\n"],"names":["useLatest","current","storedValue","React.useRef","React.useEffect","useDebounceCallback","callback","wait","leading","storedCallback","timeout","deps","_ref","_ref2","React.useCallback","args","useDebounce","initialState","state","React.useState","useEvent","target","type","listener","cleanup","storedListener","storedCleanup","targetEl","didUnsubscribe","emptyObj","win","wv","getSize","useWindowSize","options","initialWidth","initialHeight","size","setDebouncedSize","setSize","useWindowWidth","useIsScreenSizeBiggerThanTailwindSize","isBigger","setIsBigger","useState","width","useEffect","tailwindThemeScreens","React","require$$0","RefreshIcon","props","svgRef","ForwardRef","RefreshIcon_1","sharedThemeStyles","loadingSpinnerTheme","LoadingSpinner","variant","className","rest","classNames","_a","jsx","textTheme","textLinkBaseStyles","textLinkTheme","buttonBaseStyles","buttonTheme","Button","forwardRef","as","children","isLoading","gap","onMouseUp","onMouseDown","onClick","ref","finalClassName","content","jsxs","Fragment","Link"],"mappings":"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","x_google_ignoreList":[0,1,2,3,5]}