Initial public release

This commit is contained in:
Bohdan Triapitsyn
2025-12-07 19:32:53 +02:00
commit 4b2edf7318
319 changed files with 81600 additions and 0 deletions
@@ -0,0 +1,197 @@
import type { Theme } from '@/types/theme';
export const flexokiDarkTheme: Theme = {
metadata: {
id: 'flexoki-dark',
name: 'Flexoki Dark',
description: 'An inky color scheme for prose and code - dark variant',
author: 'Steph Ango',
version: '1.0.0',
variant: 'dark',
tags: ['dark', 'warm', 'natural', 'ink']
},
colors: {
primary: {
base: '#EC8B49',
hover: '#DA702C',
active: '#F9AE77',
foreground: '#100F0F',
muted: '#EC8B4980',
emphasis: '#F9AE77'
},
surface: {
background: '#100F0F',
foreground: '#CECDC3',
muted: '#1C1B1A',
mutedForeground: '#878580',
elevated: '#282726',
elevatedForeground: '#CECDC3',
overlay: '#00000080',
subtle: '#343331'
},
interactive: {
border: '#343331',
borderHover: '#403E3C',
borderFocus: '#EC8B49',
selection: '#CECDC330',
selectionForeground: '#CECDC3',
focus: '#EC8B49',
focusRing: '#EC8B4950',
cursor: '#CECDC3',
hover: '#343331',
active: '#403E3C'
},
status: {
error: '#D14D41',
errorForeground: '#100F0F',
errorBackground: '#AF302920',
errorBorder: '#AF302950',
warning: '#DA702C',
warningForeground: '#100F0F',
warningBackground: '#BC521520',
warningBorder: '#BC521550',
success: '#A0AF54',
successForeground: '#100F0F',
successBackground: '#66800B20',
successBorder: '#66800B50',
info: '#4385BE',
infoForeground: '#100F0F',
infoBackground: '#205EA620',
infoBorder: '#205EA650'
},
syntax: {
base: {
background: '#1C1B1A',
foreground: '#CECDC3',
comment: '#878580',
keyword: '#4385BE',
string: '#3AA99F',
number: '#8B7EC8',
function: '#DA702C',
variable: '#CECDC3',
type: '#D0A215',
operator: '#D14D41'
},
tokens: {
commentDoc: '#575653',
stringEscape: '#CECDC3',
keywordImport: '#D14D41',
storageModifier: '#4385BE',
functionCall: '#DA702C',
method: '#879A39',
variableProperty: '#4385BE',
variableOther: '#879A39',
variableGlobal: '#CE5D97',
variableLocal: '#282726',
parameter: '#CECDC3',
constant: '#CECDC3',
class: '#DA702C',
className: '#DA702C',
interface: '#D0A215',
struct: '#DA702C',
enum: '#DA702C',
typeParameter: '#DA702C',
namespace: '#D0A215',
module: '#D14D41',
tag: '#4385BE',
jsxTag: '#CE5D97',
tagAttribute: '#D0A215',
tagAttributeValue: '#3AA99F',
boolean: '#D0A215',
decorator: '#D0A215',
label: '#CE5D97',
punctuation: '#878580',
macro: '#4385BE',
preprocessor: '#CE5D97',
regex: '#3AA99F',
url: '#4385BE',
key: '#DA702C',
exception: '#CE5D97'
},
highlights: {
diffAdded: '#879A39',
diffAddedBackground: '#66800B20',
diffRemoved: '#D14D41',
diffRemovedBackground: '#AF302920',
diffModified: '#4385BE',
diffModifiedBackground: '#205EA620',
lineNumber: '#403E3C',
lineNumberActive: '#CECDC3'
}
},
markdown: {
heading1: '#D0A215',
heading2: '#DA702C',
heading3: '#4385BE',
heading4: '#CECDC3',
link: '#4385BE',
linkHover: '#205EA6',
inlineCode: '#A0AF54',
inlineCodeBackground: '#1C1B1A',
blockquote: '#878580',
blockquoteBorder: '#343331',
listMarker: '#D0A21599'
},
chat: {
userMessage: '#CECDC3',
userMessageBackground: '#282726',
assistantMessage: '#CECDC3',
assistantMessageBackground: '#100F0F',
timestamp: '#878580',
divider: '#343331'
},
tools: {
background: '#1C1B1A50',
border: '#34333180',
headerHover: '#34333150',
icon: '#878580',
title: '#CECDC3',
description: '#878580',
edit: {
added: '#879A39',
addedBackground: '#66800B25',
removed: '#D14D41',
removedBackground: '#AF302925',
lineNumber: '#403E3C'
}
}
},
config: {
fonts: {
sans: '"IBM Plex Mono", monospace',
mono: '"IBM Plex Mono", monospace',
heading: '"IBM Plex Mono", monospace'
},
radius: {
none: '0',
sm: '0.125rem',
md: '0.375rem',
lg: '0.5rem',
xl: '0.75rem',
full: '9999px'
},
transitions: {
fast: '150ms ease',
normal: '250ms ease',
slow: '350ms ease'
}
}
};
@@ -0,0 +1,197 @@
import type { Theme } from '@/types/theme';
export const flexokiLightTheme: Theme = {
metadata: {
id: 'flexoki-light',
name: 'Flexoki Light',
description: 'An inky color scheme for prose and code - light variant',
author: 'Steph Ango',
version: '1.0.0',
variant: 'light',
tags: ['light', 'warm', 'natural', 'paper']
},
colors: {
primary: {
base: '#EC8B49',
hover: '#F9AE77',
active: '#DA702C',
foreground: '#FFFCF0',
muted: '#EC8B4980',
emphasis: '#F9AE77'
},
surface: {
background: '#FFFCF0',
foreground: '#100F0F',
muted: '#F2F0E5',
mutedForeground: '#6F6E69',
elevated: '#E6E4D9',
elevatedForeground: '#100F0F',
overlay: '#100F0F20',
subtle: '#DAD8CE'
},
interactive: {
border: '#DAD8CE',
borderHover: '#CECDC3',
borderFocus: '#EC8B49',
selection: '#100F0F44',
selectionForeground: '#100F0F',
focus: '#EC8B49',
focusRing: '#EC8B4940',
cursor: '#100F0F',
hover: '#DAD8CE',
active: '#CECDC3'
},
status: {
error: '#AF3029',
errorForeground: '#FFFCF0',
errorBackground: '#D14D4120',
errorBorder: '#D14D4150',
warning: '#BC5215',
warningForeground: '#FFFCF0',
warningBackground: '#DA702C20',
warningBorder: '#DA702C50',
success: '#66800B',
successForeground: '#FFFCF0',
successBackground: '#879A3920',
successBorder: '#879A3950',
info: '#205EA6',
infoForeground: '#FFFCF0',
infoBackground: '#4385BE20',
infoBorder: '#4385BE50'
},
syntax: {
base: {
background: '#F2F0E5',
foreground: '#100F0F',
comment: '#6F6E69',
keyword: '#205EA6',
string: '#24837B',
number: '#5E409D',
function: '#BC5215',
variable: '#100F0F',
type: '#AD8301',
operator: '#AF3029'
},
tokens: {
commentDoc: '#B7B5AC',
stringEscape: '#100F0F',
keywordImport: '#AF3029',
storageModifier: '#205EA6',
functionCall: '#BC5215',
method: '#66800B',
variableProperty: '#205EA6',
variableOther: '#66800B',
variableGlobal: '#A02F6F',
variableLocal: '#E6E4D9',
parameter: '#100F0F',
constant: '#100F0F',
class: '#BC5215',
className: '#BC5215',
interface: '#AD8301',
struct: '#BC5215',
enum: '#BC5215',
typeParameter: '#BC5215',
namespace: '#AD8301',
module: '#AF3029',
tag: '#205EA6',
jsxTag: '#A02F6F',
tagAttribute: '#AD8301',
tagAttributeValue: '#24837B',
boolean: '#AD8301',
decorator: '#AD8301',
label: '#A02F6F',
punctuation: '#6F6E69',
macro: '#205EA6',
preprocessor: '#A02F6F',
regex: '#24837B',
url: '#205EA6',
key: '#BC5215',
exception: '#A02F6F'
},
highlights: {
diffAdded: '#66800B',
diffAddedBackground: '#879A3920',
diffRemoved: '#AF3029',
diffRemovedBackground: '#D14D4120',
diffModified: '#205EA6',
diffModifiedBackground: '#4385BE20',
lineNumber: '#CECDC3',
lineNumberActive: '#100F0F'
}
},
markdown: {
heading1: '#AD8301',
heading2: '#BC5215',
heading3: '#205EA6',
heading4: '#100F0F',
link: '#205EA6',
linkHover: '#4385BE',
inlineCode: '#24837B',
inlineCodeBackground: '#F2F0E5',
blockquote: '#6F6E69',
blockquoteBorder: '#DAD8CE',
listMarker: '#AD830199'
},
chat: {
userMessage: '#100F0F',
userMessageBackground: '#F2F0E5',
assistantMessage: '#100F0F',
assistantMessageBackground: '#FFFCF0',
timestamp: '#6F6E69',
divider: '#DAD8CE'
},
tools: {
background: '#F2F0E550',
border: '#DAD8CE80',
headerHover: '#DAD8CE',
icon: '#6F6E69',
title: '#100F0F',
description: '#6F6E69',
edit: {
added: '#66800B',
addedBackground: '#66800B25',
removed: '#AF3029',
removedBackground: '#AF302925',
lineNumber: '#CECDC3'
}
}
},
config: {
fonts: {
sans: '"IBM Plex Mono", monospace',
mono: '"IBM Plex Mono", monospace',
heading: '"IBM Plex Mono", monospace'
},
radius: {
none: '0',
sm: '0.125rem',
md: '0.375rem',
lg: '0.5rem',
xl: '0.75rem',
full: '9999px'
},
transitions: {
fast: '150ms ease',
normal: '250ms ease',
slow: '350ms ease'
}
}
};
+21
View File
@@ -0,0 +1,21 @@
import type { Theme } from '@/types/theme';
import { flexokiLightTheme } from './flexoki-light';
import { flexokiDarkTheme } from './flexoki-dark';
export const themes: Theme[] = [
flexokiLightTheme,
flexokiDarkTheme,
];
export {
flexokiLightTheme,
flexokiDarkTheme,
};
export function getThemeById(id: string): Theme | undefined {
return themes.find(theme => theme.metadata.id === id);
}
export function getDefaultTheme(prefersDark: boolean): Theme {
return prefersDark ? flexokiDarkTheme : flexokiLightTheme;
}