PluginProbe
Extendify / 1.9.3
Extendify v1.9.3
3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 0.7.0 All 126 releases
extendify / src / Library / pages / Sidebar.js

Sidebar.js in Extendify 1.9.3, at src/Library/pages/Sidebar.js

126 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { Panel } from '@wordpress/components'
2 import { Button } from '@wordpress/components'
3 import { memo } from '@wordpress/element'
4 import { __ } from '@wordpress/i18n'
5 import { Icon, close } from '@wordpress/icons'
6 import classNames from 'classnames'
7 import { ImportCounter } from '@library/components/ImportCounter'
8 import { SiteTypeSelector } from '@library/components/SiteTypeSelector'
9 import { TaxonomySection } from '@library/components/TaxonomySection'
10 import { TypeSelect } from '@library/components/TypeSelect'
11 import { featured } from '@library/components/icons'
12 import { brandMark } from '@library/components/icons/'
13 import { useGlobalStore } from '@library/state/GlobalState'
14 import { useSiteSettingsStore } from '@library/state/SiteSettings'
15 import { useTaxonomyStore } from '@library/state/Taxonomies'
16 import { useTemplatesStore } from '@library/state/Templates'
17 import { useUserStore } from '@library/state/User'
18
19 export const Sidebar = memo(function Sidebar() {
20 const taxonomies = useTaxonomyStore((state) => state.taxonomies)
21 const searchParams = useTemplatesStore((state) => state.searchParams)
22 const updateTaxonomies = useTemplatesStore(
23 (state) => state.updateTaxonomies,
24 )
25 const apiKey = useUserStore((state) => state.apiKey)
26 const taxonomyType =
27 searchParams.type === 'pattern' ? 'patternType' : 'layoutType'
28 const isFeatured = !searchParams?.taxonomies[taxonomyType]?.slug?.length
29 const setOpen = useGlobalStore((state) => state.setOpen)
30 const [siteType, setSiteType] = useSiteSettingsStore((state) => [
31 Object.keys(state?.siteType)?.length > 0
32 ? state?.siteType
33 : { slug: '', title: 'Not set' },
34 state.setSiteType,
35 ])
36
37 return (
38 <>
39 {window.extendifyData?.partnerLogo && (
40 <div className="-ml-1.5 hidden py-3 px-5 text-extendify-black sm:flex items-center justify-center bg-banner-main">
41 <div className="w-40 h-16 flex items-center justify-center">
42 <img
43 className="max-h-full max-w-full"
44 src={window.extendifyData.partnerLogo}
45 alt={window.extendifyData.partnerName}
46 />
47 </div>
48 </div>
49 )}
50 {!window.extendifyData?.partnerLogo && (
51 <div className="-ml-1.5 hidden py-3 px-5 text-extendify-black sm:flex sm:pt-5">
52 <Icon icon={brandMark} size={40} />
53 </div>
54 )}
55
56 <div className="flex md:hidden items-center justify-end -mt-5 mx-1">
57 <Button
58 onClick={() => setOpen(false)}
59 icon={<Icon icon={close} size={24} />}
60 label={__('Close library', 'extendify')}
61 />
62 </div>
63 <div className="px-5 hidden md:block">
64 <button
65 onClick={() =>
66 updateTaxonomies({
67 [taxonomyType]: { slug: '', title: 'Featured' },
68 })
69 }
70 className={classNames(
71 'm-0 flex w-full cursor-pointer items-center space-x-1 bg-transparent px-0 py-2 text-left text-sm leading-none transition duration-200 hover:text-wp-theme-500',
72 {
73 'text-wp-theme-500': isFeatured,
74 'hover:text-design-main':
75 window.extendifyData?.partnerLogo,
76 'text-design-main':
77 window.extendifyData?.partnerLogo && isFeatured,
78 },
79 )}>
80 <Icon icon={featured} size={24} />
81 <span className="text-sm">
82 {__('Featured', 'extendify')}
83 </span>
84 </button>
85 </div>
86 <div className="mx-6 px-5 pt-0.5 sm:mx-0 sm:mb-8 sm:mt-0">
87 {Object.keys(siteType).length > 0 && (
88 <SiteTypeSelector
89 value={siteType}
90 setValue={(termData) => {
91 setSiteType(termData)
92 updateTaxonomies({ siteType: termData })
93 }}
94 terms={taxonomies.siteType}
95 />
96 )}
97 </div>
98 <TypeSelect className="mx-6 px-5 pt-0.5 sm:mx-0 sm:mb-8 sm:mt-0" />
99 <div className="mt-px hidden flex-grow overflow-y-auto overflow-x-hidden pb-36 pt-px sm:block space-y-6">
100 <Panel className="bg-transparent text-design-main">
101 <TaxonomySection
102 taxType={taxonomyType}
103 taxonomies={taxonomies[taxonomyType]?.filter(
104 (term) => !term?.designType,
105 )}
106 />
107 </Panel>
108 <Panel className="bg-transparent">
109 <TaxonomySection
110 taxLabel={__('Design', 'extendify')}
111 taxType={taxonomyType}
112 taxonomies={taxonomies[taxonomyType]?.filter((term) =>
113 Boolean(term?.designType),
114 )}
115 />
116 </Panel>
117 </div>
118 {!apiKey.length && (
119 <div className="px-5">
120 <ImportCounter />
121 </div>
122 )}
123 </>
124 )
125 })
126