*/ public static function all(): array { return [ 'square' => [ 'label' => 'Standard', 'description' => 'Traditional square QR modules', 'circular' => false, 'circle_radius' => 0.4, 'connect_paths' => false, 'scan_risk' => 'low', ], 'soft' => [ 'label' => 'Rounded', 'description' => 'Soft rounded modules', 'circular' => true, 'circle_radius' => 0.36, 'connect_paths' => false, 'scan_risk' => 'medium', 'visible' => false, ], 'dots' => [ 'label' => 'Dots', 'description' => 'Round dot modules', 'circular' => true, 'circle_radius' => 0.45, 'connect_paths' => false, 'scan_risk' => 'medium', ], 'bubble' => [ 'label' => 'Large dots', 'description' => 'Bolder round dot modules', 'circular' => true, 'circle_radius' => 0.52, 'connect_paths' => false, 'scan_risk' => 'high', 'visible' => false, ], 'fluid' => [ 'label' => 'Fluid', 'description' => 'Legacy decorative style', 'circular' => true, 'circle_radius' => 0.38, 'connect_paths' => true, 'scan_risk' => 'high', 'visible' => false, ], 'bold' => [ 'label' => 'Bold', 'description' => 'Legacy thick square modules', 'circular' => false, 'circle_radius' => 0.4, 'connect_paths' => false, 'scan_risk' => 'low', 'visible' => false, ], ]; } /** @return array */ public static function visible(): array { return array_filter(self::all(), fn (array $style): bool => ($style['visible'] ?? true) === true); } /** @return list */ public static function keys(): array { return array_keys(self::all()); } public static function isValid(string $style): bool { return isset(self::all()[$style]); } /** @return array */ public static function optionsFor(string $style): array { return self::all()[$style] ?? self::all()['square']; } public static function isDecorative(string $style): bool { return in_array(self::optionsFor($style)['scan_risk'], ['medium', 'high'], true); } }