import { safeHTML } from '@wordpress/dom' import { useEffect, memo } from '@wordpress/element' import { __, _n, _x, sprintf } from '@wordpress/i18n' import { Icon } from '@wordpress/icons' import classNames from 'classnames' import { General } from '@extendify/api/General' import { User as UserApi } from '@extendify/api/User' import { useUserStore } from '@extendify/state/User' import { brandMark } from './icons' export const SidebarNotice = memo(function SidebarNotice() { const remainingImports = useUserStore((state) => state.remainingImports) const allowedImports = useUserStore((state) => state.allowedImports) const count = remainingImports() const link = `https://www.extendify.com/pricing/?utm_source=${encodeURIComponent( window.extendifyData.sdk_partner, )}&utm_medium=library&utm_campaign=import-counter&utm_content=get-more&utm_term=${ count > 0 ? 'has-imports' : 'no-imports' }&utm_group=${useUserStore.getState().activeTestGroupsUtmValue()}` useEffect(() => { if (allowedImports < 1 || !allowedImports) { const fallback = 5 UserApi.allowedImports() .then((allowedImports) => { allowedImports = /^[1-9]\d*$/.test(allowedImports) ? allowedImports : fallback useUserStore.setState({ allowedImports }) }) .catch(() => useUserStore.setState({ allowedImports: fallback }), ) } }, [allowedImports]) if (!allowedImports) { return null } return ( await General.ping('fp-sb-click')} href={link}> {__('Free Plan', 'extendify')} {sprintf( _n( 'You have %s free pattern and layout import remaining this month.', 'You have %s free pattern and layout imports remaining this month.', count, 'extendify', ), count, )} 1, }, )} dangerouslySetInnerHTML={{ __html: safeHTML( sprintf( _x( 'Upgrade today %s', 'The replacement string is a right arrow and context is not lost if removed.', 'extendify', ), ` ${String.fromCharCode(8250)} `, ), ), }} /> ) })