- Removed difficulty categorization entirely (type, badges, styles) —
cleaner and no arbitrary skill labels.
- Added many requested/missing tricks with proper research and correct
alt-names, including:
• Rotations category: FS/BS 180, FS/BS 360, half-cab, full cab
(caballerial), fakie 180s.
• Flip tricks: backside flip, frontside flip, FS/BS heelflip, double
heelflip, 360 hardflip, 360 pressure flip.
• Grinds: feeble grind now notes "Grosso grind" aka; added Willy/
Barley, pole jam; inventor credits (Suski, Losi, etc.).
• Fundamentals: nose ollie/north, one-foot, no-foot/nothing, nose
manual, caveman, tic-tac.
• Shoves: nollie shove, ghetto bird.
• Grabs: tailbone, airwalk. Stance/slang: pop, line, kook, sticker
slap, etc. Hardware: durometer.
- Updated the local glossary answerer index to cover all new aka names
(e.g. "grosso grind", "half cab", "north ollie" now answer locally).
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
447 lines
30 KiB
TypeScript
447 lines
30 KiB
TypeScript
/**
|
||
* 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}`;
|
||
}
|