/** * Skateboarding trick & terminology glossary. * ───────────────────────────────────────────────────────────────────────────── * A curated, categorized reference of skate tricks, transitions, freestyle, * stance/movement terms, and hardware — with common alternate names (tricks and * gear pick up regional / era-specific / pro-named nicknames). * * Static content — no network, no Nostr. Purely a learning reference for the * community. Keep entries concise and skater-accurate. */ export interface Trick { /** Canonical name. */ name: string; /** Other names the same trick / term is known by. */ aka?: string[]; /** Short, skater-accurate description. */ desc: string; } export interface TrickCategory { id: string; /** Display title. */ title: string; /** One-line description of the category. */ blurb: string; /** Emoji used as a lightweight category glyph. */ glyph: string; tricks: Trick[]; } export const GLOSSARY: TrickCategory[] = [ { id: 'fundamentals', title: 'Fundamentals', blurb: 'The building blocks every trick is stacked on.', glyph: '🛹', tricks: [ { name: 'Ollie', desc: 'The foundational jump — pop the tail, slide the front foot forward, and level the board in the air with no hands. The basis for almost every street trick.' }, { name: 'Nollie', aka: ['Nose Ollie'], desc: 'An ollie popped off the nose instead of the tail while riding forward.' }, { name: 'Fakie Ollie', desc: 'An ollie performed while rolling backwards in your normal stance.' }, { name: 'Switch Ollie', desc: 'An ollie done in your opposite (switch) stance.' }, { name: 'Nollie Ollie', aka: ['North', 'North Ollie', 'Wrong-Footed Ollie'], desc: 'Popping off the nose while rolling forward. Old-timers also called a mistimed front-foot pop a "wrong-footed" ollie.' }, { name: 'One Foot Ollie', aka: ['One-Foot Ollie'], desc: 'An ollie where the front foot kicks off and forward in the air, then returns before landing.' }, { name: 'No Foot Ollie', aka: ['Nothing', 'Airwalk (grabless)'], desc: 'An ollie where both feet leave the board mid-air, then land back on it.' }, { name: 'Manual', aka: ['Wheelie'], desc: 'Balance rolling on the back two wheels; a nose manual uses the front two.' }, { name: 'Nose Manual', desc: 'A manual balanced on the front two wheels, tail in the air.' }, { name: 'Powerslide', desc: 'Turn the board perpendicular and slide the wheels to scrub speed.' }, { name: 'Kickturn', desc: 'Pivot on the back wheels to change direction — the first turn every skater learns.' }, { name: 'Tic-Tac', aka: ['Tick-Tack'], desc: 'Small back-and-forth kickturns of the nose to gain momentum without pushing.' }, { name: 'Wallie', desc: 'An ollie off a wall or vertical surface, riding away.' }, { name: 'Boneless', desc: 'Grab the board, plant the front foot on the ground, and jump back on. An ’80s staple.' }, { name: 'No Comply', aka: ['No-Comply'], desc: 'Front foot steps off, back foot pops the tail so the board hops/spins, then reload. Popularized by Ray Barbee.' }, { name: 'Hippie Jump', desc: 'Jump straight up while the board rolls under an obstacle, landing back on it.' }, { name: 'Acid Drop', desc: 'Drop into a ramp or off a ledge from the coping without pumping — just step on and go.' }, { name: 'Bomb Drop', desc: 'Jump from a height and land directly onto the rolling board.' }, { name: 'Caveman', desc: 'Hold the board in your hands, jump, and drop it under your feet to ride away.' }, ], }, { id: 'rotations', title: 'Rotations (180s / 360s)', blurb: 'Ollie-based body-and-board spins with no flip.', glyph: '🧭', tricks: [ { name: 'Frontside 180', aka: ['FS 180', 'Frontside Ollie 180'], desc: 'An ollie rotating your body and board 180° frontside (chest turning to face forward/out).' }, { name: 'Backside 180', aka: ['BS 180'], desc: 'An ollie rotating 180° backside (turning your back to the direction of travel).' }, { name: 'Frontside 360', aka: ['FS 360'], desc: 'A full 360° frontside ollie rotation.' }, { name: 'Backside 360', aka: ['BS 360', '360 Backside'], desc: 'A full 360° backside ollie rotation.' }, { name: 'Fakie Frontside 180', aka: ['Half-Cab'], desc: 'A fakie frontside 180 — half of a full cab. Named after Steve Caballero.' }, { name: 'Fakie Backside 180', aka: ['Fakie BS 180'], desc: 'A 180° backside rotation done while rolling fakie.' }, { name: 'Caballerial', aka: ['Full Cab', 'Cab', '360 Fakie'], desc: 'A fakie 360° ollie with no grab or flip. Named after Steve Caballero.' }, { name: '540 (flatground)', desc: 'A flatground one-and-a-half rotation — advanced spin control.' }, ], }, { id: 'flips', title: 'Flip Tricks', blurb: 'Tricks where the board rotates around its long axis (and then some).', glyph: '🌀', tricks: [ { name: 'Kickflip', aka: ['Magic Flip (original name)'], desc: 'Ollie with a flick off the toe side so the board flips one full rotation along its length.' }, { name: 'Heelflip', desc: 'Like a kickflip but flicked off the heel, flipping the opposite direction.' }, { name: 'Frontside Flip', aka: ['FS Flip'], desc: 'A frontside 180 combined with a kickflip.' }, { name: 'Backside Flip', aka: ['BS Flip'], desc: 'A backside 180 combined with a kickflip.' }, { name: 'Frontside Heelflip', aka: ['FS Heel'], desc: 'A frontside 180 combined with a heelflip.' }, { name: 'Backside Heelflip', aka: ['BS Heel'], desc: 'A backside 180 combined with a heelflip.' }, { name: 'Varial Kickflip', desc: 'A kickflip combined with a backside pop shove-it.' }, { name: 'Varial Heelflip', desc: 'A heelflip combined with a frontside pop shove-it.' }, { name: '360 Flip', aka: ['Tre Flip', '360 Kickflip', 'Three Flip'], desc: 'A kickflip combined with a 360° backside pop shove-it — a signature street trick.' }, { name: '360 Hardflip', desc: 'A hardflip combined with a 360° shove-it rotation.' }, { name: 'Hardflip', desc: 'A frontside pop shove-it combined with a kickflip; the board rotates vertically between the legs.' }, { name: 'Inward Heelflip', desc: 'A backside pop shove-it combined with a heelflip.' }, { name: 'Laser Flip', desc: 'A frontside 360 pop shove-it combined with a heelflip — the mirror of a tre flip.' }, { name: 'Double Kickflip', desc: 'A kickflip that rotates twice before you catch it.' }, { name: 'Triple Kickflip', desc: 'Three full kickflip rotations before landing.' }, { name: 'Double Heelflip', desc: 'A heelflip rotating twice before you land.' }, { name: 'Impossible', desc: 'The board wraps vertically around the back foot in a scooping motion. Invented by Rodney Mullen.' }, { name: 'Pressure Flip', desc: 'Flip powered by back-foot pressure on the heel side of the tail, usually with a shove-it.' }, { name: 'Hospital Flip', aka: ['Half Flip'], desc: 'A half kickflip caught with the front foot, then flipped back over before landing.' }, { name: 'Dolphin Flip', aka: ['Forward Flip'], desc: 'A pressure-flip variant where the board flips forward end-over-end in a vertical arc.' }, { name: 'Gazelle Flip', desc: 'A 360 flip combined with a 360° body rotation — a huge, flowing trick.' }, { name: '360 Pressure Flip', aka: ['360 P-Flip'], desc: 'A pressure flip carrying a full 360° board spin.' }, ], }, { id: 'shoves', title: 'Shove-its & Spins', blurb: 'Board and body rotations without a flip.', glyph: '🔄', tricks: [ { name: 'Pop Shove-it', aka: ['Pop Shuv', 'Shuvit'], desc: 'Ollie with the board spinning 180° flat under your feet.' }, { name: 'Frontside Shove-it', desc: 'A shove-it where the board spins frontside (toward your heels).' }, { name: 'Backside Shove-it', desc: 'A shove-it where the board spins backside (toward your toes).' }, { name: '360 Shove-it', aka: ['360 Shuv', 'Tre Shuv'], desc: 'A shove-it that spins the board a full 360° flat.' }, { name: '540 Shove-it', desc: 'A shove-it spinning the board one-and-a-half rotations (540°).' }, { name: 'Nollie Shove-it', desc: 'A shove-it popped off the nose while rolling forward.' }, { name: 'Bigspin', desc: 'A 360° board shove-it combined with a 180° body varial, same direction.' }, { name: 'Bigger Spin', desc: 'A 540° board spin with a 180° body varial.' }, { name: 'Bigflip', desc: 'A bigspin with a kickflip added.' }, { name: 'Bigger Flip', desc: 'A bigger spin (540°) with a kickflip.' }, { name: 'Ghetto Bird', aka: ['Hardflip Late Backside 180'], desc: 'A nollie hardflip with a late backside 180. Popularized by Kareem Campbell.' }, ], }, { id: 'grinds', title: 'Grinds', blurb: 'Sliding along an edge on the trucks.', glyph: '⚙️', tricks: [ { name: '50-50', aka: ['Fifty-Fifty'], desc: 'Grind on both trucks equally along a rail or ledge.' }, { name: '5-0', aka: ['Five-O'], desc: 'Grind on the back truck only, nose up (like a manual on an edge).' }, { name: 'Nosegrind', desc: 'Grind on the front truck only, tail up.' }, { name: 'Crooked Grind', aka: ['K-Grind', 'Crooks'], desc: 'A nosegrind with the tail kicked out to one side — part nose manual, part slide.' }, { name: 'Smith Grind', desc: 'Back truck grinds on top with the front dipping below the edge, nose pointed down.' }, { name: 'Feeble Grind', aka: ['Grosso Grind'], desc: 'Back truck on top with the front truck hanging over the far side, nose down. Sometimes called a Grosso grind after Jeff Grosso.' }, { name: 'Salad Grind', desc: 'The frontside cousin of a feeble grind — back truck grinding with the front over the near side.' }, { name: 'Suski Grind', desc: 'A backside 5-0 with the front truck hanging over the opposite side. Named after Aaron Suski.' }, { name: 'Willy Grind', aka: ['Barley Grind'], desc: 'A frontside 5-0 with the front truck hanging over the edge. Named after Mike Vallely / Donny Barley.' }, { name: 'Overcrook', aka: ['Overcrooked'], desc: 'A frontside crooked grind, nose overhanging the far side of the rail.' }, { name: 'Losi Grind', desc: 'A frontside nosegrind with the tail hanging over the edge. Named after Allen Losi.' }, { name: 'Hurricane Grind', desc: 'Frontside 180 into a backwards feeble/smith grind, then 180 out.' }, { name: 'Pole Jam', desc: 'Ride up an angled pole or bar and grind/ollie off it.' }, ], }, { id: 'slides', title: 'Slides', blurb: 'Sliding on the deck instead of the trucks.', glyph: '➖', tricks: [ { name: 'Boardslide', desc: 'Slide with the middle of the deck perpendicular across the edge.' }, { name: 'Lipslide', desc: 'Like a boardslide but the tail swings over the obstacle first to get into it.' }, { name: 'Noseslide', desc: 'Slide on the nose of the board along a ledge.' }, { name: 'Tailslide', desc: 'Slide on the tail of the board along a ledge.' }, { name: 'Bluntslide', desc: 'Back wheels up on the ledge with the tail on top, sliding on the tail’s edge.' }, { name: 'Nosebluntslide', aka: ['Noseblunt'], desc: 'The nose-end blunt slide — front wheels up on the ledge, perpendicular.' }, { name: 'Darkslide', desc: 'Slide upside-down on the grip tape — a Rodney Mullen invention.' }, { name: 'Primo Slide', desc: 'Board on its side, sliding on the edge (like a moving rail stand).' }, { name: 'Casper Slide', desc: 'Board upside down, one foot on the tail and one under the board, sliding.' }, ], }, { id: 'grabs', title: 'Grabs', blurb: 'Airborne tricks where a hand grabs the board.', glyph: '✋', tricks: [ { name: 'Indy', aka: ['Indy Grab'], desc: 'Trailing (back) hand grabs the toe edge between the feet.' }, { name: 'Melon', aka: ['Melancholie'], desc: 'Leading (front) hand grabs the heel edge between the feet.' }, { name: 'Mute', aka: ['Mute Grab'], desc: 'Leading hand grabs the toe edge; named after deaf skater Chris Weddle.' }, { name: 'Stalefish', desc: 'Trailing hand grabs the heel edge behind the back leg.' }, { name: 'Method', aka: ['Method Air'], desc: 'A melon grab with the board pulled up behind the back and legs kicked out — the classic stylish air.' }, { name: 'Japan Air', desc: 'A melon grab pulled up behind the back, tweaking the board up and forward.' }, { name: 'Madonna', desc: 'Front hand grabs the heel side near the nose with the back leg kicked straight down.' }, { name: 'Slob Air', desc: 'Front hand grabs the toe side, usually with a frontside rotation.' }, { name: 'Nosegrab', desc: 'Grab the nose of the board in the air.' }, { name: 'Tailgrab', desc: 'Grab the tail of the board in the air.' }, { name: 'Seatbelt', aka: ['Seatbelt Grab'], desc: 'Front hand reaches across the body to grab the tail.' }, { name: 'Roastbeef', aka: ['Roastbeef Grab'], desc: 'Back hand reaches through the legs to grab the heel side.' }, { name: 'Benihana', desc: 'A tail grab with the back foot kicked off the board mid-air.' }, { name: 'Crossbone', desc: 'A melon grab with the front leg boned out to the side.' }, { name: 'Nosebone', desc: 'A nose grab with the front leg boned out straight.' }, { name: 'Tailbone', desc: 'A tail grab with the back leg boned out straight.' }, { name: 'Lien Air', desc: 'Front hand grabs the heel side during a frontside air — "Neil" (Blender) spelled backwards.' }, { name: 'Judo Air', desc: 'Front hand grabs the nose while the front leg kicks out forward.' }, { name: 'Cannonball', desc: 'Both hands grab nose and tail with the knees tucked.' }, { name: 'Christ Air', desc: 'Arms out like a crucifix with no grab — pure ’80s vert flair.' }, { name: 'Airwalk', desc: 'Grab the nose and split the legs apart forward and back like walking on air.' }, ], }, { id: 'airs', title: 'Airs & Spins (Vert)', blurb: 'Big air and rotation tricks off ramps, bowls, and quarterpipes.', glyph: '🚀', tricks: [ { name: 'Backside Air', desc: 'Any aerial rotating backside (facing away from the ramp on approach), usually grabbed.' }, { name: 'Frontside Air', desc: 'Any aerial rotating frontside (facing the ramp on approach).' }, { name: 'Alley-Oop', desc: 'Spinning opposite the direction you’re traveling out of the transition.' }, { name: '540', aka: ['Five-Forty'], desc: 'One-and-a-half rotations in the air.' }, { name: 'McTwist', desc: 'A 540° backside spin with a mute grab, invented by Mike McGill.' }, { name: '720', desc: 'Two full rotations in the air.' }, { name: '900', desc: 'Two-and-a-half rotations — famously landed by Tony Hawk in 1999.' }, { name: '1080', aka: ['Ten Eighty'], desc: 'Three full rotations — first landed by Tom Schaar in 2012.' }, ], }, { id: 'lip', title: 'Lip Tricks', blurb: 'Tricks performed on the coping / lip of a ramp or bowl.', glyph: '👄', tricks: [ { name: 'Rock to Fakie', desc: 'Ride up, rock the front truck over the coping, tap, then roll back in fakie.' }, { name: 'Rock n Roll', desc: 'Rock the board over the coping then kickturn 180° to roll back in forward.' }, { name: 'Axle Stall', aka: ['50-50 Stall'], desc: 'Stall on both trucks on the coping, then drop back in.' }, { name: 'Feeble Stall', desc: 'A feeble grind held as a stall on the coping.' }, { name: 'Smith Stall', desc: 'A smith grind held as a stall on the coping before dropping back in.' }, { name: 'Blunt to Fakie', desc: 'Stall in a blunt position on the coping then come back in fakie.' }, { name: 'Disaster', desc: 'Ollie over the coping so the middle of the board rests on the lip, leaning forward.' }, { name: 'Slash Grind', desc: 'A quick grind across the coping while carving through a turn.' }, { name: 'Fakie Rock', desc: 'Roll up fakie, rock the tail-end over the coping, then come back in.' }, ], }, { id: 'stalls', title: 'Stalls', blurb: 'Pausing balanced on an obstacle before re-entering.', glyph: '⏸️', tricks: [ { name: 'Nose Stall', desc: 'Balance stalled on the nose against a ledge or coping.' }, { name: 'Tail Stall', desc: 'Balance stalled on the tail on the coping.' }, { name: 'Pivot Stall', desc: 'Stall balanced on the back truck and pivot to re-enter.' }, { name: 'Nosepick', desc: 'Stall on the nose/front truck with the tail hanging in the air, often on a quarterpipe.' }, { name: 'Tailblock', desc: 'A handplant-style stall balanced on the tail against the coping.' }, { name: 'Blunt Stall', desc: 'Stall with the tail on the coping and the board perpendicular, wheels above the lip.' }, ], }, { id: 'handplants', title: 'Handplants & Inverts', blurb: 'One-hand-on-the-coping inverted tricks — old-school flair.', glyph: '🤸', tricks: [ { name: 'Invert', aka: ['Handplant', 'One-Hand Plant'], desc: 'Plant one hand on the coping and balance inverted with the board grabbed.' }, { name: 'Eggplant', desc: 'A frontside invert grabbing toe-side with the board pulled behind the back.' }, { name: 'Andrecht', desc: 'A backside invert with a 540° spin out; invented by Dave Andrecht.' }, { name: 'Sad Plant', desc: 'A handplant with the front leg boned straight and the back leg tucked.' }, { name: 'Gymnast Plant', desc: 'An invert with both hands on the coping and legs split.' }, { name: 'Ho-Ho', aka: ['Two-Hand Plant'], desc: 'A handstand-style invert balanced on both hands.' }, { name: 'Beanplant', aka: ['Bean Plant'], desc: 'A frontside handplant with the back hand grabbing the nose; invented by Kevin Staab.' }, { name: 'Fastplant', desc: 'A one-footed takeoff using a hand on the platform to launch.' }, { name: 'Layback Air', desc: 'One hand on the deck behind you, leaning into the transition, then launching into an air.' }, { name: 'Miller Flip', desc: 'A frontside handplant flipping over onto your back on the deck; invented by Darrell Miller.' }, ], }, { id: 'boneless', title: 'Boneless & Foot-Plants', blurb: 'Grab-and-jump tricks planting a foot on the ground.', glyph: '🦴', tricks: [ { name: 'Boneless', desc: 'Grab the board, plant the front foot on the ground, and jump back on.' }, { name: 'Bean Plant', desc: 'A boneless planting the back foot and grabbing with the leading hand.' }, { name: 'No Comply', desc: 'Step the front foot off, pop the tail so the board spins/hops, then reload.' }, { name: 'Nose Bonk', desc: 'Tap the nose off an obstacle mid-line for style.' }, { name: 'Ho-ho Plant', desc: 'A foot-plant balanced into a two-hand handstand.' }, ], }, { id: 'freestyle', title: 'Freestyle & Flatground', blurb: 'Balance and pivot tricks from skate’s freestyle roots.', glyph: '🎪', tricks: [ { name: 'Casper', aka: ['Casper Stand'], desc: 'Board upside down, front foot under the board, back foot on the tail.' }, { name: 'Casper Flip', desc: 'Flipping the board from a casper position back to wheels-down.' }, { name: 'Anti-Casper', desc: 'Board upside down with the back foot under and front foot on the nose.' }, { name: 'Primo', aka: ['Rail Stand', 'Primo Stand'], desc: 'Board balanced on its side (rail); stand on the edge.' }, { name: 'Rail Flip', desc: 'Flip the board from a rail stand back to normal.' }, { name: 'Pogo', desc: 'Balance on the tail with the board vertical, holding the nose, and bounce.' }, { name: 'Truckstand', aka: ['Truck Stand'], desc: 'Handstand-style balance on one truck with the board vertical.' }, { name: 'Handstand', aka: ['Handstand Fingerflip'], desc: 'A handstand on the board, often flipped out — a freestyle staple.' }, { name: 'Fingerflip', desc: 'Flip the board with your hand while your feet are off it.' }, { name: 'Old School Kickflip', aka: ['Toe Flip'], desc: 'Flip the board outward off the toe side with the front foot — the pre-ollie kickflip.' }, { name: 'Walk the Dog', desc: 'Step foot-over-foot on nose and tail to swivel the board forward.' }, { name: 'Spacewalk', desc: 'A nose-up manual walked along by shifting weight side to side.' }, { name: 'Daffy', desc: 'One foot on the nose of one board and one on the tail of another (or flexed mid-deck).' }, { name: 'G-Turn', desc: 'A 360° spin held in a manual using small kickturns.' }, { name: 'Coconut Wheelie', desc: 'A two-footed nose or tail wheelie balanced with both feet together.' }, ], }, { id: 'transition', title: 'Transition & Vert Terms', blurb: 'Ramps, bowls, coping — the language of transition skating.', glyph: '🌊', tricks: [ { name: 'Drop In', desc: 'Start a run by setting the tail on the coping and leaning forward down the transition.' }, { name: 'Carve', desc: 'Turn by leaning into the transition, holding an arc.' }, { name: 'Pumping', desc: 'Generate speed by compressing and extending through the transitions instead of pushing.' }, { name: 'Transfer', desc: 'Move from one ramp or bowl section to another, often over a channel or spine.' }, { name: 'Spine Transfer', desc: 'Transfer over the spine — the shared coping of two back-to-back ramps.' }, { name: 'Channel Gap', desc: 'Jump the flat gap (channel) cut into the platform between two quarterpipes.' }, { name: 'Roll In', desc: 'A sloped platform that lets you roll into a ramp without dropping in.' }, { name: 'Coping', desc: 'The metal pipe on the edge of ramps and pools that you grind and stall on.' }, { name: 'Transition', aka: ['Tranny'], desc: 'The curved part of a ramp between the flat bottom and the vertical.' }, { name: 'Vert', desc: 'The vertical section at the top of a big ramp.' }, { name: 'Halfpipe', desc: 'Two quarterpipes facing each other with a flat bottom between.' }, { name: 'Quarterpipe', desc: 'A single ramp with a 90° transition.' }, { name: 'Mini Ramp', desc: 'A smaller halfpipe, usually 3–5 ft, with no vertical section.' }, { name: 'Bowl', aka: ['Pool'], desc: 'A concave concrete structure with rounded corners and coping.' }, { name: 'Snake Run', desc: 'A winding concrete course of banks and transitions.' }, { name: 'Extension', desc: 'A section of a ramp wall built higher than the rest.' }, { name: 'Hip', desc: 'Where two ramp banks meet at an angle — used to launch and transfer.' }, ], }, { id: 'stance', title: 'Stance & Slang', blurb: 'How you stand, roll, and talk on the board.', glyph: '🗣️', tricks: [ { name: 'Regular', desc: 'Riding with the left foot forward.' }, { name: 'Goofy', desc: 'Riding with the right foot forward.' }, { name: 'Switch', aka: ['Switchstance'], desc: 'Riding in your opposite (unnatural) stance.' }, { name: 'Fakie', desc: 'Rolling backwards in your normal stance (tail leading).' }, { name: 'Mongo', aka: ['Mongo-foot'], desc: 'Pushing with the front foot instead of the back — generally frowned upon stylistically.' }, { name: 'Pushing', desc: 'Propelling yourself with one foot on the ground.' }, { name: 'Bail', desc: 'Intentionally jumping off to avoid a bad landing.' }, { name: 'Slam', desc: 'Falling hard, usually unexpectedly.' }, { name: 'Sketchy', desc: 'A trick landed shakily or barely held together.' }, { name: 'Bolts', aka: ['Landed Bolts'], desc: 'Landing perfectly with both feet over the truck bolts.' }, { name: 'Steez', desc: 'Style + ease — doing tricks with effortless flair.' }, { name: 'Pop', desc: 'The snap you get off the tail when it hits the ground.' }, { name: 'Sticker Slap', desc: 'Slapping the tail against an obstacle for a satisfying tap.' }, { name: 'Line', desc: 'A sequence of tricks strung together in one continuous roll.' }, { name: 'Kook', desc: 'Slang for a clueless or poser skater.' }, ], }, { id: 'hardware', title: 'Hardware & Equipment', blurb: 'The anatomy of a skateboard, from deck to bearings.', glyph: '🔩', tricks: [ { name: 'Deck', desc: 'The wooden board itself, usually 7-ply maple.' }, { name: 'Grip Tape', aka: ['Griptape'], desc: 'Sandpaper-like adhesive sheet on top of the deck for traction.' }, { name: 'Trucks', desc: 'The T-shaped metal axles that attach the wheels to the deck and let you turn.' }, { name: 'Baseplate', desc: 'The flat part of the truck that bolts to the deck.' }, { name: 'Hanger', desc: 'The main body of the truck that holds the axle — what you grind on.' }, { name: 'Kingpin', desc: 'The big bolt holding the truck together; sets how loose or tight it turns.' }, { name: 'Bushings', desc: 'The urethane cushions in the truck that allow and control turning.' }, { name: 'Pivot Cup', desc: 'The plastic cup in the baseplate where the hanger pivots.' }, { name: 'Wheels', desc: 'Urethane wheels, measured in millimeters (typically 50–60mm) and durometer (hardness).' }, { name: 'Bearings', desc: 'The metal rings inside the wheels that let them spin (often ABEC-rated).' }, { name: 'Spacers', desc: 'Small metal cylinders between bearings to reduce friction and side load.' }, { name: 'Speed Rings', aka: ['Washers'], desc: 'Small washers on the axle that reduce friction against the bearings.' }, { name: 'Risers', aka: ['Riser Pads', 'Shock Pads'], desc: 'Pads between the deck and trucks to raise ride height and prevent wheel bite.' }, { name: 'Hardware', aka: ['Mounting Bolts'], desc: 'The nuts and bolts that attach the trucks to the deck.' }, { name: 'Nose', desc: 'The front of the deck — usually steeper and slightly wider than the tail.' }, { name: 'Tail', desc: 'The back of the deck, used for popping tricks.' }, { name: 'Concave', desc: 'The curved shape across the width of the deck that helps board control.' }, { name: 'Kicktail', aka: ['Kick'], desc: 'The upturned nose and tail of the deck.' }, { name: 'Wheelbase', desc: 'The distance between the two sets of truck mounting holes.' }, { name: 'Durometer', desc: 'The hardness rating of wheels (e.g. 99a). Harder = faster/street, softer = grippier/cruising.' }, { name: 'Wheel Bite', desc: 'When a wheel touches the deck during a turn, causing a sudden stop.' }, { name: 'Razor Tail', desc: 'A tail worn to a sharp edge from dragging on the ground.' }, { name: 'Pressure Crack', desc: 'A stress crack in the deck near the truck mounting holes.' }, ], }, ]; /** Total entry count across all categories (for headers/stats). */ export const TOTAL_TRICKS = GLOSSARY.reduce((sum, c) => sum + c.tricks.length, 0); /** Flat, searchable list joining name + aka + description + category. */ export interface FlatTrick extends Trick { categoryId: string; categoryTitle: string; categoryGlyph: string; } export const ALL_TRICKS: FlatTrick[] = GLOSSARY.flatMap((cat) => cat.tricks.map((t) => ({ ...t, categoryId: cat.id, categoryTitle: cat.title, categoryGlyph: cat.glyph, })), ); /** Case-insensitive search across name, aka, and description. */ export function searchTricks(query: string): FlatTrick[] { const q = query.trim().toLowerCase(); if (!q) return ALL_TRICKS; return ALL_TRICKS.filter((t) => { if (t.name.toLowerCase().includes(q)) return true; if (t.desc.toLowerCase().includes(q)) return true; if (t.aka?.some((a) => a.toLowerCase().includes(q))) return true; return false; }); } // ─── Local knowledge answerer (no API needed) ──────────────────────────────── /** Normalize a name/aka for matching: lowercase, strip punctuation & spaces. */ function norm(s: string): string { return s.toLowerCase().replace(/[^a-z0-9]/g, ''); } /** Pre-computed lookup of every trick by its normalized name + aka names. */ const TRICK_INDEX: Array<{ key: string; trick: FlatTrick }> = ALL_TRICKS.flatMap((t) => { const keys = [t.name, ...(t.aka ?? [])].map(norm).filter(Boolean); return keys.map((key) => ({ key, trick: t })); }).sort((a, b) => b.key.length - a.key.length); // longest (most specific) first /** * Try to answer a trick / terminology question directly from the glossary, * with NO network call. Returns a formatted answer string, or null if the * question doesn't clearly reference a known trick. * * Handles phrasings like: * "what is a feeble grind" · "how do i do a kickflip" * "grosso grind" · "explain the tre flip" */ export function answerFromGlossary(question: string): string | null { const nq = norm(question); if (!nq) return null; // Find the most specific trick whose name/aka appears in the question. const hit = TRICK_INDEX.find(({ key }) => key.length >= 3 && nq.includes(key)); if (!hit) return null; const t = hit.trick; const akaLine = t.aka && t.aka.length ? `\n_Also known as: ${t.aka.join(', ')}._` : ''; const isHowTo = /\bhow\b|do a|do the|land|learn/i.test(question); const lead = isHowTo ? `Here's the breakdown on the **${t.name}** 🛹` : `**${t.name}** — ${t.categoryGlyph} ${t.categoryTitle}`; const howToTail = isHowTo ? `\n\nWant to dial it in? Check **The Lab** for a coach near you, or hit the 📖 [Glossary](/glossary) for related tricks.` : `\n\nMore in the 📖 [Glossary](/glossary).`; return `${lead}\n\n${t.desc}${akaLine}${howToTail}`; }