class * of the stylesheet. * * @package Dynamic_Cursor */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * The 24 cursor types. * * @return array */ function dynamic_cursor_registry() { return array( 'goo' => array( 'name' => __( 'Metaball', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'Two drops that merge', 'mixer-dynamic-cursor' ), ), 'dot' => array( 'name' => __( 'Dot', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'A solid dot, tight on the pointer', 'mixer-dynamic-cursor' ), ), 'blend' => array( 'name' => __( 'Invert', 'mixer-dynamic-cursor' ), 'colors' => 0, 'desc' => __( 'A white disc that inverts what it covers', 'mixer-dynamic-cursor' ), ), 'glow' => array( 'name' => __( 'Glow', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'A soft halo', 'mixer-dynamic-cursor' ), ), 'trail' => array( 'name' => __( 'Comet', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'A bright head with a tail along the motion', 'mixer-dynamic-cursor' ), ), 'snake' => array( 'name' => __( 'Trail', 'mixer-dynamic-cursor' ), 'colors' => 2, 'desc' => __( 'Eight segments that follow like a tail', 'mixer-dynamic-cursor' ), ), 'crosshair' => array( 'name' => __( 'Crosshair', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'Two thin crossing lines', 'mixer-dynamic-cursor' ), ), 'magnet' => array( 'name' => __( 'Magnet', 'mixer-dynamic-cursor' ), 'colors' => 2, 'desc' => __( 'A slow, dashed ring', 'mixer-dynamic-cursor' ), ), 'jelly' => array( 'name' => __( 'Jelly', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'Squashes and stretches along the motion', 'mixer-dynamic-cursor' ), ), 'lens' => array( 'name' => __( 'Lens', 'mixer-dynamic-cursor' ), 'colors' => 3, 'desc' => __( 'A thick ring with a glass highlight (third colour: highlight)', 'mixer-dynamic-cursor' ), ), 'pixel' => array( 'name' => __( 'Pixel', 'mixer-dynamic-cursor' ), 'colors' => 2, 'desc' => __( 'A square that moves in steps', 'mixer-dynamic-cursor' ), ), 'neon' => array( 'name' => __( 'Neon', 'mixer-dynamic-cursor' ), 'colors' => 3, 'desc' => __( 'A ring with a glow that shifts hue (third colour: ring)', 'mixer-dynamic-cursor' ), ), 'sparkle' => array( 'name' => __( 'Sparkles', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'A star with a trail of sparkles', 'mixer-dynamic-cursor' ), ), 'beam' => array( 'name' => __( 'Beam', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'A vertical beam from the pointer', 'mixer-dynamic-cursor' ), ), 'morph' => array( 'name' => __( 'Amoeba', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'A ring that keeps changing shape', 'mixer-dynamic-cursor' ), ), 'radar' => array( 'name' => __( 'Radar', 'mixer-dynamic-cursor' ), 'colors' => 2, 'desc' => __( 'A reticle with a sweeping arm', 'mixer-dynamic-cursor' ), ), 'caret' => array( 'name' => __( 'Caret', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'The blinking text caret', 'mixer-dynamic-cursor' ), ), 'eclipse' => array( 'name' => __( 'Eclipse', 'mixer-dynamic-cursor' ), 'colors' => 2, 'desc' => __( 'A ring that fills up with speed', 'mixer-dynamic-cursor' ), ), 'orbit' => array( 'name' => __( 'Orbit', 'mixer-dynamic-cursor' ), 'colors' => 2, 'desc' => __( 'A satellite circling the pointer', 'mixer-dynamic-cursor' ), ), 'paint' => array( 'name' => __( 'Brush', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'A brush stroke with a shifting hue', 'mixer-dynamic-cursor' ), ), 'focusbox' => array( 'name' => __( 'Autofocus', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'Camera brackets around the pointer', 'mixer-dynamic-cursor' ), ), 'glitch' => array( 'name' => __( 'Glitch', 'mixer-dynamic-cursor' ), 'colors' => 3, 'desc' => __( 'RGB channels that split with speed (third colour: centre)', 'mixer-dynamic-cursor' ), ), 'heart' => array( 'name' => __( 'Heart', 'mixer-dynamic-cursor' ), 'colors' => 1, 'desc' => __( 'Beats with a double thump', 'mixer-dynamic-cursor' ), ), 'confetti' => array( 'name' => __( 'Confetti', 'mixer-dynamic-cursor' ), 'colors' => 2, 'desc' => __( 'Fanned strips behind the pointer', 'mixer-dynamic-cursor' ), ), ); } /** * Blend modes (mix-blend-mode) with Photoshop names, grouped like its menu. * The first, untitled group is "Normal". * * @return array */ function dynamic_cursor_blend_modes() { return array( '' => array( 'normal' => __( 'Normal', 'mixer-dynamic-cursor' ) ), __( 'Darken', 'mixer-dynamic-cursor' ) => array( 'darken' => __( 'Darken', 'mixer-dynamic-cursor' ), 'multiply' => __( 'Multiply', 'mixer-dynamic-cursor' ), 'color-burn' => __( 'Color Burn', 'mixer-dynamic-cursor' ), ), __( 'Lighten', 'mixer-dynamic-cursor' ) => array( 'lighten' => __( 'Lighten', 'mixer-dynamic-cursor' ), 'screen' => __( 'Screen', 'mixer-dynamic-cursor' ), 'color-dodge' => __( 'Color Dodge', 'mixer-dynamic-cursor' ), ), __( 'Contrast', 'mixer-dynamic-cursor' ) => array( 'overlay' => __( 'Overlay', 'mixer-dynamic-cursor' ), 'soft-light' => __( 'Soft Light', 'mixer-dynamic-cursor' ), 'hard-light' => __( 'Hard Light', 'mixer-dynamic-cursor' ), ), __( 'Inversion', 'mixer-dynamic-cursor' ) => array( 'difference' => __( 'Difference', 'mixer-dynamic-cursor' ), 'exclusion' => __( 'Exclusion', 'mixer-dynamic-cursor' ), ), __( 'Component', 'mixer-dynamic-cursor' ) => array( 'hue' => __( 'Hue', 'mixer-dynamic-cursor' ), 'saturation' => __( 'Saturation', 'mixer-dynamic-cursor' ), 'color' => __( 'Color', 'mixer-dynamic-cursor' ), 'luminosity' => __( 'Luminosity', 'mixer-dynamic-cursor' ), ), ); } /** * Blend mode ids only, for sanitisation. * * @return string[] */ function dynamic_cursor_blend_ids() { $ids = array(); foreach ( dynamic_cursor_blend_modes() as $group ) { $ids = array_merge( $ids, array_keys( $group ) ); } return $ids; } /** * Google Fonts offered in the dropdown (popular families). Any other family name can be typed. * * @return string[] */ function dynamic_cursor_google_fonts() { return array( 'Inter', 'Roboto', 'Open Sans', 'Lato', 'Montserrat', 'Poppins', 'Raleway', 'Nunito', 'Nunito Sans', 'Work Sans', 'DM Sans', 'Manrope', 'Plus Jakarta Sans', 'Outfit', 'Sora', 'Urbanist', 'Figtree', 'Onest', 'Geist', 'Instrument Sans', 'Space Grotesk', 'Syne', 'Archivo', 'Barlow', 'Barlow Condensed', 'Oswald', 'Bebas Neue', 'Anton', 'Teko', 'Fjalla One', 'Josefin Sans', 'Quicksand', 'Mulish', 'Karla', 'Rubik', 'Ubuntu', 'Source Sans 3', 'PT Sans', 'Noto Sans', 'IBM Plex Sans', 'Red Hat Display', 'Lexend', 'League Spartan', 'Kanit', 'Exo 2', 'Titillium Web', 'Cabin', 'Hind', 'Heebo', 'Assistant', 'Playfair Display', 'Merriweather', 'Lora', 'Libre Baskerville', 'Cormorant Garamond', 'EB Garamond', 'Crimson Pro', 'DM Serif Display', 'Fraunces', 'Newsreader', 'Bodoni Moda', 'Instrument Serif', 'Space Mono', 'JetBrains Mono', 'IBM Plex Mono', 'Fira Code', 'DM Mono', 'Roboto Mono', ); }