@blueshift-gg/ui-components 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Alert.d.mts +19 -0
- package/dist/Alert.d.ts +19 -0
- package/dist/Alert.js +99 -0
- package/dist/Alert.js.map +1 -0
- package/dist/Alert.mjs +93 -0
- package/dist/Alert.mjs.map +1 -0
- package/dist/Avatar.d.mts +2 -2
- package/dist/Avatar.d.ts +2 -2
- package/dist/Avatar.js +2 -2
- package/dist/Avatar.js.map +1 -1
- package/dist/Avatar.mjs +2 -2
- package/dist/Avatar.mjs.map +1 -1
- package/dist/Badge.d.mts +4 -4
- package/dist/Badge.d.ts +4 -4
- package/dist/Badge.js +3 -3
- package/dist/Badge.js.map +1 -1
- package/dist/Badge.mjs +3 -3
- package/dist/Badge.mjs.map +1 -1
- package/dist/Button.d.mts +1 -1
- package/dist/Button.d.ts +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Button.mjs.map +1 -1
- package/dist/Checkbox.js.map +1 -1
- package/dist/Checkbox.mjs.map +1 -1
- package/dist/Codeblock.js.map +1 -1
- package/dist/Codeblock.mjs.map +1 -1
- package/dist/CrossHair.js.map +1 -1
- package/dist/CrossHair.mjs.map +1 -1
- package/dist/DecryptText.js.map +1 -1
- package/dist/DecryptText.mjs.map +1 -1
- package/dist/Divider.js.map +1 -1
- package/dist/Divider.mjs.map +1 -1
- package/dist/Dropdown.d.mts +1 -1
- package/dist/Dropdown.d.ts +1 -1
- package/dist/Dropdown.js.map +1 -1
- package/dist/Dropdown.mjs.map +1 -1
- package/dist/GridLines.js +1 -1
- package/dist/GridLines.js.map +1 -1
- package/dist/GridLines.mjs +1 -1
- package/dist/GridLines.mjs.map +1 -1
- package/dist/HeadingReveal.d.mts +15 -0
- package/dist/HeadingReveal.d.ts +15 -0
- package/dist/HeadingReveal.js +68 -0
- package/dist/HeadingReveal.js.map +1 -0
- package/dist/HeadingReveal.mjs +62 -0
- package/dist/HeadingReveal.mjs.map +1 -0
- package/dist/Icon.d.mts +1 -1
- package/dist/Icon.d.ts +1 -1
- package/dist/Input.d.mts +1 -1
- package/dist/Input.d.ts +1 -1
- package/dist/Input.js.map +1 -1
- package/dist/Input.mjs.map +1 -1
- package/dist/Logo.js.map +1 -1
- package/dist/Logo.mjs.map +1 -1
- package/dist/Pagination.js.map +1 -1
- package/dist/Pagination.mjs.map +1 -1
- package/dist/Slider.d.mts +1 -1
- package/dist/Slider.d.ts +1 -1
- package/dist/Slider.js.map +1 -1
- package/dist/Slider.mjs.map +1 -1
- package/dist/Tabs.d.mts +1 -1
- package/dist/Tabs.d.ts +1 -1
- package/dist/Tabs.js.map +1 -1
- package/dist/Tabs.mjs.map +1 -1
- package/dist/Toast.d.mts +1 -1
- package/dist/Toast.d.ts +1 -1
- package/dist/Toast.js +2 -3
- package/dist/Toast.js.map +1 -1
- package/dist/Toast.mjs +2 -3
- package/dist/Toast.mjs.map +1 -1
- package/dist/Tooltip.js.map +1 -1
- package/dist/Tooltip.mjs.map +1 -1
- package/dist/icons/Anchor.d.mts +1 -1
- package/dist/icons/Anchor.d.ts +1 -1
- package/dist/icons/ArrowLeft.d.mts +1 -1
- package/dist/icons/ArrowLeft.d.ts +1 -1
- package/dist/icons/ArrowRight.d.mts +1 -1
- package/dist/icons/ArrowRight.d.ts +1 -1
- package/dist/icons/Assembly.d.mts +1 -1
- package/dist/icons/Assembly.d.ts +1 -1
- package/dist/icons/Challenge.d.mts +1 -1
- package/dist/icons/Challenge.d.ts +1 -1
- package/dist/icons/Chevron.d.mts +1 -1
- package/dist/icons/Chevron.d.ts +1 -1
- package/dist/icons/ChevronLeft.d.mts +1 -1
- package/dist/icons/ChevronLeft.d.ts +1 -1
- package/dist/icons/ChevronRight.d.mts +1 -1
- package/dist/icons/ChevronRight.d.ts +1 -1
- package/dist/icons/Claim.d.mts +1 -1
- package/dist/icons/Claim.d.ts +1 -1
- package/dist/icons/Claimed.d.mts +1 -1
- package/dist/icons/Claimed.d.ts +1 -1
- package/dist/icons/Close.d.mts +1 -1
- package/dist/icons/Close.d.ts +1 -1
- package/dist/icons/Code.d.mts +1 -1
- package/dist/icons/Code.d.ts +1 -1
- package/dist/icons/Copy.d.mts +1 -1
- package/dist/icons/Copy.d.ts +1 -1
- package/dist/icons/Developer.d.mts +1 -1
- package/dist/icons/Developer.d.ts +1 -1
- package/dist/icons/Difficulty.d.mts +1 -1
- package/dist/icons/Difficulty.d.ts +1 -1
- package/dist/icons/Discord.d.mts +1 -1
- package/dist/icons/Discord.d.ts +1 -1
- package/dist/icons/Dollar.d.mts +1 -1
- package/dist/icons/Dollar.d.ts +1 -1
- package/dist/icons/DoubleArrow.d.mts +1 -1
- package/dist/icons/DoubleArrow.d.ts +1 -1
- package/dist/icons/EVM.d.mts +1 -1
- package/dist/icons/EVM.d.ts +1 -1
- package/dist/icons/Email.d.mts +1 -1
- package/dist/icons/Email.d.ts +1 -1
- package/dist/icons/Error.d.mts +1 -1
- package/dist/icons/Error.d.ts +1 -1
- package/dist/icons/External.d.mts +1 -1
- package/dist/icons/External.d.ts +1 -1
- package/dist/icons/Filter.d.mts +1 -1
- package/dist/icons/Filter.d.ts +1 -1
- package/dist/icons/Firmware.d.mts +1 -1
- package/dist/icons/Firmware.d.ts +1 -1
- package/dist/icons/Flag.d.mts +1 -1
- package/dist/icons/Flag.d.ts +1 -1
- package/dist/icons/Flame.d.mts +1 -1
- package/dist/icons/Flame.d.ts +1 -1
- package/dist/icons/Flexible.d.mts +1 -1
- package/dist/icons/Flexible.d.ts +1 -1
- package/dist/icons/Free.d.mts +1 -1
- package/dist/icons/Free.d.ts +1 -1
- package/dist/icons/General.d.mts +1 -1
- package/dist/icons/General.d.ts +1 -1
- package/dist/icons/Github.d.mts +1 -1
- package/dist/icons/Github.d.ts +1 -1
- package/dist/icons/GridView.d.mts +1 -1
- package/dist/icons/GridView.d.ts +1 -1
- package/dist/icons/Heart.d.mts +1 -1
- package/dist/icons/Heart.d.ts +1 -1
- package/dist/icons/Info.d.mts +1 -1
- package/dist/icons/Info.d.ts +1 -1
- package/dist/icons/Language.d.mts +1 -1
- package/dist/icons/Language.d.ts +1 -1
- package/dist/icons/Lessons.d.mts +1 -1
- package/dist/icons/Lessons.d.ts +1 -1
- package/dist/icons/Link.d.mts +1 -1
- package/dist/icons/Link.d.ts +1 -1
- package/dist/icons/ListView.d.mts +1 -1
- package/dist/icons/ListView.d.ts +1 -1
- package/dist/icons/Loading.d.mts +1 -1
- package/dist/icons/Loading.d.ts +1 -1
- package/dist/icons/Locked.d.mts +1 -1
- package/dist/icons/Locked.d.ts +1 -1
- package/dist/icons/Mentor.d.mts +1 -1
- package/dist/icons/Mentor.d.ts +1 -1
- package/dist/icons/Modular.d.mts +1 -1
- package/dist/icons/Modular.d.ts +1 -1
- package/dist/icons/NFT.d.mts +1 -1
- package/dist/icons/NFT.d.ts +1 -1
- package/dist/icons/Online.d.mts +1 -1
- package/dist/icons/Online.d.ts +1 -1
- package/dist/icons/Password.d.mts +1 -1
- package/dist/icons/Password.d.ts +1 -1
- package/dist/icons/Product.d.mts +1 -1
- package/dist/icons/Product.d.ts +1 -1
- package/dist/icons/Progress.d.mts +1 -1
- package/dist/icons/Progress.d.ts +1 -1
- package/dist/icons/Protocol.d.mts +1 -1
- package/dist/icons/Protocol.d.ts +1 -1
- package/dist/icons/Rewards.d.mts +1 -1
- package/dist/icons/Rewards.d.ts +1 -1
- package/dist/icons/Rust.d.mts +1 -1
- package/dist/icons/Rust.d.ts +1 -1
- package/dist/icons/Search.d.mts +1 -1
- package/dist/icons/Search.d.ts +1 -1
- package/dist/icons/SmartContract.d.mts +1 -1
- package/dist/icons/SmartContract.d.ts +1 -1
- package/dist/icons/Solana.d.mts +1 -1
- package/dist/icons/Solana.d.ts +1 -1
- package/dist/icons/Success.d.mts +1 -1
- package/dist/icons/Success.d.ts +1 -1
- package/dist/icons/SuccessCircle.d.mts +1 -1
- package/dist/icons/SuccessCircle.d.ts +1 -1
- package/dist/icons/Table.d.mts +1 -1
- package/dist/icons/Table.d.ts +1 -1
- package/dist/icons/Target.d.mts +1 -1
- package/dist/icons/Target.d.ts +1 -1
- package/dist/icons/Training.d.mts +1 -1
- package/dist/icons/Training.d.ts +1 -1
- package/dist/icons/Typescript.d.mts +1 -1
- package/dist/icons/Typescript.d.ts +1 -1
- package/dist/icons/Unclaimed.d.mts +1 -1
- package/dist/icons/Unclaimed.d.ts +1 -1
- package/dist/icons/Upload.d.mts +1 -1
- package/dist/icons/Upload.d.ts +1 -1
- package/dist/icons/Wallet.d.mts +1 -1
- package/dist/icons/Wallet.d.ts +1 -1
- package/dist/icons/WalletSmall.d.mts +1 -1
- package/dist/icons/WalletSmall.d.ts +1 -1
- package/dist/icons/Warning.d.mts +1 -1
- package/dist/icons/Warning.d.ts +1 -1
- package/dist/icons/X.d.mts +1 -1
- package/dist/icons/X.d.ts +1 -1
- package/dist/icons/index.d.mts +1 -1
- package/dist/icons/index.d.ts +1 -1
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +10 -0
- package/dist/index.mjs +2 -0
- package/package.json +12 -10
- package/dist/{index-DWGhkMUQ.d.mts → Icon-CTxwWbdC.d.mts} +8 -8
- package/dist/{index-ekBNDG0H.d.ts → Icon-llWd6yMa.d.ts} +8 -8
package/dist/Dropdown.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Dropdown.tsx"],"names":[],"mappings":"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","file":"Dropdown.mjs","sourcesContent":["import { IconName } from \"./icons\";\nimport { Button, ButtonProps } from \"./Button\";\nimport { useRef, useState, useEffect, useCallback } from \"react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { crisp, glide, swift } from \"./utils/easings\";\nimport { Checkbox } from \"./Checkbox\";\nimport { Divider } from \"./Divider\";\nimport { Icon, type IconProps } from \"./Icon\";\nimport { useOnClickOutside } from \"usehooks-ts\";\nimport { CrosshairCorners } from \"./CrossHair\";\n\nexport type DropdownProps = {\n className?: string;\n items: {\n label: string;\n icon?: IconProps;\n value: string;\n disabled?: boolean;\n }[];\n selectedItem?: string | string[] | undefined;\n handleChange: (item: string | string[] | undefined) => void;\n multiple?: boolean;\n disabled?: boolean;\n label: string;\n multiSelectLabel?: string;\n buttonClassName?: string;\n menuClassName?: string;\n menuIcon?: IconProps;\n size?: \"sm\" | \"md\" | \"lg\";\n isScrollable?: boolean;\n animationOrigin?: \"top-left\" | \"top-center\" | \"top-right\";\n search?: string;\n onClearSearch?: () => void;\n};\n\nexport type DropdownButtonProps = {\n label: string;\n multiSelectLabel?: string;\n disabled?: boolean;\n className?: string;\n onClick: () => void;\n buttonClassName?: string;\n selectedItems?: DropdownProps[\"items\"];\n multiple?: boolean;\n count?: number;\n menuIcon?: IconProps;\n size?: \"sm\" | \"md\" | \"lg\";\n};\n\nexport type DropdownItemProps = {\n label: string;\n icon?: IconProps;\n onClick: () => void;\n disabled?: boolean;\n isSelected?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n};\n\nexport type DropdownMenuProps = {\n items: {\n label: string;\n icon?: IconProps;\n value: string;\n disabled?: boolean;\n }[];\n selectedItem?: string | string[] | undefined;\n handleChange: (item: string | string[] | undefined) => void;\n multiple?: boolean;\n menuClassName?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n isOpen: boolean;\n onItemClick?: (value: string) => void;\n isScrollable?: boolean;\n animationOrigin?: \"top-left\" | \"top-center\" | \"top-right\";\n search?: string;\n onClearSearch?: () => void;\n};\n\nexport const DropdownMenu = ({\n items,\n selectedItem,\n handleChange,\n multiple = false,\n menuClassName,\n size = \"md\",\n isOpen,\n onItemClick,\n isScrollable = false,\n animationOrigin = \"top-left\",\n search,\n onClearSearch,\n}: DropdownMenuProps) => {\n const [isAtBottom, setIsAtBottom] = useState(false);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n // Filter items based on search term\n const filteredItems = (() => {\n // If search is provided, filter based on search\n if (search) {\n return items.filter((item) =>\n item.label.toLowerCase().includes(search.toLowerCase())\n );\n }\n\n // Default: show all items\n return items;\n })();\n\n // Handle scroll detection\n const handleScroll = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n const threshold = 5; // Small threshold to account for rounding\n const isNearBottom = scrollTop + clientHeight >= scrollHeight - threshold;\n\n setIsAtBottom(isNearBottom);\n }, []);\n\n // Reset scroll state when items change or menu opens\n useEffect(() => {\n if (isOpen) {\n setIsAtBottom(false);\n }\n }, [isOpen, filteredItems.length]);\n\n // Check if content is actually scrollable\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container || !isOpen) return;\n\n const { scrollHeight, clientHeight } = container;\n const hasScrollbar = scrollHeight > clientHeight;\n\n // If no scrollbar (content fits), consider it \"at bottom\"\n if (!hasScrollbar) {\n setIsAtBottom(true);\n }\n }, [isOpen, filteredItems.length]);\n\n // Helper to check if an item is selected\n const isItemSelected = (value: string) => {\n if (multiple) {\n return (\n Array.isArray(selectedItem) &&\n selectedItem.length > 0 &&\n selectedItem.includes(value)\n );\n }\n return !!selectedItem && selectedItem === value;\n };\n\n // Handle item selection\n const handleItemClick = (value: string) => {\n if (multiple) {\n const currentSelection = Array.isArray(selectedItem) ? selectedItem : [];\n\n // If all items are selected, clicking any item should deselect all others\n if (isAllSelected()) {\n handleChange([value]);\n } else if (currentSelection.includes(value)) {\n // Remove from selection\n handleChange(currentSelection.filter((item) => item !== value));\n } else {\n // Add to selection\n handleChange([...currentSelection, value]);\n }\n } else {\n // Single select - if clicking the already selected item, deselect it\n if (selectedItem === value) {\n handleChange(undefined);\n } else {\n // Otherwise, select the new item\n handleChange(value);\n }\n // Call the optional callback for single select\n onItemClick?.(value);\n }\n };\n\n // Handle select all\n const handleSelectAll = () => {\n const currentSelection = Array.isArray(selectedItem) ? selectedItem : [];\n const allValues = filteredItems\n .filter((item) => !item.disabled)\n .map((item) => item.value);\n\n if (currentSelection.length === allValues.length) {\n // Deselect all\n handleChange([]);\n } else {\n // Select all\n handleChange(allValues);\n }\n };\n\n // Check if all items are selected\n const isAllSelected = () => {\n if (!Array.isArray(selectedItem) || selectedItem.length === 0) return false;\n const selectableItems = filteredItems.filter((item) => !item.disabled);\n return (\n selectableItems.length > 0 &&\n selectedItem.length === selectableItems.length &&\n selectableItems.every((item) => selectedItem.includes(item.value))\n );\n };\n\n return (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8, y: -15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n transition={{ duration: 0.1, ease: swift }}\n exit={{ opacity: 0, scale: 0.8, y: -5 }}\n className={classNames(\n \"absolute top-[calc(100%+6px)] p-1 bg-card-foreground gradient-border before:bg-card-border\",\n (size === \"lg\" || size === \"md\") && \"min-w-[200px]\",\n animationOrigin === \"top-left\" && \"origin-top-left\",\n animationOrigin === \"top-center\" && \"origin-top-center\",\n animationOrigin === \"top-right\" && \"origin-top-right\",\n menuClassName\n )}\n >\n <div\n ref={scrollContainerRef}\n onScroll={handleScroll}\n className={classNames(\n \"flex flex-col gap-y-1\",\n isScrollable && [\n \"max-h-[250px] overflow-y-auto\",\n !isAtBottom &&\n \"[mask-image:linear-gradient(180deg,black,black_85%,transparent_100%)]\",\n ]\n )}\n >\n {multiple && (\n <div className=\"group flex flex-col gap-y-1\">\n <button\n onClick={handleSelectAll}\n className={classNames(\n \"py-3 pl-2.5 pr-3 flex items-center gap-x-2.5 outline-none bg-transparent transition-colors duration-100 ease-crisp hover:bg-border-light/50\"\n )}\n >\n <Checkbox checked={isAllSelected()} />\n <span className=\"text-sm text-shade-primary font-medium\">\n Select All\n </span>\n </button>\n <Divider direction=\"horizontal\" />\n </div>\n )}\n {filteredItems.length > 0 ? (\n filteredItems.map((item) => (\n <DropdownItem\n key={item.value}\n label={item.label}\n icon={\n item.icon?.name\n ? {\n name: item.icon.name,\n className: item.icon.className,\n size: item.icon.size,\n difficulties: item.icon.difficulties,\n }\n : undefined\n }\n onClick={() => handleItemClick(item.value)}\n disabled={item.disabled}\n isSelected={isItemSelected(item.value)}\n size={size}\n />\n ))\n ) : (\n <button\n onClick={() => {\n // Clear search by calling the onClearSearch callback\n if (onClearSearch) {\n onClearSearch();\n }\n }}\n className=\"py-3 pl-2.5 pr-3 text-sm font-mono text-shade-tertiary hover:bg-border-light/50 transition-colors duration-100 ease-crisp w-full text-center\"\n >\n No options found\n </button>\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport const Dropdown = ({\n className,\n items,\n selectedItem,\n handleChange,\n label = \"View All\",\n multiSelectLabel,\n disabled,\n buttonClassName,\n menuClassName,\n multiple = false,\n menuIcon,\n size = \"md\",\n isScrollable = false,\n search,\n onClearSearch,\n}: DropdownProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n // Handle item selection for single select (closes menu)\n const handleItemClick = (value: string) => {\n if (!multiple) {\n // Single select - if clicking the already selected item, deselect it\n if (selectedItem === value) {\n handleChange(undefined);\n } else {\n // Otherwise, select the new item\n handleChange(value);\n }\n setIsOpen(false);\n }\n };\n\n const ref = useRef<HTMLDivElement>(null);\n\n const handleClickOutside = () => {\n setIsOpen(false);\n };\n\n // Cast ref to RefObject<HTMLElement> to satisfy useOnClickOutside's expected type\n useOnClickOutside(ref as React.RefObject<HTMLElement>, handleClickOutside);\n\n // Get selected items for display in button\n const getSelectedItems = () => {\n if (multiple) {\n const selectedValues = Array.isArray(selectedItem) ? selectedItem : [];\n return items.filter((item) => selectedValues.includes(item.value));\n } else {\n const selected = items.find((item) => item.value === selectedItem);\n return selected ? [selected] : [];\n }\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"relative flex flex-col gap-y-1.5 items-start\",\n className\n )}\n >\n <DropdownButton\n label={label}\n multiSelectLabel={multiSelectLabel}\n disabled={disabled}\n className={buttonClassName}\n onClick={() => setIsOpen(!isOpen)}\n selectedItems={getSelectedItems()}\n multiple={multiple}\n count={getSelectedItems().length}\n menuIcon={menuIcon}\n size={size}\n />\n\n <DropdownMenu\n items={items}\n selectedItem={selectedItem}\n handleChange={handleChange}\n multiple={multiple}\n menuClassName={menuClassName}\n size={size}\n isOpen={isOpen}\n onItemClick={handleItemClick}\n isScrollable={isScrollable}\n search={search}\n onClearSearch={onClearSearch}\n />\n </div>\n );\n};\n\nexport const DropdownButton = ({\n label,\n multiSelectLabel,\n disabled,\n className,\n onClick,\n selectedItems = [],\n multiple = false,\n count = 0,\n menuIcon,\n size,\n}: DropdownButtonProps) => {\n const [isHovered, setIsHovered] = useState(false);\n\n // Determine what to display\n const hasSelection = selectedItems.length > 0;\n const isSingleSelection = selectedItems.length === 1;\n const isMultipleSelection = selectedItems.length > 1;\n\n // Compute icon and label based on selection state\n let buttonIcon: ButtonProps[\"icon\"] | undefined;\n let buttonLabel: string;\n\n if (hasSelection && isSingleSelection) {\n // Single selection: show selected item's icon and label\n const selectedItem = selectedItems[0];\n buttonIcon = selectedItem.icon\n ? {\n name: selectedItem.icon.name,\n className: selectedItem.icon.className || \"\",\n size: selectedItem.icon.size || 18,\n difficulties: selectedItem.icon.difficulties,\n }\n : menuIcon;\n buttonLabel = selectedItem.label;\n } else if (isMultipleSelection && multiple && multiSelectLabel) {\n // Multiple selections: show count and multiSelectLabel\n // Collect all difficulties from selected items\n const combinedDifficulties = selectedItems\n .filter((item) => item.icon?.difficulties)\n .flatMap((item) => item.icon!.difficulties!)\n .filter((value, index, self) => self.indexOf(value) === index) // Remove duplicates\n .sort((a, b) => a - b); // Sort in ascending order\n\n buttonIcon = menuIcon\n ? {\n name: menuIcon.name,\n className: menuIcon.className || \"\",\n size: menuIcon.size || 18,\n difficulties:\n combinedDifficulties.length > 0\n ? combinedDifficulties\n : menuIcon.difficulties,\n }\n : undefined;\n buttonLabel = `${count} ${multiSelectLabel}`;\n } else {\n // Default: no selection\n buttonIcon = menuIcon;\n buttonLabel = label;\n }\n\n return (\n <Button\n icon={buttonIcon}\n label={buttonLabel}\n disabled={disabled}\n size={size}\n variant=\"secondary\"\n className={classNames(\n \"!origin-bottom-left !justify-start w-full\",\n (size === \"md\" || size === \"lg\") && \"!pr-[18px] !pl-[12px]\",\n size === \"sm\" && \"!pr-4 !pl-3\",\n className\n )}\n useHoverEffect={false}\n crosshairProps={{\n variant: \"corners\",\n corners: [\"bottom-right\"],\n spacingX: !isHovered ? -6 : -4,\n spacingY: !isHovered ? -6 : -4,\n animationDuration: 0.5,\n animationDelay: 0,\n className: \"text-shade-mute group-hover:text-shade-primary\",\n }}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n />\n );\n};\n\nexport const DropdownItem = ({\n label,\n icon,\n onClick,\n disabled,\n isSelected = false,\n size,\n}: DropdownItemProps) => {\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={classNames(\n \"hover:bg-border-light/50 relative group/item disabled:opacity-40 flex items-center gap-x-2.5 outline-none transition-colors duration-100 ease-crisp\",\n size === \"lg\" && \"py-4 pl-3 pr-3 text-base\",\n size === \"md\" && \"py-3 pl-2.5 pr-3 text-sm\",\n size === \"sm\" && \"py-2 pl-2.5 pr-3 h-[36px] text-sm\",\n isSelected && \"bg-background/50\"\n )}\n >\n <div className=\"opacity-0 group-hover/item:!opacity-100 absolute inset-0.5\">\n <CrosshairCorners\n size={6}\n variant=\"corners\"\n corners={[\"bottom-right\"]}\n className=\"text-shade-mute\"\n animationDelay={0}\n animationDuration={0.5}\n />\n </div>\n\n {icon && (\n <Icon\n name={icon.name}\n className={classNames(\"flex-shrink-0\", icon.className)}\n size={icon.size || 18}\n difficulties={icon.difficulties}\n />\n )}\n <span\n className={classNames(\" text-shade-primary font-medium leading-[100%]\")}\n >\n {label}\n </span>\n </button>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/Dropdown.tsx"],"names":[],"mappings":"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","file":"Dropdown.mjs","sourcesContent":["\"use client\";\n\nimport { Button, ButtonProps } from \"./Button\";\nimport { useRef, useState, useEffect, useCallback } from \"react\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { swift } from \"./utils/easings\";\nimport { Checkbox } from \"./Checkbox\";\nimport { Divider } from \"./Divider\";\nimport { Icon, type IconProps } from \"./Icon\";\nimport { useOnClickOutside } from \"usehooks-ts\";\nimport { CrosshairCorners } from \"./CrossHair\";\n\nexport type DropdownProps = {\n className?: string;\n items: {\n label: string;\n icon?: IconProps;\n value: string;\n disabled?: boolean;\n }[];\n selectedItem?: string | string[] | undefined;\n handleChange: (item: string | string[] | undefined) => void;\n multiple?: boolean;\n disabled?: boolean;\n label: string;\n multiSelectLabel?: string;\n buttonClassName?: string;\n menuClassName?: string;\n menuIcon?: IconProps;\n size?: \"sm\" | \"md\" | \"lg\";\n isScrollable?: boolean;\n animationOrigin?: \"top-left\" | \"top-center\" | \"top-right\";\n search?: string;\n onClearSearch?: () => void;\n};\n\nexport type DropdownButtonProps = {\n label: string;\n multiSelectLabel?: string;\n disabled?: boolean;\n className?: string;\n onClick: () => void;\n buttonClassName?: string;\n selectedItems?: DropdownProps[\"items\"];\n multiple?: boolean;\n count?: number;\n menuIcon?: IconProps;\n size?: \"sm\" | \"md\" | \"lg\";\n};\n\nexport type DropdownItemProps = {\n label: string;\n icon?: IconProps;\n onClick: () => void;\n disabled?: boolean;\n isSelected?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n};\n\nexport type DropdownMenuProps = {\n items: {\n label: string;\n icon?: IconProps;\n value: string;\n disabled?: boolean;\n }[];\n selectedItem?: string | string[] | undefined;\n handleChange: (item: string | string[] | undefined) => void;\n multiple?: boolean;\n menuClassName?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n isOpen: boolean;\n onItemClick?: (value: string) => void;\n isScrollable?: boolean;\n animationOrigin?: \"top-left\" | \"top-center\" | \"top-right\";\n search?: string;\n onClearSearch?: () => void;\n};\n\nexport const DropdownMenu = ({\n items,\n selectedItem,\n handleChange,\n multiple = false,\n menuClassName,\n size = \"md\",\n isOpen,\n onItemClick,\n isScrollable = false,\n animationOrigin = \"top-left\",\n search,\n onClearSearch,\n}: DropdownMenuProps) => {\n const [isAtBottom, setIsAtBottom] = useState(false);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n // Filter items based on search term\n const filteredItems = (() => {\n // If search is provided, filter based on search\n if (search) {\n return items.filter((item) =>\n item.label.toLowerCase().includes(search.toLowerCase())\n );\n }\n\n // Default: show all items\n return items;\n })();\n\n // Handle scroll detection\n const handleScroll = useCallback(() => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n const threshold = 5; // Small threshold to account for rounding\n const isNearBottom = scrollTop + clientHeight >= scrollHeight - threshold;\n\n setIsAtBottom(isNearBottom);\n }, []);\n\n // Reset scroll state when items change or menu opens\n useEffect(() => {\n if (isOpen) {\n setIsAtBottom(false);\n }\n }, [isOpen, filteredItems.length]);\n\n // Check if content is actually scrollable\n useEffect(() => {\n const container = scrollContainerRef.current;\n if (!container || !isOpen) return;\n\n const { scrollHeight, clientHeight } = container;\n const hasScrollbar = scrollHeight > clientHeight;\n\n // If no scrollbar (content fits), consider it \"at bottom\"\n if (!hasScrollbar) {\n setIsAtBottom(true);\n }\n }, [isOpen, filteredItems.length]);\n\n // Helper to check if an item is selected\n const isItemSelected = (value: string) => {\n if (multiple) {\n return (\n Array.isArray(selectedItem) &&\n selectedItem.length > 0 &&\n selectedItem.includes(value)\n );\n }\n return !!selectedItem && selectedItem === value;\n };\n\n // Handle item selection\n const handleItemClick = (value: string) => {\n if (multiple) {\n const currentSelection = Array.isArray(selectedItem) ? selectedItem : [];\n\n // If all items are selected, clicking any item should deselect all others\n if (isAllSelected()) {\n handleChange([value]);\n } else if (currentSelection.includes(value)) {\n // Remove from selection\n handleChange(currentSelection.filter((item) => item !== value));\n } else {\n // Add to selection\n handleChange([...currentSelection, value]);\n }\n } else {\n // Single select - if clicking the already selected item, deselect it\n if (selectedItem === value) {\n handleChange(undefined);\n } else {\n // Otherwise, select the new item\n handleChange(value);\n }\n // Call the optional callback for single select\n onItemClick?.(value);\n }\n };\n\n // Handle select all\n const handleSelectAll = () => {\n const currentSelection = Array.isArray(selectedItem) ? selectedItem : [];\n const allValues = filteredItems\n .filter((item) => !item.disabled)\n .map((item) => item.value);\n\n if (currentSelection.length === allValues.length) {\n // Deselect all\n handleChange([]);\n } else {\n // Select all\n handleChange(allValues);\n }\n };\n\n // Check if all items are selected\n const isAllSelected = () => {\n if (!Array.isArray(selectedItem) || selectedItem.length === 0) return false;\n const selectableItems = filteredItems.filter((item) => !item.disabled);\n return (\n selectableItems.length > 0 &&\n selectedItem.length === selectableItems.length &&\n selectableItems.every((item) => selectedItem.includes(item.value))\n );\n };\n\n return (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8, y: -15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n transition={{ duration: 0.1, ease: swift }}\n exit={{ opacity: 0, scale: 0.8, y: -5 }}\n className={classNames(\n \"absolute top-[calc(100%+6px)] p-1 bg-card-foreground gradient-border before:bg-card-border\",\n (size === \"lg\" || size === \"md\") && \"min-w-[200px]\",\n animationOrigin === \"top-left\" && \"origin-top-left\",\n animationOrigin === \"top-center\" && \"origin-top-center\",\n animationOrigin === \"top-right\" && \"origin-top-right\",\n menuClassName\n )}\n >\n <div\n ref={scrollContainerRef}\n onScroll={handleScroll}\n className={classNames(\n \"flex flex-col gap-y-1\",\n isScrollable && [\n \"max-h-[250px] overflow-y-auto\",\n !isAtBottom &&\n \"[mask-image:linear-gradient(180deg,black,black_85%,transparent_100%)]\",\n ]\n )}\n >\n {multiple && (\n <div className=\"group flex flex-col gap-y-1\">\n <button\n onClick={handleSelectAll}\n className={classNames(\n \"py-3 pl-2.5 pr-3 flex items-center gap-x-2.5 outline-none bg-transparent transition-colors duration-100 ease-crisp hover:bg-border-light/50\"\n )}\n >\n <Checkbox checked={isAllSelected()} />\n <span className=\"text-sm text-shade-primary font-medium\">\n Select All\n </span>\n </button>\n <Divider direction=\"horizontal\" />\n </div>\n )}\n {filteredItems.length > 0 ? (\n filteredItems.map((item) => (\n <DropdownItem\n key={item.value}\n label={item.label}\n icon={\n item.icon?.name\n ? {\n name: item.icon.name,\n className: item.icon.className,\n size: item.icon.size,\n difficulties: item.icon.difficulties,\n }\n : undefined\n }\n onClick={() => handleItemClick(item.value)}\n disabled={item.disabled}\n isSelected={isItemSelected(item.value)}\n size={size}\n />\n ))\n ) : (\n <button\n onClick={() => {\n // Clear search by calling the onClearSearch callback\n if (onClearSearch) {\n onClearSearch();\n }\n }}\n className=\"py-3 pl-2.5 pr-3 text-sm font-mono text-shade-tertiary hover:bg-border-light/50 transition-colors duration-100 ease-crisp w-full text-center\"\n >\n No options found\n </button>\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n );\n};\n\nexport const Dropdown = ({\n className,\n items,\n selectedItem,\n handleChange,\n label = \"View All\",\n multiSelectLabel,\n disabled,\n buttonClassName,\n menuClassName,\n multiple = false,\n menuIcon,\n size = \"md\",\n isScrollable = false,\n search,\n onClearSearch,\n}: DropdownProps) => {\n const [isOpen, setIsOpen] = useState(false);\n\n // Handle item selection for single select (closes menu)\n const handleItemClick = (value: string) => {\n if (!multiple) {\n // Single select - if clicking the already selected item, deselect it\n if (selectedItem === value) {\n handleChange(undefined);\n } else {\n // Otherwise, select the new item\n handleChange(value);\n }\n setIsOpen(false);\n }\n };\n\n const ref = useRef<HTMLDivElement>(null);\n\n const handleClickOutside = () => {\n setIsOpen(false);\n };\n\n // Cast ref to RefObject<HTMLElement> to satisfy useOnClickOutside's expected type\n useOnClickOutside(ref as React.RefObject<HTMLElement>, handleClickOutside);\n\n // Get selected items for display in button\n const getSelectedItems = () => {\n if (multiple) {\n const selectedValues = Array.isArray(selectedItem) ? selectedItem : [];\n return items.filter((item) => selectedValues.includes(item.value));\n } else {\n const selected = items.find((item) => item.value === selectedItem);\n return selected ? [selected] : [];\n }\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"relative flex flex-col gap-y-1.5 items-start\",\n className\n )}\n >\n <DropdownButton\n label={label}\n multiSelectLabel={multiSelectLabel}\n disabled={disabled}\n className={buttonClassName}\n onClick={() => setIsOpen(!isOpen)}\n selectedItems={getSelectedItems()}\n multiple={multiple}\n count={getSelectedItems().length}\n menuIcon={menuIcon}\n size={size}\n />\n\n <DropdownMenu\n items={items}\n selectedItem={selectedItem}\n handleChange={handleChange}\n multiple={multiple}\n menuClassName={menuClassName}\n size={size}\n isOpen={isOpen}\n onItemClick={handleItemClick}\n isScrollable={isScrollable}\n search={search}\n onClearSearch={onClearSearch}\n />\n </div>\n );\n};\n\nexport const DropdownButton = ({\n label,\n multiSelectLabel,\n disabled,\n className,\n onClick,\n selectedItems = [],\n multiple = false,\n count = 0,\n menuIcon,\n size,\n}: DropdownButtonProps) => {\n const [isHovered, setIsHovered] = useState(false);\n\n // Determine what to display\n const hasSelection = selectedItems.length > 0;\n const isSingleSelection = selectedItems.length === 1;\n const isMultipleSelection = selectedItems.length > 1;\n\n // Compute icon and label based on selection state\n let buttonIcon: ButtonProps[\"icon\"] | undefined;\n let buttonLabel: string;\n\n if (hasSelection && isSingleSelection) {\n // Single selection: show selected item's icon and label\n const selectedItem = selectedItems[0];\n buttonIcon = selectedItem.icon\n ? {\n name: selectedItem.icon.name,\n className: selectedItem.icon.className || \"\",\n size: selectedItem.icon.size || 18,\n difficulties: selectedItem.icon.difficulties,\n }\n : menuIcon;\n buttonLabel = selectedItem.label;\n } else if (isMultipleSelection && multiple && multiSelectLabel) {\n // Multiple selections: show count and multiSelectLabel\n // Collect all difficulties from selected items\n const combinedDifficulties = selectedItems\n .filter((item) => item.icon?.difficulties)\n .flatMap((item) => item.icon!.difficulties!)\n .filter((value, index, self) => self.indexOf(value) === index) // Remove duplicates\n .sort((a, b) => a - b); // Sort in ascending order\n\n buttonIcon = menuIcon\n ? {\n name: menuIcon.name,\n className: menuIcon.className || \"\",\n size: menuIcon.size || 18,\n difficulties:\n combinedDifficulties.length > 0\n ? combinedDifficulties\n : menuIcon.difficulties,\n }\n : undefined;\n buttonLabel = `${count} ${multiSelectLabel}`;\n } else {\n // Default: no selection\n buttonIcon = menuIcon;\n buttonLabel = label;\n }\n\n return (\n <Button\n icon={buttonIcon}\n label={buttonLabel}\n disabled={disabled}\n size={size}\n variant=\"secondary\"\n className={classNames(\n \"!origin-bottom-left !justify-start w-full\",\n (size === \"md\" || size === \"lg\") && \"!pr-[18px] !pl-[12px]\",\n size === \"sm\" && \"!pr-4 !pl-3\",\n className\n )}\n useHoverEffect={false}\n crosshairProps={{\n variant: \"corners\",\n corners: [\"bottom-right\"],\n spacingX: !isHovered ? -6 : -4,\n spacingY: !isHovered ? -6 : -4,\n animationDuration: 0.5,\n animationDelay: 0,\n className: \"text-shade-mute group-hover:text-shade-primary\",\n }}\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n />\n );\n};\n\nexport const DropdownItem = ({\n label,\n icon,\n onClick,\n disabled,\n isSelected = false,\n size,\n}: DropdownItemProps) => {\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={classNames(\n \"hover:bg-border-light/50 relative group/item disabled:opacity-40 flex items-center gap-x-2.5 outline-none transition-colors duration-100 ease-crisp\",\n size === \"lg\" && \"py-4 pl-3 pr-3 text-base\",\n size === \"md\" && \"py-3 pl-2.5 pr-3 text-sm\",\n size === \"sm\" && \"py-2 pl-2.5 pr-3 h-[36px] text-sm\",\n isSelected && \"bg-background/50\"\n )}\n >\n <div className=\"opacity-0 group-hover/item:!opacity-100 absolute inset-0.5\">\n <CrosshairCorners\n size={6}\n variant=\"corners\"\n corners={[\"bottom-right\"]}\n className=\"text-shade-mute\"\n animationDelay={0}\n animationDuration={0.5}\n />\n </div>\n\n {icon && (\n <Icon\n name={icon.name}\n className={classNames(\"flex-shrink-0\", icon.className)}\n size={icon.size || 18}\n difficulties={icon.difficulties}\n />\n )}\n <span\n className={classNames(\" text-shade-primary font-medium leading-[100%]\")}\n >\n {label}\n </span>\n </button>\n );\n};\n"]}
|
package/dist/GridLines.js
CHANGED
package/dist/GridLines.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/GridLines.tsx"],"names":["jsxs","classNames","jsx","motion","glide"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/GridLines.tsx"],"names":["jsxs","classNames","jsx","motion","glide"],"mappings":";;;;;;;;;;;AAaO,MAAM,YAAY,CAAC;AAAA,EACxB,GAAA,GAAM,CAAA;AAAA,EACN,YAAA,GAAe,KAAA;AAAA,EACf,KAAA,GAAQ,CAAC,KAAA,EAAO,QAAA,EAAU,QAAQ,OAAO,CAAA;AAAA,EACzC;AACF,CAAA,KAAsB;AACpB,EAAA,uBACEA,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,2BAAA,CAAW,UAAA,EAAY,SAAS,CAAA;AAAA,MAC3C,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,CAAC,GAAG,CAAA,EAAA,CAAA,EAAK;AAAA,MAE5B,QAAA,EAAA;AAAA,wBAAAC,cAAA;AAAA,UAACC,YAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS;AAAA,cACP,QAAA,EAAU,eAAe,mBAAA,GAAsB;AAAA,aACjD;AAAA,YACA,OAAA,EAAS,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YACtC,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,MAAMC,aAAA,EAAM;AAAA,YAC1C,SAAA,EAAWH,2BAAA;AAAA,cACT,CAAC,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA,IAAK,QAAA;AAAA,cAC3B;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA;AAAS;AAAA,SAC5B;AAAA,wBACAC,cAAA;AAAA,UAACC,YAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS;AAAA,cACP,QAAA,EAAU,eAAe,mBAAA,GAAsB;AAAA,aACjD;AAAA,YACA,OAAA,EAAS,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YACtC,YAAY,EAAE,QAAA,EAAU,MAAM,IAAA,EAAMC,aAAA,EAAO,OAAO,IAAA,EAAK;AAAA,YACvD,SAAA,EAAWH,2BAAA;AAAA,cACT,CAAC,KAAA,CAAM,QAAA,CAAS,OAAO,CAAA,IAAK,QAAA;AAAA,cAC5B;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA;AAAS;AAAA,SAC5B;AAAA,wBACAC,cAAA;AAAA,UAACC,YAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS;AAAA,cACP,QAAA,EAAU,eAAe,mBAAA,GAAsB;AAAA,aACjD;AAAA,YACA,OAAA,EAAS,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YACtC,YAAY,EAAE,QAAA,EAAU,MAAM,IAAA,EAAMC,aAAA,EAAO,OAAO,GAAA,EAAI;AAAA,YACtD,SAAA,EAAWH,2BAAA;AAAA,cACT,CAAC,KAAA,CAAM,QAAA,CAAS,KAAK,CAAA,IAAK,QAAA;AAAA,cAC1B;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA;AAAS;AAAA,SAC3B;AAAA,wBACAC,cAAA;AAAA,UAACC,YAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS;AAAA,cACP,QAAA,EAAU,eAAe,mBAAA,GAAsB;AAAA,aACjD;AAAA,YACA,OAAA,EAAS,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YACtC,YAAY,EAAE,QAAA,EAAU,MAAM,IAAA,EAAMC,aAAA,EAAO,OAAO,IAAA,EAAK;AAAA,YACvD,SAAA,EAAWH,2BAAA;AAAA,cACT,CAAC,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,IAAK,QAAA;AAAA,cAC7B;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA;AAAS;AAAA;AAC3B;AAAA;AAAA,GACF;AAEJ","file":"GridLines.js","sourcesContent":["\"use client\";\n\nimport { motion } from \"motion/react\";\nimport { glide } from \"./utils/easings\";\nimport classNames from \"classnames\";\n\nexport type GridLinesProps = {\n className?: string;\n animateLines?: boolean;\n gap?: number;\n lines?: (\"top\" | \"bottom\" | \"left\" | \"right\")[];\n};\n\nexport const GridLines = ({\n gap = 8,\n animateLines = false,\n lines = [\"top\", \"bottom\", \"left\", \"right\"],\n className,\n}: GridLinesProps) => {\n return (\n <div\n className={classNames(\"absolute\", className)}\n style={{ inset: `${-gap}px` }}\n >\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 100% 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide }}\n className={classNames(\n !lines.includes(\"left\") && \"hidden\",\n \"absolute w-px bg-border-light left-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ height: \"100dvh\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(100% 0 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.05 }}\n className={classNames(\n !lines.includes(\"right\") && \"hidden\",\n \"absolute w-px bg-border-light right-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ height: \"100dvh\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 100% 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.1 }}\n className={classNames(\n !lines.includes(\"top\") && \"hidden\",\n \"absolute h-px bg-border-light top-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ width: \"100dvw\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 0 100%)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.15 }}\n className={classNames(\n !lines.includes(\"bottom\") && \"hidden\",\n \"absolute h-px bg-border-light bottom-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ width: \"100dvw\" }}\n />\n </div>\n );\n};\n"]}
|
package/dist/GridLines.mjs
CHANGED
package/dist/GridLines.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/GridLines.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"sources":["../src/GridLines.tsx"],"names":[],"mappings":";;;;;AAaO,MAAM,YAAY,CAAC;AAAA,EACxB,GAAA,GAAM,CAAA;AAAA,EACN,YAAA,GAAe,KAAA;AAAA,EACf,KAAA,GAAQ,CAAC,KAAA,EAAO,QAAA,EAAU,QAAQ,OAAO,CAAA;AAAA,EACzC;AACF,CAAA,KAAsB;AACpB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,UAAA,CAAW,UAAA,EAAY,SAAS,CAAA;AAAA,MAC3C,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,CAAC,GAAG,CAAA,EAAA,CAAA,EAAK;AAAA,MAE5B,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,MAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS;AAAA,cACP,QAAA,EAAU,eAAe,mBAAA,GAAsB;AAAA,aACjD;AAAA,YACA,OAAA,EAAS,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YACtC,UAAA,EAAY,EAAE,QAAA,EAAU,IAAA,EAAM,MAAM,KAAA,EAAM;AAAA,YAC1C,SAAA,EAAW,UAAA;AAAA,cACT,CAAC,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA,IAAK,QAAA;AAAA,cAC3B;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA;AAAS;AAAA,SAC5B;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS;AAAA,cACP,QAAA,EAAU,eAAe,mBAAA,GAAsB;AAAA,aACjD;AAAA,YACA,OAAA,EAAS,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YACtC,YAAY,EAAE,QAAA,EAAU,MAAM,IAAA,EAAM,KAAA,EAAO,OAAO,IAAA,EAAK;AAAA,YACvD,SAAA,EAAW,UAAA;AAAA,cACT,CAAC,KAAA,CAAM,QAAA,CAAS,OAAO,CAAA,IAAK,QAAA;AAAA,cAC5B;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA;AAAS;AAAA,SAC5B;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS;AAAA,cACP,QAAA,EAAU,eAAe,mBAAA,GAAsB;AAAA,aACjD;AAAA,YACA,OAAA,EAAS,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YACtC,YAAY,EAAE,QAAA,EAAU,MAAM,IAAA,EAAM,KAAA,EAAO,OAAO,GAAA,EAAI;AAAA,YACtD,SAAA,EAAW,UAAA;AAAA,cACT,CAAC,KAAA,CAAM,QAAA,CAAS,KAAK,CAAA,IAAK,QAAA;AAAA,cAC1B;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA;AAAS;AAAA,SAC3B;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,OAAA,EAAS;AAAA,cACP,QAAA,EAAU,eAAe,mBAAA,GAAsB;AAAA,aACjD;AAAA,YACA,OAAA,EAAS,EAAE,QAAA,EAAU,gBAAA,EAAiB;AAAA,YACtC,YAAY,EAAE,QAAA,EAAU,MAAM,IAAA,EAAM,KAAA,EAAO,OAAO,IAAA,EAAK;AAAA,YACvD,SAAA,EAAW,UAAA;AAAA,cACT,CAAC,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,IAAK,QAAA;AAAA,cAC7B;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA;AAAS;AAAA;AAC3B;AAAA;AAAA,GACF;AAEJ","file":"GridLines.mjs","sourcesContent":["\"use client\";\n\nimport { motion } from \"motion/react\";\nimport { glide } from \"./utils/easings\";\nimport classNames from \"classnames\";\n\nexport type GridLinesProps = {\n className?: string;\n animateLines?: boolean;\n gap?: number;\n lines?: (\"top\" | \"bottom\" | \"left\" | \"right\")[];\n};\n\nexport const GridLines = ({\n gap = 8,\n animateLines = false,\n lines = [\"top\", \"bottom\", \"left\", \"right\"],\n className,\n}: GridLinesProps) => {\n return (\n <div\n className={classNames(\"absolute\", className)}\n style={{ inset: `${-gap}px` }}\n >\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 100% 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide }}\n className={classNames(\n !lines.includes(\"left\") && \"hidden\",\n \"absolute w-px bg-border-light left-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ height: \"100dvh\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(100% 0 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.05 }}\n className={classNames(\n !lines.includes(\"right\") && \"hidden\",\n \"absolute w-px bg-border-light right-0 top-1/2 -translate-y-1/2\"\n )}\n style={{ height: \"100dvh\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 100% 0 0)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.1 }}\n className={classNames(\n !lines.includes(\"top\") && \"hidden\",\n \"absolute h-px bg-border-light top-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ width: \"100dvw\" }}\n />\n <motion.div\n initial={{\n clipPath: animateLines ? \"inset(0 0 0 100%)\" : \"inset(0 0 0 0)\",\n }}\n animate={{ clipPath: \"inset(0 0 0 0)\" }}\n transition={{ duration: 0.25, ease: glide, delay: 0.15 }}\n className={classNames(\n !lines.includes(\"bottom\") && \"hidden\",\n \"absolute h-px bg-border-light bottom-0 left-1/2 -translate-x-1/2\"\n )}\n style={{ width: \"100dvw\" }}\n />\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
type HeadingRevealProps = {
|
|
4
|
+
text: string;
|
|
5
|
+
headingLevel: "h1" | "h2" | "h3";
|
|
6
|
+
className?: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
cursorColor?: string;
|
|
9
|
+
baseDelay?: number;
|
|
10
|
+
splitBy?: "words" | "chars";
|
|
11
|
+
speed?: number;
|
|
12
|
+
};
|
|
13
|
+
declare const HeadingReveal: ({ text, headingLevel, className, color, cursorColor, baseDelay, splitBy, speed, }: HeadingRevealProps) => react_jsx_runtime.JSX.Element;
|
|
14
|
+
|
|
15
|
+
export { HeadingReveal, type HeadingRevealProps };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
type HeadingRevealProps = {
|
|
4
|
+
text: string;
|
|
5
|
+
headingLevel: "h1" | "h2" | "h3";
|
|
6
|
+
className?: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
cursorColor?: string;
|
|
9
|
+
baseDelay?: number;
|
|
10
|
+
splitBy?: "words" | "chars";
|
|
11
|
+
speed?: number;
|
|
12
|
+
};
|
|
13
|
+
declare const HeadingReveal: ({ text, headingLevel, className, color, cursorColor, baseDelay, splitBy, speed, }: HeadingRevealProps) => react_jsx_runtime.JSX.Element;
|
|
14
|
+
|
|
15
|
+
export { HeadingReveal, type HeadingRevealProps };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var motion = require('motion');
|
|
5
|
+
var motionPlus = require('motion-plus');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var classNames = require('classnames');
|
|
8
|
+
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var classNames__default = /*#__PURE__*/_interopDefault(classNames);
|
|
12
|
+
|
|
13
|
+
const HeadingReveal = ({
|
|
14
|
+
text,
|
|
15
|
+
headingLevel,
|
|
16
|
+
className,
|
|
17
|
+
color = "#EFF1F6",
|
|
18
|
+
cursorColor = "#00FFFF",
|
|
19
|
+
baseDelay = 0,
|
|
20
|
+
splitBy = "words",
|
|
21
|
+
speed = 0.25
|
|
22
|
+
}) => {
|
|
23
|
+
const containerRef = react.useRef(null);
|
|
24
|
+
react.useEffect(() => {
|
|
25
|
+
document.fonts.ready.then(() => {
|
|
26
|
+
if (!containerRef.current) return;
|
|
27
|
+
containerRef.current.style.visibility = "visible";
|
|
28
|
+
const { words, chars } = motionPlus.splitText(
|
|
29
|
+
containerRef.current.querySelector(headingLevel)
|
|
30
|
+
);
|
|
31
|
+
motion.animate(
|
|
32
|
+
splitBy === "words" ? words : chars,
|
|
33
|
+
{
|
|
34
|
+
backgroundColor: [
|
|
35
|
+
"rgba(255,255,255,0)",
|
|
36
|
+
"rgba(255,255,255,0)",
|
|
37
|
+
cursorColor,
|
|
38
|
+
cursorColor,
|
|
39
|
+
cursorColor,
|
|
40
|
+
"rgba(255,255,255,0)"
|
|
41
|
+
],
|
|
42
|
+
color: [
|
|
43
|
+
"rgba(255,255,255,0)",
|
|
44
|
+
"rgba(255,255,255,0)",
|
|
45
|
+
cursorColor,
|
|
46
|
+
cursorColor,
|
|
47
|
+
cursorColor,
|
|
48
|
+
color
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
ease: motion.anticipate,
|
|
53
|
+
duration: speed,
|
|
54
|
+
delay: motion.stagger(speed / 2, { startDelay: baseDelay })
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
});
|
|
58
|
+
}, []);
|
|
59
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: containerRef, children: [
|
|
60
|
+
headingLevel === "h1" && /* @__PURE__ */ jsxRuntime.jsx("h1", { className: classNames__default.default("h1", className), children: text }),
|
|
61
|
+
headingLevel === "h2" && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: classNames__default.default("h2", className), children: text }),
|
|
62
|
+
headingLevel === "h3" && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: classNames__default.default("h3", className), children: text })
|
|
63
|
+
] });
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
exports.HeadingReveal = HeadingReveal;
|
|
67
|
+
//# sourceMappingURL=HeadingReveal.js.map
|
|
68
|
+
//# sourceMappingURL=HeadingReveal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/HeadingReveal.tsx"],"names":["useRef","useEffect","splitText","animate","anticipate","stagger","jsxs","classNames","jsx"],"mappings":";;;;;;;;;;;;AAiBO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,WAAA,GAAc,SAAA;AAAA,EACd,SAAA,GAAY,CAAA;AAAA,EACZ,OAAA,GAAU,OAAA;AAAA,EACV,KAAA,GAAQ;AACV,CAAA,KAA0B;AACxB,EAAA,MAAM,YAAA,GAAeA,aAAuB,IAAI,CAAA;AAEhD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,MAAM;AAC9B,MAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAG3B,MAAA,YAAA,CAAa,OAAA,CAAQ,MAAM,UAAA,GAAa,SAAA;AAExC,MAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAIC,oBAAA;AAAA,QACvB,YAAA,CAAa,OAAA,CAAQ,aAAA,CAAc,YAAY;AAAA,OACjD;AAGA,MAAAC,cAAA;AAAA,QACE,OAAA,KAAY,UAAU,KAAA,GAAQ,KAAA;AAAA,QAC9B;AAAA,UACE,eAAA,EAAiB;AAAA,YACf,qBAAA;AAAA,YACA,qBAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO;AAAA,YACL,qBAAA;AAAA,YACA,qBAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAMC,iBAAA;AAAA,UACN,QAAA,EAAU,KAAA;AAAA,UACV,OAAOC,cAAA,CAAQ,KAAA,GAAQ,GAAG,EAAE,UAAA,EAAY,WAAW;AAAA;AACrD,OACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAA,EACP,QAAA,EAAA;AAAA,IAAA,YAAA,KAAiB,IAAA,mCACf,IAAA,EAAA,EAAG,SAAA,EAAWC,4BAAW,IAAA,EAAM,SAAS,GAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IAEnD,YAAA,KAAiB,wBAChBC,cAAA,CAAC,IAAA,EAAA,EAAG,WAAWD,2BAAA,CAAW,IAAA,EAAM,SAAS,CAAA,EAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IAEnD,YAAA,KAAiB,wBAChBC,cAAA,CAAC,IAAA,EAAA,EAAG,WAAWD,2BAAA,CAAW,IAAA,EAAM,SAAS,CAAA,EAAI,QAAA,EAAA,IAAA,EAAK;AAAA,GAAA,EAEtD,CAAA;AAEJ","file":"HeadingReveal.js","sourcesContent":["\"use client\";\n\nimport { animate, stagger, anticipate } from \"motion\";\nimport { splitText } from \"motion-plus\";\nimport { useEffect, useRef } from \"react\";\nimport classNames from \"classnames\";\n\nexport type HeadingRevealProps = {\n text: string;\n headingLevel: \"h1\" | \"h2\" | \"h3\";\n className?: string;\n color?: string;\n cursorColor?: string;\n baseDelay?: number;\n splitBy?: \"words\" | \"chars\";\n speed?: number;\n};\nexport const HeadingReveal = ({\n text,\n headingLevel,\n className,\n color = \"#EFF1F6\",\n cursorColor = \"#00FFFF\",\n baseDelay = 0,\n splitBy = \"words\",\n speed = 0.25,\n}: HeadingRevealProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n document.fonts.ready.then(() => {\n if (!containerRef.current) return;\n\n // Hide the container until the fonts are loaded\n containerRef.current.style.visibility = \"visible\";\n\n const { words, chars } = splitText(\n containerRef.current.querySelector(headingLevel)!\n );\n\n // Animate the words in the h1\n animate(\n splitBy === \"words\" ? words : chars,\n {\n backgroundColor: [\n \"rgba(255,255,255,0)\",\n \"rgba(255,255,255,0)\",\n cursorColor,\n cursorColor,\n cursorColor,\n \"rgba(255,255,255,0)\",\n ],\n color: [\n \"rgba(255,255,255,0)\",\n \"rgba(255,255,255,0)\",\n cursorColor,\n cursorColor,\n cursorColor,\n color,\n ],\n },\n {\n ease: anticipate,\n duration: speed,\n delay: stagger(speed / 2, { startDelay: baseDelay }),\n }\n );\n });\n }, []);\n\n return (\n <div ref={containerRef}>\n {headingLevel === \"h1\" && (\n <h1 className={classNames(\"h1\", className)}>{text}</h1>\n )}\n {headingLevel === \"h2\" && (\n <h2 className={classNames(\"h2\", className)}>{text}</h2>\n )}\n {headingLevel === \"h3\" && (\n <h3 className={classNames(\"h3\", className)}>{text}</h3>\n )}\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { animate, stagger, anticipate } from 'motion';
|
|
3
|
+
import { splitText } from 'motion-plus';
|
|
4
|
+
import { useRef, useEffect } from 'react';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
|
+
|
|
7
|
+
const HeadingReveal = ({
|
|
8
|
+
text,
|
|
9
|
+
headingLevel,
|
|
10
|
+
className,
|
|
11
|
+
color = "#EFF1F6",
|
|
12
|
+
cursorColor = "#00FFFF",
|
|
13
|
+
baseDelay = 0,
|
|
14
|
+
splitBy = "words",
|
|
15
|
+
speed = 0.25
|
|
16
|
+
}) => {
|
|
17
|
+
const containerRef = useRef(null);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
document.fonts.ready.then(() => {
|
|
20
|
+
if (!containerRef.current) return;
|
|
21
|
+
containerRef.current.style.visibility = "visible";
|
|
22
|
+
const { words, chars } = splitText(
|
|
23
|
+
containerRef.current.querySelector(headingLevel)
|
|
24
|
+
);
|
|
25
|
+
animate(
|
|
26
|
+
splitBy === "words" ? words : chars,
|
|
27
|
+
{
|
|
28
|
+
backgroundColor: [
|
|
29
|
+
"rgba(255,255,255,0)",
|
|
30
|
+
"rgba(255,255,255,0)",
|
|
31
|
+
cursorColor,
|
|
32
|
+
cursorColor,
|
|
33
|
+
cursorColor,
|
|
34
|
+
"rgba(255,255,255,0)"
|
|
35
|
+
],
|
|
36
|
+
color: [
|
|
37
|
+
"rgba(255,255,255,0)",
|
|
38
|
+
"rgba(255,255,255,0)",
|
|
39
|
+
cursorColor,
|
|
40
|
+
cursorColor,
|
|
41
|
+
cursorColor,
|
|
42
|
+
color
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
ease: anticipate,
|
|
47
|
+
duration: speed,
|
|
48
|
+
delay: stagger(speed / 2, { startDelay: baseDelay })
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
});
|
|
52
|
+
}, []);
|
|
53
|
+
return /* @__PURE__ */ jsxs("div", { ref: containerRef, children: [
|
|
54
|
+
headingLevel === "h1" && /* @__PURE__ */ jsx("h1", { className: classNames("h1", className), children: text }),
|
|
55
|
+
headingLevel === "h2" && /* @__PURE__ */ jsx("h2", { className: classNames("h2", className), children: text }),
|
|
56
|
+
headingLevel === "h3" && /* @__PURE__ */ jsx("h3", { className: classNames("h3", className), children: text })
|
|
57
|
+
] });
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { HeadingReveal };
|
|
61
|
+
//# sourceMappingURL=HeadingReveal.mjs.map
|
|
62
|
+
//# sourceMappingURL=HeadingReveal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/HeadingReveal.tsx"],"names":[],"mappings":";;;;;;AAiBO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA,GAAQ,SAAA;AAAA,EACR,WAAA,GAAc,SAAA;AAAA,EACd,SAAA,GAAY,CAAA;AAAA,EACZ,OAAA,GAAU,OAAA;AAAA,EACV,KAAA,GAAQ;AACV,CAAA,KAA0B;AACxB,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,MAAM;AAC9B,MAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAG3B,MAAA,YAAA,CAAa,OAAA,CAAQ,MAAM,UAAA,GAAa,SAAA;AAExC,MAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,SAAA;AAAA,QACvB,YAAA,CAAa,OAAA,CAAQ,aAAA,CAAc,YAAY;AAAA,OACjD;AAGA,MAAA,OAAA;AAAA,QACE,OAAA,KAAY,UAAU,KAAA,GAAQ,KAAA;AAAA,QAC9B;AAAA,UACE,eAAA,EAAiB;AAAA,YACf,qBAAA;AAAA,YACA,qBAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO;AAAA,YACL,qBAAA;AAAA,YACA,qBAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAA,EAAM,UAAA;AAAA,UACN,QAAA,EAAU,KAAA;AAAA,UACV,OAAO,OAAA,CAAQ,KAAA,GAAQ,GAAG,EAAE,UAAA,EAAY,WAAW;AAAA;AACrD,OACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAA,EACP,QAAA,EAAA;AAAA,IAAA,YAAA,KAAiB,IAAA,wBACf,IAAA,EAAA,EAAG,SAAA,EAAW,WAAW,IAAA,EAAM,SAAS,GAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IAEnD,YAAA,KAAiB,wBAChB,GAAA,CAAC,IAAA,EAAA,EAAG,WAAW,UAAA,CAAW,IAAA,EAAM,SAAS,CAAA,EAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IAEnD,YAAA,KAAiB,wBAChB,GAAA,CAAC,IAAA,EAAA,EAAG,WAAW,UAAA,CAAW,IAAA,EAAM,SAAS,CAAA,EAAI,QAAA,EAAA,IAAA,EAAK;AAAA,GAAA,EAEtD,CAAA;AAEJ","file":"HeadingReveal.mjs","sourcesContent":["\"use client\";\n\nimport { animate, stagger, anticipate } from \"motion\";\nimport { splitText } from \"motion-plus\";\nimport { useEffect, useRef } from \"react\";\nimport classNames from \"classnames\";\n\nexport type HeadingRevealProps = {\n text: string;\n headingLevel: \"h1\" | \"h2\" | \"h3\";\n className?: string;\n color?: string;\n cursorColor?: string;\n baseDelay?: number;\n splitBy?: \"words\" | \"chars\";\n speed?: number;\n};\nexport const HeadingReveal = ({\n text,\n headingLevel,\n className,\n color = \"#EFF1F6\",\n cursorColor = \"#00FFFF\",\n baseDelay = 0,\n splitBy = \"words\",\n speed = 0.25,\n}: HeadingRevealProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n document.fonts.ready.then(() => {\n if (!containerRef.current) return;\n\n // Hide the container until the fonts are loaded\n containerRef.current.style.visibility = \"visible\";\n\n const { words, chars } = splitText(\n containerRef.current.querySelector(headingLevel)!\n );\n\n // Animate the words in the h1\n animate(\n splitBy === \"words\" ? words : chars,\n {\n backgroundColor: [\n \"rgba(255,255,255,0)\",\n \"rgba(255,255,255,0)\",\n cursorColor,\n cursorColor,\n cursorColor,\n \"rgba(255,255,255,0)\",\n ],\n color: [\n \"rgba(255,255,255,0)\",\n \"rgba(255,255,255,0)\",\n cursorColor,\n cursorColor,\n cursorColor,\n color,\n ],\n },\n {\n ease: anticipate,\n duration: speed,\n delay: stagger(speed / 2, { startDelay: baseDelay }),\n }\n );\n });\n }, []);\n\n return (\n <div ref={containerRef}>\n {headingLevel === \"h1\" && (\n <h1 className={classNames(\"h1\", className)}>{text}</h1>\n )}\n {headingLevel === \"h2\" && (\n <h2 className={classNames(\"h2\", className)}>{text}</h2>\n )}\n {headingLevel === \"h3\" && (\n <h3 className={classNames(\"h3\", className)}>{text}</h3>\n )}\n </div>\n );\n};\n"]}
|
package/dist/Icon.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import 'react/jsx-runtime';
|
|
2
2
|
import './utils/colours.mjs';
|
|
3
|
-
export { I as Icon, b as IconComponents, c as IconName, a as IconProps, i as iconMetadata } from './
|
|
3
|
+
export { I as Icon, b as IconComponents, c as IconName, a as IconProps, i as iconMetadata } from './Icon-CTxwWbdC.mjs';
|
package/dist/Icon.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import 'react/jsx-runtime';
|
|
2
2
|
import './utils/colours.js';
|
|
3
|
-
export { I as Icon, b as IconComponents, c as IconName, a as IconProps, i as iconMetadata } from './
|
|
3
|
+
export { I as Icon, b as IconComponents, c as IconName, a as IconProps, i as iconMetadata } from './Icon-llWd6yMa.js';
|
package/dist/Input.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { MotionProps } from 'motion/react';
|
|
3
|
-
import { c as IconName } from './
|
|
3
|
+
import { c as IconName } from './Icon-CTxwWbdC.mjs';
|
|
4
4
|
import { BadgeProps } from './Badge.mjs';
|
|
5
5
|
import { TooltipProps } from './Tooltip.mjs';
|
|
6
6
|
import './utils/colours.mjs';
|
package/dist/Input.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { MotionProps } from 'motion/react';
|
|
3
|
-
import { c as IconName } from './
|
|
3
|
+
import { c as IconName } from './Icon-llWd6yMa.js';
|
|
4
4
|
import { BadgeProps } from './Badge.js';
|
|
5
5
|
import { TooltipProps } from './Tooltip.js';
|
|
6
6
|
import './utils/colours.js';
|
package/dist/Input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Input.tsx"],"names":["useState","jsxs","motion","classNames","jsx","Tooltip","Icon","CrosshairCorners","Badge","Button","AnimatePresence","crisp"],"mappings":"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","file":"Input.js","sourcesContent":["import { AnimatePresence, motion, MotionProps } from \"motion/react\";\nimport { Icon, IconName, IconProps } from \"./Icon\";\nimport classNames from \"classnames\";\nimport { Badge, BadgeProps } from \"./Badge\";\nimport { Button } from \"./Button\";\nimport { crisp } from \"./utils/easings\";\nimport { CrosshairCorners } from \"./CrossHair\";\nimport { Tooltip, TooltipProps } from \"./Tooltip\";\nimport { useState } from \"react\";\n\nexport type InputProps = {\n title: string;\n value: string;\n className?: string;\n onChange?: (value: string) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onClear?: () => void;\n badge?: BadgeProps;\n message?: string;\n hasMessage?: boolean;\n disabled?: boolean;\n placeholder?: string;\n isValid?: boolean;\n type?: \"generic\" | \"value\";\n balance?: {\n amount: string;\n unit: string;\n icon?: IconName;\n };\n action?: {\n label: string;\n onClick: () => void;\n };\n animation?: MotionProps;\n tooltip?: TooltipProps;\n};\n\nexport const Input = ({\n title,\n value,\n className,\n onChange,\n onFocus,\n onBlur,\n onClear,\n badge,\n type,\n message,\n hasMessage = true,\n disabled,\n placeholder,\n isValid = true,\n balance,\n action,\n animation,\n tooltip,\n}: InputProps) => {\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n return (\n <motion.div\n {...animation}\n className={classNames(\n \"flex flex-col gap-y-2.5 w-full relative group/input\",\n className\n )}\n >\n <div className=\"px-1 flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-x-1.5\">\n <span className=\"font-medium text-shade-primary leading-[100%]\">\n {title}\n </span>\n {tooltip && (\n <div\n className=\"h-[14px] w-[14px] relative\"\n onMouseEnter={() => setIsTooltipOpen(true)}\n onMouseLeave={() => setIsTooltipOpen(false)}\n >\n <Tooltip\n isOpen={isTooltipOpen}\n position={tooltip.position}\n description={tooltip.description}\n />\n <Icon name=\"Info\" size={14} className=\"text-shade-tertiary\" />\n </div>\n )}\n </div>\n {balance && (\n <div className=\"flex items-center gap-x-1.5\">\n <Icon\n name={balance.icon as IconName}\n size={12}\n className=\"text-shade-tertiary\"\n />\n <span className=\"font-medium text-shade-primary leading-[100%] text-sm font-mono\">\n {balance.amount} {balance.unit}\n </span>\n </div>\n )}\n </div>\n <div\n className={classNames(\n \"min-h-[44px] relative h-full py-1.5 flex items-center justify-between group/input bg-background border text-shade-tertiary border-border focus-within:border-current/20 focus-within:bg-current/2 focus-within:shadow-[inset_0px_0px_12px] focus-within:shadow-current/10 transition-colors duration-100 ease-crisp\",\n !isValid && \"border-state-error/20 text-state-error\",\n !!badge && \"pl-1.5 pr-[10px]\",\n !badge && \"pl-3 pr-4\"\n )}\n >\n {onFocus && (\n <div className=\"pointer-events-none absolute inset-1.5 text-shade-mute group-hover/input:text-shade-primary group-focus-within/input:inset-0.5 group-focus-within/input:text-shade-primary transition-all duration-50 ease-glide\">\n <CrosshairCorners\n size={6}\n variant=\"corners\"\n corners={[\"bottom-right\"]}\n animationDelay={0}\n animationDuration={0.75}\n />\n </div>\n )}\n <div\n className={classNames(\n \"flex w-full items-center gap-x-3 text-shade-primary\"\n )}\n >\n {badge && <Badge {...badge} />}\n <input\n className={classNames(\n \"h-full w-full flex-shrink font-medium focus:outline-none bg-transparent placeholder:text-shade-mute\",\n type === \"value\" && \"text-2xl font-mono text-right\",\n // Hide buttons\n \"[-moz-appearance:_textfield] [&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none\"\n )}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n disabled={disabled}\n type={type === \"value\" ? \"number\" : \"text\"}\n />\n {onClear && value && (\n <button\n onClick={onClear}\n className=\"absolute right-2 p-2 hover:bg-border-light/50 transition-colors duration-100 ease-crisp\"\n type=\"button\"\n >\n <Icon\n name=\"Close\"\n size={12}\n className=\"text-shade-tertiary hover:text-shade-primary transition-colors duration-100 ease-crisp\"\n />\n </button>\n )}\n {action && (\n <Button\n label={action.label}\n onClick={action.onClick}\n variant=\"secondary\"\n size=\"xs\"\n useHoverEffect={false}\n />\n )}\n </div>\n </div>\n {hasMessage && (\n <div className=\"h-[14px] ml-auto px-1\">\n <AnimatePresence>\n {message && (\n <motion.span\n initial={{ opacity: 0, filter: \"blur(4px)\" }}\n animate={{ opacity: 1, filter: \"blur(0px)\" }}\n exit={{ opacity: 0, filter: \"blur(4px)\" }}\n transition={{ duration: 0.1, ease: crisp }}\n className={classNames(\n \"text-sm text-shade-secondary font-medium leading-[100%]\",\n !isValid && \"text-state-error\"\n )}\n >\n {message}\n </motion.span>\n )}\n </AnimatePresence>\n </div>\n )}\n </motion.div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/Input.tsx"],"names":["useState","jsxs","motion","classNames","jsx","Tooltip","Icon","CrosshairCorners","Badge","Button","AnimatePresence","crisp"],"mappings":"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","file":"Input.js","sourcesContent":["\"use client\";\nimport { AnimatePresence, motion, MotionProps } from \"motion/react\";\nimport { Icon, IconName, IconProps } from \"./Icon\";\nimport classNames from \"classnames\";\nimport { Badge, BadgeProps } from \"./Badge\";\nimport { Button } from \"./Button\";\nimport { crisp } from \"./utils/easings\";\nimport { CrosshairCorners } from \"./CrossHair\";\nimport { Tooltip, TooltipProps } from \"./Tooltip\";\nimport { useState } from \"react\";\n\nexport type InputProps = {\n title: string;\n value: string;\n className?: string;\n onChange?: (value: string) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onClear?: () => void;\n badge?: BadgeProps;\n message?: string;\n hasMessage?: boolean;\n disabled?: boolean;\n placeholder?: string;\n isValid?: boolean;\n type?: \"generic\" | \"value\";\n balance?: {\n amount: string;\n unit: string;\n icon?: IconName;\n };\n action?: {\n label: string;\n onClick: () => void;\n };\n animation?: MotionProps;\n tooltip?: TooltipProps;\n};\n\nexport const Input = ({\n title,\n value,\n className,\n onChange,\n onFocus,\n onBlur,\n onClear,\n badge,\n type,\n message,\n hasMessage = true,\n disabled,\n placeholder,\n isValid = true,\n balance,\n action,\n animation,\n tooltip,\n}: InputProps) => {\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n return (\n <motion.div\n {...animation}\n className={classNames(\n \"flex flex-col gap-y-2.5 w-full relative group/input\",\n className\n )}\n >\n <div className=\"px-1 flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-x-1.5\">\n <span className=\"font-medium text-shade-primary leading-[100%]\">\n {title}\n </span>\n {tooltip && (\n <div\n className=\"h-[14px] w-[14px] relative\"\n onMouseEnter={() => setIsTooltipOpen(true)}\n onMouseLeave={() => setIsTooltipOpen(false)}\n >\n <Tooltip\n isOpen={isTooltipOpen}\n position={tooltip.position}\n description={tooltip.description}\n />\n <Icon name=\"Info\" size={14} className=\"text-shade-tertiary\" />\n </div>\n )}\n </div>\n {balance && (\n <div className=\"flex items-center gap-x-1.5\">\n <Icon\n name={balance.icon as IconName}\n size={12}\n className=\"text-shade-tertiary\"\n />\n <span className=\"font-medium text-shade-primary leading-[100%] text-sm font-mono\">\n {balance.amount} {balance.unit}\n </span>\n </div>\n )}\n </div>\n <div\n className={classNames(\n \"min-h-[44px] relative h-full py-1.5 flex items-center justify-between group/input bg-background border text-shade-tertiary border-border focus-within:border-current/20 focus-within:bg-current/2 focus-within:shadow-[inset_0px_0px_12px] focus-within:shadow-current/10 transition-colors duration-100 ease-crisp\",\n !isValid && \"border-state-error/20 text-state-error\",\n !!badge && \"pl-1.5 pr-[10px]\",\n !badge && \"pl-3 pr-4\"\n )}\n >\n {onFocus && (\n <div className=\"pointer-events-none absolute inset-1.5 text-shade-mute group-hover/input:text-shade-primary group-focus-within/input:inset-0.5 group-focus-within/input:text-shade-primary transition-all duration-50 ease-glide\">\n <CrosshairCorners\n size={6}\n variant=\"corners\"\n corners={[\"bottom-right\"]}\n animationDelay={0}\n animationDuration={0.75}\n />\n </div>\n )}\n <div\n className={classNames(\n \"flex w-full items-center gap-x-3 text-shade-primary\"\n )}\n >\n {badge && <Badge {...badge} />}\n <input\n className={classNames(\n \"h-full w-full flex-shrink font-medium focus:outline-none bg-transparent placeholder:text-shade-mute\",\n type === \"value\" && \"text-2xl font-mono text-right\",\n // Hide buttons\n \"[-moz-appearance:_textfield] [&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none\"\n )}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n disabled={disabled}\n type={type === \"value\" ? \"number\" : \"text\"}\n />\n {onClear && value && (\n <button\n onClick={onClear}\n className=\"absolute right-2 p-2 hover:bg-border-light/50 transition-colors duration-100 ease-crisp\"\n type=\"button\"\n >\n <Icon\n name=\"Close\"\n size={12}\n className=\"text-shade-tertiary hover:text-shade-primary transition-colors duration-100 ease-crisp\"\n />\n </button>\n )}\n {action && (\n <Button\n label={action.label}\n onClick={action.onClick}\n variant=\"secondary\"\n size=\"xs\"\n useHoverEffect={false}\n />\n )}\n </div>\n </div>\n {hasMessage && (\n <div className=\"h-[14px] ml-auto px-1\">\n <AnimatePresence>\n {message && (\n <motion.span\n initial={{ opacity: 0, filter: \"blur(4px)\" }}\n animate={{ opacity: 1, filter: \"blur(0px)\" }}\n exit={{ opacity: 0, filter: \"blur(4px)\" }}\n transition={{ duration: 0.1, ease: crisp }}\n className={classNames(\n \"text-sm text-shade-secondary font-medium leading-[100%]\",\n !isValid && \"text-state-error\"\n )}\n >\n {message}\n </motion.span>\n )}\n </AnimatePresence>\n </div>\n )}\n </motion.div>\n );\n};\n"]}
|
package/dist/Input.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Input.tsx"],"names":[],"mappings":"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","file":"Input.mjs","sourcesContent":["import { AnimatePresence, motion, MotionProps } from \"motion/react\";\nimport { Icon, IconName, IconProps } from \"./Icon\";\nimport classNames from \"classnames\";\nimport { Badge, BadgeProps } from \"./Badge\";\nimport { Button } from \"./Button\";\nimport { crisp } from \"./utils/easings\";\nimport { CrosshairCorners } from \"./CrossHair\";\nimport { Tooltip, TooltipProps } from \"./Tooltip\";\nimport { useState } from \"react\";\n\nexport type InputProps = {\n title: string;\n value: string;\n className?: string;\n onChange?: (value: string) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onClear?: () => void;\n badge?: BadgeProps;\n message?: string;\n hasMessage?: boolean;\n disabled?: boolean;\n placeholder?: string;\n isValid?: boolean;\n type?: \"generic\" | \"value\";\n balance?: {\n amount: string;\n unit: string;\n icon?: IconName;\n };\n action?: {\n label: string;\n onClick: () => void;\n };\n animation?: MotionProps;\n tooltip?: TooltipProps;\n};\n\nexport const Input = ({\n title,\n value,\n className,\n onChange,\n onFocus,\n onBlur,\n onClear,\n badge,\n type,\n message,\n hasMessage = true,\n disabled,\n placeholder,\n isValid = true,\n balance,\n action,\n animation,\n tooltip,\n}: InputProps) => {\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n return (\n <motion.div\n {...animation}\n className={classNames(\n \"flex flex-col gap-y-2.5 w-full relative group/input\",\n className\n )}\n >\n <div className=\"px-1 flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-x-1.5\">\n <span className=\"font-medium text-shade-primary leading-[100%]\">\n {title}\n </span>\n {tooltip && (\n <div\n className=\"h-[14px] w-[14px] relative\"\n onMouseEnter={() => setIsTooltipOpen(true)}\n onMouseLeave={() => setIsTooltipOpen(false)}\n >\n <Tooltip\n isOpen={isTooltipOpen}\n position={tooltip.position}\n description={tooltip.description}\n />\n <Icon name=\"Info\" size={14} className=\"text-shade-tertiary\" />\n </div>\n )}\n </div>\n {balance && (\n <div className=\"flex items-center gap-x-1.5\">\n <Icon\n name={balance.icon as IconName}\n size={12}\n className=\"text-shade-tertiary\"\n />\n <span className=\"font-medium text-shade-primary leading-[100%] text-sm font-mono\">\n {balance.amount} {balance.unit}\n </span>\n </div>\n )}\n </div>\n <div\n className={classNames(\n \"min-h-[44px] relative h-full py-1.5 flex items-center justify-between group/input bg-background border text-shade-tertiary border-border focus-within:border-current/20 focus-within:bg-current/2 focus-within:shadow-[inset_0px_0px_12px] focus-within:shadow-current/10 transition-colors duration-100 ease-crisp\",\n !isValid && \"border-state-error/20 text-state-error\",\n !!badge && \"pl-1.5 pr-[10px]\",\n !badge && \"pl-3 pr-4\"\n )}\n >\n {onFocus && (\n <div className=\"pointer-events-none absolute inset-1.5 text-shade-mute group-hover/input:text-shade-primary group-focus-within/input:inset-0.5 group-focus-within/input:text-shade-primary transition-all duration-50 ease-glide\">\n <CrosshairCorners\n size={6}\n variant=\"corners\"\n corners={[\"bottom-right\"]}\n animationDelay={0}\n animationDuration={0.75}\n />\n </div>\n )}\n <div\n className={classNames(\n \"flex w-full items-center gap-x-3 text-shade-primary\"\n )}\n >\n {badge && <Badge {...badge} />}\n <input\n className={classNames(\n \"h-full w-full flex-shrink font-medium focus:outline-none bg-transparent placeholder:text-shade-mute\",\n type === \"value\" && \"text-2xl font-mono text-right\",\n // Hide buttons\n \"[-moz-appearance:_textfield] [&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none\"\n )}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n disabled={disabled}\n type={type === \"value\" ? \"number\" : \"text\"}\n />\n {onClear && value && (\n <button\n onClick={onClear}\n className=\"absolute right-2 p-2 hover:bg-border-light/50 transition-colors duration-100 ease-crisp\"\n type=\"button\"\n >\n <Icon\n name=\"Close\"\n size={12}\n className=\"text-shade-tertiary hover:text-shade-primary transition-colors duration-100 ease-crisp\"\n />\n </button>\n )}\n {action && (\n <Button\n label={action.label}\n onClick={action.onClick}\n variant=\"secondary\"\n size=\"xs\"\n useHoverEffect={false}\n />\n )}\n </div>\n </div>\n {hasMessage && (\n <div className=\"h-[14px] ml-auto px-1\">\n <AnimatePresence>\n {message && (\n <motion.span\n initial={{ opacity: 0, filter: \"blur(4px)\" }}\n animate={{ opacity: 1, filter: \"blur(0px)\" }}\n exit={{ opacity: 0, filter: \"blur(4px)\" }}\n transition={{ duration: 0.1, ease: crisp }}\n className={classNames(\n \"text-sm text-shade-secondary font-medium leading-[100%]\",\n !isValid && \"text-state-error\"\n )}\n >\n {message}\n </motion.span>\n )}\n </AnimatePresence>\n </div>\n )}\n </motion.div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/Input.tsx"],"names":[],"mappings":"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","file":"Input.mjs","sourcesContent":["\"use client\";\nimport { AnimatePresence, motion, MotionProps } from \"motion/react\";\nimport { Icon, IconName, IconProps } from \"./Icon\";\nimport classNames from \"classnames\";\nimport { Badge, BadgeProps } from \"./Badge\";\nimport { Button } from \"./Button\";\nimport { crisp } from \"./utils/easings\";\nimport { CrosshairCorners } from \"./CrossHair\";\nimport { Tooltip, TooltipProps } from \"./Tooltip\";\nimport { useState } from \"react\";\n\nexport type InputProps = {\n title: string;\n value: string;\n className?: string;\n onChange?: (value: string) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n onClear?: () => void;\n badge?: BadgeProps;\n message?: string;\n hasMessage?: boolean;\n disabled?: boolean;\n placeholder?: string;\n isValid?: boolean;\n type?: \"generic\" | \"value\";\n balance?: {\n amount: string;\n unit: string;\n icon?: IconName;\n };\n action?: {\n label: string;\n onClick: () => void;\n };\n animation?: MotionProps;\n tooltip?: TooltipProps;\n};\n\nexport const Input = ({\n title,\n value,\n className,\n onChange,\n onFocus,\n onBlur,\n onClear,\n badge,\n type,\n message,\n hasMessage = true,\n disabled,\n placeholder,\n isValid = true,\n balance,\n action,\n animation,\n tooltip,\n}: InputProps) => {\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n return (\n <motion.div\n {...animation}\n className={classNames(\n \"flex flex-col gap-y-2.5 w-full relative group/input\",\n className\n )}\n >\n <div className=\"px-1 flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-x-1.5\">\n <span className=\"font-medium text-shade-primary leading-[100%]\">\n {title}\n </span>\n {tooltip && (\n <div\n className=\"h-[14px] w-[14px] relative\"\n onMouseEnter={() => setIsTooltipOpen(true)}\n onMouseLeave={() => setIsTooltipOpen(false)}\n >\n <Tooltip\n isOpen={isTooltipOpen}\n position={tooltip.position}\n description={tooltip.description}\n />\n <Icon name=\"Info\" size={14} className=\"text-shade-tertiary\" />\n </div>\n )}\n </div>\n {balance && (\n <div className=\"flex items-center gap-x-1.5\">\n <Icon\n name={balance.icon as IconName}\n size={12}\n className=\"text-shade-tertiary\"\n />\n <span className=\"font-medium text-shade-primary leading-[100%] text-sm font-mono\">\n {balance.amount} {balance.unit}\n </span>\n </div>\n )}\n </div>\n <div\n className={classNames(\n \"min-h-[44px] relative h-full py-1.5 flex items-center justify-between group/input bg-background border text-shade-tertiary border-border focus-within:border-current/20 focus-within:bg-current/2 focus-within:shadow-[inset_0px_0px_12px] focus-within:shadow-current/10 transition-colors duration-100 ease-crisp\",\n !isValid && \"border-state-error/20 text-state-error\",\n !!badge && \"pl-1.5 pr-[10px]\",\n !badge && \"pl-3 pr-4\"\n )}\n >\n {onFocus && (\n <div className=\"pointer-events-none absolute inset-1.5 text-shade-mute group-hover/input:text-shade-primary group-focus-within/input:inset-0.5 group-focus-within/input:text-shade-primary transition-all duration-50 ease-glide\">\n <CrosshairCorners\n size={6}\n variant=\"corners\"\n corners={[\"bottom-right\"]}\n animationDelay={0}\n animationDuration={0.75}\n />\n </div>\n )}\n <div\n className={classNames(\n \"flex w-full items-center gap-x-3 text-shade-primary\"\n )}\n >\n {badge && <Badge {...badge} />}\n <input\n className={classNames(\n \"h-full w-full flex-shrink font-medium focus:outline-none bg-transparent placeholder:text-shade-mute\",\n type === \"value\" && \"text-2xl font-mono text-right\",\n // Hide buttons\n \"[-moz-appearance:_textfield] [&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none\"\n )}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n disabled={disabled}\n type={type === \"value\" ? \"number\" : \"text\"}\n />\n {onClear && value && (\n <button\n onClick={onClear}\n className=\"absolute right-2 p-2 hover:bg-border-light/50 transition-colors duration-100 ease-crisp\"\n type=\"button\"\n >\n <Icon\n name=\"Close\"\n size={12}\n className=\"text-shade-tertiary hover:text-shade-primary transition-colors duration-100 ease-crisp\"\n />\n </button>\n )}\n {action && (\n <Button\n label={action.label}\n onClick={action.onClick}\n variant=\"secondary\"\n size=\"xs\"\n useHoverEffect={false}\n />\n )}\n </div>\n </div>\n {hasMessage && (\n <div className=\"h-[14px] ml-auto px-1\">\n <AnimatePresence>\n {message && (\n <motion.span\n initial={{ opacity: 0, filter: \"blur(4px)\" }}\n animate={{ opacity: 1, filter: \"blur(0px)\" }}\n exit={{ opacity: 0, filter: \"blur(4px)\" }}\n transition={{ duration: 0.1, ease: crisp }}\n className={classNames(\n \"text-sm text-shade-secondary font-medium leading-[100%]\",\n !isValid && \"text-state-error\"\n )}\n >\n {message}\n </motion.span>\n )}\n </AnimatePresence>\n </div>\n )}\n </motion.div>\n );\n};\n"]}
|
package/dist/Logo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Logo.tsx"],"names":["nova","jsxs","motion","classNames","jsx","AnimatePresence","glide"],"mappings":"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","file":"Logo.js","sourcesContent":["import { AnimatePresence, motion } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { crisp, glide, nova } from \"./utils/easings\";\n\nexport type LogoProps = {\n width?: number;\n height?: number;\n hideText?: boolean;\n isScrolled?: boolean;\n};\n\nexport const Logo = ({\n width = 144,\n height = 20,\n hideText = false,\n isScrolled = false,\n}: LogoProps) => {\n function getAnimation(delay: number) {\n return {\n initial: { opacity: 0 },\n animate: { opacity: [0, 0.25, 0.5, 1, 0.75, 1] },\n transition: { duration: 0.3, delay: delay * 0.4, ease: nova },\n };\n }\n\n return (\n <motion.svg\n width={width}\n height={height}\n viewBox=\"0 0 144 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={classNames(\n \"relative z-10\",\n isScrolled && \"h-full\",\n \"overflow-visible\"\n )}\n key={isScrolled ? \"scrolled\" : \"no-scroll\"}\n >\n <defs>\n <AnimatePresence mode=\"popLayout\">\n {hideText && (\n <clipPath id=\"text-clip\">\n <motion.rect\n x=\"28\"\n y=\"0\"\n height=\"20\"\n initial={{ width: 116 }}\n animate={{ width: hideText ? 0 : 116 }}\n transition={{ duration: 0.15, ease: glide }}\n />\n </clipPath>\n )}\n </AnimatePresence>\n </defs>\n <motion.path\n d=\"M4 4.00013H0V0.000131835H4V4.00013Z\"\n fill=\"#00FFFF\"\n id=\"1\"\n {...getAnimation(0)}\n />\n <motion.path\n d=\"M15.9997 4H11.9997V0H15.9997V4Z\"\n fill=\"#00FFFF\"\n id=\"2\"\n {...getAnimation(0.6)}\n />\n <motion.path\n d=\"M7.99987 8.00013H4V4.00013H7.99987V8.00013Z\"\n fill=\"#00FFFF\"\n id=\"3\"\n {...getAnimation(0.9)}\n />\n <motion.path\n d=\"M19.9996 7.99987H15.9997V4H19.9997L19.9996 7.99987Z\"\n fill=\"#00FFFF\"\n id=\"4\"\n {...getAnimation(0.3)}\n />\n <motion.path\n d=\"M11.9999 12H7.99987V8.00013H11.9999V12Z\"\n fill=\"#00FFFF\"\n id=\"5\"\n {...getAnimation(0.2)}\n />\n <motion.path\n d=\"M23.9996 11.9999H19.9997L19.9996 7.99987H23.9996V11.9999Z\"\n fill=\"#00FFFF\"\n id=\"6\"\n {...getAnimation(0.1)}\n />\n <motion.path\n d=\"M7.99987 16H4V12H7.99987V16Z\"\n fill=\"#00FFFF\"\n id=\"7\"\n {...getAnimation(0.5)}\n />\n <motion.path\n d=\"M19.9997 15.9999H15.9997V11.9999H19.9997V15.9999Z\"\n fill=\"#00FFFF\"\n id=\"8\"\n {...getAnimation(0.7)}\n />\n <motion.path\n d=\"M4 20H0V16H4V20Z\"\n fill=\"#00FFFF\"\n id=\"9\"\n {...getAnimation(0.4)}\n />\n <motion.path\n d=\"M15.9997 19.9999H11.9997V15.9999H15.9997V19.9999Z\"\n fill=\"#00FFFF\"\n id=\"10\"\n {...getAnimation(0.6)}\n />\n <motion.path\n d=\"M42.3 6.06C41.3333 5.44667 40.1666 5.14667 38.8 5.14667C37.72 5.14667 36.7933 5.34667 36.0133 5.75333C35.2333 6.16 34.6333 6.74 34.2066 7.50667H34.1133V0H30.5666V16.1667H28.8066V20H32.4466V17.4267H33.4466C33.94 18.2533 34.6066 18.8867 35.4466 19.3333C36.2866 19.78 37.3066 20 38.4933 20C39.9666 20 41.2133 19.6933 42.22 19.0867C43.2266 18.4733 43.9933 17.6133 44.52 16.4933C45.0466 15.3733 45.3066 14.0667 45.3066 12.5733C45.3066 11.08 45.0466 9.75333 44.5333 8.64667C44.02 7.53333 43.2733 6.67333 42.3066 6.06667L42.3 6.06ZM40.7666 15.7733C40.1066 16.54 39.1333 16.9267 37.8466 16.9267C36.72 16.9267 35.8133 16.6067 35.1333 15.96C34.4533 15.32 34.1066 14.44 34.1066 13.3267V11.8C34.1066 10.6867 34.4466 9.81333 35.1333 9.16667C35.8133 8.52667 36.72 8.2 37.8466 8.2C39.1333 8.2 40.1066 8.58667 40.7666 9.35333C41.4266 10.1267 41.7533 11.1933 41.7533 12.5533C41.7533 13.9133 41.4266 14.9867 40.7666 15.7533V15.7733ZM47.5 0H51.0466V20H47.5V0ZM67.5933 5.45333H64.0466V13.4067C64.0466 14.5 63.7266 15.3533 63.0933 15.9533C62.46 16.5533 61.5466 16.86 60.3533 16.86C59.2266 16.86 58.38 16.58 57.8066 16.0133C57.2333 15.4467 56.9466 14.6133 56.9466 13.5V5.45333H53.4V14.2133C53.4 15.9933 53.9266 17.4 54.98 18.44C56.0333 19.48 57.54 20 59.4933 20C60.76 20 61.8133 19.78 62.6466 19.3467C63.48 18.9133 64.1733 18.28 64.7333 17.4533H65.7333V20H69.3733V16.1933H67.5866V5.45333H67.5933ZM80.94 5.98667C79.8933 5.42667 78.64 5.14 77.18 5.14C75.72 5.14 74.3866 5.44 73.2733 6.03333C72.16 6.62667 71.3066 7.48 70.7 8.58C70.0933 9.68 69.7933 11 69.7933 12.52C69.7933 14.04 70.1 15.3667 70.7066 16.4867C71.32 17.6067 72.1866 18.4733 73.3133 19.08C74.44 19.6933 75.7733 19.9933 77.3133 19.9933C79.14 19.9933 80.6466 19.5667 81.8466 18.72C83.0466 17.8733 83.8133 16.6933 84.1466 15.1867H80.5733C80.3533 15.84 79.9666 16.3267 79.42 16.6533C78.8733 16.98 78.16 17.14 77.2866 17.14C76.1133 17.14 75.1733 16.82 74.4666 16.1733C73.76 15.5333 73.34 14.6067 73.2133 13.4H84.2133V12.16C84.2133 10.7133 83.9266 9.46667 83.3533 8.41333C82.78 7.36 81.9733 6.54667 80.9266 5.98667H80.94ZM73.3 11C73.52 10.0333 73.9666 9.28667 74.6333 8.76C75.3 8.23333 76.1466 7.97333 77.18 7.97333C78.2133 7.97333 79.06 8.23333 79.68 8.74667C80.3 9.26 80.68 10.0133 80.82 11H73.2933H73.3ZM94.96 11.2867L91.7466 10.6667C91.16 10.5533 90.7333 10.3867 90.46 10.1667C90.1933 9.94667 90.0533 9.65333 90.0533 9.28667C90.0533 8.79333 90.2666 8.42 90.6933 8.16667C91.12 7.91333 91.74 7.78667 92.5533 7.78667C93.46 7.78667 94.1533 7.94667 94.64 8.27333C95.1266 8.6 95.4533 9.12 95.6266 9.83333H99.0533C98.9266 8.34 98.3133 7.18667 97.2066 6.36667C96.1 5.54667 94.6133 5.14 92.74 5.14C90.8666 5.14 89.4 5.54 88.3333 6.34C87.2666 7.14 86.74 8.22 86.74 9.56667C86.74 11.66 88.14 12.98 90.9333 13.52L94.0733 14.1133C94.7266 14.24 95.1866 14.42 95.4666 14.66C95.7466 14.9 95.88 15.2333 95.88 15.66C95.88 16.7267 94.9666 17.2533 93.14 17.2533C92.06 17.2533 91.2333 17.0733 90.6666 16.72C90.0933 16.36 89.7533 15.8133 89.64 15.0667H86.1866C86.28 16.62 86.9266 17.8333 88.1133 18.7C89.3066 19.5667 90.9333 20 92.9933 20C95.0533 20 96.5266 19.5933 97.5866 18.7867C98.6533 17.98 99.18 16.8533 99.18 15.4067C99.18 14.28 98.84 13.38 98.1533 12.7133C97.4733 12.0467 96.4 11.5733 94.94 11.2867H94.96ZM109.533 5.45333C108.453 5.45333 107.52 5.65333 106.727 6.06C105.933 6.46667 105.307 7.05333 104.847 7.83333H104.753V0H101.207V20H104.753V12.0467C104.753 10.92 105.053 10.06 105.66 9.47333C106.26 8.88667 107.147 8.59333 108.3 8.59333C109.453 8.59333 110.34 8.88667 110.94 9.47333C111.54 10.06 111.847 10.92 111.847 12.0467V20H115.393V11.38C115.393 9.58667 114.867 8.15333 113.813 7.07333C112.76 5.99333 111.333 5.45333 109.54 5.45333H109.533ZM119.2 0.14C118.647 0.14 118.173 0.333333 117.787 0.726667C117.4 1.11333 117.2 1.58667 117.2 2.14667C117.2 2.70667 117.393 3.17333 117.787 3.56667C118.173 3.95333 118.647 4.14667 119.2 4.14667C119.753 4.14667 120.227 3.95333 120.613 3.56667C121 3.18 121.2 2.70667 121.2 2.14667C121.2 1.58667 121.007 1.12 120.613 0.726667C120.227 0.34 119.753 0.14 119.2 0.14ZM117.44 5.71333H120.987V20H117.44V5.71333ZM126.287 0.713333C125.753 1.18667 125.487 1.92667 125.487 2.92667V5.71333H122.793V8.47333H125.46V20H129.007V8.47333H132.267V5.71333H128.96V2.76H132.553V0H128.507C127.553 0 126.813 0.24 126.28 0.713333H126.287ZM140.267 17.22V8.49333H143.667V5.73333H140.22V1.44667H136.747V5.72667H134.2V8.48667H136.72V17.12C136.72 18.0867 136.98 18.8067 137.493 19.2867C138.007 19.76 138.733 20 139.667 20H143.993V17.22H140.26H140.267Z\"\n fill=\"#EFF1F6\"\n clipPath=\"url(#text-clip)\"\n />\n </motion.svg>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/Logo.tsx"],"names":["nova","jsxs","motion","classNames","jsx","AnimatePresence","glide"],"mappings":"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","file":"Logo.js","sourcesContent":["\"use client\";\n\nimport { AnimatePresence, motion } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { crisp, glide, nova } from \"./utils/easings\";\n\nexport type LogoProps = {\n width?: number;\n height?: number;\n hideText?: boolean;\n isScrolled?: boolean;\n};\n\nexport const Logo = ({\n width = 144,\n height = 20,\n hideText = false,\n isScrolled = false,\n}: LogoProps) => {\n function getAnimation(delay: number) {\n return {\n initial: { opacity: 0 },\n animate: { opacity: [0, 0.25, 0.5, 1, 0.75, 1] },\n transition: { duration: 0.3, delay: delay * 0.4, ease: nova },\n };\n }\n\n return (\n <motion.svg\n width={width}\n height={height}\n viewBox=\"0 0 144 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={classNames(\n \"relative z-10\",\n isScrolled && \"h-full\",\n \"overflow-visible\"\n )}\n key={isScrolled ? \"scrolled\" : \"no-scroll\"}\n >\n <defs>\n <AnimatePresence mode=\"popLayout\">\n {hideText && (\n <clipPath id=\"text-clip\">\n <motion.rect\n x=\"28\"\n y=\"0\"\n height=\"20\"\n initial={{ width: 116 }}\n animate={{ width: hideText ? 0 : 116 }}\n transition={{ duration: 0.15, ease: glide }}\n />\n </clipPath>\n )}\n </AnimatePresence>\n </defs>\n <motion.path\n d=\"M4 4.00013H0V0.000131835H4V4.00013Z\"\n fill=\"#00FFFF\"\n id=\"1\"\n {...getAnimation(0)}\n />\n <motion.path\n d=\"M15.9997 4H11.9997V0H15.9997V4Z\"\n fill=\"#00FFFF\"\n id=\"2\"\n {...getAnimation(0.6)}\n />\n <motion.path\n d=\"M7.99987 8.00013H4V4.00013H7.99987V8.00013Z\"\n fill=\"#00FFFF\"\n id=\"3\"\n {...getAnimation(0.9)}\n />\n <motion.path\n d=\"M19.9996 7.99987H15.9997V4H19.9997L19.9996 7.99987Z\"\n fill=\"#00FFFF\"\n id=\"4\"\n {...getAnimation(0.3)}\n />\n <motion.path\n d=\"M11.9999 12H7.99987V8.00013H11.9999V12Z\"\n fill=\"#00FFFF\"\n id=\"5\"\n {...getAnimation(0.2)}\n />\n <motion.path\n d=\"M23.9996 11.9999H19.9997L19.9996 7.99987H23.9996V11.9999Z\"\n fill=\"#00FFFF\"\n id=\"6\"\n {...getAnimation(0.1)}\n />\n <motion.path\n d=\"M7.99987 16H4V12H7.99987V16Z\"\n fill=\"#00FFFF\"\n id=\"7\"\n {...getAnimation(0.5)}\n />\n <motion.path\n d=\"M19.9997 15.9999H15.9997V11.9999H19.9997V15.9999Z\"\n fill=\"#00FFFF\"\n id=\"8\"\n {...getAnimation(0.7)}\n />\n <motion.path\n d=\"M4 20H0V16H4V20Z\"\n fill=\"#00FFFF\"\n id=\"9\"\n {...getAnimation(0.4)}\n />\n <motion.path\n d=\"M15.9997 19.9999H11.9997V15.9999H15.9997V19.9999Z\"\n fill=\"#00FFFF\"\n id=\"10\"\n {...getAnimation(0.6)}\n />\n <motion.path\n d=\"M42.3 6.06C41.3333 5.44667 40.1666 5.14667 38.8 5.14667C37.72 5.14667 36.7933 5.34667 36.0133 5.75333C35.2333 6.16 34.6333 6.74 34.2066 7.50667H34.1133V0H30.5666V16.1667H28.8066V20H32.4466V17.4267H33.4466C33.94 18.2533 34.6066 18.8867 35.4466 19.3333C36.2866 19.78 37.3066 20 38.4933 20C39.9666 20 41.2133 19.6933 42.22 19.0867C43.2266 18.4733 43.9933 17.6133 44.52 16.4933C45.0466 15.3733 45.3066 14.0667 45.3066 12.5733C45.3066 11.08 45.0466 9.75333 44.5333 8.64667C44.02 7.53333 43.2733 6.67333 42.3066 6.06667L42.3 6.06ZM40.7666 15.7733C40.1066 16.54 39.1333 16.9267 37.8466 16.9267C36.72 16.9267 35.8133 16.6067 35.1333 15.96C34.4533 15.32 34.1066 14.44 34.1066 13.3267V11.8C34.1066 10.6867 34.4466 9.81333 35.1333 9.16667C35.8133 8.52667 36.72 8.2 37.8466 8.2C39.1333 8.2 40.1066 8.58667 40.7666 9.35333C41.4266 10.1267 41.7533 11.1933 41.7533 12.5533C41.7533 13.9133 41.4266 14.9867 40.7666 15.7533V15.7733ZM47.5 0H51.0466V20H47.5V0ZM67.5933 5.45333H64.0466V13.4067C64.0466 14.5 63.7266 15.3533 63.0933 15.9533C62.46 16.5533 61.5466 16.86 60.3533 16.86C59.2266 16.86 58.38 16.58 57.8066 16.0133C57.2333 15.4467 56.9466 14.6133 56.9466 13.5V5.45333H53.4V14.2133C53.4 15.9933 53.9266 17.4 54.98 18.44C56.0333 19.48 57.54 20 59.4933 20C60.76 20 61.8133 19.78 62.6466 19.3467C63.48 18.9133 64.1733 18.28 64.7333 17.4533H65.7333V20H69.3733V16.1933H67.5866V5.45333H67.5933ZM80.94 5.98667C79.8933 5.42667 78.64 5.14 77.18 5.14C75.72 5.14 74.3866 5.44 73.2733 6.03333C72.16 6.62667 71.3066 7.48 70.7 8.58C70.0933 9.68 69.7933 11 69.7933 12.52C69.7933 14.04 70.1 15.3667 70.7066 16.4867C71.32 17.6067 72.1866 18.4733 73.3133 19.08C74.44 19.6933 75.7733 19.9933 77.3133 19.9933C79.14 19.9933 80.6466 19.5667 81.8466 18.72C83.0466 17.8733 83.8133 16.6933 84.1466 15.1867H80.5733C80.3533 15.84 79.9666 16.3267 79.42 16.6533C78.8733 16.98 78.16 17.14 77.2866 17.14C76.1133 17.14 75.1733 16.82 74.4666 16.1733C73.76 15.5333 73.34 14.6067 73.2133 13.4H84.2133V12.16C84.2133 10.7133 83.9266 9.46667 83.3533 8.41333C82.78 7.36 81.9733 6.54667 80.9266 5.98667H80.94ZM73.3 11C73.52 10.0333 73.9666 9.28667 74.6333 8.76C75.3 8.23333 76.1466 7.97333 77.18 7.97333C78.2133 7.97333 79.06 8.23333 79.68 8.74667C80.3 9.26 80.68 10.0133 80.82 11H73.2933H73.3ZM94.96 11.2867L91.7466 10.6667C91.16 10.5533 90.7333 10.3867 90.46 10.1667C90.1933 9.94667 90.0533 9.65333 90.0533 9.28667C90.0533 8.79333 90.2666 8.42 90.6933 8.16667C91.12 7.91333 91.74 7.78667 92.5533 7.78667C93.46 7.78667 94.1533 7.94667 94.64 8.27333C95.1266 8.6 95.4533 9.12 95.6266 9.83333H99.0533C98.9266 8.34 98.3133 7.18667 97.2066 6.36667C96.1 5.54667 94.6133 5.14 92.74 5.14C90.8666 5.14 89.4 5.54 88.3333 6.34C87.2666 7.14 86.74 8.22 86.74 9.56667C86.74 11.66 88.14 12.98 90.9333 13.52L94.0733 14.1133C94.7266 14.24 95.1866 14.42 95.4666 14.66C95.7466 14.9 95.88 15.2333 95.88 15.66C95.88 16.7267 94.9666 17.2533 93.14 17.2533C92.06 17.2533 91.2333 17.0733 90.6666 16.72C90.0933 16.36 89.7533 15.8133 89.64 15.0667H86.1866C86.28 16.62 86.9266 17.8333 88.1133 18.7C89.3066 19.5667 90.9333 20 92.9933 20C95.0533 20 96.5266 19.5933 97.5866 18.7867C98.6533 17.98 99.18 16.8533 99.18 15.4067C99.18 14.28 98.84 13.38 98.1533 12.7133C97.4733 12.0467 96.4 11.5733 94.94 11.2867H94.96ZM109.533 5.45333C108.453 5.45333 107.52 5.65333 106.727 6.06C105.933 6.46667 105.307 7.05333 104.847 7.83333H104.753V0H101.207V20H104.753V12.0467C104.753 10.92 105.053 10.06 105.66 9.47333C106.26 8.88667 107.147 8.59333 108.3 8.59333C109.453 8.59333 110.34 8.88667 110.94 9.47333C111.54 10.06 111.847 10.92 111.847 12.0467V20H115.393V11.38C115.393 9.58667 114.867 8.15333 113.813 7.07333C112.76 5.99333 111.333 5.45333 109.54 5.45333H109.533ZM119.2 0.14C118.647 0.14 118.173 0.333333 117.787 0.726667C117.4 1.11333 117.2 1.58667 117.2 2.14667C117.2 2.70667 117.393 3.17333 117.787 3.56667C118.173 3.95333 118.647 4.14667 119.2 4.14667C119.753 4.14667 120.227 3.95333 120.613 3.56667C121 3.18 121.2 2.70667 121.2 2.14667C121.2 1.58667 121.007 1.12 120.613 0.726667C120.227 0.34 119.753 0.14 119.2 0.14ZM117.44 5.71333H120.987V20H117.44V5.71333ZM126.287 0.713333C125.753 1.18667 125.487 1.92667 125.487 2.92667V5.71333H122.793V8.47333H125.46V20H129.007V8.47333H132.267V5.71333H128.96V2.76H132.553V0H128.507C127.553 0 126.813 0.24 126.28 0.713333H126.287ZM140.267 17.22V8.49333H143.667V5.73333H140.22V1.44667H136.747V5.72667H134.2V8.48667H136.72V17.12C136.72 18.0867 136.98 18.8067 137.493 19.2867C138.007 19.76 138.733 20 139.667 20H143.993V17.22H140.26H140.267Z\"\n fill=\"#EFF1F6\"\n clipPath=\"url(#text-clip)\"\n />\n </motion.svg>\n );\n};\n"]}
|