Every component, token, template and pattern that powers our product, drawn, named and version-controlled in a single Figma file. Built for designers shipping at speed.
Variants
Type
State
Size
Theme
+
Components
Every primitive, pattern and page template, drawn and named.
+
Variants
States, sizes and themes, mapped across the whole set.
+
Design tokens
Colour, type, spacing and elevation — the same names as the code.
Pages
Named and ordered, so nothing is hunted for.
7 components come out of the file and land as a working dashboard — each one named as it drops, and linked to its page in the kit wherever there is one.
Engineers don't ship Figma. They ship code. So we built Odyssey code-first: strict types, RSC-safe, under 12 kB. The Figma kit mirrors the same props and tokens, so designers hand off without translation.
5,900+components
Every primitive, pattern and page template, drawn, named and variant-mapped so you assemble screens instead of starting from a blank canvas.
Color, type, spacing and elevation live once as Figma variables that map 1:1 to the package's CSS variables. Change a token and both sides move together — there is no second place to update and nothing to keep in sync by hand.
50variables
A ten-step neutral ramp from 0A0D14 to white, then blue, orange, red, green, yellow, purple, pink and teal — each a full scale rather than a lone swatch, and each mapped 1:1 to a CSS variable so a change lands on both sides at once.
The jump from frame to code is where most kits stop and most teams start guessing. Every component here carries the notes an engineer would otherwise have to ask for, written into the file beside the thing they describe.
Documented hand-off
Each component opens on a page that says what it is for, what it is made of and where it is meant to be used, before a single prop is discussed.
A table arrives with its header, its sorting and its empty state. A date picker with its range, its presets and its month switcher. Whole sections, drawn and named, so the first screen of a project is assembled rather than started.
Interactive preview
Drag an event to move it, or pick a day to add one.
Search
April 2026
Today
Sun
Mon
Tue
Wed
Thu
fri
sat
Design review
Design review
Design review
Cap.Design review
Cap.Design review
Cap.Design review
Cap.Design review
Cap.Design review

Soft egg & avocado toast
Six minutes in the pan, a ripe avocado and good sourdough. Cut it while the yolk still runs.
20
Mins
2
Serves
Easy
Header
1ChatGPT
# 129
Website
Amount
$24,000
.00
Contact
Categories
Close date
April 22, 2026
Apple
# 129
Website
Amount
$24,000
.00
Contact
Categories
Close date
April 22, 2026
Apple
# 129
Website
Amount
$24,000
.00
Contact
Categories
Close date
April 22, 2026
Revenue this year
$27,496
vs last year
$15,750
Command menu keyboard navigation
Everything that happened while you were away.
Ava Rios created branch feat/cmdk-nav
Ava Rios
∙
12:14 PM
Started on arrow-key navigation. Wrapping selection at both ends and scrolling the active row into view. Reactions and the composer are next.
Mia Kwan
∙
12:14 PM
Confirmed the reaction chip states against the kit — default counted, the brand “(You)” pill with the remove ✕, and the add-emoji. Uploading the redlines and a quick capture.
reaction-states.PDF
cmdk-capture.AVI
14 Replies
3 unread replies
Tom Beck
∙
12:14 PM
Looped in the folks who own the shortcut map so keybinds stay consistent across surfaces.
Leave a comment
Company Name
Description
Team Members
Deadline
Northwind
northwind.co
Design system rollout across web and mobile.
29/09/2023
Halcyon
halcyon.io
Checkout redesign, empty and error states included.
12/10/2023
Meridian
meridian.studio
Marketing site rebuild ahead of the launch.
03/11/2023
How can we help?
Search the knowledge base or browse by topic.
Search...
⌘1What’s included in the pro plan
Can I change or cancel my plan anytime?
How does per-seat billing work for teams?
How do I enable two-factor authentication?
Where is my data stored, and is it encrypted?
Can I transfer ownership of a workspace?
Jan 2026 Calendar
Mon
2
Tue
3
Wed
4
Thu
5
Fri
6
Sat
7
Sun
8
Design review
Today 10:10 - 10:20 AM
Ten minutes to land the open decisions. Bring the file, not a deck — anything still open at 10:20 moves to Friday.
Please Connect Your Account
Connect AccountDescribe what you would like to create...
Counter.tsx
import { useState } from 'react'
export default function Counter() {
const [count, setCount] = useState(0)
// one click, one increment
return <button onClick={() => setCount(count + 1)}>
}
Designing calm, capable editors
A rich text editor should get out of the way. Select any text to format it — the toolbar buttons above light up to match what's under your cursor. Try bold, italic
What good tools share
Three things separate an editor you tolerate from one you reach for:
all work.
Ship the formatting toolbar
Sync active states to the selection
Add @mentions and inline code
The best interface is the one you stop noticing.
Kit review with the product team
Walked the block set end to end — the table, the date picker, the empty states. Three things came back: a tighter default row height, a second toast variant, and names that match the ones in code.
Finish the block components
Sync tokens to the library
Hand the redlines to engineering
Write the release note
The row height came from the densest table we had, not the most common one, so every list in the kit inherited a screen that never existed.
Dropping it to fifty-six pixels puts three more rows on a laptop screen and costs nothing at the top of the page, where the header already sets the rhythm.
The toast needs a second variant for the case nobody drew: an action that failed and can be retried, with the retry in the toast rather than back in the page.
Names last longer than layouts. Anything a component is called here should be the name it answers to in the code, or the handoff pays for it twice.
Build an audience
Combine filters to target the right people.
27,973
of 48,230 total contacts
1 filter applied
Updated live
Select a category
Select a country
Try Bahamas
Auto-updates as members change.
Upload / add attachments
Drag files in or pick from your device.
Click to upload from device
PDF, DOC, XLS, PNG, JPG · Max. file size 25 MB
Files stay private until you save.
2 files
Q3-financial-report.pdf
78 KB
File Summary
7.68 MB
/
12.8 MB
4%
4 files · 17.5 MB of 2 GB used
Choose your plan
Switch or cancel anytime
Starter
For individuals getting started.
Up to 3 projects
Community support
$0/mo
Pro
PopularFor growing teams that ship fast.
Unlimited projects
Priority support
50 GB storage
$24/mo
Business
Security & controls for scale.
SSO & SAML
Audit logs
$59/mo
Notification settings
Pick a channel for each kind of update.
Notification
Push
SMS
Sign-in alerts
New device or location
Password changes
Security-related edits
Activity
Mentions
When someone @mentions you
Comments
Replies on your items
Weekly summary
Monday recap
Search or jump to
⌘All
No people found
Try a name, an @handle or an email address. The filters above narrow the list before you type.
navigate
Tags
open
120
New Customers
Your customer volume has increased by
Notifications
Everything that happened while you were away.
Today
Alex Rivera, Sam Doyle
and 4 others reacted to Q3 Product Roadmap
∙
8 min ago
Noah Reed
mentioned you in #design.
∙
2 hr ago
“@you can you confirm the red unread dot uses Error/#ec0d33?
Ava West
started following you
∙
8 min ago
Yesterday
Weekly digest
is ready
8 min ago
Leo bryn
shared a file with you
∙
2 hr ago
Your tokens are synced
Colour, type and elevation now match the library file. Anything already placed on your canvas picks the change up the next time you open it, and every local override you made is left as it is.
This message will close in6seconds.
Pick a date
Choose the day the reminder should land.
Pick a time
Times are shown in your own zone.
10
11
12
Hour
10
11
12
Min
Intensity
0%
Low
High
We couldn’t publish your library
Two components still point at a token that was removed. Fix those and publish again.
Don't show it again
Tell us why!
35.92%
397.66 over 1,107
GB
Country
Q1/2026
Quarters
Step 1 of 4
Ethan Cole
@Ethansworld224
Set status
Move
edit
Share
delete
Workspace settings
Manage your profile, team and preferences
General
Profile
Name, photo and public details
Notifications
Email, push and in-app alerts
Language & region
English (US) · GMT+1
Advanced
Integrations
Slack, GitHub and 4 more
Delete workspace
Permanently remove all data
Notification preferences
Leading checkboxes, with the third row trailing-aligned.
Product updates
(Weekly)
NewNew features and improvements.
Mentions & replies
Get notified when someone tags you.
Product updates
(Weekly)
Sign-ins and password changes. Trailing checkbox variant.
Real products shipped with our components, composed by hand or generated with AI. Same tokens, same library, infinite range.
Why pick Odyssey over shadcn or Radix?
Both are great. Shadcn is a copy-paste recipe where you own every line, and Radix gives you unstyled primitives. Odyssey is an opinionated library: a single import, white-label tokens, real bundle discipline, and the only one shipping a first-class MCP server. If you want a kit that’s engineered rather than assembled, that’s us.
What is an MCP server, exactly?
Which AI tools are supported?
How do you guarantee “0 hallucinated props”?
Does this work with my own theme?
Will it bloat my bundle?
Join the list and we’ll email you the moment the code library and MCP server go live — with a 10% discount code to use whenever you decide to buy.
+
Components
Every primitive, pattern and page template, drawn and named.
+
Variants
States, sizes and themes, mapped across the whole set.
+
Design tokens
Colour, type, spacing and elevation — the same names as the code.
Pages
Named and ordered, so nothing is hunted for.
Engineers don't ship Figma. They ship code. So we built Odyssey code-first: strict types, RSC-safe, under 12 kB. The Figma kit mirrors the same props and tokens, so designers hand off without translation.
5,900+components
Every primitive, pattern and page template, drawn, named and variant-mapped so you assemble screens instead of starting from a blank canvas.
Color, type, spacing and elevation live once as Figma variables that map 1:1 to the package's CSS variables. Change a token and both sides move together — there is no second place to update and nothing to keep in sync by hand.
50variables
A ten-step neutral ramp from 0A0D14 to white, then blue, orange, red, green, yellow, purple, pink and teal — each a full scale rather than a lone swatch, and each mapped 1:1 to a CSS variable so a change lands on both sides at once.
The jump from frame to code is where most kits stop and most teams start guessing. Every component here carries the notes an engineer would otherwise have to ask for, written into the file beside the thing they describe.
Documented hand-off
Each component opens on a page that says what it is for, what it is made of and where it is meant to be used, before a single prop is discussed.
7 components come out of the file and land as a working dashboard — each one named as it drops, and linked to its page in the kit wherever there is one.
A table arrives with its header, its sorting and its empty state. A date picker with its range, its presets and its month switcher. Whole sections, drawn and named, so the first screen of a project is assembled rather than started.
Interactive preview
Drag an event to move it, or pick a day to add one.
Search
April 2026
Today
Sun
Mon
Tue
Wed
Thu
fri
sat
Design review
Design review
Design review
Cap.Design review
Cap.Design review
Cap.Design review
Cap.Design review
Cap.Design review

Soft egg & avocado toast
Six minutes in the pan, a ripe avocado and good sourdough. Cut it while the yolk still runs.
20
Mins
2
Serves
Easy
Header
1ChatGPT
# 129
Website
Amount
$24,000
.00
Contact
Categories
Close date
April 22, 2026
Apple
# 129
Website
Amount
$24,000
.00
Contact
Categories
Close date
April 22, 2026
Apple
# 129
Website
Amount
$24,000
.00
Contact
Categories
Close date
April 22, 2026
Revenue this year
$27,496
vs last year
$15,750
Command menu keyboard navigation
Everything that happened while you were away.
Ava Rios created branch feat/cmdk-nav
Ava Rios
∙
12:14 PM
Started on arrow-key navigation. Wrapping selection at both ends and scrolling the active row into view. Reactions and the composer are next.
Mia Kwan
∙
12:14 PM
Confirmed the reaction chip states against the kit — default counted, the brand “(You)” pill with the remove ✕, and the add-emoji. Uploading the redlines and a quick capture.
reaction-states.PDF
cmdk-capture.AVI
14 Replies
3 unread replies
Tom Beck
∙
12:14 PM
Looped in the folks who own the shortcut map so keybinds stay consistent across surfaces.
Leave a comment
Company Name
Description
Team Members
Deadline
Northwind
northwind.co
Design system rollout across web and mobile.
29/09/2023
Halcyon
halcyon.io
Checkout redesign, empty and error states included.
12/10/2023
Meridian
meridian.studio
Marketing site rebuild ahead of the launch.
03/11/2023
How can we help?
Search the knowledge base or browse by topic.
Search...
⌘1What’s included in the pro plan
Can I change or cancel my plan anytime?
How does per-seat billing work for teams?
How do I enable two-factor authentication?
Where is my data stored, and is it encrypted?
Can I transfer ownership of a workspace?
Jan 2026 Calendar
Mon
2
Tue
3
Wed
4
Thu
5
Fri
6
Sat
7
Sun
8
Design review
Today 10:10 - 10:20 AM
Ten minutes to land the open decisions. Bring the file, not a deck — anything still open at 10:20 moves to Friday.
Please Connect Your Account
Connect AccountDescribe what you would like to create...
Counter.tsx
import { useState } from 'react'
export default function Counter() {
const [count, setCount] = useState(0)
// one click, one increment
return <button onClick={() => setCount(count + 1)}>
}
Designing calm, capable editors
A rich text editor should get out of the way. Select any text to format it — the toolbar buttons above light up to match what's under your cursor. Try bold, italic
What good tools share
Three things separate an editor you tolerate from one you reach for:
all work.
Ship the formatting toolbar
Sync active states to the selection
Add @mentions and inline code
The best interface is the one you stop noticing.
Choose your plan
Switch or cancel anytime
Starter
For individuals getting started.
Up to 3 projects
Community support
$0/mo
Pro
PopularFor growing teams that ship fast.
Unlimited projects
Priority support
50 GB storage
$24/mo
Business
Security & controls for scale.
SSO & SAML
Audit logs
$59/mo
Notification settings
Pick a channel for each kind of update.
Notification
Push
SMS
Sign-in alerts
New device or location
Password changes
Security-related edits
Activity
Mentions
When someone @mentions you
Comments
Replies on your items
Weekly summary
Monday recap
Search or jump to
⌘All
No people found
Try a name, an @handle or an email address. The filters above narrow the list before you type.
navigate
Tags
open
120
New Customers
Your customer volume has increased by
Notifications
Everything that happened while you were away.
Today
Alex Rivera, Sam Doyle
and 4 others reacted to Q3 Product Roadmap
∙
8 min ago
Noah Reed
mentioned you in #design.
∙
2 hr ago
“@you can you confirm the red unread dot uses Error/#ec0d33?
Ava West
started following you
∙
8 min ago
Yesterday
Weekly digest
is ready
8 min ago
Leo bryn
shared a file with you
∙
2 hr ago
Your tokens are synced
Colour, type and elevation now match the library file. Anything already placed on your canvas picks the change up the next time you open it, and every local override you made is left as it is.
This message will close in6seconds.
Pick a date
Choose the day the reminder should land.
Pick a time
Times are shown in your own zone.
10
11
12
Hour
10
11
12
Min
We couldn’t publish your library
Two components still point at a token that was removed. Fix those and publish again.
Don't show it again
Intensity
0%
Low
High
35.92%
397.66 over 1,107
GB
Country
Q1/2026
Quarters
Step 1 of 4
Tell us why!
Ethan Cole
@Ethansworld224
Set status
Move
edit
Share
delete
Workspace settings
Manage your profile, team and preferences
General
Profile
Name, photo and public details
Notifications
Email, push and in-app alerts
Language & region
English (US) · GMT+1
Advanced
Integrations
Slack, GitHub and 4 more
Delete workspace
Permanently remove all data
Notification preferences
Leading checkboxes, with the third row trailing-aligned.
Product updates
(Weekly)
NewNew features and improvements.
Mentions & replies
Get notified when someone tags you.
Product updates
(Weekly)
Sign-ins and password changes. Trailing checkbox variant.
Upload / add attachments
Drag files in or pick from your device.
Click to upload from device
PDF, DOC, XLS, PNG, JPG · Max. file size 25 MB
Files stay private until you save.
2 files
Q3-financial-report.pdf
78 KB
File Summary
7.68 MB
/
12.8 MB
4%
4 files · 17.5 MB of 2 GB used
Build an audience
Combine filters to target the right people.
27,973
of 48,230 total contacts
1 filter applied
Updated live
Select a category
Select a country
Try Bahamas
Auto-updates as members change.
Kit review with the product team
Walked the block set end to end — the table, the date picker, the empty states. Three things came back: a tighter default row height, a second toast variant, and names that match the ones in code.
Finish the block components
Sync tokens to the library
Hand the redlines to engineering
Write the release note
The row height came from the densest table we had, not the most common one, so every list in the kit inherited a screen that never existed.
Dropping it to fifty-six pixels puts three more rows on a laptop screen and costs nothing at the top of the page, where the header already sets the rhythm.
The toast needs a second variant for the case nobody drew: an action that failed and can be retried, with the retry in the toast rather than back in the page.
Names last longer than layouts. Anything a component is called here should be the name it answers to in the code, or the handoff pays for it twice.