import Alert from '@elementor/ui/Alert'; import Box from '@elementor/ui/Box'; import Card from '@elementor/ui/Card'; import CardContent from '@elementor/ui/CardContent'; import CardHeader from '@elementor/ui/CardHeader'; import Divider from '@elementor/ui/Divider'; import List from '@elementor/ui/List'; import ListItem from '@elementor/ui/ListItem'; import ListItemText from '@elementor/ui/ListItemText'; import Typography from '@elementor/ui/Typography'; import { styled } from '@elementor/ui/styles'; import { CapabilitiesItem } from '@ea11y/components'; import { useSettings, useStorage } from '@ea11y/hooks'; import { LogoSettings } from '@ea11y/layouts'; import { useEffect, useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { MENU_SETTINGS } from '../constants/menu-settings'; const StyledCardContent = styled(CardContent)` height: 55vh; overflow: auto; margin-bottom: ${({ theme }) => theme.spacing(2)}; padding: 0 ${({ theme }) => theme.spacing(2)}; `; const MenuSettings = () => { const { widgetMenuSettings, hideMinimumOptionAlert, setHideMinimumOptionAlert, } = useSettings(); const [disableOptions, setDisableOptions] = useState(false); const { save } = useStorage(); useEffect(() => { if (!areAtLeastTwoOptionsEnabled(widgetMenuSettings)) { setDisableOptions(true); } else { setDisableOptions(false); save({ a11y_hide_minimum_active_options_alert: false }).then(() => { setHideMinimumOptionAlert(false); }); } }, [widgetMenuSettings]); /** * Check if at least two options are enabled. * @param {Object} settings - widget menu settings. * @return {boolean} true if at least two options are enabled. */ const areAtLeastTwoOptionsEnabled = (settings) => { const enabled = Object.keys(settings)?.filter( (key) => settings[key].enabled, ); return enabled.length > 2; }; /** * Close minimum option notification. */ const handleCloseNotification = () => { save({ a11y_hide_minimum_active_options_alert: true }).then(() => { setHideMinimumOptionAlert(true); }); }; const sectionsCount = Object.entries(MENU_SETTINGS).length; return ( {__( 'Choose which accessibility features and capabilities you want to include.', 'pojo-accessibility', )} } /> {disableOptions && !hideMinimumOptionAlert && ( {__('At least two option must remain active', 'pojo-accessibility')} )} {Object.entries(MENU_SETTINGS).map(([parentKey, parentItem], i) => { return ( {parentItem.title} {parentItem.options && Object.entries(parentItem.options).map( ([childKey, childValue]) => { return ( ); }, )} {i + 1 < sectionsCount && } ); })} ); }; export default MenuSettings; Home - German Screws

Wholesale marketplace
for screws, bolts & nails

EU-focused. Worldwide shipping.

Commission: first order 0% → then 3.4%
Bulk pricing
Bulk pricing
Large orders
Verified sellers
Verified sellers
(manual approval)
Quote or Buy Now
Quote or Buy Now
(coming soon)

Shop categories

View all →

Popular listings

Prototype listings Browse all →
BOLTS Hex Bolt DIN 933
Hex Bolt DIN 933
Steel • Zinc plated
Size: M6 × 30 • Pack: 200
€ 56,32 incl. VAT
€ 44,00 excl. VAT
SCREWS Wood Screw 5×50
Wood Screw 5 × 50
Stainless A2 • Torx
Pack: 220 • Partial thread
€ 72,32 incl. VAT
€ 58,00 excl. VAT
NAILS Concrete Nail 3.0×30
Concrete Nail 3.0 × 30
Hardened steel
Pack: 1000 • For concrete
€ 80,00 incl. VAT
€ 64,52 excl. VAT
Request quote Buy now (soon)
ANCHORS Anchor Set M8
Anchor Set M8
Galvanized steel
Pack: 150 • Expansion type
€ 49,90 incl. VAT
€ 39,92 excl. VAT
TOOLS Tools & Accessories
Tools & Accessories
Bits • Drivers • Consumables
Bulk packs available
Quote incl. VAT
Prices shown on request
Want to sell bulk fasteners?
Manual approval early on. Commission: first order 0%, then 3.4%.
Start selling

© 2026 GermanScrews.com