@blockbite/ui 2.0.21 → 2.0.23
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/AutocompleteDropdown.d.ts +2 -2
- package/dist/ButtonToggle.d.ts +8 -4
- package/dist/DropdownPicker.d.ts +4 -2
- package/dist/FocalPointControl.d.ts +1 -1
- package/dist/Icon.d.ts +2 -2
- package/dist/MetricsControl.d.ts +2 -2
- package/dist/RangeSlider.d.ts +1 -1
- package/dist/SelectControlWrapper.d.ts +2 -2
- package/dist/ToggleGroup.d.ts +1 -1
- package/dist/index.js +695 -597
- package/dist/index.js.map +1 -1
- package/dist/ui.css +1 -1
- package/package.json +10 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/Wrap.tsx","../src/Icon.tsx","../src/ButtonToggle.tsx","../src/AutocompleteDropdown.tsx","../src/Badge.tsx","../src/BitePreview.tsx","../src/Button.tsx","../src/Chapter.tsx","../src/ChapterDivider.tsx","../src/Checkbox.tsx","../../icons/dist/jsx/ChevronDown.js","../../icons/dist/jsx/ColumnSpacing.js","../../icons/dist/jsx/Cross2.js","../../icons/dist/jsx/Desktop.js","../../icons/dist/jsx/Grid.js","../../icons/dist/jsx/Pencil1.js","../../icons/dist/jsx/Percentage.js","../../icons/dist/jsx/Plus.js","../../icons/dist/jsx/Slider.js","../../icons/dist/jsx/Tailwind.js","../../icons/dist/jsx/Trash.js","../src/TextControl.tsx","../src/DataItemList.tsx","../src/DisappearingMessage.tsx","../src/DropdownPicker.tsx","../src/EmptyState.tsx","../src/FloatingPanel.tsx","../src/FocalPointControl.tsx","../src/LinkPicker.tsx","../src/MediaPicker.tsx","../src/Popover.tsx","../src/RangeSlider.tsx","../src/MetricsControl.tsx","../src/Modal.tsx","../src/NewWindowPortal.tsx","../src/Notice.tsx","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/@wordpress+primitives@4.25.0_react@18.3.1/node_modules/@wordpress/primitives/build-module/svg/index.js","../src/PasswordInput.tsx","../src/ProjectsNavigation.tsx","../src/ResponsiveImage.tsx","../src/ResponsiveVideo.tsx","../src/ScrollList.tsx","../src/SelectControlWrapper.tsx","../src/SingleBlockTypeAppender.tsx","../src/SlideIn.tsx","../src/Spinner.tsx","../src/Tabs.tsx","../src/Tag.tsx","../src/TextControlLabel.tsx","../src/ToggleGroup.tsx","../src/ToggleSwitch.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","type WrapProps = {\n children: React.ReactNode;\n className?: string;\n important?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n};\n\nexport const Wrap = ({\n children,\n className,\n important = false,\n onClick,\n}: WrapProps) => {\n if (important) {\n return (\n <div onClick={onClick}>\n <div className={className}>{children}</div>\n </div>\n );\n }\n\n return <div className={className}>{children}</div>;\n};\n","import { Wrap } from './Wrap.js';\n\ntype IconProps = {\n icon: React.FC<React.SVGProps<SVGSVGElement>> | null; // Type it as a React Functional Component\n className?: string;\n};\n\nexport const Icon = ({ icon: IconComponent, className = '' }: IconProps) => {\n if (!IconComponent) return null;\n\n return (\n <Wrap className={`blockbite--icon`}>\n <IconComponent className={className} />{' '}\n {/* Render the functional component */}\n </Wrap>\n );\n};\n","import { Button as WordpressButton } from '@wordpress/components';\nimport { memo, useCallback, useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { Icon } from './Icon.js';\nimport { Wrap } from './Wrap.js';\n\ntype ButtonToggleProps = {\n children?: React.ReactNode;\n className?: string;\n value: string;\n defaultPressed: string;\n variant?: 'primary' | 'secondary';\n size?: 'small' | 'default' | 'compact';\n icon?: any;\n display?: 'icon' | 'label' | '' | null;\n onPressedChange: (value: string) => void;\n label?: string;\n};\n\ntype ButtonToggleGroupOptionProp = {\n value: string;\n label: string;\n tooltip?: string;\n icon?: any;\n children?: React.ReactNode;\n};\n\ntype ButtonToggleGroupProps = {\n className?: string;\n options: ButtonToggleGroupOptionProp[];\n defaultPressed?: string;\n toggle?: boolean;\n size?: 'small' | 'default' | 'compact';\n tabs?: boolean;\n display?: 'icon' | 'label' | '' | null;\n variant?: 'primary' | 'secondary';\n stretch?: boolean;\n icon?: any;\n onPressedChange?: (value: string) => void;\n};\n\nexport const ButtonToggle: React.FC<ButtonToggleProps> = memo(\n ({\n children,\n className,\n value,\n variant = 'secondary',\n defaultPressed,\n onPressedChange,\n icon,\n size = 'compact',\n display = 'auto',\n label,\n }) => {\n const [isPressed, setIsPressed] = useState(false);\n\n useEffect(() => {\n setIsPressed(defaultPressed === value ? true : false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultPressed]);\n\n const handleClick = useCallback(() => {\n setIsPressed((prev) => !prev);\n onPressedChange(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isPressed, onPressedChange]);\n\n return (\n <WordpressButton\n aria-label={label}\n className={classNames(className, 'blockbite-ui__button--default')}\n value={value}\n size={size}\n label={label}\n variant={variant}\n showTooltip={true}\n isPressed={isPressed}\n onClick={handleClick}\n >\n {icon && <Icon icon={icon} />}\n {display !== 'icon' ? children : null}\n {label && !children && display !== 'icon' ? <span>{label}</span> : null}\n </WordpressButton>\n );\n }\n);\n\nexport const ButtonToggleGroup: React.FC<ButtonToggleGroupProps> = memo(\n ({\n className,\n defaultPressed = '',\n toggle = true,\n display = 'auto',\n options,\n size = 'compact',\n tabs = false,\n variant = 'secondary',\n stretch = false,\n onPressedChange,\n }) => {\n const [isPressed, setIsPressed] = useState<string>(defaultPressed);\n\n useEffect(() => {\n setIsPressed(defaultPressed);\n }, [defaultPressed]);\n\n const handleButtonClick = useCallback(\n (value: string) => {\n const newValue = toggle && isPressed === value ? '' : value;\n setIsPressed(newValue);\n onPressedChange?.(newValue);\n },\n [isPressed, onPressedChange, toggle]\n );\n\n const renderContent = (option: ButtonToggleGroupOptionProp) => {\n if (display === 'icon' && option?.icon) {\n return <Icon icon={option.icon} />;\n } else if (display === 'label') {\n return <span>{option.label}</span>;\n }\n return (\n <span className=\"flex items-center justify-center gap-1\">\n {option.icon && <Icon icon={option.icon} />}\n <span>{option.label}</span>\n </span>\n );\n };\n\n return (\n <Wrap\n className={classNames(\n 'blockbite-ui__button-group flex flex-wrap gap-1',\n className,\n tabs ? 'blockbite-ui__button-group--tabs' : ''\n )}\n >\n {options.map((option, index) => (\n <WordpressButton\n key={`ButtonToggleGroup__${option.value}__${option.label}__${index}`}\n className={classNames('blockbite-ui__button--default', {\n grow: stretch,\n 'justify-center': stretch,\n })}\n // tooltip\n aria-label={option.label}\n showTooltip={true}\n value={option.value}\n size={size}\n label={option?.tooltip || option.label}\n variant={variant}\n isPressed={isPressed === option.value}\n onClick={() => handleButtonClick(option.value)}\n >\n {renderContent(option)}\n {option.children && option.children}\n </WordpressButton>\n ))}\n </Wrap>\n );\n }\n);\n","import { Button, Dropdown, TextControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { ButtonToggle } from './ButtonToggle.js';\nimport type { OptionProps } from './types.js';\nimport { Wrap } from './Wrap.js';\n\ninterface OptionPanelDropdownProps {\n defaultValue: string;\n options: { label: string; value: string }[];\n onPressedChange: (value: string) => void;\n swatch?: boolean;\n}\n\nexport function AutocompleteDropdown({\n defaultValue,\n options,\n swatch,\n onPressedChange,\n}: OptionPanelDropdownProps) {\n const [activeKeyword, setActiveKeyword] = useState('');\n const [filteredOptions, setFilteredOptions] = useState<OptionProps[]>([]);\n\n useEffect(() => {\n setFilteredOptions(\n options.filter((option: OptionProps) =>\n option.label.toLowerCase().includes(activeKeyword.toLowerCase())\n )\n );\n }, [activeKeyword, options]);\n\n useEffect(() => {\n setActiveKeyword('');\n setFilteredOptions(options);\n }, [defaultValue, options]);\n\n return (\n <Dropdown\n className=\"option-panel-dropdown\"\n contentClassName=\"option-panel-dropdown-content\"\n popoverProps={{ placement: 'bottom-start' }}\n renderToggle={({ isOpen, onToggle }) => (\n <Wrap important>\n <Button\n variant=\"secondary\"\n size=\"small\"\n onClick={onToggle}\n aria-expanded={isOpen}\n >\n <div className=\"flex items-center gap-1.5 !bg-transparent !p-0 !text-[11px] !text-current\">\n {swatch && !!defaultValue && (\n <div\n className={classNames(\n `h-3 w-3 rounded-full bg-${defaultValue}`\n )}\n />\n )}\n <span>{defaultValue || 'Select option…'}</span>\n </div>\n </Button>\n </Wrap>\n )}\n renderContent={() => (\n <Wrap important>\n <div className=\"w-52\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label=\"Search options\"\n value={activeKeyword}\n onChange={(value) => setActiveKeyword(value)}\n autoComplete=\"off\"\n />\n <div className=\"grid grid-cols-2 gap-1 !bg-transparent p-0 !pt-2\">\n {filteredOptions.length === 0 && (\n <div className=\"!text-gray-medium col-span-2 pb-2 text-center !text-[11px]\">\n No options found.\n </div>\n )}\n {filteredOptions.map((option: OptionProps, index: Number) => (\n <ButtonToggle\n key={`ButtonToggle__${option.value}___${index}`}\n className={classNames({\n 'bg-primary': option.value,\n })}\n size=\"small\"\n value={option.value.toString()}\n defaultPressed={defaultValue}\n onPressedChange={(value: string) => {\n onPressedChange(value ? option.value : '');\n }}\n >\n {swatch && (\n <div\n className={classNames(\n `mr-3 h-3 w-3 rounded-full bg-${option.value}`\n )}\n />\n )}\n {option.label}\n </ButtonToggle>\n ))}\n </div>\n </div>\n </Wrap>\n )}\n />\n );\n}\n","import classNames from 'classnames';\n\ntype BadgeProps = {\n children?: React.ReactNode;\n className?: string;\n label?: string;\n onClick?: () => void;\n};\n\nexport const Badge = ({ children, className, label, onClick }: BadgeProps) => {\n return (\n <div\n onClick={onClick}\n className={classNames(\n className,\n 'inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800'\n )}\n >\n {label && (\n <span className=\"mr-1 text-xs font-semibold text-gray-700\">\n {label}\n </span>\n )}\n {children}\n </div>\n );\n};\n","import { createPortal, useEffect, useRef, useState } from '@wordpress/element';\n\nexport const BitePreview = ({ htmlContent, cssContent, frontendAssets }) => {\n const iframeRef = useRef(null);\n const [iframeBody, setIframeBody] = useState(null);\n\n useEffect(() => {\n const iframe = iframeRef.current;\n\n if (iframe) {\n iframe.onload = () => {\n const iframeDocument =\n iframe.contentDocument || iframe.contentWindow.document;\n\n if (iframeDocument) {\n setIframeBody(iframeDocument.body); // Set the iframe body for portal\n\n // Inject CSS content directly\n const styleTag = iframeDocument.createElement('style');\n styleTag.innerHTML = cssContent;\n iframeDocument.head.appendChild(styleTag);\n\n // Adopt or Create Frontend Assets\n frontendAssets.forEach(({ type, id, url }) => {\n const existingElement = document.getElementById(id);\n\n if (existingElement) {\n // If the asset exists in the parent, move it to the iframe\n const adoptedElement = document.adoptNode(\n existingElement.cloneNode(true)\n );\n iframeDocument.head.appendChild(adoptedElement);\n } else {\n // Create a new script or style if not found\n const newElement = iframeDocument.createElement(\n type === 'script' ? 'script' : 'link'\n );\n newElement.id = id;\n\n if (type === 'script') {\n newElement.src = url;\n newElement.async = true;\n } else {\n newElement.rel = 'stylesheet';\n newElement.href = url;\n }\n\n iframeDocument.head.appendChild(newElement);\n }\n });\n }\n };\n }\n\n return () => {\n if (iframe) {\n iframe.onload = null; // Clean up event listener\n }\n };\n }, [htmlContent, cssContent, frontendAssets]);\n\n return (\n <div\n className=\"render-preview-container\"\n style={{ width: '100%', minHeight: '100%' }}\n >\n <iframe\n ref={iframeRef}\n title=\"Preview\"\n className=\"editor-styles-wrapper\"\n width=\"100%\"\n height=\"100%\"\n />\n {iframeBody &&\n createPortal(\n <div className=\"b_\">\n <div\n className=\"b_utils\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n </div>,\n iframeBody\n )}\n </div>\n );\n};\n","import { Button as WordpressButton } from '@wordpress/components';\nimport classNames from 'classnames';\nimport { Icon } from './Icon.js';\n\ntype ButtonProps = {\n children?: React.ReactNode;\n asChild?: boolean;\n className?: string;\n display?: 'icon' | 'icon-lg' | 'label' | 'auto' | '' | null;\n onClick?: () => void;\n label?: string;\n size?: 'small' | 'default' | 'compact';\n variant?: 'primary' | 'secondary' | 'link' | 'primary' | 'tertiary';\n icon?: any;\n disabled?: boolean;\n};\n\nexport const Button = ({\n children,\n size = 'default',\n label,\n className,\n onClick,\n variant = 'primary',\n display = 'auto',\n icon,\n disabled = false,\n}: ButtonProps) => {\n const isIconDisplay = display === 'icon' || display === 'icon-lg';\n\n return (\n <WordpressButton\n size={size}\n variant={variant}\n label={label}\n showTooltip={true}\n disabled={disabled}\n className={classNames(\n className,\n 'blockbite-ui__button',\n 'flex items-center justify-center gap-1',\n { 'is-primary': variant === 'primary' },\n { 'is-secondary': variant === 'secondary' },\n { 'is-link': variant === 'link' },\n { 'is-tertiary': variant === 'tertiary' },\n { 'is-icon': display === 'icon' }\n )}\n onClick={onClick}\n >\n {icon && (\n <Icon\n icon={icon}\n className={classNames({ 'h-4 w-4': display === 'icon-lg' })}\n />\n )}\n {!isIconDisplay ? children : null}\n {label && !children && !isIconDisplay ? <span>{label}</span> : null}\n </WordpressButton>\n );\n};\n","import classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype ChapterProps = {\n children?: React.ReactNode;\n className?: string;\n title?: string;\n};\n\nexport const Chapter = ({ children, title }: ChapterProps) => {\n return (\n <Wrap\n className={classNames(\n 'text-gray-medium my-2 flex items-center gap-1 text-[12px] font-medium',\n classNames\n )}\n >\n {title && <Wrap className=\"font-medium\">{title}</Wrap>}\n {children}\n </Wrap>\n );\n};\n","import classNames from 'classnames';\nimport { Badge } from './Badge';\n\ntype ChapterDividerProps = {\n title?: string;\n className?: string;\n help?: string;\n badge?: string;\n [key: string]: any;\n};\n\nexport const ChapterDivider = ({\n title,\n className,\n help,\n badge,\n ...props\n}: ChapterDividerProps) => {\n return (\n <div className={classNames('mb-2', className)} {...props}>\n <div className=\"flex w-full flex-wrap items-center gap-2 justify-between\">\n <span className=\"shrink-1 text-[11px] font-medium uppercase leading-snug\">\n {title}\n </span>\n {!!badge && <Badge className=\"text-[10px] py-px px-1\">{badge}</Badge>}\n </div>\n {help && <small className=\"w-full shrink-0 text-[11px]\">{help}</small>}\n </div>\n );\n};\n","import { CheckboxControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\ntype CheckboxProps = {\n id: string;\n label?: string;\n help?: string;\n defaultChecked?: boolean;\n onCheckedChange: (checked: boolean, id: string) => void;\n};\n\nexport const Checkbox = ({ label, help, defaultChecked }: CheckboxProps) => {\n const [isChecked, setChecked] = useState(defaultChecked);\n\n useEffect(() => {\n setChecked(defaultChecked);\n }, [defaultChecked]);\n\n return (\n <Wrap className=\"blockbite-ui__checkbox mx-1 flex items-center gap-2\">\n <CheckboxControl\n label={label}\n help={help}\n checked={isChecked}\n onChange={setChecked}\n />\n </Wrap>\n );\n};\n","const ChevronDown = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { d: \"M3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523Z\", fill: \"currentColor\" })));\nexport default ChevronDown;\n","const ColumnSpacing = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M7.50012 1C7.22398 1 7.00012 1.22386 7.00012 1.5V13.5C7.00012 13.7761 7.22398 14 7.50012 14C7.77626 14 8.00012 13.7761 8.00012 13.5V1.5C8.00012 1.22386 7.77626 1 7.50012 1ZM3.31812 5.18161C3.14239 5.00587 2.85746 5.00587 2.68173 5.18161L0.681729 7.18161C0.505993 7.35734 0.505993 7.64227 0.681729 7.818L2.68173 9.818C2.85746 9.99374 3.14239 9.99374 3.31812 9.818C3.49386 9.64227 3.49386 9.35734 3.31812 9.18161L2.08632 7.9498H5.50017C5.7487 7.9498 5.95017 7.74833 5.95017 7.4998C5.95017 7.25128 5.7487 7.0498 5.50017 7.0498H2.08632L3.31812 5.818C3.49386 5.64227 3.49386 5.35734 3.31812 5.18161ZM11.6817 5.18161C11.506 5.35734 11.506 5.64227 11.6817 5.818L12.9135 7.0498H9.50017C9.25164 7.0498 9.05017 7.25128 9.05017 7.4998C9.05017 7.74833 9.25164 7.9498 9.50017 7.9498H12.9135L11.6817 9.18161C11.506 9.35734 11.506 9.64227 11.6817 9.818C11.8575 9.99374 12.1424 9.99374 12.3181 9.818L14.3181 7.818C14.4939 7.64227 14.4939 7.35734 14.3181 7.18161L12.3181 5.18161C12.1424 5.00587 11.8575 5.00587 11.6817 5.18161Z\", fill: \"currentColor\" })));\nexport default ColumnSpacing;\n","const Cross2 = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { d: \"M11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184Z\", fill: \"currentColor\" })));\nexport default Cross2;\n","const Desktop = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M0 3.25V10.75C0 11.4404 0.559644 12 1.25 12H5.07341L4.82991 13.2986C4.76645 13.6371 5.02612 13.95 5.37049 13.95H9.62951C9.97389 13.95 10.2336 13.6371 10.1701 13.2986L9.92659 12H13.75C14.4404 12 15 11.4404 15 10.75V3.25C15 2.55964 14.4404 2 13.75 2H1.25C0.559643 2 0 2.55964 0 3.25ZM1.25 3H13.75C13.8881 3 14 3.11193 14 3.25V10.75C14 10.8881 13.8881 11 13.75 11H1.25C1.11193 11 1 10.8881 1 10.75V3.25C1 3.11193 1.11193 3 1.25 3ZM5.98909 12L5.79222 13.05H9.20778L9.01091 12H5.98909Z\", fill: \"currentColor\" })));\nexport default Desktop;\n","const Grid = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5C1.67157 1 1 1.67157 1 2.5ZM8 2V7H13V2.5C13 2.22386 12.7761 2 12.5 2H8ZM8 8V13H12.5C12.7761 13 13 12.7761 13 12.5V8H8ZM7 2H2.5C2.22386 2 2 2.22386 2 2.5V7H7V2ZM2 12.5C2 12.7761 2.22386 13 2.5 13H7V8H2V12.5Z\", fill: \"currentColor\" })));\nexport default Grid;\n","const Pencil1 = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.1465 1.14645L3.71455 8.57836C3.62459 8.66832 3.55263 8.77461 3.50251 8.89155L2.04044 12.303C1.9599 12.491 2.00189 12.709 2.14646 12.8536C2.29103 12.9981 2.50905 13.0401 2.69697 12.9596L6.10847 11.4975C6.2254 11.4474 6.3317 11.3754 6.42166 11.2855L13.8536 3.85355C14.0488 3.65829 14.0488 3.34171 13.8536 3.14645L11.8536 1.14645C11.6583 0.951184 11.3417 0.951184 11.1465 1.14645ZM11.5 2.20711L12.7929 3.5L5.71455 10.5784L4.21924 11.2192L3.78081 10.7808L4.42166 9.28547L11.5 2.20711Z\", fill: \"currentColor\" })));\nexport default Pencil1;\n","const Percentage = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"circle\", { cx: 4.85355, cy: 4.5, r: 1.5, fill: \"currentColor\" }),\n React.createElement(\"circle\", { cx: 9.85355, cy: 10.5, r: 1.5, fill: \"currentColor\" }),\n React.createElement(\"path\", { d: \"M3 11.6464L11 3.64642\", stroke: \"currentColor\", strokeLinecap: \"round\" })));\nexport default Percentage;\n","const Plus = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { d: \"M7.5 2.25C7.22386 2.25 7 2.47386 7 2.75V7H2.75C2.47386 7 2.25 7.22386 2.25 7.5C2.25 7.77614 2.47386 8 2.75 8H7V12.25C7 12.5261 7.22386 12.75 7.5 12.75C7.77614 12.75 8 12.5261 8 12.25V8H12.25C12.5261 8 12.75 7.77614 12.75 7.5C12.75 7.22386 12.5261 7 12.25 7H8V2.75C8 2.47386 7.77614 2.25 7.5 2.25Z\", fill: \"currentColor\" })));\nexport default Plus;\n","const Slider = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M8.49988 10.2504C7.1516 10.2504 6.0299 9.28026 5.79473 7.99997H0.5C0.223858 7.99997 0 7.77611 0 7.49997C0 7.22383 0.223858 6.99997 0.5 6.99997H5.7947C6.0298 5.71959 7.15154 4.74939 8.49988 4.74939C9.84822 4.74939 10.97 5.71959 11.2051 6.99997H14.5C14.7761 6.99997 15 7.22383 15 7.49997C15 7.77611 14.7761 7.99997 14.5 7.99997H11.205C10.9699 9.28026 9.84816 10.2504 8.49988 10.2504ZM8.49988 9.30038C7.50549 9.30038 6.69938 8.49427 6.69938 7.49988C6.69938 6.5055 7.50549 5.69939 8.49988 5.69939C9.49426 5.69939 10.3004 6.5055 10.3004 7.49988C10.3004 8.49427 9.49426 9.30038 8.49988 9.30038Z\", fill: \"currentColor\" })));\nexport default Slider;\n","const Tailwind = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { d: \"M4 5.33333C4.4 3.77778 5.4 3 7 3C9.4 3 9.7 4.75 10.9 5.04167C11.7 5.23611 12.4 4.94444 13 4.16667C12.6 5.72222 11.6 6.5 10 6.5C7.6 6.5 7.3 4.75 6.1 4.45833C5.3 4.26389 4.6 4.55556 4 5.33333ZM1 8.83333C1.4 7.27778 2.4 6.5 4 6.5C6.4 6.5 6.7 8.25 7.9 8.54167C8.7 8.73611 9.4 8.44444 10 7.66667C9.6 9.22222 8.6 10 7 10C4.6 10 4.3 8.25 3.1 7.95833C2.3 7.76389 1.6 8.05556 1 8.83333Z\", fill: \"currentColor\" })));\nexport default Tailwind;\n","const Trash = (props) => (React.createElement(\"svg\", Object.assign({ width: props.width || '1em', height: props.height || '1em', viewBox: \"0 0 15 15\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", role: \"img\" }, props),\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M5 1.5C5 1.77614 5.22386 2 5.5 2H9.5C9.77614 2 10 1.77614 10 1.5C10 1.22386 9.77614 1 9.5 1H5.5C5.22386 1 5 1.22386 5 1.5ZM3.5 3H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H11V12C11 12.5523 10.5523 13 10 13H5C4.44772 13 4 12.5523 4 12V4L3.5 4C3.22386 4 3 3.77614 3 3.5C3 3.22386 3.22386 3 3.5 3ZM10 4V12H5V4H10Z\", fill: \"currentColor\" })));\nexport default Trash;\n","import { forwardRef } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype TextControlProps = {\n className?: string;\n inputClassName?: string;\n defaultValue: any;\n children?: React.ReactNode;\n onChange?: (value: string) => void;\n onClick?: () => void;\n readOnly?: boolean;\n placeholder?: string;\n onBlur?: (value) => void;\n type?: string;\n label?: string;\n helper?: string;\n [key: string]: any;\n};\n\nexport const TextControl = forwardRef<HTMLInputElement, TextControlProps>(\n (\n {\n onClick,\n onChange,\n className,\n defaultValue,\n children,\n inputClassName,\n readOnly,\n placeholder,\n onBlur,\n type = 'text',\n label,\n helper = '',\n ...props\n },\n ref\n ) => {\n const fieldId = `text-control-${Math.random()\n .toString(36)\n .substring(2, 15)}`;\n\n return (\n <div\n className={classNames('flex items-center p-0', className)}\n {...props}\n >\n {label ? (\n <label htmlFor={fieldId} className=\"text-primary !m-0 !mb-0 !mr-2\">\n {label}\n </label>\n ) : null}\n <input\n id={fieldId}\n className={classNames(\n 'border-primary !m-0 !mb-0 h-[32px] !rounded-none border border-opacity-70 focus:outline-none focus:ring-0',\n inputClassName\n )}\n type={type}\n value={defaultValue}\n placeholder={placeholder}\n onFocus={() => onClick && onClick()}\n onBlur={(e) => {\n if (onClick) onClick();\n if (onBlur) onBlur(e.target.value);\n }}\n onChange={(e) => onChange && onChange(e.target.value)}\n readOnly={readOnly}\n ref={ref}\n />\n <span>{children}</span>\n {helper && <p className=\"text-primary !m-0 !mb-0 text-xs\">{helper}</p>}\n </div>\n );\n }\n);\n\nTextControl.displayName = 'TextControl'; // Recommended for debugging\n","import { Plus as PlusIcon, Trash as TrashIcon } from '@blockbite/icons';\nimport { Button } from '@wordpress/components';\nimport { useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport type { DataItem } from '@blockbite/types';\nimport { TextControl } from './TextControl.js';\nimport { Wrap } from './Wrap.js';\n\ntype DataListProps = {\n data: DataItem[];\n active: any;\n setActive: (item: DataItem | undefined) => void;\n onCreate: () => void;\n onDelete: (id: string) => void;\n onUpdate: (id: string, updates: Partial<DataItem>) => void;\n onSwitch: (prevId: string, updates: Partial<DataItem>) => void;\n renderItemActions?: (item: DataItem) => React.ReactNode;\n addons?: JSX.Element;\n className?: string;\n footerSlot?: React.ReactNode;\n footerSlotClassName?: string;\n};\n\nexport const DataItemList = ({\n data,\n active,\n setActive,\n onCreate,\n onDelete,\n onUpdate,\n onSwitch,\n renderItemActions,\n addons,\n className = '',\n footerSlot,\n footerSlotClassName = '',\n}: DataListProps) => {\n const [rename, setRename] = useState<{ id: string; name: string }>({\n id: '',\n name: '',\n });\n const [isSaving, setIsSaving] = useState(false);\n\n const textRef = useRef<HTMLInputElement | null>(null);\n\n const handleAdd = () => {\n onCreate();\n };\n\n const handleRemove = () => {\n if (!active || data.length === 0) return;\n\n const newData = data.filter((d) => d.id !== active?.id);\n const currentIndex = data.findIndex((d) => d.id === active?.id);\n const nextActive = newData[currentIndex] || newData[0];\n\n onDelete(active?.id);\n setActive(nextActive);\n };\n\n const handleRenameBlur = (value: string) => {\n setIsSaving(true);\n if (rename.id) {\n onUpdate(rename.id, { name: value });\n }\n\n setTimeout(() => {\n setRename({ id: '', name: '' });\n setIsSaving(false);\n }, 500);\n };\n\n return (\n <Wrap important className={className}>\n <ul className=\"h-[calc(100%-80px)] divide-y overflow-auto\">\n {addons}\n {data.length > 0 && (\n <li>\n <ul className=\"divide-y border-b\">\n {data.map((item) => (\n <li\n key={`data__${item.id}`}\n className={classNames(\n 'relative m-0 flex items-center justify-between gap-1 bg-opacity-50 hover:bg-easy',\n {\n 'bg-easy': item.id === active?.id,\n }\n )}\n >\n <div className=\"flex-1 relative\">\n <button\n className=\"text-gray-medium w-full truncate px-3 py-2 text-left text-sm/6 font-semibold hover:text-wordpress\"\n onClick={() => {\n onSwitch(active?.id, { ...active });\n setActive(item);\n }}\n onDoubleClick={() => {\n setRename({ id: item.id, name: item.name || '' });\n }}\n >\n {isSaving && rename.id === item.id ? (\n <span className=\"animate-pulse text-gray-medium\">\n {rename.name}\n </span>\n ) : (\n <span className=\"text-gray-medium\">\n {item.name || 'Untitled'}\n </span>\n )}\n </button>\n {rename.id === item.id && !isSaving && (\n <TextControl\n className=\"absolute left-1 top-0 w-[calc(100%-.5rem)] h-full\"\n inputClassName=\"w-full\"\n defaultValue={rename.name}\n onChange={(value) =>\n setRename({ ...rename, name: value })\n }\n ref={textRef}\n onBlur={handleRenameBlur}\n />\n )}\n </div>\n {renderItemActions && (\n <div className=\"flex gap-1 pr-1\">\n {renderItemActions(item)}\n </div>\n )}\n </li>\n ))}\n </ul>\n </li>\n )}\n </ul>\n <div\n className={classNames(\n 'flex flex-wrap justify-center gap-2 p-2',\n footerSlotClassName\n )}\n >\n {footerSlot}\n <Button\n onClick={handleAdd}\n icon={<PlusIcon className=\"h-4 w-4\" />}\n variant=\"tertiary\"\n size=\"compact\"\n >\n Add\n </Button>\n <Button\n onClick={handleRemove}\n icon={<TrashIcon className=\"h-4 w-4\" />}\n variant=\"tertiary\"\n size=\"compact\"\n disabled={!active || data.length === 0}\n >\n Remove\n </Button>\n </div>\n </Wrap>\n );\n};\n\nexport default DataItemList;\n","import { useEffect, useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { Wrap } from './Wrap.js';\n\ntype DisappearingMessageProps = {\n message?: string;\n className?: string;\n duration?: number;\n children?: React.ReactNode;\n show: boolean;\n};\n\nexport const DisappearingMessage = ({\n duration = 3000,\n className,\n children,\n show,\n message,\n}: DisappearingMessageProps) => {\n const [isShowing, setIsShowing] = useState(false);\n const hasMounted = useRef(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n hasMounted.current = true;\n }, []);\n\n useEffect(() => {\n if (!hasMounted.current) return;\n\n if (show) {\n setIsShowing(true);\n timeoutRef.current = setTimeout(() => {\n setIsShowing(false);\n }, duration);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [show, duration]);\n\n if (!isShowing) return null;\n\n return (\n <Wrap\n important\n className={classNames('bb-ui__disappearing-message', className)}\n >\n <div className=\"bb-ui__disappearing-message__content\">\n {message ?? children}\n </div>\n </Wrap>\n );\n};\n","import { ChevronDown as ChevronDownIcon } from '@blockbite/icons';\nimport { DropdownMenu } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Icon } from './Icon.js';\n\ntype DropdownPickerProps = {\n label?: string;\n className?: string;\n defaultValue: string;\n defaultIcon?: any;\n options: {\n icon?: React.ReactElement;\n label: string;\n subtitle?: string;\n value: string;\n }[];\n onPressedChange: (value: string | null) => void; // Updated to allow `null` for reset\n};\n\nexport const DropdownPicker = ({\n label,\n className,\n defaultValue,\n defaultIcon = ChevronDownIcon,\n onPressedChange,\n options,\n}: DropdownPickerProps) => {\n const [currentOption, setCurrentOption] = useState<string | null>(null);\n\n useEffect(() => {\n setCurrentOption(defaultValue);\n }, [defaultValue]);\n\n const allOptions = [\n ...options.map((option) => ({\n icon: option.icon,\n label: option.label,\n title: option.label,\n value: option.value,\n onClick: () => {\n setCurrentOption(option.value);\n onPressedChange(option.value);\n },\n })),\n {\n icon: <Icon icon={defaultIcon} />,\n title: 'Reset',\n value: 'reset',\n onClick: () => {\n setCurrentOption('reset');\n onPressedChange('reset');\n },\n },\n ];\n\n return (\n <DropdownMenu\n controls={allOptions}\n className={classNames(\n 'blockbite-ui__dropdown-picker border-primary border',\n className\n )}\n icon={\n options.find((option) => option.value === currentOption)?.icon || (\n <Icon icon={defaultIcon} />\n )\n }\n label={label || 'Select'}\n />\n );\n};\n","type Props = {\n icon?: JSX.Element;\n title: string;\n description: string;\n children?: React.ReactNode;\n [key: string]: any;\n};\n\nexport function EmptyState({\n icon,\n title,\n description,\n children = null,\n ...rest\n}: Props) {\n return (\n <div {...rest}>\n <div className=\"flex h-full w-full flex-col items-center justify-center text-center !font-sans\">\n <div className=\"max-w-sm\">\n {icon && <div className=\"mx-auto !text-gray-400\">{icon}</div>}\n <h3 className=\"text-gray-medium mt-2 !font-sans text-sm font-medium\">\n {title}\n </h3>\n <p className=\"mt-1 !font-sans text-sm !text-gray-500\">\n {description}\n </p>\n {children && <div className=\"mt-4\">{children}</div>}\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef, useState } from '@wordpress/element';\n\ntype DraggablePanelProps = {\n children: React.ReactNode;\n};\n\nexport function FloatingPanel({\n children,\n}: DraggablePanelProps & {\n children: React.ReactNode;\n}) {\n const panelRef = useRef(null);\n const [position, setPosition] = useState({ x: 100, y: 100 });\n const [dragging, setDragging] = useState(false);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n\n useEffect(() => {\n const handleMouseMove = (e) => {\n if (dragging) {\n setPosition({\n x: e.clientX - offset.x,\n y: e.clientY - offset.y,\n });\n }\n };\n\n const handleMouseUp = () => setDragging(false);\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }, [dragging, offset]);\n\n const startDragging = (e) => {\n const rect = panelRef.current.getBoundingClientRect();\n setOffset({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setDragging(true);\n };\n\n return (\n <div>\n <div\n ref={panelRef}\n className=\"fixed bg-white shadow-xl rounded-2xl p-4 w-[400px] h-[550px] z-[9999]\"\n style={{ left: position.x, top: position.y }}\n >\n {children}\n <div\n className=\"absolute top-1 right-1 cursor-move w-5 h-5 bg-gray-300 rounded\"\n onMouseDown={startDragging}\n ></div>\n </div>\n </div>\n );\n}\n","import { FocalPointPicker } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\ntype FocalPointControlProps = {\n defaultValue: string;\n onValueChange: (value: string) => void;\n url?: string;\n};\n\nexport const FocalPointControl: React.FC<FocalPointControlProps> = ({\n defaultValue,\n onValueChange,\n url,\n}) => {\n const [focalPoint, setFocalPoint] = useState({\n x: 0.5,\n y: 0.5,\n });\n\n useEffect(() => {\n onValueChange(\n `[${(focalPoint.x * 100).toFixed(2)}%_${(focalPoint.y * 100).toFixed(\n 2\n )}%]`\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focalPoint]);\n\n useEffect(() => {\n // default value is in the format of [x%_y%] parse to get the x and y values\n if (defaultValue.includes('%')) {\n const [x, y] = defaultValue\n .replace('[', '')\n .replace('%]', '')\n .split('_')\n .map((value: string) => parseFloat(value) / 100);\n\n setFocalPoint({\n x,\n y,\n });\n }\n }, [defaultValue]);\n\n return (\n <Wrap className=\"relative flex flex-col\">\n <FocalPointPicker\n url={url}\n value={focalPoint}\n onDrag={(value) => setFocalPoint(value)}\n onChange={(value) => setFocalPoint(value)}\n />\n </Wrap>\n );\n};\n\nexport default FocalPointControl;\n","import apiFetch from '@wordpress/api-fetch';\nimport { TextControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Wrap } from './Wrap.js';\n\nexport function LinkPicker(props) {\n const [activeKeyword, setActiveKeyword] = useState('');\n const [links, setLinks] = useState<\n Array<{ id: number; url: string; title: string; post_type: string }>\n >([]);\n const [activeLink, setActiveLink] = useState({\n url: '',\n title: '',\n });\n\n useEffect(() => {\n if (activeKeyword === '') return;\n setLinks(null);\n apiFetch({\n path: `/blockbite/v1/block-helpers/get-links/${activeKeyword}`,\n }).then(\n (\n fetchedLinks: Array<{\n id: number;\n url: string;\n title: string;\n post_type: string;\n }> | null\n ) => {\n if (fetchedLinks?.length) {\n setLinks([...fetchedLinks]);\n } else {\n setLinks([]);\n }\n }\n );\n }, [activeKeyword]);\n\n useEffect(() => {\n if (activeLink.url !== '') {\n props.parentCallback(activeLink);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeLink]);\n\n return (\n <Wrap className=\"blockbite--editor-linkwrap\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={__('Search link', 'blockbitelinks')}\n value={activeKeyword}\n placeholder=\"Example: About\"\n onChange={(value) => setActiveKeyword(value)}\n help={__('Type a post, page, title', 'blockbitelinks')}\n />\n {activeKeyword ? (\n <div className=\"blockbite--editor-linklist\">\n <LinkList\n links={links}\n onActiveLink={(link) => [\n setActiveLink({ ...link }),\n setActiveKeyword(''),\n ]}\n />\n </div>\n ) : null}\n </Wrap>\n );\n}\nfunction LinkList({ links, onActiveLink }) {\n if (links === null) {\n return <p>Loading...</p>;\n } else if (links.length === 0) {\n return <p>No Results</p>;\n }\n\n const list = links.map((link) => (\n <Wrap key={link.id}>\n <span\n className=\"blockbite--editor-link\"\n onClick={() => onActiveLink(link)}\n >\n <span>{link.title}</span>\n <span className=\"blockbite--preview-link\">{link.url}</span>\n <span className=\"blockbite--preview-link\">{link.post_type}</span>\n </span>\n </Wrap>\n ));\n\n return <>{list}</>; // ✅ Wrapped\n}\n","import { MediaUpload, MediaUploadCheck } from '@wordpress/block-editor';\n\nimport { Button, PanelRow } from '@wordpress/components';\n\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nexport function MediaPicker({ mediaProps, mediaCallback }) {\n const allowedTypes = [\n 'image',\n 'video',\n 'image/svg+xml',\n 'svg',\n 'text/plain',\n 'application/json',\n ];\n\n // toggles\n const [stateMedia, setStateMedia] = useState({\n id: null,\n url: '',\n sizes: [],\n alt: '',\n type: '',\n width: 0,\n height: 0,\n });\n\n useEffect(() => {\n if (mediaProps) {\n setStateMedia({ ...mediaProps });\n }\n }, [mediaProps]);\n\n // image handlers\n const removeMedia = () => {\n const mediaObj = {\n mediaId: 0,\n mediaUrl: '',\n };\n mediaCallback({ ...mediaObj });\n };\n // onselect media\n const onSelectMedia = (media) => {\n const safeSizes = {\n thumbnail: null,\n medium: null,\n large: null,\n };\n\n // Normalize Sizes\n if (media?.sizes) {\n Object.keys(media.sizes).map((key) => {\n const sizeObject = media.sizes[key];\n\n if (key === 'thumbnail') {\n safeSizes.thumbnail = sizeObject.url;\n } else if (sizeObject.width < 768 || sizeObject.height < 768) {\n safeSizes.thumbnail = sizeObject.url;\n }\n\n if (key === 'medium') {\n safeSizes.medium = sizeObject.url;\n } else if (\n (sizeObject.width > 1024 && sizeObject.width < 1024) ||\n (sizeObject.height < 1536 && sizeObject.height > 1536)\n ) {\n safeSizes.medium = sizeObject.url;\n }\n\n if (key === 'large') {\n safeSizes.large = sizeObject.url;\n } else if (sizeObject.width > 1536 || sizeObject.height > 1536) {\n safeSizes.large = sizeObject.url;\n }\n\n return null;\n });\n }\n\n // if type ends .lottie then it is a lottie file\n if (media.url.endsWith('.json')) {\n media.type = 'lottie';\n }\n // if type ends with .svg then it is an svg file\n if (media.url.endsWith('.svg')) {\n media.type = 'svg';\n }\n\n const mediaObj = {\n id: media.id,\n url: media.url,\n sizes: safeSizes,\n alt: media.alt,\n type: media.type,\n width: media.width,\n height: media.height,\n };\n mediaCallback({ ...mediaObj });\n };\n\n return (\n <PanelRow>\n {stateMedia.id !== null && (\n <MediaUploadCheck>\n <MediaUpload\n onSelect={onSelectMedia}\n value={stateMedia.id}\n allowedTypes={allowedTypes}\n render={({ open }) => (\n <Button\n className={\n stateMedia.id === 0\n ? 'editor-post-featured-image__toggle'\n : 'editor-post-featured-image__preview'\n }\n onClick={open}\n >\n {stateMedia.id === 0 && __('Choose Media', 'blockbite')}\n {stateMedia.id && stateMedia.type === 'image' ? (\n <div className=\"blockbite--editor-visual-image\">\n <img\n alt={\n stateMedia.alt\n ? stateMedia.alt\n : __('Image', 'blockbite')\n }\n src={stateMedia.url}\n />\n </div>\n ) : (\n 'Add media'\n )}\n </Button>\n )}\n />\n </MediaUploadCheck>\n )}\n {stateMedia.id !== 0 && (\n <MediaUploadCheck>\n <MediaUpload\n title={__('Replace media', 'blockbite')}\n value={stateMedia.id}\n onSelect={onSelectMedia}\n allowedTypes={allowedTypes}\n render={({ open }) => (\n <Button onClick={open}>{__('Replace media', 'blockbite')}</Button>\n )}\n />\n </MediaUploadCheck>\n )}\n {stateMedia.id !== 0 && (\n <MediaUploadCheck>\n <Button onClick={() => removeMedia()} isDestructive>\n {__('Remove media', 'blockbite')}\n </Button>\n </MediaUploadCheck>\n )}\n </PanelRow>\n );\n}\n","import { Cross2 } from '@blockbite/icons';\nimport { Button, Popover as WordpressPopover } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\ntype PopoverProps = {\n children: React.ReactNode;\n className?: string;\n defaultValue?: string;\n value?: string;\n position?: any;\n visible?: boolean;\n onClick?: () => void;\n onVisibleChange?: (value: boolean) => void;\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n className,\n position,\n visible,\n onClick,\n onVisibleChange,\n}) => {\n const [isVisible, setIsVisible] = useState<boolean>(!!visible);\n\n useEffect(() => {\n if (visible !== undefined) {\n setIsVisible(visible);\n }\n }, [visible]);\n\n const toggleVisible = () => {\n const newValue = !isVisible;\n setIsVisible(newValue);\n onVisibleChange && onVisibleChange(newValue);\n };\n\n return (\n <>\n {isVisible && (\n <WordpressPopover\n position={position}\n className=\"blockbite-ui__popover\"\n onClick={onClick}\n onFocusOutside={() => {\n setIsVisible(false);\n onVisibleChange && onVisibleChange(false);\n }}\n >\n <div className={className}>\n <div className=\"relative h-full w-full p-4\">\n <Button\n onClick={toggleVisible}\n size=\"small\"\n className=\"close-button absolute right-0 top-0\"\n >\n <Cross2 />\n </Button>\n {children}\n </div>\n </div>\n </WordpressPopover>\n )}\n </>\n );\n};\n\nexport default Popover;\n","import { useEffect, useState } from '@wordpress/element';\nimport { Wrap } from './Wrap.js';\n\nimport { RangeControl as WordpressRangeControl } from '@wordpress/components';\n\nexport type RangeControlType = {\n defaultValue: string;\n label: string;\n min: number;\n max: number;\n withInputField?: boolean;\n onValueChange: (value: string) => void;\n gridMode?: boolean;\n showTooltip?: boolean;\n [key: string]: any;\n};\n\nexport const RangeSlider: React.FC<RangeControlType> = ({\n defaultValue,\n label,\n min = 0,\n max = 2000,\n withInputField = false,\n onValueChange,\n gridMode = false,\n showTooltip = false,\n ...props\n}) => {\n const [resetFallbackValue] = useState(0);\n const [rangeValue, setRangeValue] = useState<number>(0);\n\n useEffect(() => {\n setRangeValue(Math.round(parseInt(defaultValue) / (gridMode ? 16 : 1)));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaultValue]);\n /**\n * Set the range slider values\n * @param modifier\n */\n\n // convert back to arbitrary unit\n function handleRangeUpdate(value: number) {\n const gridValue = value * (gridMode ? 16 : 1);\n onValueChange(gridValue.toString());\n }\n\n return (\n <Wrap className=\"flex min-w-[240px] flex-col\">\n <WordpressRangeControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={label}\n value={rangeValue}\n min={min}\n max={max}\n showTooltip={showTooltip}\n withInputField={withInputField}\n onChange={(value) => {\n setRangeValue(value);\n handleRangeUpdate(value);\n }}\n resetFallbackValue={resetFallbackValue}\n {...props}\n />\n <span>{gridMode ? `${rangeValue * 16}px` : null} </span>\n </Wrap>\n );\n};\n","import { useEffect, useState } from '@wordpress/element';\nimport { ButtonToggleGroup } from './ButtonToggle.js';\nimport { DropdownPicker } from './DropdownPicker.js';\nimport { Popover } from './Popover.js';\nimport { RangeSlider } from './RangeSlider.js';\nimport { TextControl } from './TextControl.js';\n\nimport {\n ColumnSpacing as ColumnSpacingIcon,\n Desktop as DesktopIcon,\n Grid as GridIcon,\n Percentage as PercentageIcon,\n Slider as SliderIcon,\n Tailwind as TailwindUnitIcon,\n} from '@blockbite/icons';\n\ntype MetricsControlProps = {\n defaultUnit: string;\n defaultValue: string;\n units?:\n | string[]\n | 'native'\n | 'percent'\n | 'grid'\n | 'arbitrary'\n | 'fluid'\n | 'screen'\n | 'all';\n inputClassName?: string;\n onValueChange: (value: string) => void;\n onUnitChange: (unit: string) => void;\n};\n\n// TODO: defaultValue doesn't behave like a default value; it behaves more like a controlled value. We should refacor this to make it less confusing.\nexport const MetricsControl: React.FC<MetricsControlProps> = ({\n defaultUnit,\n defaultValue,\n onValueChange,\n onUnitChange,\n inputClassName = 'w-[75px]',\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [currentOptions, setCurrentOptions] = useState<string[]>([]);\n\n // Use local state for defaultUnit and defaultValue\n const [unit, setUnit] = useState(defaultUnit);\n const [value, setValue] = useState<string>('');\n const [resetValue, setResetValue] = useState<string | number>(defaultValue);\n\n // Set initial state from props\n useEffect(() => {\n if (defaultUnit) {\n setUnit(defaultUnit);\n }\n setValue(defaultValue.toString());\n }, [defaultUnit, defaultValue]);\n\n // Save last value after popover close to support \"reset\" functionality\n // Only apply to arbitrary units\n useEffect(() => {\n if (!isVisible && unit === 'arbitrary') {\n setResetValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVisible]);\n\n const showOptions = (u: string) => {\n if (u !== 'arbitrary' && bb?.codex?.units?.spacing?.[u]) {\n const options =\n bb.codex.units.spacing[u as keyof typeof bb.codex.units.spacing];\n setCurrentOptions(\n Array.isArray(options) ? options : Object.keys(options)\n );\n } else {\n setCurrentOptions([]);\n }\n setIsVisible(true);\n };\n\n const unitOptions = [\n {\n icon: <TailwindUnitIcon />,\n label: 'Tailwind CSS Units',\n value: 'native',\n },\n { icon: <PercentageIcon />, label: 'Percentage Units', value: 'percent' },\n { icon: <GridIcon />, label: 'Grid Units', value: 'grid' },\n { icon: <DesktopIcon />, label: 'Screen Units', value: 'screen' },\n { icon: <SliderIcon />, label: 'Pixel Units', value: 'arbitrary' },\n { icon: <ColumnSpacingIcon />, label: 'Fluid Units', value: 'fluid' },\n ];\n\n return (\n <div className=\"relative flex flex-col items-baseline\">\n <TextControl\n inputClassName={inputClassName}\n defaultValue={\n // Remove the \"b_\" prefix for grid units\n unit === 'grid' ? value.replace('b_', '') : value\n }\n onClick={() => unit !== 'arbitrary' && showOptions(unit)}\n onChange={(newValue) => {\n setValue(newValue);\n onValueChange(newValue);\n }}\n readOnly={unit !== 'arbitrary'}\n >\n <Popover\n visible={isVisible}\n position=\"bottom left\"\n className=\"w-[300px] bg-white shadow-sm\"\n onVisibleChange={setIsVisible}\n >\n {unit === 'arbitrary' ? (\n <RangeSlider\n defaultValue={value}\n label=\"Pixel Value\"\n min={0}\n max={100}\n gridMode={true}\n showTooltip={false}\n allowReset={true}\n resetFallbackValue={\n isNaN(resetValue.toString() as any)\n ? 0\n : Number(resetValue) / 16\n }\n onValueChange={(newValue: string) => {\n setValue(newValue);\n onValueChange(newValue);\n }}\n />\n ) : (\n <ButtonToggleGroup\n className=\"mt-4\"\n options={currentOptions.map((option) => ({\n value: option,\n label:\n unit === 'grid'\n ? option.toString().replace('b_', '')\n : option,\n onClick: () => {\n setValue(option);\n onValueChange(option);\n },\n }))}\n size=\"small\"\n defaultPressed={value?.toString() || ''}\n onPressedChange={(newValue: string) => {\n setValue(newValue);\n onValueChange(newValue);\n }}\n />\n )}\n </Popover>\n\n <DropdownPicker\n className=\"h-[32px]\"\n defaultValue={unit}\n options={unitOptions}\n onPressedChange={(selectedUnit) => {\n if (selectedUnit === 'reset') {\n setValue('');\n onValueChange('');\n setIsVisible(false);\n } else {\n setUnit(selectedUnit);\n onUnitChange(selectedUnit);\n showOptions(selectedUnit);\n }\n }}\n />\n </TextControl>\n </div>\n );\n};\n\nexport default MetricsControl;\n","import {\n Children,\n createContext,\n isValidElement,\n useContext,\n useEffect,\n useState,\n} from '@wordpress/element';\n\nimport { Modal as WordpressModal } from '@wordpress/components';\nimport classNames from 'classnames';\n\ntype ModalContextType = {\n closeModal: () => void;\n openModal: () => void;\n};\n\nconst ModalContext = createContext<ModalContextType | null>(null);\n\nexport const useModalContext = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error('useModalContext must be used within a ModalProvider');\n }\n return context;\n};\n\ntype ModalProps = {\n children: React.ReactElement | React.ReactElement[];\n defaultOpen: boolean;\n onOpenChange: (checked: boolean) => void;\n title: string;\n className?: string;\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n defaultOpen,\n onOpenChange,\n title,\n className,\n}) => {\n const [isOpen, setOpen] = useState(false);\n\n // Sync `isOpen` with `defaultOpen` when `defaultOpen` changes\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n const openModal = () => setOpen(true);\n const closeModal = () => setOpen(false);\n\n useEffect(() => {\n onOpenChange(isOpen);\n }, [isOpen, onOpenChange]);\n\n return (\n <ModalContext.Provider value={{ closeModal, openModal }}>\n {/* Render MOdalTrigger */}\n {Children.map(children, (child) => {\n return isValidElement(child) && child.type === ModalTrigger\n ? child\n : null;\n })}\n {isOpen && (\n <WordpressModal\n className={classNames('blockbite-ui__modal', className)}\n onRequestClose={closeModal}\n title={title}\n >\n <div className=\"relative\">\n {/* Render ModalHeader */}\n {Children.map(children, (child) => {\n return isValidElement(child) && child.type === ModalHeader\n ? child\n : null;\n })}\n {/* Render ModalContent */}\n {Children.map(children, (child) => {\n return isValidElement(child) && child.type === ModalContent\n ? child\n : null;\n })}\n {/* Render ModalFooter */}\n {Children.map(children, (child) => {\n return isValidElement(child) && child.type === ModalFooter\n ? child\n : null;\n })}\n </div>\n </WordpressModal>\n )}\n </ModalContext.Provider>\n );\n};\n\n// Header component for modal\nexport const ModalHeader: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n// Footer component for modal\nexport const ModalFooter: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames(\n 'border-gray-light fixed bottom-0 left-0 right-0 flex h-[4rem] flex-row items-center justify-end space-x-2 border-t bg-white px-4',\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n// Description component for modal\nexport const ModalContent: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames('text-gray-medium px-4 pb-4 text-sm', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const ModalClose: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const { closeModal } = useModalContext();\n return (\n <div onClick={closeModal} className=\"cursor-pointer\">\n {children}\n </div>\n );\n};\n\nexport const ModalTrigger: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const { openModal } = useModalContext();\n return (\n <div onClick={openModal} className=\"cursor-pointer\">\n {children}\n </div>\n );\n};\n","import { createPortal, useEffect, useMemo } from '@wordpress/element';\n\nfunction copyStyles(sourceDoc, targetDoc) {\n Array.from(sourceDoc.styleSheets).forEach((styleSheet: any) => {\n try {\n if (styleSheet.cssRules) {\n const newStyleEl = targetDoc.createElement('style');\n Array.from(styleSheet.cssRules).forEach((cssRule: any) => {\n newStyleEl.appendChild(targetDoc.createTextNode(cssRule.cssText));\n });\n targetDoc.head.appendChild(newStyleEl);\n } else if (styleSheet.href) {\n const newLinkEl = targetDoc.createElement('link');\n newLinkEl.rel = 'stylesheet';\n newLinkEl.href = styleSheet.href;\n targetDoc.head.appendChild(newLinkEl);\n }\n } catch (e) {\n if (styleSheet.href) {\n const newLinkEl = targetDoc.createElement('link');\n newLinkEl.rel = 'stylesheet';\n newLinkEl.href = styleSheet.href;\n targetDoc.head.appendChild(newLinkEl);\n } else {\n // eslint-disable-next-line no-console\n console.warn('Error copying styles:', e);\n }\n }\n });\n}\n\ntype Props = {\n windowInstance: Window;\n onClose: () => void;\n children: React.ReactNode;\n};\n\nexport const NewWindowPortal = ({\n windowInstance,\n onClose,\n children,\n}: Props) => {\n const containerEl = useMemo(() => document.createElement('div'), []);\n\n useEffect(() => {\n const win = windowInstance;\n\n win.document.body.innerHTML = '';\n win.document.body.appendChild(containerEl);\n copyStyles(document, win.document);\n win.document.title = document.title || 'Blockbite Editor';\n\n const handleBeforeUnload = () => {\n setTimeout(onClose, 100);\n };\n\n win.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n win.removeEventListener('beforeunload', handleBeforeUnload);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [windowInstance]);\n\n // Typecasting: https://github.com/vercel/next.js/discussions/64753\n return createPortal(children as any, containerEl);\n};\n","import { Notice as WordpressNotice } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype NoticeProps = {\n children: React.ReactNode;\n className?: string;\n status?: 'success' | 'error' | 'warning' | 'info';\n};\n\nexport const Notice = ({\n children,\n status = 'success',\n className,\n}: NoticeProps) => {\n const [showNotice, setShowNotice] = useState(true);\n\n return (\n <Wrap onClick={() => setShowNotice(false)}>\n {showNotice && (\n <WordpressNotice\n status={status}\n className={classNames(className)}\n onRemove={() => setShowNotice(false)}\n >\n {children}\n </WordpressNotice>\n )}\n </Wrap>\n );\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { createElement, forwardRef } from '@wordpress/element';\n\n/** @typedef {{isPressed?: boolean} & import('react').ComponentPropsWithoutRef<'svg'>} SVGProps */\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'circle'>} props\n *\n * @return {JSX.Element} Circle component\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const Circle = props => createElement('circle', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'g'>} props\n *\n * @return {JSX.Element} G component\n */\nexport const G = props => createElement('g', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'line'>} props\n *\n * @return {JSX.Element} Path component\n */\nexport const Line = props => createElement('line', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'path'>} props\n *\n * @return {JSX.Element} Path component\n */\nexport const Path = props => createElement('path', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'polygon'>} props\n *\n * @return {JSX.Element} Polygon component\n */\nexport const Polygon = props => createElement('polygon', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'rect'>} props\n *\n * @return {JSX.Element} Rect component\n */\nexport const Rect = props => createElement('rect', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'defs'>} props\n *\n * @return {JSX.Element} Defs component\n */\nexport const Defs = props => createElement('defs', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'radialGradient'>} props\n *\n * @return {JSX.Element} RadialGradient component\n */\nexport const RadialGradient = props => createElement('radialGradient', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'linearGradient'>} props\n *\n * @return {JSX.Element} LinearGradient component\n */\nexport const LinearGradient = props => createElement('linearGradient', props);\n\n/**\n * @param {import('react').ComponentPropsWithoutRef<'stop'>} props\n *\n * @return {JSX.Element} Stop component\n */\nexport const Stop = props => createElement('stop', props);\nexport const SVG = forwardRef(\n/**\n * @param {SVGProps} props isPressed indicates whether the SVG should appear as pressed.\n * Other props will be passed through to svg component.\n * @param {import('react').ForwardedRef<SVGSVGElement>} ref The forwarded ref to the SVG element.\n *\n * @return {JSX.Element} Stop component\n */\n({\n className,\n isPressed,\n ...props\n}, ref) => {\n const appliedProps = {\n ...props,\n className: clsx(className, {\n 'is-pressed': isPressed\n }) || undefined,\n 'aria-hidden': true,\n focusable: false\n };\n\n // Disable reason: We need to have a way to render HTML tag for web.\n // eslint-disable-next-line react/forbid-elements\n return /*#__PURE__*/_jsx(\"svg\", {\n ...appliedProps,\n ref: ref\n });\n});\nSVG.displayName = 'SVG';\n//# sourceMappingURL=index.js.map","import {\n Button,\n __experimentalInputControl as InputControl,\n __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { Path, SVG } from '@wordpress/primitives';\n\ntype PasswordInputProps = {\n label: string;\n value: string;\n onChange: (value: string) => void;\n [key: string]: any;\n};\n\nexport const PasswordInput = ({\n label,\n value,\n onChange,\n ...rest\n}: PasswordInputProps) => {\n const [showPassword, setShowPassword] = useState(false);\n\n return (\n <InputControl\n label={label}\n value={value}\n type={showPassword ? 'text' : 'password'}\n suffix={\n <InputControlSuffixWrapper variant=\"control\">\n <Button\n icon={\n <SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <Path\n d={\n showPassword\n ? 'M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z'\n : 'M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z'\n }\n />\n </SVG>\n }\n label=\"Show password\"\n onClick={() => setShowPassword((prev) => !prev)}\n size=\"small\"\n />\n </InputControlSuffixWrapper>\n }\n onChange={onChange}\n {...rest}\n />\n );\n};\n","import { Wrap } from './Wrap';\n\nexport type ProjectItem = {\n id: string | number;\n name: string;\n description: string;\n};\n\ntype Props = {\n items: ProjectItem[];\n activeId: string | number;\n onSelect: (id: string | number) => void;\n className?: string;\n};\n\nexport const ProjectsNavigation = ({\n items,\n activeId,\n onSelect,\n className,\n}: Props) => {\n return (\n <Wrap important className={className}>\n <div className=\"w-[200px] overflow-y-auto border-r border-gray-200 gap-2\">\n {items.map((item) => (\n <div\n key={item.id}\n onClick={() => onSelect(item.id)}\n className={`cursor-pointer p-2 border-l-4 flex gap-2 items-center ${\n activeId === item.id\n ? 'border-blue-500 bg-gray-100'\n : 'border-transparent'\n }`}\n >\n <span className=\"rounded bg-slate-300 w-12 h-12 flex items-center justify-center text-2xl font-bold text-white\">\n {item.name.charAt(0).toUpperCase()}\n </span>\n <p className=\"text-sm text-center mt-1\">{item.name}</p>\n </div>\n ))}\n </div>\n </Wrap>\n );\n};\n","export function ResponsiveImage(props) {\n const { media, mediaClass } = props;\n const { url, alt, sizes } = media;\n\n if (sizes === undefined) {\n return <img src={url} alt={alt} className={`media ${mediaClass}`} />;\n }\n\n const { thumbnail, medium, large } = sizes;\n const thumbnailImg = thumbnail || url;\n const mediumImg = medium || url;\n const largeImg = large || url;\n\n return (\n <picture className=\"responsive-media\">\n {thumbnailImg ? (\n <source\n media=\"(max-width: 768px)\"\n srcSet={thumbnailImg}\n className={`media ${mediaClass}`}\n />\n ) : null}\n {mediumImg ? (\n <source\n media=\"(min-width: 1024px)\"\n srcSet={mediumImg}\n className={`media ${mediaClass}`}\n />\n ) : null}\n {largeImg ? (\n <source\n media=\"(min-width: 1536px)\"\n srcSet={largeImg}\n className={`media ${mediaClass}`}\n />\n ) : null}\n {mediumImg ? (\n <img src={mediumImg} alt={alt} className={`media ${mediaClass}`} />\n ) : null}\n </picture>\n );\n}\n","export function ResponsiveVideo(props: any) {\n const { media, mediaClass } = props;\n const { url } = media;\n\n const videoUrl = url;\n\n return (\n <video\n className={`responsive-media ${mediaClass}`}\n preload=\"none\"\n playsInline\n controls\n autoPlay\n muted\n loop\n >\n <source src={videoUrl} type=\"video/mp4\" />\n </video>\n );\n}\n","import classNames from 'classnames';\nimport { Wrap } from './Wrap.js';\n\ntype ScrollListProps = {\n children: React.ReactNode;\n className?: string;\n height?: 'small' | 'medium' | 'large';\n};\n\nexport const ScrollList: React.FC<ScrollListProps> = ({\n children,\n className = '',\n height = 'large',\n}) => (\n <Wrap\n className={classNames('scrollbar relative overflow-y-scroll', className, {\n 'h-[400px]': height === 'large',\n 'h-[300px]': height === 'medium',\n 'h-[200px]': height === 'small',\n })}\n >\n {children}\n </Wrap>\n);\n","import { SelectControl as WordpressSelect } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\ntype SelectControlWrapperProps = {\n className?: string;\n defaultValue: string;\n children?: React.ReactNode;\n options: any[];\n label?: string;\n emptyLabel?: string;\n onChange?: (value: string) => void;\n};\n\nexport const SelectControlWrapper = ({\n onChange,\n className,\n defaultValue,\n options,\n label = '',\n emptyLabel = 'No options available',\n}: SelectControlWrapperProps) => {\n const [value, setValue] = useState('');\n\n useEffect(() => {\n setValue(defaultValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleChange = (val: string) => {\n setValue(val);\n if (onChange) {\n onChange(val);\n }\n };\n\n return (\n <div className={className}>\n {options && options.length > 0 && (\n <WordpressSelect\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={label || ''}\n value={value || ''}\n onChange={handleChange}\n options={[{ value: '', label: 'Select an option' }, ...options]}\n />\n )}\n {(!options || options?.length === 0) && (\n <p className=\"mb-2\">{emptyLabel}</p>\n )}\n </div>\n );\n};\n","import { createBlock } from '@wordpress/blocks';\nimport { Button } from '@wordpress/components';\n\nconst { select, dispatch } = wp.data;\n\ninterface SingleBlockTypeAppenderProps {\n buttonText?: string;\n}\n\nexport const SingleBlockTypeAppender = ({\n buttonText = 'Add block',\n}: SingleBlockTypeAppenderProps) => {\n const addLastDuplicate = () => {\n // Get the current block\n const currentBlock = select('core/block-editor').getSelectedBlock();\n const { clientId, innerBlocks } = currentBlock;\n\n // get the last block\n const lastBlock = innerBlocks[innerBlocks.length - 1];\n // duplicate the last block\n const newBlock = createBlock(\n lastBlock.name,\n lastBlock.attributes,\n lastBlock.innerBlocks\n );\n\n dispatch('core/block-editor').insertBlocks(newBlock, 0, clientId);\n };\n\n return (\n <Button variant=\"primary\" onClick={() => addLastDuplicate()}>\n {buttonText}\n </Button>\n );\n};\n","import { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype SlideInProps = {\n children: React.ReactNode;\n className?: string;\n watch?: any;\n};\n\nexport const SlideIn = ({ children, watch, className }: SlideInProps) => {\n const [slide, setSlide] = useState(0);\n\n useEffect(() => {\n setTimeout(() => {\n setSlide(1);\n }, 250);\n }, [watch]);\n\n return (\n <Wrap\n className={classNames(\n className,\n 'duration-50 transform transition-all ease-in-out',\n {\n 'translate-x-0': slide === 1,\n '-translate-x-full': slide === 0,\n }\n )}\n >\n {children}\n </Wrap>\n );\n};\n","import { Spinner as WordpressSpinner } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype SpinnerProps = {\n label?: string;\n className?: string;\n defaultValue: boolean;\n};\n\nexport const Spinner = ({ className, defaultValue }: SpinnerProps) => {\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n setIsLoading(false);\n }, 500);\n if (defaultValue) {\n setIsLoading(true);\n }\n }, [isLoading, defaultValue]);\n\n return isLoading && <WordpressSpinner className={classNames(className)} />;\n};\n","import { TabPanel } from '@wordpress/components';\nimport { createContext, useContext, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\nconst TabsContext = createContext<{\n activeTab: string | undefined;\n setActiveTab: React.Dispatch<React.SetStateAction<string | undefined>>;\n} | null>(null);\n\ntype TabsProps = {\n className?: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n};\n\nexport const TabsWrapper = ({\n children,\n defaultValue,\n value,\n onValueChange,\n ...rest\n}: TabsProps) => {\n const isControlled = value !== undefined;\n\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n\n const activeTab = isControlled ? value : internalValue;\n\n const handleTabChange = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n\n if (onValueChange) {\n onValueChange(newValue);\n }\n };\n\n const providerValue = {\n activeTab,\n setActiveTab: handleTabChange,\n };\n\n return (\n <TabsContext.Provider value={providerValue}>\n <Wrap important className={rest.className}>\n {children}\n </Wrap>\n </TabsContext.Provider>\n );\n};\n\ntype TabsListProps = {\n options: { name: string; title: string; icon?: any }[];\n children?: React.ReactNode;\n onValueChange?: (value: string) => void;\n className?: string;\n};\n\nexport const TabsList = ({\n options,\n children,\n className,\n onValueChange,\n}: TabsListProps) => {\n const context = useContext(TabsContext);\n const setActiveTab = onValueChange ? onValueChange : context?.setActiveTab;\n\n return (\n <TabPanel\n className={classNames('tabs-list', className)}\n tabs={options}\n onSelect={(tabName) => {\n setActiveTab(tabName);\n }}\n >\n {() => children}\n </TabPanel>\n );\n};\n\ntype TabsContentProps = {\n value: string;\n children: React.ReactNode;\n className?: string;\n};\n\nexport const TabsContent = ({\n value,\n children,\n className,\n}: TabsContentProps) => {\n const context = useContext(TabsContext);\n const activeTab = context?.activeTab;\n\n return activeTab === value ? (\n <Wrap className={className}>{children}</Wrap>\n ) : null;\n};\n\nexport const Tabs = {\n Wrapper: TabsWrapper,\n List: TabsList,\n Content: TabsContent,\n};\n","import classNames from 'classnames';\n\ntype TagProps = {\n children: React.ReactNode;\n className?: string;\n color:\n | 'blue'\n | 'ruby'\n | 'tomato'\n | 'red'\n | 'crimson'\n | 'pink'\n | 'plum'\n | 'purple'\n | 'violet'\n | 'iris'\n | 'indigo'\n | 'cyan'\n | 'teal'\n | 'jade'\n | 'green'\n | 'grass'\n | 'brown'\n | 'orange'\n | 'sky'\n | 'gray';\n asButton?: boolean;\n onClick?: () => void;\n};\n\nexport const Tag = ({\n children,\n onClick,\n color = 'blue',\n className,\n}: TagProps) => {\n return (\n <button onClick={onClick}>\n <div color={color} className={classNames(className)}>\n {children}\n </div>\n </button>\n );\n};\n","import { Pencil1 as Pencil1Icon } from '@blockbite/icons';\n\nimport { TextControl } from '@wordpress/components';\nimport { Wrap } from './Wrap.js';\n\ntype TextControlLabelProps = {\n className?: string;\n defaultValue: any;\n children?: React.ReactNode;\n onChange?: (value: string) => void;\n onClick?: () => void;\n};\n\nexport const TextControlLabel = ({\n onChange,\n defaultValue,\n children,\n}: TextControlLabelProps) => {\n return (\n <Wrap className=\"blockbite-ui__text-control-label flex items-center\">\n <span className=\"outline-b-2 relative block -outline-offset-2 outline-black\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n type=\"text\"\n value={defaultValue}\n onChange={onChange}\n />\n <Pencil1Icon className=\"absolute right-1 top-2\" />\n </span>{' '}\n {children}\n </Wrap>\n );\n};\n","import { memo, useEffect, useState } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\nimport {\n __experimentalToggleGroupControlOptionIcon as ToggleGroupControlIcon,\n __experimentalToggleGroupControlOption as ToggleGroupControlOption,\n __experimentalToggleGroupControl as WordpressToggleGroupControl,\n} from '@wordpress/components';\nimport classNames from 'classnames';\n\ntype ToggleProps = {\n className?: string;\n options: { value: string; label: string; icon?: React.ReactElement }[];\n defaultPressed: string;\n label?: string | boolean;\n variant?: 'primary' | 'secondary';\n display?: 'icon' | 'label';\n size?: 'small' | 'default' | 'compact';\n onPressedChange: (value: string) => void;\n};\n\nexport const ToggleGroup: React.FC<ToggleProps> = memo(\n ({\n className,\n options,\n defaultPressed,\n display = 'label',\n label = false,\n onPressedChange,\n }) => {\n const [isPressed, setIsPressed] = useState<string>('');\n\n const handlePressChange = (value: string) => {\n onPressedChange(value);\n };\n\n useEffect(() => {\n setIsPressed(defaultPressed);\n }, [defaultPressed]);\n\n return (\n <Wrap className={classNames(className)}>\n <WordpressToggleGroupControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n isBlock\n value={isPressed}\n label={typeof label === 'string' ? label : ''}\n >\n {options.map((option) =>\n display === 'icon' ? (\n <ToggleGroupControlIcon\n icon={option.icon}\n label={option.label}\n key={`ToggleGroupControlIcon-${option.value}`}\n value={option.value}\n onClick={() => handlePressChange(option.value)}\n />\n ) : (\n <ToggleGroupControlOption\n key={`ToggleGroupControlOption-${option.value}`}\n value={option.value}\n label={option.label}\n onClick={() => handlePressChange(option.value)}\n />\n )\n )}\n </WordpressToggleGroupControl>\n </Wrap>\n );\n }\n);\n","import { ToggleControl as Switch } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype ToggleSwitchProps = {\n label?: string;\n className?: string;\n onChange?: (checked: boolean) => void;\n checked?: boolean;\n};\n\nexport const ToggleSwitch = ({\n label,\n className,\n onChange,\n checked = false, // Default to false if undefined, so it's always controlled\n}: ToggleSwitchProps) => {\n const [isChecked, setIsChecked] = useState(checked);\n\n useEffect(() => {\n setIsChecked(checked);\n }, [checked]);\n\n return (\n <Wrap className={classNames(className, 'flex items-center gap-2')}>\n <Switch\n checked={isChecked}\n label={label}\n onChange={(e) => {\n setIsChecked(e);\n onChange && onChange(e);\n }}\n ></Switch>\n </Wrap>\n );\n};\n"],"names":["hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","Wrap","children","className","important","onClick","Icon","IconComponent","ButtonToggle","memo","variant","defaultPressed","onPressedChange","icon","size","display","label","isPressed","setIsPressed","useState","useEffect","handleClick","useCallback","prev","WordpressButton","ButtonToggleGroup","toggle","options","tabs","stretch","handleButtonClick","newValue","renderContent","option","index","AutocompleteDropdown","defaultValue","swatch","activeKeyword","setActiveKeyword","filteredOptions","setFilteredOptions","Dropdown","isOpen","onToggle","Button","TextControl","Badge","BitePreview","htmlContent","cssContent","frontendAssets","iframeRef","useRef","iframeBody","setIframeBody","iframe","iframeDocument","styleTag","type","id","url","existingElement","adoptedElement","newElement","createPortal","disabled","isIconDisplay","Chapter","title","ChapterDivider","help","badge","props","Checkbox","defaultChecked","isChecked","setChecked","CheckboxControl","ChevronDown","ColumnSpacing","Cross2","Desktop","Grid","Pencil1","Percentage","Plus","Slider","Tailwind","Trash","forwardRef","onChange","inputClassName","readOnly","placeholder","onBlur","helper","ref","fieldId","e","DataItemList","data","active","setActive","onCreate","onDelete","onUpdate","onSwitch","renderItemActions","addons","footerSlot","footerSlotClassName","rename","setRename","isSaving","setIsSaving","textRef","handleAdd","handleRemove","newData","d","currentIndex","nextActive","handleRenameBlur","item","PlusIcon","TrashIcon","DisappearingMessage","duration","show","message","isShowing","setIsShowing","hasMounted","timeoutRef","DropdownPicker","defaultIcon","ChevronDownIcon","currentOption","setCurrentOption","allOptions","DropdownMenu","_a","EmptyState","description","rest","FloatingPanel","panelRef","position","setPosition","dragging","setDragging","offset","setOffset","handleMouseMove","handleMouseUp","startDragging","rect","FocalPointControl","onValueChange","focalPoint","setFocalPoint","x","y","FocalPointPicker","LinkPicker","links","setLinks","activeLink","setActiveLink","apiFetch","fetchedLinks","__","LinkList","link","onActiveLink","list","MediaPicker","mediaProps","mediaCallback","allowedTypes","stateMedia","setStateMedia","removeMedia","onSelectMedia","media","safeSizes","sizeObject","mediaObj","PanelRow","MediaUploadCheck","MediaUpload","open","Popover","visible","onVisibleChange","isVisible","setIsVisible","toggleVisible","WordpressPopover","RangeSlider","min","max","withInputField","gridMode","showTooltip","resetFallbackValue","rangeValue","setRangeValue","handleRangeUpdate","gridValue","WordpressRangeControl","MetricsControl","defaultUnit","onUnitChange","currentOptions","setCurrentOptions","unit","setUnit","setValue","resetValue","setResetValue","showOptions","u","_c","_b","unitOptions","TailwindUnitIcon","PercentageIcon","GridIcon","DesktopIcon","SliderIcon","ColumnSpacingIcon","selectedUnit","ModalContext","createContext","useModalContext","context","useContext","Modal","defaultOpen","onOpenChange","setOpen","openModal","closeModal","Children","child","isValidElement","ModalTrigger","WordpressModal","ModalHeader","ModalContent","ModalFooter","ModalClose","copyStyles","sourceDoc","targetDoc","styleSheet","newStyleEl","cssRule","newLinkEl","NewWindowPortal","windowInstance","onClose","containerEl","useMemo","win","handleBeforeUnload","Notice","status","showNotice","setShowNotice","WordpressNotice","r","f","n","o","clsx","Path","createElement","SVG","appliedProps","_jsx","PasswordInput","showPassword","setShowPassword","InputControl","InputControlSuffixWrapper","ProjectsNavigation","items","activeId","onSelect","ResponsiveImage","mediaClass","alt","sizes","thumbnail","medium","large","thumbnailImg","mediumImg","largeImg","ResponsiveVideo","videoUrl","ScrollList","height","SelectControlWrapper","emptyLabel","handleChange","val","WordpressSelect","select","dispatch","SingleBlockTypeAppender","buttonText","addLastDuplicate","currentBlock","clientId","innerBlocks","lastBlock","newBlock","createBlock","SlideIn","watch","slide","setSlide","Spinner","isLoading","setIsLoading","WordpressSpinner","TabsContext","TabsWrapper","isControlled","internalValue","setInternalValue","providerValue","TabsList","setActiveTab","TabPanel","tabName","TabsContent","Tabs","Tag","color","TextControlLabel","Pencil1Icon","ToggleGroup","handlePressChange","WordpressToggleGroupControl","ToggleGroupControlIcon","ToggleGroupControlOption","ToggleSwitch","checked","setIsChecked","Switch"],"mappings":"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","x_google_ignoreList":[0,37,38]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/Icon.tsx","../src/ButtonToggle.tsx","../src/Wrap.tsx","../src/AutocompleteDropdown.tsx","../src/Badge.tsx","../src/BitePreview.tsx","../src/Button.tsx","../src/Chapter.tsx","../src/ChapterDivider.tsx","../src/Checkbox.tsx","../../icons/jsx/ChevronDown.jsx","../../icons/jsx/ColumnSpacing.jsx","../../icons/jsx/Cross2.jsx","../../icons/jsx/Desktop.jsx","../../icons/jsx/Grid.jsx","../../icons/jsx/Pencil1.jsx","../../icons/jsx/Percentage.jsx","../../icons/jsx/Plus.jsx","../../icons/jsx/Slider.jsx","../../icons/jsx/Tailwind.jsx","../../icons/jsx/Trash.jsx","../src/TextControl.tsx","../src/DataItemList.tsx","../src/DisappearingMessage.tsx","../src/DropdownPicker.tsx","../src/EmptyState.tsx","../src/FloatingPanel.tsx","../src/FocalPointControl.tsx","../src/LinkPicker.tsx","../src/MediaPicker.tsx","../src/Popover.tsx","../src/RangeSlider.tsx","../src/MetricsControl.tsx","../src/Modal.tsx","../src/NewWindowPortal.tsx","../src/Notice.tsx","../src/PasswordInput.tsx","../src/ProjectsNavigation.tsx","../src/ResponsiveImage.tsx","../src/ResponsiveVideo.tsx","../src/ScrollList.tsx","../src/SelectControlWrapper.tsx","../src/SingleBlockTypeAppender.tsx","../src/SlideIn.tsx","../src/Spinner.tsx","../src/Tabs.tsx","../src/Tag.tsx","../src/TextControlLabel.tsx","../src/ToggleGroup.tsx","../src/ToggleSwitch.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","type IconProps = {\n icon: React.FC<React.SVGProps<SVGSVGElement>> | null; // Type it as a React Functional Component\n [x: string]: any;\n};\n\nexport const Icon = ({ icon: IconComponent, ...rest }: IconProps) => {\n if (!IconComponent) return null;\n\n return (\n <div className={`blockbite--icon`}>\n <IconComponent {...rest} />\n </div>\n );\n};\n","import { Button as WordpressButton } from '@wordpress/components';\nimport { memo, useCallback } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { Icon } from './Icon.js';\n\ntype ButtonToggleProps = {\n children?: React.ReactNode;\n className?: string;\n value: string;\n pressed: boolean;\n variant?: 'primary' | 'secondary';\n size?: 'small' | 'default' | 'compact';\n icon?: any;\n display?: 'icon' | 'label' | '' | null;\n onPressedChange: (value: string) => void;\n label?: string;\n};\n\ntype ButtonToggleGroupOptionProp = {\n value: string;\n label: string;\n tooltip?: string;\n icon?: any;\n children?: React.ReactNode;\n};\n\ntype ButtonToggleGroupProps = {\n className?: string;\n options: ButtonToggleGroupOptionProp[];\n value: string;\n toggle?: boolean;\n size?: 'small' | 'default' | 'compact';\n tabs?: boolean;\n display?: 'icon' | 'label' | '' | null;\n variant?: 'primary' | 'secondary';\n stretch?: boolean;\n icon?: any;\n onPressedChange?: (value: string) => void;\n};\n\n// ButtonToggle: now fully controlled via `pressed` prop\nexport const ButtonToggle: React.FC<\n Omit<ButtonToggleProps, 'defaultPressed'> & { pressed: boolean }\n> = memo(\n ({\n children,\n className,\n value,\n variant = 'secondary',\n pressed,\n onPressedChange,\n icon,\n size = 'compact',\n display = 'auto',\n label,\n }) => {\n const handleClick = useCallback(() => {\n onPressedChange(value);\n }, [onPressedChange, value]);\n\n return (\n <WordpressButton\n aria-label={label}\n className={classNames(className, 'blockbite-ui__button--default')}\n value={value}\n size={size}\n label={label}\n variant={variant}\n showTooltip={true}\n isPressed={pressed}\n onClick={handleClick}\n >\n {icon && <Icon icon={icon} />}\n {display !== 'icon' ? children : null}\n {label && !children && display !== 'icon' ? <span>{label}</span> : null}\n </WordpressButton>\n );\n }\n);\n\n// ButtonToggleGroup: now fully controlled via `value` prop\nexport const ButtonToggleGroup: React.FC<\n Omit<ButtonToggleGroupProps, 'defaultPressed'> & { value: string }\n> = memo(\n ({\n className,\n value,\n toggle = true,\n display = 'auto',\n options,\n size = 'compact',\n tabs = false,\n variant = 'secondary',\n stretch = false,\n onPressedChange,\n }) => {\n const handleButtonClick = useCallback(\n (optionValue: string) => {\n const newValue = toggle && value === optionValue ? '' : optionValue;\n onPressedChange?.(newValue);\n },\n [onPressedChange, toggle, value]\n );\n\n const renderContent = (option: ButtonToggleGroupOptionProp) => {\n if (display === 'icon' && option?.icon) {\n return <Icon icon={option.icon} />;\n } else if (display === 'label') {\n return <span>{option.label}</span>;\n }\n return (\n <span className=\"flex items-center justify-center gap-1\">\n {option.icon && <Icon icon={option.icon} />}\n <span>{option.label}</span>\n </span>\n );\n };\n\n return (\n <div\n className={classNames(\n 'blockbite-ui__button-group flex flex-wrap gap-1',\n className,\n tabs ? 'blockbite-ui__button-group--tabs' : ''\n )}\n >\n {options.map((option, index) => (\n <WordpressButton\n key={`ButtonToggleGroup__${option.value}__${option.label}__${index}`}\n className={classNames('blockbite-ui__button--default', {\n grow: stretch,\n 'justify-center': stretch,\n })}\n aria-label={option.label}\n showTooltip={true}\n value={option.value}\n size={size}\n label={option?.tooltip || option.label}\n variant={variant}\n isPressed={value === option.value}\n onClick={() => handleButtonClick(option.value)}\n >\n {renderContent(option)}\n {option.children && option.children}\n </WordpressButton>\n ))}\n </div>\n );\n }\n);\n","type WrapProps = {\n children: React.ReactNode;\n className?: string;\n important?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n};\n\nexport const Wrap = ({\n children,\n className,\n important = false,\n onClick,\n}: WrapProps) => {\n if (important) {\n return (\n <div onClick={onClick}>\n <div className={className}>{children}</div>\n </div>\n );\n }\n\n return <div className={className}>{children}</div>;\n};\n","import { Button, Dropdown, TextControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { ButtonToggle } from './ButtonToggle.js';\nimport type { OptionProps } from './types.js';\nimport { Wrap } from './Wrap.js';\n\ninterface OptionPanelDropdownProps {\n value: string;\n options: { label: string; value: string }[];\n onPressedChange: (value: string) => void;\n swatch?: boolean;\n}\n\nexport function AutocompleteDropdown({\n value,\n options,\n swatch,\n onPressedChange,\n}: OptionPanelDropdownProps) {\n const [activeKeyword, setActiveKeyword] = useState('');\n const [filteredOptions, setFilteredOptions] = useState<OptionProps[]>([]);\n\n useEffect(() => {\n setFilteredOptions(\n options.filter((option: OptionProps) =>\n option.label.toLowerCase().includes(activeKeyword.toLowerCase())\n )\n );\n }, [activeKeyword, options]);\n\n useEffect(() => {\n setActiveKeyword('');\n setFilteredOptions(options);\n }, [value, options]);\n\n return (\n <Dropdown\n className=\"option-panel-dropdown\"\n contentClassName=\"option-panel-dropdown-content\"\n popoverProps={{ placement: 'bottom-start' }}\n renderToggle={({ isOpen, onToggle }) => (\n <Wrap important>\n <Button\n variant=\"secondary\"\n size=\"small\"\n onClick={onToggle}\n aria-expanded={isOpen}\n >\n <div className=\"flex items-center gap-1.5 !bg-transparent !p-0 !text-[11px] !text-current\">\n {swatch && !!value && (\n <div\n className={classNames(`h-3 w-3 rounded-full bg-${value}`)}\n />\n )}\n <span>{value || 'Select option…'}</span>\n </div>\n </Button>\n </Wrap>\n )}\n renderContent={() => (\n <Wrap important>\n <div className=\"w-52\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label=\"Search options\"\n value={activeKeyword}\n onChange={(changedValue) => setActiveKeyword(changedValue)}\n autoComplete=\"off\"\n />\n <div className=\"grid grid-cols-2 gap-1 !bg-transparent p-0 !pt-2\">\n {filteredOptions.length === 0 && (\n <div className=\"!text-gray-medium col-span-2 pb-2 text-center !text-[11px]\">\n No options found.\n </div>\n )}\n {filteredOptions.map((option: OptionProps, index: Number) => (\n <ButtonToggle\n key={`ButtonToggle__${option.value}___${index}`}\n className={classNames({\n 'bg-primary': option.value,\n })}\n size=\"small\"\n value={option.value.toString()}\n pressed={value === option.value}\n onPressedChange={(pressed) => {\n onPressedChange(pressed ? option.value : '');\n }}\n >\n {swatch && (\n <div\n className={classNames(\n `mr-3 h-3 w-3 rounded-full bg-${option.value}`\n )}\n />\n )}\n {option.label}\n </ButtonToggle>\n ))}\n </div>\n </div>\n </Wrap>\n )}\n />\n );\n}\n","import classNames from 'classnames';\n\ntype BadgeProps = {\n children?: React.ReactNode;\n className?: string;\n label?: string;\n onClick?: () => void;\n};\n\nexport const Badge = ({ children, className, label, onClick }: BadgeProps) => {\n return (\n <div\n onClick={onClick}\n className={classNames(\n className,\n 'inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800'\n )}\n >\n {label && (\n <span className=\"mr-1 text-xs font-semibold text-gray-700\">\n {label}\n </span>\n )}\n {children}\n </div>\n );\n};\n","import { createPortal, useEffect, useRef, useState } from '@wordpress/element';\n\nexport const BitePreview = ({ htmlContent, cssContent, frontendAssets }) => {\n const iframeRef = useRef(null);\n const [iframeBody, setIframeBody] = useState(null);\n\n useEffect(() => {\n const iframe = iframeRef.current;\n\n if (iframe) {\n iframe.onload = () => {\n const iframeDocument =\n iframe.contentDocument || iframe.contentWindow.document;\n\n if (iframeDocument) {\n setIframeBody(iframeDocument.body); // Set the iframe body for portal\n\n // Inject CSS content directly\n const styleTag = iframeDocument.createElement('style');\n styleTag.innerHTML = cssContent;\n iframeDocument.head.appendChild(styleTag);\n\n // Adopt or Create Frontend Assets\n frontendAssets.forEach(({ type, id, url }) => {\n const existingElement = document.getElementById(id);\n\n if (existingElement) {\n // If the asset exists in the parent, move it to the iframe\n const adoptedElement = document.adoptNode(\n existingElement.cloneNode(true)\n );\n iframeDocument.head.appendChild(adoptedElement);\n } else {\n // Create a new script or style if not found\n const newElement = iframeDocument.createElement(\n type === 'script' ? 'script' : 'link'\n );\n newElement.id = id;\n\n if (type === 'script') {\n newElement.src = url;\n newElement.async = true;\n } else {\n newElement.rel = 'stylesheet';\n newElement.href = url;\n }\n\n iframeDocument.head.appendChild(newElement);\n }\n });\n }\n };\n }\n\n return () => {\n if (iframe) {\n iframe.onload = null; // Clean up event listener\n }\n };\n }, [htmlContent, cssContent, frontendAssets]);\n\n return (\n <div\n className=\"render-preview-container\"\n style={{ width: '100%', minHeight: '100%' }}\n >\n <iframe\n ref={iframeRef}\n title=\"Preview\"\n className=\"editor-styles-wrapper\"\n width=\"100%\"\n height=\"100%\"\n />\n {iframeBody &&\n createPortal(\n <div className=\"b_\">\n <div\n className=\"b_utils\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n </div>,\n iframeBody\n )}\n </div>\n );\n};\n","import { Button as WordpressButton } from '@wordpress/components';\nimport classNames from 'classnames';\nimport { Icon } from './Icon.js';\n\ntype ButtonProps = {\n children?: React.ReactNode;\n asChild?: boolean;\n className?: string;\n display?: 'icon' | 'icon-lg' | 'label' | 'auto' | '' | null;\n onClick?: () => void;\n label?: string;\n size?: 'small' | 'default' | 'compact';\n variant?: 'primary' | 'secondary' | 'link' | 'primary' | 'tertiary';\n icon?: any;\n disabled?: boolean;\n};\n\nexport const Button = ({\n children,\n size = 'default',\n label,\n className,\n onClick,\n variant = 'primary',\n display = 'auto',\n icon,\n disabled = false,\n}: ButtonProps) => {\n const isIconDisplay = display === 'icon' || display === 'icon-lg';\n\n return (\n <WordpressButton\n size={size}\n variant={variant}\n label={label}\n showTooltip={true}\n disabled={disabled}\n className={classNames(\n className,\n 'blockbite-ui__button',\n 'flex items-center justify-center gap-1',\n { 'is-primary': variant === 'primary' },\n { 'is-secondary': variant === 'secondary' },\n { 'is-link': variant === 'link' },\n { 'is-tertiary': variant === 'tertiary' },\n { 'is-icon': display === 'icon' }\n )}\n onClick={onClick}\n >\n {icon && (\n <Icon\n icon={icon}\n className={classNames({ 'h-4 w-4': display === 'icon-lg' })}\n />\n )}\n {!isIconDisplay ? children : null}\n {label && !children && !isIconDisplay ? <span>{label}</span> : null}\n </WordpressButton>\n );\n};\n","import classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype ChapterProps = {\n children?: React.ReactNode;\n className?: string;\n title?: string;\n};\n\nexport const Chapter = ({ children, title }: ChapterProps) => {\n return (\n <Wrap\n className={classNames(\n 'text-gray-medium my-2 flex items-center gap-1 text-[12px] font-medium',\n classNames\n )}\n >\n dwdwwdwd\n {title && <Wrap className=\"font-medium\">{title}</Wrap>}\n {children}\n </Wrap>\n );\n};\n","import classNames from 'classnames';\nimport { Badge } from './Badge';\n\ntype ChapterDividerProps = {\n title?: string;\n className?: string;\n help?: string;\n badge?: string;\n [key: string]: any;\n};\n\nexport const ChapterDivider = ({\n title,\n className,\n help,\n badge,\n ...props\n}: ChapterDividerProps) => {\n return (\n <div className={classNames('mb-2', className)} {...props}>\n <div className=\"flex w-full flex-wrap items-center gap-2 justify-between\">\n <span className=\"shrink-1 text-[11px] font-medium uppercase leading-snug\">\n {title}\n </span>\n\n {!!badge && <Badge className=\"text-[10px] py-px px-1\">{badge}</Badge>}\n </div>\n {help && <small className=\"w-full shrink-0 text-[11px]\">{help}</small>}\n </div>\n );\n};\n","import { CheckboxControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\ntype CheckboxProps = {\n id: string;\n label?: string;\n help?: string;\n defaultChecked?: boolean;\n onCheckedChange: (checked: boolean, id: string) => void;\n};\n\nexport const Checkbox = ({ label, help, defaultChecked }: CheckboxProps) => {\n const [isChecked, setChecked] = useState(defaultChecked);\n\n useEffect(() => {\n setChecked(defaultChecked);\n }, [defaultChecked]);\n\n return (\n <Wrap className=\"blockbite-ui__checkbox mx-1 flex items-center gap-2\">\n <CheckboxControl\n label={label}\n help={help}\n checked={isChecked}\n onChange={setChecked}\n />\n </Wrap>\n );\n};\n","const ChevronDown = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default ChevronDown;\n","const ColumnSpacing = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.50012 1C7.22398 1 7.00012 1.22386 7.00012 1.5V13.5C7.00012 13.7761 7.22398 14 7.50012 14C7.77626 14 8.00012 13.7761 8.00012 13.5V1.5C8.00012 1.22386 7.77626 1 7.50012 1ZM3.31812 5.18161C3.14239 5.00587 2.85746 5.00587 2.68173 5.18161L0.681729 7.18161C0.505993 7.35734 0.505993 7.64227 0.681729 7.818L2.68173 9.818C2.85746 9.99374 3.14239 9.99374 3.31812 9.818C3.49386 9.64227 3.49386 9.35734 3.31812 9.18161L2.08632 7.9498H5.50017C5.7487 7.9498 5.95017 7.74833 5.95017 7.4998C5.95017 7.25128 5.7487 7.0498 5.50017 7.0498H2.08632L3.31812 5.818C3.49386 5.64227 3.49386 5.35734 3.31812 5.18161ZM11.6817 5.18161C11.506 5.35734 11.506 5.64227 11.6817 5.818L12.9135 7.0498H9.50017C9.25164 7.0498 9.05017 7.25128 9.05017 7.4998C9.05017 7.74833 9.25164 7.9498 9.50017 7.9498H12.9135L11.6817 9.18161C11.506 9.35734 11.506 9.64227 11.6817 9.818C11.8575 9.99374 12.1424 9.99374 12.3181 9.818L14.3181 7.818C14.4939 7.64227 14.4939 7.35734 14.3181 7.18161L12.3181 5.18161C12.1424 5.00587 11.8575 5.00587 11.6817 5.18161Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default ColumnSpacing;\n","const Cross2 = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Cross2;\n","const Desktop = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0 3.25V10.75C0 11.4404 0.559644 12 1.25 12H5.07341L4.82991 13.2986C4.76645 13.6371 5.02612 13.95 5.37049 13.95H9.62951C9.97389 13.95 10.2336 13.6371 10.1701 13.2986L9.92659 12H13.75C14.4404 12 15 11.4404 15 10.75V3.25C15 2.55964 14.4404 2 13.75 2H1.25C0.559643 2 0 2.55964 0 3.25ZM1.25 3H13.75C13.8881 3 14 3.11193 14 3.25V10.75C14 10.8881 13.8881 11 13.75 11H1.25C1.11193 11 1 10.8881 1 10.75V3.25C1 3.11193 1.11193 3 1.25 3ZM5.98909 12L5.79222 13.05H9.20778L9.01091 12H5.98909Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Desktop;\n","const Grid = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5C1.67157 1 1 1.67157 1 2.5ZM8 2V7H13V2.5C13 2.22386 12.7761 2 12.5 2H8ZM8 8V13H12.5C12.7761 13 13 12.7761 13 12.5V8H8ZM7 2H2.5C2.22386 2 2 2.22386 2 2.5V7H7V2ZM2 12.5C2 12.7761 2.22386 13 2.5 13H7V8H2V12.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Grid;\n","const Pencil1 = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.1465 1.14645L3.71455 8.57836C3.62459 8.66832 3.55263 8.77461 3.50251 8.89155L2.04044 12.303C1.9599 12.491 2.00189 12.709 2.14646 12.8536C2.29103 12.9981 2.50905 13.0401 2.69697 12.9596L6.10847 11.4975C6.2254 11.4474 6.3317 11.3754 6.42166 11.2855L13.8536 3.85355C14.0488 3.65829 14.0488 3.34171 13.8536 3.14645L11.8536 1.14645C11.6583 0.951184 11.3417 0.951184 11.1465 1.14645ZM11.5 2.20711L12.7929 3.5L5.71455 10.5784L4.21924 11.2192L3.78081 10.7808L4.42166 9.28547L11.5 2.20711Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Pencil1;\n","const Percentage = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <circle cx={4.85355} cy={4.5} r={1.5} fill=\"currentColor\" />\n <circle cx={9.85355} cy={10.5} r={1.5} fill=\"currentColor\" />\n <path\n d=\"M3 11.6464L11 3.64642\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport default Percentage;\n","const Plus = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M7.5 2.25C7.22386 2.25 7 2.47386 7 2.75V7H2.75C2.47386 7 2.25 7.22386 2.25 7.5C2.25 7.77614 2.47386 8 2.75 8H7V12.25C7 12.5261 7.22386 12.75 7.5 12.75C7.77614 12.75 8 12.5261 8 12.25V8H12.25C12.5261 8 12.75 7.77614 12.75 7.5C12.75 7.22386 12.5261 7 12.25 7H8V2.75C8 2.47386 7.77614 2.25 7.5 2.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Plus;\n","const Slider = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.49988 10.2504C7.1516 10.2504 6.0299 9.28026 5.79473 7.99997H0.5C0.223858 7.99997 0 7.77611 0 7.49997C0 7.22383 0.223858 6.99997 0.5 6.99997H5.7947C6.0298 5.71959 7.15154 4.74939 8.49988 4.74939C9.84822 4.74939 10.97 5.71959 11.2051 6.99997H14.5C14.7761 6.99997 15 7.22383 15 7.49997C15 7.77611 14.7761 7.99997 14.5 7.99997H11.205C10.9699 9.28026 9.84816 10.2504 8.49988 10.2504ZM8.49988 9.30038C7.50549 9.30038 6.69938 8.49427 6.69938 7.49988C6.69938 6.5055 7.50549 5.69939 8.49988 5.69939C9.49426 5.69939 10.3004 6.5055 10.3004 7.49988C10.3004 8.49427 9.49426 9.30038 8.49988 9.30038Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Slider;\n","const Tailwind = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M4 5.33333C4.4 3.77778 5.4 3 7 3C9.4 3 9.7 4.75 10.9 5.04167C11.7 5.23611 12.4 4.94444 13 4.16667C12.6 5.72222 11.6 6.5 10 6.5C7.6 6.5 7.3 4.75 6.1 4.45833C5.3 4.26389 4.6 4.55556 4 5.33333ZM1 8.83333C1.4 7.27778 2.4 6.5 4 6.5C6.4 6.5 6.7 8.25 7.9 8.54167C8.7 8.73611 9.4 8.44444 10 7.66667C9.6 9.22222 8.6 10 7 10C4.6 10 4.3 8.25 3.1 7.95833C2.3 7.76389 1.6 8.05556 1 8.83333Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Tailwind;\n","const Trash = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5 1.5C5 1.77614 5.22386 2 5.5 2H9.5C9.77614 2 10 1.77614 10 1.5C10 1.22386 9.77614 1 9.5 1H5.5C5.22386 1 5 1.22386 5 1.5ZM3.5 3H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H11V12C11 12.5523 10.5523 13 10 13H5C4.44772 13 4 12.5523 4 12V4L3.5 4C3.22386 4 3 3.77614 3 3.5C3 3.22386 3.22386 3 3.5 3ZM10 4V12H5V4H10Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Trash;\n","import { forwardRef } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype TextControlProps = {\n className?: string;\n inputClassName?: string;\n value: any;\n children?: React.ReactNode;\n onChange?: (value: string) => void;\n onClick?: () => void;\n readOnly?: boolean;\n placeholder?: string;\n onBlur?: (value) => void;\n type?: string;\n label?: string;\n helper?: string;\n [key: string]: any;\n};\n\nexport const TextControl = forwardRef<HTMLInputElement, TextControlProps>(\n (\n {\n onClick,\n onChange,\n className,\n value,\n children,\n inputClassName,\n readOnly,\n placeholder,\n onBlur,\n type = 'text',\n label,\n helper = '',\n ...props\n },\n ref\n ) => {\n const fieldId = `text-control-${Math.random()\n .toString(36)\n .substring(2, 15)}`;\n\n return (\n <div\n className={classNames('flex items-center p-0', className)}\n {...props}\n >\n {label ? (\n <label htmlFor={fieldId} className=\"text-primary !m-0 !mb-0 !mr-2\">\n {label}\n </label>\n ) : null}\n <input\n id={fieldId}\n className={classNames(\n 'components-text-control__input',\n inputClassName\n )}\n type={type}\n value={value}\n placeholder={placeholder}\n onFocus={() => onClick && onClick()}\n onBlur={(e) => {\n if (onClick) onClick();\n if (onBlur) onBlur(e.target.value);\n }}\n onChange={(e) => onChange && onChange(e.target.value)}\n readOnly={readOnly}\n ref={ref}\n />\n {children}\n {helper && <p className=\"text-primary !m-0 !mb-0 text-xs\">{helper}</p>}\n </div>\n );\n }\n);\n\nTextControl.displayName = 'TextControl'; // Recommended for debugging\n","import { Plus as PlusIcon, Trash as TrashIcon } from '@blockbite/icons';\nimport { Button } from '@wordpress/components';\nimport { useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport type { DataItem } from '@blockbite/types';\nimport { TextControl } from './TextControl.js';\nimport { Wrap } from './Wrap.js';\n\ntype DataListProps = {\n data: DataItem[];\n active: any;\n setActive: (item: DataItem | undefined) => void;\n onCreate: () => void;\n onDelete: (id: string) => void;\n onUpdate: (id: string, updates: Partial<DataItem>) => void;\n onSwitch: (prevId: string, updates: Partial<DataItem>) => void;\n renderItemActions?: (item: DataItem) => React.ReactNode;\n addons?: JSX.Element;\n className?: string;\n footerSlot?: React.ReactNode;\n footerSlotClassName?: string;\n};\n\nexport const DataItemList = ({\n data,\n active,\n setActive,\n onCreate,\n onDelete,\n onUpdate,\n onSwitch,\n renderItemActions,\n addons,\n className = '',\n footerSlot,\n footerSlotClassName = '',\n}: DataListProps) => {\n const [rename, setRename] = useState<{ id: string; name: string }>({\n id: '',\n name: '',\n });\n const [isSaving, setIsSaving] = useState(false);\n\n const textRef = useRef<HTMLInputElement | null>(null);\n\n const handleAdd = () => {\n onCreate();\n };\n\n const handleRemove = () => {\n if (!active || data.length === 0) return;\n\n const newData = data.filter((d) => d.id !== active?.id);\n const currentIndex = data.findIndex((d) => d.id === active?.id);\n const nextActive = newData[currentIndex] || newData[0];\n\n onDelete(active?.id);\n setActive(nextActive);\n };\n\n const handleRenameBlur = (value: string) => {\n setIsSaving(true);\n if (rename.id) {\n onUpdate(rename.id, { name: value });\n }\n\n setTimeout(() => {\n setRename({ id: '', name: '' });\n setIsSaving(false);\n }, 500);\n };\n\n return (\n <Wrap important className={className}>\n <ul className=\"h-[calc(100%-80px)] divide-y overflow-auto\">\n {addons}\n {data.length > 0 && (\n <li>\n <ul className=\"divide-y divide-border border-b border-border\">\n {data.map((item) => (\n <li\n key={`data__${item.id}`}\n className={classNames(\n 'relative !mb-0 flex items-center justify-between gap-1 bg-opacity-50 hover:bg-easy',\n {\n 'bg-easy': item.id === active?.id,\n }\n )}\n >\n <div className=\"flex-1 relative\">\n <button\n className=\"text-gray-medium w-full truncate px-3 py-2 text-left text-sm/6 font-semibold hover:text-wordpress\"\n onClick={() => {\n onSwitch(active?.id, { ...active });\n setActive(item);\n }}\n onDoubleClick={() => {\n setRename({ id: item.id, name: item.name || '' });\n }}\n >\n {isSaving && rename.id === item.id ? (\n <span className=\"animate-pulse text-gray-medium\">\n {rename.name}\n </span>\n ) : (\n <span className=\"text-gray-medium\">\n {item.name || 'Untitled'}\n </span>\n )}\n </button>\n {rename.id === item.id && !isSaving && (\n <TextControl\n className=\"absolute left-1 top-0 w-[calc(100%-.5rem)] h-full\"\n inputClassName=\"w-full\"\n defaultValue={rename.name}\n onChange={(value) =>\n setRename({ ...rename, name: value })\n }\n ref={textRef}\n onBlur={handleRenameBlur}\n />\n )}\n </div>\n {renderItemActions && (\n <div className=\"flex gap-1 pr-1\">\n {renderItemActions(item)}\n </div>\n )}\n </li>\n ))}\n </ul>\n </li>\n )}\n </ul>\n <div\n className={classNames(\n 'flex flex-wrap justify-center gap-2 p-2',\n footerSlotClassName\n )}\n >\n {footerSlot}\n <Button\n onClick={handleAdd}\n icon={<PlusIcon className=\"h-4 w-4\" />}\n variant=\"tertiary\"\n size=\"compact\"\n >\n Add\n </Button>\n <Button\n onClick={handleRemove}\n icon={<TrashIcon className=\"h-4 w-4\" />}\n variant=\"tertiary\"\n size=\"compact\"\n disabled={!active || data.length === 0}\n >\n Remove\n </Button>\n </div>\n </Wrap>\n );\n};\n\nexport default DataItemList;\n","import { useEffect, useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { Wrap } from './Wrap.js';\n\ntype DisappearingMessageProps = {\n message?: string;\n className?: string;\n duration?: number;\n children?: React.ReactNode;\n show: boolean;\n};\n\nexport const DisappearingMessage = ({\n duration = 3000,\n className,\n children,\n show,\n message,\n}: DisappearingMessageProps) => {\n const [isShowing, setIsShowing] = useState(false);\n const hasMounted = useRef(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n hasMounted.current = true;\n }, []);\n\n useEffect(() => {\n if (!hasMounted.current) return;\n\n if (show) {\n setIsShowing(true);\n timeoutRef.current = setTimeout(() => {\n setIsShowing(false);\n }, duration);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [show, duration]);\n\n if (!isShowing) return null;\n\n return (\n <Wrap\n important\n className={classNames('bb-ui__disappearing-message', className)}\n >\n <div className=\"bb-ui__disappearing-message__content\">\n {message ?? children}\n </div>\n </Wrap>\n );\n};\n","import { ChevronDown as ChevronDownIcon } from '@blockbite/icons';\nimport { DropdownMenu } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Icon } from './Icon.js';\n\ntype DropdownPickerProps = {\n label?: string;\n className?: string;\n value: string;\n defaultIcon?: any;\n size?: 'small' | 'medium' | 'large';\n options: {\n icon?: React.ReactElement;\n label: string;\n subtitle?: string;\n value: string;\n }[];\n onPressedChange: (value: string | null) => void; // Updated to allow `null` for reset\n [x: string]: any;\n};\n\nexport const DropdownPicker = ({\n label,\n className,\n value,\n defaultIcon = ChevronDownIcon,\n size = 'medium',\n onPressedChange,\n options,\n ...rest\n}: DropdownPickerProps) => {\n const [currentOption, setCurrentOption] = useState<string | null>(null);\n\n useEffect(() => {\n setCurrentOption(value);\n }, [value]);\n\n const allOptions = [\n ...options.map((option) => ({\n icon: option.icon,\n label: option.label,\n title: option.label,\n value: option.value,\n onClick: () => {\n setCurrentOption(option.value);\n onPressedChange(option.value);\n },\n })),\n {\n icon: <Icon icon={defaultIcon} />,\n title: 'Reset',\n value: 'reset',\n onClick: () => {\n setCurrentOption('reset');\n onPressedChange('reset');\n },\n },\n ];\n\n let iconSize = '1em';\n if (size === 'medium') {\n iconSize = '1.5em';\n } else if (size === 'large') {\n iconSize = '2em';\n }\n\n return (\n <DropdownMenu\n controls={allOptions}\n className={classNames('blockbite-ui__dropdown-picker', className)}\n icon={\n options.find((option) => option.value === currentOption)?.icon || (\n <Icon width={iconSize} height={iconSize} icon={defaultIcon} />\n )\n }\n label={label || 'Select'}\n {...rest}\n />\n );\n};\n","type Props = {\n icon?: JSX.Element;\n title: string;\n description: string;\n children?: React.ReactNode;\n [key: string]: any;\n};\n\nexport function EmptyState({\n icon,\n title,\n description,\n children = null,\n ...rest\n}: Props) {\n return (\n <div {...rest}>\n <div className=\"flex h-full w-full flex-col items-center justify-center text-center !font-sans\">\n <div className=\"max-w-sm\">\n {icon && <div className=\"mx-auto !text-gray-400\">{icon}</div>}\n <h3 className=\"text-gray-medium mt-2 !font-sans text-sm font-medium\">\n {title}\n </h3>\n <p className=\"mt-1 !font-sans text-sm !text-gray-500\">\n {description}\n </p>\n {children && <div className=\"mt-4\">{children}</div>}\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef, useState } from '@wordpress/element';\n\ntype DraggablePanelProps = {\n children: React.ReactNode;\n};\n\nexport function FloatingPanel({\n children,\n}: DraggablePanelProps & {\n children: React.ReactNode;\n}) {\n const panelRef = useRef(null);\n const [position, setPosition] = useState({ x: 100, y: 100 });\n const [dragging, setDragging] = useState(false);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n\n useEffect(() => {\n const handleMouseMove = (e) => {\n if (dragging) {\n setPosition({\n x: e.clientX - offset.x,\n y: e.clientY - offset.y,\n });\n }\n };\n\n const handleMouseUp = () => setDragging(false);\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }, [dragging, offset]);\n\n const startDragging = (e) => {\n const rect = panelRef.current.getBoundingClientRect();\n setOffset({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setDragging(true);\n };\n\n return (\n <div>\n <div\n ref={panelRef}\n className=\"fixed bg-white shadow-xl rounded-2xl p-4 w-[400px] h-[550px] z-[9999]\"\n style={{ left: position.x, top: position.y }}\n >\n {children}\n <div\n className=\"absolute top-1 right-1 cursor-move w-5 h-5 bg-gray-300 rounded\"\n onMouseDown={startDragging}\n ></div>\n </div>\n </div>\n );\n}\n","import { FocalPointPicker } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\ntype FocalPointControlProps = {\n value: string;\n onValueChange: (value: string) => void;\n url?: string;\n};\n\nexport const FocalPointControl: React.FC<FocalPointControlProps> = ({\n value,\n onValueChange,\n url,\n}) => {\n const [focalPoint, setFocalPoint] = useState({\n x: 0.5,\n y: 0.5,\n });\n\n // Sync local state with controlled value prop\n useEffect(() => {\n if (value && value.includes('%')) {\n const [x, y] = value\n .replace('[', '')\n .replace('%]', '')\n .split('_')\n .map((v: string) => parseFloat(v) / 100);\n setFocalPoint({ x, y });\n }\n }, [value]);\n\n // Notify parent on local state change\n useEffect(() => {\n onValueChange(\n `[${(focalPoint.x * 100).toFixed(2)}%_${(focalPoint.y * 100).toFixed(2)}%]`\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [focalPoint]);\n\n return (\n <Wrap className=\"relative flex flex-col\">\n <FocalPointPicker\n url={url}\n value={focalPoint}\n onDrag={setFocalPoint}\n onChange={setFocalPoint}\n />\n </Wrap>\n );\n};\n\nexport default FocalPointControl;\n","import apiFetch from '@wordpress/api-fetch';\nimport { TextControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Wrap } from './Wrap.js';\n\nexport function LinkPicker(props) {\n const [activeKeyword, setActiveKeyword] = useState('');\n const [links, setLinks] = useState<\n Array<{ id: number; url: string; title: string; post_type: string }>\n >([]);\n const [activeLink, setActiveLink] = useState({\n url: '',\n title: '',\n });\n\n useEffect(() => {\n if (activeKeyword === '') return;\n setLinks(null);\n apiFetch({\n path: `/blockbite/v1/block-helpers/get-links/${activeKeyword}`,\n }).then(\n (\n fetchedLinks: Array<{\n id: number;\n url: string;\n title: string;\n post_type: string;\n }> | null\n ) => {\n if (fetchedLinks?.length) {\n setLinks([...fetchedLinks]);\n } else {\n setLinks([]);\n }\n }\n );\n }, [activeKeyword]);\n\n useEffect(() => {\n if (activeLink.url !== '') {\n props.parentCallback(activeLink);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeLink]);\n\n return (\n <Wrap className=\"blockbite--editor-linkwrap\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={__('Search link', 'blockbitelinks')}\n value={activeKeyword}\n placeholder=\"Example: About\"\n onChange={(value) => setActiveKeyword(value)}\n help={__('Type a post, page, title', 'blockbitelinks')}\n />\n {activeKeyword ? (\n <div className=\"blockbite--editor-linklist\">\n <LinkList\n links={links}\n onActiveLink={(link) => [\n setActiveLink({ ...link }),\n setActiveKeyword(''),\n ]}\n />\n </div>\n ) : null}\n </Wrap>\n );\n}\nfunction LinkList({ links, onActiveLink }) {\n if (links === null) {\n return <p>Loading...</p>;\n } else if (links.length === 0) {\n return <p>No Results</p>;\n }\n\n const list = links.map((link) => (\n <Wrap key={link.id}>\n <span\n className=\"blockbite--editor-link\"\n onClick={() => onActiveLink(link)}\n >\n <span>{link.title}</span>\n <span className=\"blockbite--preview-link\">{link.url}</span>\n <span className=\"blockbite--preview-link\">{link.post_type}</span>\n </span>\n </Wrap>\n ));\n\n return <>{list}</>; // ✅ Wrapped\n}\n","import { MediaUpload, MediaUploadCheck } from '@wordpress/block-editor';\n\nimport { Button, PanelRow } from '@wordpress/components';\n\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\nexport function MediaPicker({ mediaProps, mediaCallback }) {\n const allowedTypes = [\n 'image',\n 'video',\n 'image/svg+xml',\n 'svg',\n 'text/plain',\n 'application/json',\n ];\n\n // toggles\n const [stateMedia, setStateMedia] = useState({\n id: null,\n url: '',\n sizes: [],\n alt: '',\n type: '',\n width: 0,\n height: 0,\n });\n\n useEffect(() => {\n if (mediaProps) {\n setStateMedia({ ...mediaProps });\n }\n }, [mediaProps]);\n\n // image handlers\n const removeMedia = () => {\n const mediaObj = {\n mediaId: 0,\n mediaUrl: '',\n };\n mediaCallback({ ...mediaObj });\n };\n // onselect media\n const onSelectMedia = (media) => {\n const safeSizes = {\n thumbnail: null,\n medium: null,\n large: null,\n };\n\n // Normalize Sizes\n if (media?.sizes) {\n Object.keys(media.sizes).map((key) => {\n const sizeObject = media.sizes[key];\n\n if (key === 'thumbnail') {\n safeSizes.thumbnail = sizeObject.url;\n } else if (sizeObject.width < 768 || sizeObject.height < 768) {\n safeSizes.thumbnail = sizeObject.url;\n }\n\n if (key === 'medium') {\n safeSizes.medium = sizeObject.url;\n } else if (\n (sizeObject.width > 1024 && sizeObject.width < 1024) ||\n (sizeObject.height < 1536 && sizeObject.height > 1536)\n ) {\n safeSizes.medium = sizeObject.url;\n }\n\n if (key === 'large') {\n safeSizes.large = sizeObject.url;\n } else if (sizeObject.width > 1536 || sizeObject.height > 1536) {\n safeSizes.large = sizeObject.url;\n }\n\n return null;\n });\n }\n\n // if type ends .lottie then it is a lottie file\n if (media.url.endsWith('.json')) {\n media.type = 'lottie';\n }\n // if type ends with .svg then it is an svg file\n if (media.url.endsWith('.svg')) {\n media.type = 'svg';\n }\n\n const mediaObj = {\n id: media.id,\n url: media.url,\n sizes: safeSizes,\n alt: media.alt,\n type: media.type,\n width: media.width,\n height: media.height,\n };\n mediaCallback({ ...mediaObj });\n };\n\n return (\n <PanelRow>\n {stateMedia.id !== null && (\n <MediaUploadCheck>\n <MediaUpload\n onSelect={onSelectMedia}\n value={stateMedia.id}\n allowedTypes={allowedTypes}\n render={({ open }) => (\n <Button\n className={\n stateMedia.id === 0\n ? 'editor-post-featured-image__toggle'\n : 'editor-post-featured-image__preview'\n }\n onClick={open}\n >\n {stateMedia.id === 0 && __('Choose Media', 'blockbite')}\n {stateMedia.id && stateMedia.type === 'image' ? (\n <div className=\"blockbite--editor-visual-image\">\n <img\n alt={\n stateMedia.alt\n ? stateMedia.alt\n : __('Image', 'blockbite')\n }\n src={stateMedia.url}\n />\n </div>\n ) : (\n 'Add media'\n )}\n </Button>\n )}\n />\n </MediaUploadCheck>\n )}\n {stateMedia.id !== 0 && (\n <MediaUploadCheck>\n <MediaUpload\n title={__('Replace media', 'blockbite')}\n value={stateMedia.id}\n onSelect={onSelectMedia}\n allowedTypes={allowedTypes}\n render={({ open }) => (\n <Button onClick={open}>{__('Replace media', 'blockbite')}</Button>\n )}\n />\n </MediaUploadCheck>\n )}\n {stateMedia.id !== 0 && (\n <MediaUploadCheck>\n <Button onClick={() => removeMedia()} isDestructive>\n {__('Remove media', 'blockbite')}\n </Button>\n </MediaUploadCheck>\n )}\n </PanelRow>\n );\n}\n","import { Cross2 } from '@blockbite/icons';\nimport { Button, Popover as WordpressPopover } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\ntype PopoverProps = {\n children: React.ReactNode;\n className?: string;\n defaultValue?: string;\n value?: string;\n position?: any;\n visible?: boolean;\n onClick?: () => void;\n onVisibleChange?: (value: boolean) => void;\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n className,\n position,\n visible,\n onClick,\n onVisibleChange,\n}) => {\n const [isVisible, setIsVisible] = useState<boolean>(!!visible);\n\n useEffect(() => {\n if (visible !== undefined) {\n setIsVisible(visible);\n }\n }, [visible]);\n\n const toggleVisible = () => {\n const newValue = !isVisible;\n setIsVisible(newValue);\n onVisibleChange && onVisibleChange(newValue);\n };\n\n return (\n <>\n {isVisible && (\n <WordpressPopover\n position={position}\n className=\"blockbite-ui__popover\"\n onClick={onClick}\n onFocusOutside={() => {\n setIsVisible(false);\n onVisibleChange && onVisibleChange(false);\n }}\n >\n <div className={className}>\n <div className=\"relative h-full w-full p-4\">\n <Button\n onClick={toggleVisible}\n size=\"small\"\n className=\"close-button absolute right-0 top-0\"\n >\n <Cross2 />\n </Button>\n {children}\n </div>\n </div>\n </WordpressPopover>\n )}\n </>\n );\n};\n\nexport default Popover;\n","import { useEffect, useState } from '@wordpress/element';\nimport { Wrap } from './Wrap.js';\n\nimport { RangeControl as WordpressRangeControl } from '@wordpress/components';\n\nexport type RangeControlType = {\n value: string;\n label: string;\n min: number;\n max: number;\n withInputField?: boolean;\n onValueChange: (value: string) => void;\n gridMode?: boolean;\n showTooltip?: boolean;\n [key: string]: any;\n};\n\nexport const RangeSlider: React.FC<RangeControlType> = ({\n value,\n label,\n min = 0,\n max = 2000,\n withInputField = false,\n onValueChange,\n gridMode = false,\n showTooltip = false,\n ...props\n}) => {\n const [resetFallbackValue] = useState(0);\n const [rangeValue, setRangeValue] = useState<number>(0);\n\n // Sync local state with controlled value prop\n useEffect(() => {\n setRangeValue(Math.round(parseInt(value) / (gridMode ? 16 : 1)));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n // convert back to arbitrary unit\n function handleRangeUpdate(val: number) {\n const gridValue = val * (gridMode ? 16 : 1);\n onValueChange(gridValue.toString());\n }\n\n return (\n <Wrap className=\"flex min-w-[240px] flex-col\">\n <WordpressRangeControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={label}\n value={rangeValue}\n min={min}\n max={max}\n showTooltip={showTooltip}\n withInputField={withInputField}\n onChange={(val) => {\n setRangeValue(val);\n handleRangeUpdate(val);\n }}\n resetFallbackValue={resetFallbackValue}\n {...props}\n />\n <span>{gridMode ? `${rangeValue * 16}px` : null} </span>\n </Wrap>\n );\n};\n","import {\n __experimentalInputControl as InputControl,\n __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport { ButtonToggleGroup } from './ButtonToggle.js';\nimport { DropdownPicker } from './DropdownPicker.js';\nimport { Popover } from './Popover.js';\nimport { RangeSlider } from './RangeSlider.js';\n\nimport {\n ColumnSpacing as ColumnSpacingIcon,\n Desktop as DesktopIcon,\n Grid as GridIcon,\n Percentage as PercentageIcon,\n Slider as SliderIcon,\n Tailwind as TailwindUnitIcon,\n} from '@blockbite/icons';\n\ntype MetricsControlProps = {\n unit: string;\n value: string;\n units?:\n | string[]\n | 'native'\n | 'percent'\n | 'grid'\n | 'arbitrary'\n | 'fluid'\n | 'screen'\n | 'all';\n inputClassName?: string;\n onValueChange: (value: string) => void;\n onUnitChange: (unit: string) => void;\n};\n\nexport const MetricsControl: React.FC<MetricsControlProps> = ({\n unit,\n value,\n onValueChange,\n onUnitChange,\n inputClassName = '',\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [currentOptions, setCurrentOptions] = useState<string[]>([]);\n const [resetValue, setResetValue] = useState<string | number>(value);\n\n // Save last value after popover close to support \"reset\" functionality\n useEffect(() => {\n if (!isVisible && unit === 'arbitrary') {\n setResetValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVisible]);\n\n const showOptions = (u: string) => {\n if (u !== 'arbitrary' && bb?.codex?.units?.spacing?.[u]) {\n const options =\n bb.codex.units.spacing[u as keyof typeof bb.codex.units.spacing];\n setCurrentOptions(\n Array.isArray(options) ? options : Object.keys(options)\n );\n } else {\n setCurrentOptions([]);\n }\n setIsVisible(true);\n };\n\n const unitOptions = [\n {\n icon: <TailwindUnitIcon />,\n label: 'Tailwind CSS Units',\n value: 'native',\n },\n { icon: <PercentageIcon />, label: 'Percentage Units', value: 'percent' },\n { icon: <GridIcon />, label: 'Grid Units', value: 'grid' },\n { icon: <DesktopIcon />, label: 'Screen Units', value: 'screen' },\n { icon: <SliderIcon />, label: 'Pixel Units', value: 'arbitrary' },\n { icon: <ColumnSpacingIcon />, label: 'Fluid Units', value: 'fluid' },\n ];\n\n return (\n <div className=\"relative flex flex-col items-baseline\">\n <InputControl\n __next40pxDefaultSize\n className={inputClassName}\n value={unit === 'grid' ? value.replace('b_', '') : value}\n onClick={() => unit !== 'arbitrary' && showOptions(unit)}\n onChange={onValueChange}\n readOnly={unit !== 'arbitrary'}\n autoComplete=\"off\"\n suffix={\n <InputControlSuffixWrapper>\n <Popover\n visible={isVisible}\n position=\"bottom left\"\n className=\"w-[300px] bg-white shadow-sm\"\n onVisibleChange={setIsVisible}\n >\n {unit === 'arbitrary' ? (\n <RangeSlider\n value={value}\n label=\"Pixel Value\"\n min={0}\n max={100}\n gridMode={true}\n showTooltip={false}\n allowReset={true}\n resetFallbackValue={\n isNaN(resetValue.toString() as any)\n ? 0\n : Number(resetValue) / 16\n }\n onValueChange={onValueChange}\n />\n ) : (\n <ButtonToggleGroup\n className=\"mt-4\"\n options={currentOptions.map((option) => ({\n value: option,\n label:\n unit === 'grid'\n ? option.toString().replace('b_', '')\n : option,\n onClick: () => {\n onValueChange(option);\n },\n }))}\n size=\"small\"\n value={value?.toString() || ''}\n onPressedChange={onValueChange}\n />\n )}\n </Popover>\n <DropdownPicker\n value={unit}\n options={unitOptions}\n toggleProps={{\n className: '!p-0 !min-w-0 !h-6 w-6',\n }}\n onPressedChange={(selectedUnit) => {\n if (selectedUnit === 'reset') {\n onValueChange('');\n setIsVisible(false);\n } else {\n onUnitChange(selectedUnit);\n showOptions(selectedUnit);\n }\n }}\n />\n </InputControlSuffixWrapper>\n }\n ></InputControl>\n </div>\n );\n};\n\nexport default MetricsControl;\n","import {\n Children,\n createContext,\n isValidElement,\n useContext,\n useEffect,\n useState,\n} from '@wordpress/element';\n\nimport { Modal as WordpressModal } from '@wordpress/components';\nimport classNames from 'classnames';\n\ntype ModalContextType = {\n closeModal: () => void;\n openModal: () => void;\n};\n\nconst ModalContext = createContext<ModalContextType | null>(null);\n\nexport const useModalContext = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error('useModalContext must be used within a ModalProvider');\n }\n return context;\n};\n\ntype ModalProps = {\n children: React.ReactElement | React.ReactElement[];\n defaultOpen: boolean;\n onOpenChange: (checked: boolean) => void;\n title: string;\n className?: string;\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n defaultOpen,\n onOpenChange,\n title,\n className,\n}) => {\n const [isOpen, setOpen] = useState(false);\n\n // Sync `isOpen` with `defaultOpen` when `defaultOpen` changes\n useEffect(() => {\n setOpen(defaultOpen);\n }, [defaultOpen]);\n\n const openModal = () => setOpen(true);\n const closeModal = () => setOpen(false);\n\n useEffect(() => {\n onOpenChange(isOpen);\n }, [isOpen, onOpenChange]);\n\n return (\n <ModalContext.Provider value={{ closeModal, openModal }}>\n {/* Render MOdalTrigger */}\n {Children.map(children, (child) => {\n return isValidElement(child) && child.type === ModalTrigger\n ? child\n : null;\n })}\n {isOpen && (\n <WordpressModal\n className={classNames('blockbite-ui__modal', className)}\n onRequestClose={closeModal}\n title={title}\n >\n <div className=\"relative\">\n {/* Render ModalHeader */}\n {Children.map(children, (child) => {\n return isValidElement(child) && child.type === ModalHeader\n ? child\n : null;\n })}\n {/* Render ModalContent */}\n {Children.map(children, (child) => {\n return isValidElement(child) && child.type === ModalContent\n ? child\n : null;\n })}\n {/* Render ModalFooter */}\n {Children.map(children, (child) => {\n return isValidElement(child) && child.type === ModalFooter\n ? child\n : null;\n })}\n </div>\n </WordpressModal>\n )}\n </ModalContext.Provider>\n );\n};\n\n// Header component for modal\nexport const ModalHeader: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n// Footer component for modal\nexport const ModalFooter: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames(\n 'border-border fixed bottom-0 left-0 right-0 flex h-[4rem] flex-row items-center justify-end gap-2 border-t bg-white px-4',\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\n// Description component for modal\nexport const ModalContent: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames('text-gray-medium px-4 pb-4 text-sm', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const ModalClose: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const { closeModal } = useModalContext();\n return (\n <div onClick={closeModal} className=\"cursor-pointer\">\n {children}\n </div>\n );\n};\n\nexport const ModalTrigger: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const { openModal } = useModalContext();\n return (\n <div onClick={openModal} className=\"cursor-pointer\">\n {children}\n </div>\n );\n};\n","import { createPortal, useEffect, useMemo } from '@wordpress/element';\n\nfunction copyStyles(sourceDoc, targetDoc) {\n Array.from(sourceDoc.styleSheets).forEach((styleSheet: any) => {\n try {\n if (styleSheet.cssRules) {\n const newStyleEl = targetDoc.createElement('style');\n Array.from(styleSheet.cssRules).forEach((cssRule: any) => {\n newStyleEl.appendChild(targetDoc.createTextNode(cssRule.cssText));\n });\n targetDoc.head.appendChild(newStyleEl);\n } else if (styleSheet.href) {\n const newLinkEl = targetDoc.createElement('link');\n newLinkEl.rel = 'stylesheet';\n newLinkEl.href = styleSheet.href;\n targetDoc.head.appendChild(newLinkEl);\n }\n } catch (e) {\n if (styleSheet.href) {\n const newLinkEl = targetDoc.createElement('link');\n newLinkEl.rel = 'stylesheet';\n newLinkEl.href = styleSheet.href;\n targetDoc.head.appendChild(newLinkEl);\n } else {\n // eslint-disable-next-line no-console\n console.warn('Error copying styles:', e);\n }\n }\n });\n}\n\ntype Props = {\n windowInstance: Window;\n onClose: () => void;\n children: React.ReactNode;\n};\n\nexport const NewWindowPortal = ({\n windowInstance,\n onClose,\n children,\n}: Props) => {\n const containerEl = useMemo(() => document.createElement('div'), []);\n\n useEffect(() => {\n const win = windowInstance;\n\n win.document.body.innerHTML = '';\n win.document.body.appendChild(containerEl);\n copyStyles(document, win.document);\n win.document.title = document.title || 'Blockbite Editor';\n\n const handleBeforeUnload = () => {\n setTimeout(onClose, 100);\n };\n\n win.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n win.removeEventListener('beforeunload', handleBeforeUnload);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [windowInstance]);\n\n // Typecasting: https://github.com/vercel/next.js/discussions/64753\n return createPortal(children as any, containerEl);\n};\n","import { Notice as WordpressNotice } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype NoticeProps = {\n children: React.ReactNode;\n className?: string;\n status?: 'success' | 'error' | 'warning' | 'info';\n};\n\nexport const Notice = ({\n children,\n status = 'success',\n className,\n}: NoticeProps) => {\n const [showNotice, setShowNotice] = useState(true);\n\n return (\n <Wrap onClick={() => setShowNotice(false)}>\n {showNotice && (\n <WordpressNotice\n status={status}\n className={classNames(className)}\n onRemove={() => setShowNotice(false)}\n >\n {children}\n </WordpressNotice>\n )}\n </Wrap>\n );\n};\n","import {\n Button,\n __experimentalInputControl as InputControl,\n __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { Path, SVG } from '@wordpress/primitives';\n\ntype PasswordInputProps = {\n label: string;\n value: string;\n onChange: (value: string) => void;\n [key: string]: any;\n};\n\nexport const PasswordInput = ({\n label,\n value,\n onChange,\n ...rest\n}: PasswordInputProps) => {\n const [showPassword, setShowPassword] = useState(false);\n\n return (\n <InputControl\n label={label}\n value={value}\n type={showPassword ? 'text' : 'password'}\n suffix={\n <InputControlSuffixWrapper variant=\"control\">\n <Button\n icon={\n <SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <Path\n d={\n showPassword\n ? 'M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z'\n : 'M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z'\n }\n />\n </SVG>\n }\n label=\"Show password\"\n onClick={() => setShowPassword((prev) => !prev)}\n size=\"small\"\n />\n </InputControlSuffixWrapper>\n }\n onChange={onChange}\n {...rest}\n />\n );\n};\n","import { Wrap } from './Wrap';\n\nexport type ProjectItem = {\n id: string | number;\n name: string;\n description: string;\n};\n\ntype Props = {\n items: ProjectItem[];\n activeId: string | number;\n onSelect: (id: string | number) => void;\n className?: string;\n};\n\nexport const ProjectsNavigation = ({\n items,\n activeId,\n onSelect,\n className,\n}: Props) => {\n return (\n <Wrap important className={className}>\n <div className=\"w-[200px] overflow-y-auto border-r border-border gap-2\">\n {items.map((item) => (\n <div\n key={item.id}\n onClick={() => onSelect(item.id)}\n className={`cursor-pointer p-2 border-l-4 flex gap-2 items-center ${\n activeId === item.id\n ? 'border-blue-500 bg-gray-100'\n : 'border-transparent'\n }`}\n >\n <span className=\"rounded bg-slate-300 w-12 h-12 flex items-center justify-center text-2xl font-bold text-white\">\n {item.name.charAt(0).toUpperCase()}\n </span>\n <p className=\"text-sm text-center mt-1\">{item.name}</p>\n </div>\n ))}\n </div>\n </Wrap>\n );\n};\n","export function ResponsiveImage(props) {\n const { media, mediaClass } = props;\n const { url, alt, sizes } = media;\n\n if (sizes === undefined) {\n return <img src={url} alt={alt} className={`media ${mediaClass}`} />;\n }\n\n const { thumbnail, medium, large } = sizes;\n const thumbnailImg = thumbnail || url;\n const mediumImg = medium || url;\n const largeImg = large || url;\n\n return (\n <picture className=\"responsive-media\">\n {thumbnailImg ? (\n <source\n media=\"(max-width: 768px)\"\n srcSet={thumbnailImg}\n className={`media ${mediaClass}`}\n />\n ) : null}\n {mediumImg ? (\n <source\n media=\"(min-width: 1024px)\"\n srcSet={mediumImg}\n className={`media ${mediaClass}`}\n />\n ) : null}\n {largeImg ? (\n <source\n media=\"(min-width: 1536px)\"\n srcSet={largeImg}\n className={`media ${mediaClass}`}\n />\n ) : null}\n {mediumImg ? (\n <img src={mediumImg} alt={alt} className={`media ${mediaClass}`} />\n ) : null}\n </picture>\n );\n}\n","export function ResponsiveVideo(props: any) {\n const { media, mediaClass } = props;\n const { url } = media;\n\n const videoUrl = url;\n\n return (\n <video\n className={`responsive-media ${mediaClass}`}\n preload=\"none\"\n playsInline\n controls\n autoPlay\n muted\n loop\n >\n <source src={videoUrl} type=\"video/mp4\" />\n </video>\n );\n}\n","import classNames from 'classnames';\nimport { Wrap } from './Wrap.js';\n\ntype ScrollListProps = {\n children: React.ReactNode;\n className?: string;\n height?: 'small' | 'medium' | 'large';\n};\n\nexport const ScrollList: React.FC<ScrollListProps> = ({\n children,\n className = '',\n height = 'large',\n}) => (\n <Wrap\n className={classNames('scrollbar relative overflow-y-scroll', className, {\n 'h-[400px]': height === 'large',\n 'h-[300px]': height === 'medium',\n 'h-[200px]': height === 'small',\n })}\n >\n {children}\n </Wrap>\n);\n","import { SelectControl as WordpressSelect } from '@wordpress/components';\n\ntype SelectControlWrapperProps = {\n className?: string;\n value: string;\n children?: React.ReactNode;\n options: any[];\n label?: string;\n emptyLabel?: string;\n onChange?: (value: string) => void;\n};\n\nexport const SelectControlWrapper = ({\n onChange,\n className,\n value,\n options,\n label = '',\n emptyLabel = 'No options available',\n}: SelectControlWrapperProps) => {\n const handleChange = (val: string) => {\n if (onChange) {\n onChange(val);\n }\n };\n\n return (\n <div className={className}>\n {options && options.length > 0 && (\n <WordpressSelect\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={label || ''}\n value={value || ''}\n onChange={handleChange}\n options={[{ value: '', label: 'Select an option' }, ...options]}\n />\n )}\n {(!options || options?.length === 0) && (\n <p className=\"mb-2\">{emptyLabel}</p>\n )}\n </div>\n );\n};\n","import { createBlock } from '@wordpress/blocks';\nimport { Button } from '@wordpress/components';\n\nconst { select, dispatch } = wp.data;\n\ninterface SingleBlockTypeAppenderProps {\n buttonText?: string;\n}\n\nexport const SingleBlockTypeAppender = ({\n buttonText = 'Add block',\n}: SingleBlockTypeAppenderProps) => {\n const addLastDuplicate = () => {\n // Get the current block\n const currentBlock = select('core/block-editor').getSelectedBlock();\n const { clientId, innerBlocks } = currentBlock;\n\n // get the last block\n const lastBlock = innerBlocks[innerBlocks.length - 1];\n // duplicate the last block\n const newBlock = createBlock(\n lastBlock.name,\n lastBlock.attributes,\n lastBlock.innerBlocks\n );\n\n dispatch('core/block-editor').insertBlocks(newBlock, 0, clientId);\n };\n\n return (\n <Button variant=\"primary\" onClick={() => addLastDuplicate()}>\n {buttonText}\n </Button>\n );\n};\n","import { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype SlideInProps = {\n children: React.ReactNode;\n className?: string;\n watch?: any;\n};\n\nexport const SlideIn = ({ children, watch, className }: SlideInProps) => {\n const [slide, setSlide] = useState(0);\n\n useEffect(() => {\n setTimeout(() => {\n setSlide(1);\n }, 250);\n }, [watch]);\n\n return (\n <Wrap\n className={classNames(\n className,\n 'duration-50 transform transition-all ease-in-out',\n {\n 'translate-x-0': slide === 1,\n '-translate-x-full': slide === 0,\n }\n )}\n >\n {children}\n </Wrap>\n );\n};\n","import { Spinner as WordpressSpinner } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype SpinnerProps = {\n label?: string;\n className?: string;\n defaultValue: boolean;\n};\n\nexport const Spinner = ({ className, defaultValue }: SpinnerProps) => {\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n setIsLoading(false);\n }, 500);\n if (defaultValue) {\n setIsLoading(true);\n }\n }, [isLoading, defaultValue]);\n\n return isLoading && <WordpressSpinner className={classNames(className)} />;\n};\n","import { TabPanel } from '@wordpress/components';\nimport { createContext, useContext, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\nconst TabsContext = createContext<{\n activeTab: string | undefined;\n setActiveTab: React.Dispatch<React.SetStateAction<string | undefined>>;\n} | null>(null);\n\ntype TabsProps = {\n className?: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n};\n\nexport const TabsWrapper = ({\n children,\n defaultValue,\n value,\n onValueChange,\n ...rest\n}: TabsProps) => {\n const isControlled = value !== undefined;\n\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n\n const activeTab = isControlled ? value : internalValue;\n\n const handleTabChange = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n\n if (onValueChange) {\n onValueChange(newValue);\n }\n };\n\n const providerValue = {\n activeTab,\n setActiveTab: handleTabChange,\n };\n\n return (\n <TabsContext.Provider value={providerValue}>\n <Wrap important className={rest.className}>\n {children}\n </Wrap>\n </TabsContext.Provider>\n );\n};\n\ntype TabsListProps = {\n options: { name: string; title: string; icon?: any }[];\n children?: React.ReactNode;\n onValueChange?: (value: string) => void;\n className?: string;\n};\n\nexport const TabsList = ({\n options,\n children,\n className,\n onValueChange,\n}: TabsListProps) => {\n const context = useContext(TabsContext);\n const setActiveTab = onValueChange ? onValueChange : context?.setActiveTab;\n\n return (\n <TabPanel\n className={classNames('tabs-list', className)}\n tabs={options}\n onSelect={(tabName) => {\n setActiveTab(tabName);\n }}\n >\n {() => children}\n </TabPanel>\n );\n};\n\ntype TabsContentProps = {\n value: string;\n children: React.ReactNode;\n className?: string;\n};\n\nexport const TabsContent = ({\n value,\n children,\n className,\n}: TabsContentProps) => {\n const context = useContext(TabsContext);\n const activeTab = context?.activeTab;\n\n return activeTab === value ? (\n <Wrap className={className}>{children}</Wrap>\n ) : null;\n};\n\nexport const Tabs = {\n Wrapper: TabsWrapper,\n List: TabsList,\n Content: TabsContent,\n};\n","import classNames from 'classnames';\n\ntype TagProps = {\n children: React.ReactNode;\n className?: string;\n color:\n | 'blue'\n | 'ruby'\n | 'tomato'\n | 'red'\n | 'crimson'\n | 'pink'\n | 'plum'\n | 'purple'\n | 'violet'\n | 'iris'\n | 'indigo'\n | 'cyan'\n | 'teal'\n | 'jade'\n | 'green'\n | 'grass'\n | 'brown'\n | 'orange'\n | 'sky'\n | 'gray';\n asButton?: boolean;\n onClick?: () => void;\n};\n\nexport const Tag = ({\n children,\n onClick,\n color = 'blue',\n className,\n}: TagProps) => {\n return (\n <button onClick={onClick}>\n <div color={color} className={classNames(className)}>\n {children}\n </div>\n </button>\n );\n};\n","import { Pencil1 as Pencil1Icon } from '@blockbite/icons';\n\nimport { TextControl } from '@wordpress/components';\nimport { Wrap } from './Wrap.js';\n\ntype TextControlLabelProps = {\n className?: string;\n defaultValue: any;\n children?: React.ReactNode;\n onChange?: (value: string) => void;\n onClick?: () => void;\n};\n\nexport const TextControlLabel = ({\n onChange,\n defaultValue,\n children,\n}: TextControlLabelProps) => {\n return (\n <Wrap className=\"blockbite-ui__text-control-label flex items-center\">\n <span className=\"outline-b-2 relative block -outline-offset-2 outline-black\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n type=\"text\"\n value={defaultValue}\n onChange={onChange}\n />\n <Pencil1Icon className=\"absolute right-1 top-2\" />\n </span>{' '}\n {children}\n </Wrap>\n );\n};\n","import { memo } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\nimport {\n __experimentalToggleGroupControlOptionIcon as ToggleGroupControlIcon,\n __experimentalToggleGroupControlOption as ToggleGroupControlOption,\n __experimentalToggleGroupControl as WordpressToggleGroupControl,\n} from '@wordpress/components';\nimport classNames from 'classnames';\n\ntype ToggleProps = {\n className?: string;\n options: { value: string; label: string; icon?: React.ReactElement }[];\n value: string;\n label?: string | boolean;\n variant?: 'primary' | 'secondary';\n display?: 'icon' | 'label';\n size?: 'small' | 'default' | 'compact';\n onPressedChange: (value: string) => void;\n};\n\nexport const ToggleGroup: React.FC<ToggleProps> = memo(\n ({\n className,\n options,\n value,\n display = 'label',\n label = false,\n onPressedChange,\n }) => {\n const handlePressChange = (val: string) => {\n onPressedChange(val);\n };\n\n return (\n <Wrap className={classNames(className)}>\n <WordpressToggleGroupControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n isBlock\n value={value}\n {...(label ? { label } : {})}\n >\n {options.map((option) =>\n display === 'icon' ? (\n <ToggleGroupControlIcon\n icon={option.icon}\n label={option.label}\n key={`ToggleGroupControlIcon-${option.value}`}\n value={option.value}\n onClick={() => handlePressChange(option.value)}\n />\n ) : (\n <ToggleGroupControlOption\n key={`ToggleGroupControlOption-${option.value}`}\n value={option.value}\n label={option.label}\n onClick={() => handlePressChange(option.value)}\n />\n )\n )}\n </WordpressToggleGroupControl>\n </Wrap>\n );\n }\n);\n","import { ToggleControl as Switch } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype ToggleSwitchProps = {\n label?: string;\n className?: string;\n onChange?: (checked: boolean) => void;\n checked?: boolean;\n};\n\nexport const ToggleSwitch = ({\n label,\n className,\n onChange,\n checked = false, // Default to false if undefined, so it's always controlled\n}: ToggleSwitchProps) => {\n const [isChecked, setIsChecked] = useState(checked);\n\n useEffect(() => {\n setIsChecked(checked);\n }, [checked]);\n\n return (\n <Wrap className={classNames(className, 'flex items-center gap-2')}>\n <Switch\n checked={isChecked}\n label={label}\n onChange={(e) => {\n setIsChecked(e);\n onChange && onChange(e);\n }}\n ></Switch>\n </Wrap>\n );\n};\n"],"names":["hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","Icon","IconComponent","rest","ButtonToggle","memo","children","className","variant","pressed","onPressedChange","icon","size","display","label","handleClick","useCallback","WordpressButton","ButtonToggleGroup","toggle","options","tabs","stretch","handleButtonClick","optionValue","newValue","renderContent","option","index","Wrap","important","onClick","AutocompleteDropdown","swatch","activeKeyword","setActiveKeyword","useState","filteredOptions","setFilteredOptions","useEffect","Dropdown","isOpen","onToggle","Button","TextControl","changedValue","Badge","BitePreview","htmlContent","cssContent","frontendAssets","iframeRef","useRef","iframeBody","setIframeBody","iframe","iframeDocument","styleTag","type","id","url","existingElement","adoptedElement","newElement","createPortal","disabled","isIconDisplay","Chapter","title","ChapterDivider","help","badge","props","Checkbox","defaultChecked","isChecked","setChecked","CheckboxControl","ChevronDown","ColumnSpacing","Cross2","Desktop","Grid","Pencil1","Percentage","Plus","Slider","Tailwind","Trash","forwardRef","onChange","inputClassName","readOnly","placeholder","onBlur","helper","ref","fieldId","e","DataItemList","data","active","setActive","onCreate","onDelete","onUpdate","onSwitch","renderItemActions","addons","footerSlot","footerSlotClassName","rename","setRename","isSaving","setIsSaving","textRef","handleAdd","handleRemove","newData","d","currentIndex","nextActive","handleRenameBlur","item","PlusIcon","TrashIcon","DisappearingMessage","duration","show","message","isShowing","setIsShowing","hasMounted","timeoutRef","DropdownPicker","defaultIcon","ChevronDownIcon","currentOption","setCurrentOption","allOptions","iconSize","DropdownMenu","_a","EmptyState","description","FloatingPanel","panelRef","position","setPosition","dragging","setDragging","offset","setOffset","handleMouseMove","handleMouseUp","startDragging","rect","FocalPointControl","onValueChange","focalPoint","setFocalPoint","x","y","v","FocalPointPicker","LinkPicker","links","setLinks","activeLink","setActiveLink","apiFetch","fetchedLinks","__","LinkList","link","onActiveLink","list","MediaPicker","mediaProps","mediaCallback","allowedTypes","stateMedia","setStateMedia","removeMedia","onSelectMedia","media","safeSizes","sizeObject","mediaObj","PanelRow","MediaUploadCheck","MediaUpload","open","Popover","visible","onVisibleChange","isVisible","setIsVisible","toggleVisible","WordpressPopover","RangeSlider","min","max","withInputField","gridMode","showTooltip","resetFallbackValue","rangeValue","setRangeValue","handleRangeUpdate","val","gridValue","WordpressRangeControl","MetricsControl","unit","onUnitChange","currentOptions","setCurrentOptions","resetValue","setResetValue","showOptions","_c","_b","unitOptions","TailwindUnitIcon","PercentageIcon","GridIcon","DesktopIcon","SliderIcon","ColumnSpacingIcon","InputControl","InputControlSuffixWrapper","selectedUnit","ModalContext","createContext","useModalContext","context","useContext","Modal","defaultOpen","onOpenChange","setOpen","openModal","closeModal","Children","child","isValidElement","ModalTrigger","WordpressModal","ModalHeader","ModalContent","ModalFooter","ModalClose","copyStyles","sourceDoc","targetDoc","styleSheet","newStyleEl","cssRule","newLinkEl","NewWindowPortal","windowInstance","onClose","containerEl","useMemo","win","handleBeforeUnload","Notice","status","showNotice","setShowNotice","WordpressNotice","PasswordInput","showPassword","setShowPassword","SVG","Path","prev","ProjectsNavigation","items","activeId","onSelect","ResponsiveImage","mediaClass","alt","sizes","thumbnail","medium","large","thumbnailImg","mediumImg","largeImg","ResponsiveVideo","videoUrl","ScrollList","height","SelectControlWrapper","emptyLabel","handleChange","WordpressSelect","select","dispatch","SingleBlockTypeAppender","buttonText","addLastDuplicate","currentBlock","clientId","innerBlocks","lastBlock","newBlock","createBlock","SlideIn","watch","slide","setSlide","Spinner","defaultValue","isLoading","setIsLoading","WordpressSpinner","TabsContext","TabsWrapper","isControlled","internalValue","setInternalValue","providerValue","TabsList","setActiveTab","TabPanel","tabName","TabsContent","Tabs","Tag","color","TextControlLabel","Pencil1Icon","ToggleGroup","handlePressChange","WordpressToggleGroupControl","ToggleGroupControlIcon","ToggleGroupControlOption","ToggleSwitch","checked","setIsChecked","Switch"],"mappings":"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","x_google_ignoreList":[0]}
|