@lgtm-hq/turbo-themes 0.12.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +231 -0
  3. package/assets/css/adapters/bulma.css +26 -0
  4. package/assets/css/themes/bulma-dark.css +90 -0
  5. package/assets/css/themes/bulma-light.css +90 -0
  6. package/assets/css/themes/catppuccin-frappe.css +58 -0
  7. package/assets/css/themes/catppuccin-latte.css +58 -0
  8. package/assets/css/themes/catppuccin-macchiato.css +58 -0
  9. package/assets/css/themes/catppuccin-mocha.css +58 -0
  10. package/assets/css/themes/dracula.css +90 -0
  11. package/assets/css/themes/github-dark.css +58 -0
  12. package/assets/css/themes/github-light.css +58 -0
  13. package/assets/css/turbo-core.css +92 -0
  14. package/dist/adapters/bootstrap/_utilities.scss +178 -0
  15. package/dist/adapters/bootstrap/_variables.scss +99 -0
  16. package/dist/adapters/tailwind/colors.js +133 -0
  17. package/dist/adapters/tailwind/preset.js +136 -0
  18. package/dist/index.d.ts +12 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +14 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/themes/bulma.d.ts +31 -0
  23. package/dist/themes/bulma.d.ts.map +1 -0
  24. package/dist/themes/bulma.js +160 -0
  25. package/dist/themes/bulma.js.map +1 -0
  26. package/dist/themes/css.d.ts +4 -0
  27. package/dist/themes/css.d.ts.map +1 -0
  28. package/dist/themes/css.js +617 -0
  29. package/dist/themes/css.js.map +1 -0
  30. package/dist/themes/packs/bulma.d.ts +12 -0
  31. package/dist/themes/packs/bulma.d.ts.map +1 -0
  32. package/dist/themes/packs/bulma.js +285 -0
  33. package/dist/themes/packs/bulma.js.map +1 -0
  34. package/dist/themes/packs/catppuccin.synced.d.ts +3 -0
  35. package/dist/themes/packs/catppuccin.synced.d.ts.map +1 -0
  36. package/dist/themes/packs/catppuccin.synced.js +340 -0
  37. package/dist/themes/packs/catppuccin.synced.js.map +1 -0
  38. package/dist/themes/packs/dracula.d.ts +8 -0
  39. package/dist/themes/packs/dracula.d.ts.map +1 -0
  40. package/dist/themes/packs/dracula.js +145 -0
  41. package/dist/themes/packs/dracula.js.map +1 -0
  42. package/dist/themes/packs/github.synced.d.ts +10 -0
  43. package/dist/themes/packs/github.synced.d.ts.map +1 -0
  44. package/dist/themes/packs/github.synced.js +281 -0
  45. package/dist/themes/packs/github.synced.js.map +1 -0
  46. package/dist/themes/registry.d.ts +3 -0
  47. package/dist/themes/registry.d.ts.map +1 -0
  48. package/dist/themes/registry.js +16 -0
  49. package/dist/themes/registry.js.map +1 -0
  50. package/dist/themes/types.d.ts +172 -0
  51. package/dist/themes/types.d.ts.map +1 -0
  52. package/dist/themes/types.js +4 -0
  53. package/dist/themes/types.js.map +1 -0
  54. package/dist/tokens/index.d.ts +8 -0
  55. package/dist/tokens/index.d.ts.map +1 -0
  56. package/dist/tokens/index.js +9 -0
  57. package/dist/tokens/index.js.map +1 -0
  58. package/dist/tokens/style-dictionary/bulma-dark.json +410 -0
  59. package/dist/tokens/style-dictionary/bulma-light.json +410 -0
  60. package/dist/tokens/style-dictionary/catppuccin-frappe.json +264 -0
  61. package/dist/tokens/style-dictionary/catppuccin-latte.json +264 -0
  62. package/dist/tokens/style-dictionary/catppuccin-macchiato.json +264 -0
  63. package/dist/tokens/style-dictionary/catppuccin-mocha.json +264 -0
  64. package/dist/tokens/style-dictionary/dracula.json +409 -0
  65. package/dist/tokens/style-dictionary/github-dark.json +264 -0
  66. package/dist/tokens/style-dictionary/github-light.json +264 -0
  67. package/dist/tokens/style-dictionary/themes.json +2526 -0
  68. package/dist/tokens/style-dictionary/tokens.json +1050 -0
  69. package/dist/tokens/tokens-typed.json +218 -0
  70. package/package.json +180 -0
  71. package/packages/adapters/bulma/dist/bulma-adapter.css +153 -0
  72. package/packages/adapters/bulma/dist/index.d.ts +60 -0
  73. package/packages/adapters/bulma/dist/index.d.ts.map +1 -0
  74. package/packages/adapters/bulma/dist/index.js +343 -0
  75. package/packages/adapters/bulma/dist/index.js.map +1 -0
  76. package/packages/adapters/tailwind/dist/colors.d.ts +32 -0
  77. package/packages/adapters/tailwind/dist/colors.d.ts.map +1 -0
  78. package/packages/adapters/tailwind/dist/colors.js +133 -0
  79. package/packages/adapters/tailwind/dist/colors.js.map +1 -0
  80. package/packages/adapters/tailwind/dist/preset.d.ts +117 -0
  81. package/packages/adapters/tailwind/dist/preset.d.ts.map +1 -0
  82. package/packages/adapters/tailwind/dist/preset.js +136 -0
  83. package/packages/adapters/tailwind/dist/preset.js.map +1 -0
  84. package/packages/adapters/tailwind/dist/tsconfig.tsbuildinfo +1 -0
  85. package/packages/css/dist/base.d.ts +27 -0
  86. package/packages/css/dist/base.d.ts.map +1 -0
  87. package/packages/css/dist/base.js +277 -0
  88. package/packages/css/dist/base.js.map +1 -0
  89. package/packages/css/dist/components/buttons.css +141 -0
  90. package/packages/css/dist/components/cards.css +157 -0
  91. package/packages/css/dist/components/forms.css +109 -0
  92. package/packages/css/dist/components/navigation.css +175 -0
  93. package/packages/css/dist/components/notifications.css +192 -0
  94. package/packages/css/dist/components/progress.css +113 -0
  95. package/packages/css/dist/components/sidebar.css +537 -0
  96. package/packages/css/dist/components/tables.css +157 -0
  97. package/packages/css/dist/components/tabs.css +106 -0
  98. package/packages/css/dist/components/tags.css +121 -0
  99. package/packages/css/dist/generator.d.ts +60 -0
  100. package/packages/css/dist/generator.d.ts.map +1 -0
  101. package/packages/css/dist/generator.js +267 -0
  102. package/packages/css/dist/generator.js.map +1 -0
  103. package/packages/css/dist/index.d.ts +13 -0
  104. package/packages/css/dist/index.d.ts.map +1 -0
  105. package/packages/css/dist/index.js +16 -0
  106. package/packages/css/dist/index.js.map +1 -0
  107. package/packages/css/dist/syntax.d.ts +29 -0
  108. package/packages/css/dist/syntax.d.ts.map +1 -0
  109. package/packages/css/dist/syntax.js +341 -0
  110. package/packages/css/dist/syntax.js.map +1 -0
  111. package/packages/css/dist/themes/bulma-dark.css +86 -0
  112. package/packages/css/dist/themes/bulma-light.css +86 -0
  113. package/packages/css/dist/themes/catppuccin-frappe.css +61 -0
  114. package/packages/css/dist/themes/catppuccin-latte.css +61 -0
  115. package/packages/css/dist/themes/catppuccin-macchiato.css +61 -0
  116. package/packages/css/dist/themes/catppuccin-mocha.css +61 -0
  117. package/packages/css/dist/themes/dracula.css +85 -0
  118. package/packages/css/dist/themes/github-dark.css +61 -0
  119. package/packages/css/dist/themes/github-light.css +61 -0
  120. package/packages/css/dist/turbo-base.css +246 -0
  121. package/packages/css/dist/turbo-components.css +1833 -0
  122. package/packages/css/dist/turbo-core.css +92 -0
  123. package/packages/css/dist/turbo-syntax.css +242 -0
  124. package/packages/css/dist/turbo.css +727 -0
  125. package/packages/theme-selector/dist/accessibility.d.ts +8 -0
  126. package/packages/theme-selector/dist/accessibility.d.ts.map +1 -0
  127. package/packages/theme-selector/dist/accessibility.js +19 -0
  128. package/packages/theme-selector/dist/accessibility.js.map +1 -0
  129. package/packages/theme-selector/dist/apply-theme.d.ts +12 -0
  130. package/packages/theme-selector/dist/apply-theme.d.ts.map +1 -0
  131. package/packages/theme-selector/dist/apply-theme.js +60 -0
  132. package/packages/theme-selector/dist/apply-theme.js.map +1 -0
  133. package/packages/theme-selector/dist/constants.d.ts +28 -0
  134. package/packages/theme-selector/dist/constants.d.ts.map +1 -0
  135. package/packages/theme-selector/dist/constants.js +29 -0
  136. package/packages/theme-selector/dist/constants.js.map +1 -0
  137. package/packages/theme-selector/dist/dropdown/events.d.ts +9 -0
  138. package/packages/theme-selector/dist/dropdown/events.d.ts.map +1 -0
  139. package/packages/theme-selector/dist/dropdown/events.js +120 -0
  140. package/packages/theme-selector/dist/dropdown/events.js.map +1 -0
  141. package/packages/theme-selector/dist/dropdown/helpers.d.ts +12 -0
  142. package/packages/theme-selector/dist/dropdown/helpers.d.ts.map +1 -0
  143. package/packages/theme-selector/dist/dropdown/helpers.js +25 -0
  144. package/packages/theme-selector/dist/dropdown/helpers.js.map +1 -0
  145. package/packages/theme-selector/dist/dropdown/state.d.ts +26 -0
  146. package/packages/theme-selector/dist/dropdown/state.d.ts.map +1 -0
  147. package/packages/theme-selector/dist/dropdown/state.js +50 -0
  148. package/packages/theme-selector/dist/dropdown/state.js.map +1 -0
  149. package/packages/theme-selector/dist/dropdown/ui.d.ts +46 -0
  150. package/packages/theme-selector/dist/dropdown/ui.d.ts.map +1 -0
  151. package/packages/theme-selector/dist/dropdown/ui.js +179 -0
  152. package/packages/theme-selector/dist/dropdown/ui.js.map +1 -0
  153. package/packages/theme-selector/dist/errors.d.ts +59 -0
  154. package/packages/theme-selector/dist/errors.d.ts.map +1 -0
  155. package/packages/theme-selector/dist/errors.js +127 -0
  156. package/packages/theme-selector/dist/errors.js.map +1 -0
  157. package/packages/theme-selector/dist/index.d.ts +25 -0
  158. package/packages/theme-selector/dist/index.d.ts.map +1 -0
  159. package/packages/theme-selector/dist/index.js +114 -0
  160. package/packages/theme-selector/dist/index.js.map +1 -0
  161. package/packages/theme-selector/dist/navbar.d.ts +13 -0
  162. package/packages/theme-selector/dist/navbar.d.ts.map +1 -0
  163. package/packages/theme-selector/dist/navbar.js +75 -0
  164. package/packages/theme-selector/dist/navbar.js.map +1 -0
  165. package/packages/theme-selector/dist/storage.d.ts +32 -0
  166. package/packages/theme-selector/dist/storage.d.ts.map +1 -0
  167. package/packages/theme-selector/dist/storage.js +100 -0
  168. package/packages/theme-selector/dist/storage.js.map +1 -0
  169. package/packages/theme-selector/dist/theme-loader.d.ts +37 -0
  170. package/packages/theme-selector/dist/theme-loader.d.ts.map +1 -0
  171. package/packages/theme-selector/dist/theme-loader.js +142 -0
  172. package/packages/theme-selector/dist/theme-loader.js.map +1 -0
  173. package/packages/theme-selector/dist/theme-mapper.d.ts +25 -0
  174. package/packages/theme-selector/dist/theme-mapper.d.ts.map +1 -0
  175. package/packages/theme-selector/dist/theme-mapper.js +99 -0
  176. package/packages/theme-selector/dist/theme-mapper.js.map +1 -0
  177. package/packages/theme-selector/dist/theme-resolver.d.ts +50 -0
  178. package/packages/theme-selector/dist/theme-resolver.d.ts.map +1 -0
  179. package/packages/theme-selector/dist/theme-resolver.js +84 -0
  180. package/packages/theme-selector/dist/theme-resolver.js.map +1 -0
  181. package/packages/theme-selector/dist/types.d.ts +7 -0
  182. package/packages/theme-selector/dist/types.d.ts.map +1 -0
  183. package/packages/theme-selector/dist/types.js +6 -0
  184. package/packages/theme-selector/dist/types.js.map +1 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Turbo Coder
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,231 @@
1
+ # turbo-themes
2
+
3
+ Universal, accessible theme packs and a drop-in theme selector.
4
+
5
+ [![Bun](https://img.shields.io/badge/bun-1.3+-black?logo=bun)](https://bun.sh/)
6
+ [![Node.js](https://img.shields.io/badge/node.js-22-green)](https://nodejs.org/)
7
+ [![Coverage](https://codecov.io/gh/lgtm-hq/turbo-themes/branch/main/graph/badge.svg)](https://codecov.io/gh/lgtm-hq/turbo-themes)
8
+ [![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)
9
+ [![Tests](https://img.shields.io/github/actions/workflow/status/lgtm-hq/turbo-themes/quality-ci-main.yml?label=tests&branch=main&logo=githubactions&logoColor=white)](https://github.com/lgtm-hq/turbo-themes/actions/workflows/quality-ci-main.yml?query=branch%3Amain)
10
+ [![CI](https://img.shields.io/github/actions/workflow/status/lgtm-hq/turbo-themes/quality-ci-main.yml?label=ci&branch=main&logo=githubactions&logoColor=white)](https://github.com/lgtm-hq/turbo-themes/actions/workflows/quality-ci-main.yml?query=branch%3Amain)
11
+ [![Lighthouse](https://img.shields.io/github/actions/workflow/status/lgtm-hq/turbo-themes/reporting-lighthouse-ci.yml?label=lighthouse&branch=main)](https://github.com/lgtm-hq/turbo-themes/actions/workflows/reporting-lighthouse-ci.yml?query=branch%3Amain)
12
+
13
+ [![CodeQL](https://github.com/lgtm-hq/turbo-themes/actions/workflows/security-codeql.yml/badge.svg?branch=main)](https://github.com/lgtm-hq/turbo-themes/actions/workflows/security-codeql.yml?query=branch%3Amain)
14
+ [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11471/badge)](https://www.bestpractices.dev/projects/11471)
15
+ [![SBOM](https://img.shields.io/badge/SBOM-enabled-brightgreen)](SECURITY.md)
16
+ [![Download SBOM](https://img.shields.io/badge/SBOM-download_latest-blue?logo=github)](https://github.com/lgtm-hq/turbo-themes/actions/workflows/security-sbom.yml)
17
+
18
+ [![npm](https://img.shields.io/npm/v/%40lgtm-hq%2Fturbo-themes)](https://www.npmjs.com/package/@lgtm-hq/turbo-themes)
19
+ [![PyPI](https://img.shields.io/pypi/v/turbo-themes)](https://pypi.org/project/turbo-themes/)
20
+ [![RubyGems](https://img.shields.io/gem/v/turbo-themes.svg)](https://rubygems.org/gems/turbo-themes)
21
+
22
+ [![Bulma](https://img.shields.io/badge/Bulma-00D1B2?style=flat&logo=bulma&logoColor=white)](https://bulma.io/)
23
+ [![Catppuccin](https://img.shields.io/badge/Catppuccin-EBA0AC?style=flat)](https://catppuccin.com/)
24
+ [![Dracula](https://img.shields.io/badge/Dracula-BD93F9?style=flat)](https://draculatheme.com/)
25
+ [![GitHub Primer](https://img.shields.io/badge/GitHub_Primer-8B949E?style=flat&logo=github&logoColor=white)](https://primer.style/)
26
+
27
+ ## Included Theme Packs
28
+
29
+ Built on [Bulma](https://bulma.io/) CSS framework with color palettes from these amazing
30
+ projects:
31
+
32
+ | Theme | Variants | Source |
33
+ | --------------------------------------------------------------------------------------------------------------- | ------------------------------- | --------------------------------------------- |
34
+ | <img src="./assets/img/catppuccin-logo-macchiato.png" width="20" height="20" alt="Catppuccin" /> **Catppuccin** | Mocha, Macchiato, Frappé, Latte | [catppuccin.com](https://catppuccin.com/) |
35
+ | <img src="./assets/img/dracula-logo.png" width="20" height="20" alt="Dracula" /> **Dracula** | Dark | [draculatheme.com](https://draculatheme.com/) |
36
+ | <img src="./assets/img/github-logo-dark.png" width="20" height="20" alt="GitHub" /> **GitHub** | Light, Dark | [primer.style](https://primer.style/) |
37
+ | <img src="./assets/img/bulma-logo.png" width="20" height="20" alt="Bulma" /> **Bulma** | Light, Dark | [bulma.io](https://bulma.io/) |
38
+
39
+ ## Features
40
+
41
+ - **9 curated themes** from Catppuccin, Dracula, GitHub, and Bulma
42
+ - **Multi-platform**: npm, PyPI, RubyGems, Swift Package Manager
43
+ - **Design tokens**: Platform-agnostic JSON tokens for any framework
44
+ - **Accessible**: WCAG-compliant with keyboard and screen reader support
45
+ - **Framework-agnostic**: Works with React, Vue, Svelte, vanilla JS, or native apps
46
+ - **Type-safe**: Full TypeScript, Python type hints, and Swift types
47
+ - **Tested**: Unit tests, E2E tests, Lighthouse CI, and visual regression
48
+
49
+ ## Installation
50
+
51
+ | Platform | Package Manager | Install Command |
52
+ | ------------------------- | --------------- | ------------------------------------------------- |
53
+ | **JavaScript/TypeScript** | npm / bun | `npm install @lgtm-hq/turbo-themes` |
54
+ | **Python** | pip / uv | `pip install turbo-themes` |
55
+ | **Ruby** | bundler | `gem "turbo-themes", "~> 0.12"` |
56
+ | **Swift** | SPM | Add `https://github.com/lgtm-hq/turbo-themes.git` |
57
+
58
+ ### JavaScript/TypeScript
59
+
60
+ ```bash
61
+ # Using Bun (recommended)
62
+ bun add @lgtm-hq/turbo-themes
63
+
64
+ # Using npm
65
+ npm install @lgtm-hq/turbo-themes
66
+ ```
67
+
68
+ ### Python
69
+
70
+ ```bash
71
+ pip install turbo-themes
72
+ # or
73
+ uv add turbo-themes
74
+ ```
75
+
76
+ ### Ruby (Jekyll)
77
+
78
+ ```ruby
79
+ # Gemfile
80
+ gem "turbo-themes", "~> 0.12"
81
+ ```
82
+
83
+ ### Swift
84
+
85
+ Add via Xcode: `https://github.com/lgtm-hq/turbo-themes.git` (version `0.12.0`+)
86
+
87
+ ## Quick Start
88
+
89
+ ### Using Design Tokens (Recommended)
90
+
91
+ Access theme colors as platform-agnostic JSON tokens:
92
+
93
+ ```ts
94
+ import tokens from '@lgtm-hq/turbo-themes/tokens.json';
95
+
96
+ const mocha = tokens.themes['catppuccin-mocha'];
97
+ console.log(mocha.tokens.brand.primary); // "#89b4fa"
98
+ ```
99
+
100
+ ### JavaScript/TypeScript
101
+
102
+ ```ts
103
+ import { initTheme, wireFlavorSelector } from '@lgtm-hq/turbo-themes';
104
+
105
+ // Initialize theme system
106
+ initTheme(document, window);
107
+ wireFlavorSelector(document, window);
108
+ ```
109
+
110
+ ### Python
111
+
112
+ ```python
113
+ from turbo_themes import ThemeManager, THEMES
114
+
115
+ manager = ThemeManager()
116
+ manager.set_theme("catppuccin-mocha")
117
+ css_vars = manager.apply_theme_to_css_variables()
118
+ ```
119
+
120
+ ### Swift
121
+
122
+ ```swift
123
+ import TurboThemes
124
+
125
+ let mocha = ThemeRegistry.themes[.catppuccinMocha]
126
+ // Use theme colors in SwiftUI views
127
+ ```
128
+
129
+ ### Available Exports
130
+
131
+ | Import Path | Use Case |
132
+ | ----------------------------------- | ----------------------------- |
133
+ | `@lgtm-hq/turbo-themes/tokens.json` | Platform-agnostic JSON tokens |
134
+ | `@lgtm-hq/turbo-themes/tokens` | TypeScript tokens with types |
135
+ | `@lgtm-hq/turbo-themes/css/*` | Pre-built CSS files |
136
+
137
+ ## Examples
138
+
139
+ Complete, working examples demonstrating Turbo Themes integration with various
140
+ frameworks:
141
+
142
+ | Example | Framework | Description | Try It |
143
+ | ------------------------------------- | ------------ | ------------------------------------------ | ------------------------------------------------------------------------------------------------ |
144
+ | [HTML Vanilla](examples/html-vanilla) | HTML/JS | Zero-dependency vanilla JavaScript | [StackBlitz](https://stackblitz.com/github/lgtm-hq/turbo-themes/tree/main/examples/html-vanilla) |
145
+ | [React](examples/react) | React 18 | TypeScript with custom `useTheme` hook | [StackBlitz](https://stackblitz.com/github/lgtm-hq/turbo-themes/tree/main/examples/react) |
146
+ | [Vue](examples/vue) | Vue 3 | Composition API with `useTheme` composable | [StackBlitz](https://stackblitz.com/github/lgtm-hq/turbo-themes/tree/main/examples/vue) |
147
+ | [Tailwind](examples/tailwind) | Tailwind CSS | Preset integration with utility classes | [StackBlitz](https://stackblitz.com/github/lgtm-hq/turbo-themes/tree/main/examples/tailwind) |
148
+ | [Bootstrap](examples/bootstrap) | Bootstrap 5 | SCSS integration with light/dark mode | [StackBlitz](https://stackblitz.com/github/lgtm-hq/turbo-themes/tree/main/examples/bootstrap) |
149
+ | [Jekyll](examples/jekyll) | Jekyll | Ruby gem integration | - |
150
+ | [SwiftUI](examples/swift-swiftui) | SwiftUI | iOS/macOS native app | - |
151
+
152
+ Each example includes theme switching, localStorage persistence, and FOUC prevention.
153
+ See the [examples directory](examples/) for full documentation.
154
+
155
+ ## Testing
156
+
157
+ This project includes comprehensive testing:
158
+
159
+ - **Unit Tests**: Vitest with coverage reporting
160
+ - **E2E Tests**: Playwright with Page Object Model pattern
161
+ - **Accessibility Tests**: axe-core integration for WCAG compliance
162
+ - **Visual Regression**: Playwright screenshots and snapshots
163
+
164
+ Run tests:
165
+
166
+ ```bash
167
+ # Using Bun (recommended)
168
+ bun run test # Unit tests with coverage
169
+ bun run e2e # All E2E tests
170
+ bun run e2e:smoke # Smoke tests only
171
+ bun run e2e:visual # Visual regression tests
172
+ bun run e2e:a11y # Accessibility tests
173
+ bun run e2e:ui # Playwright UI mode
174
+
175
+ # Using npm (also works)
176
+ npm test # Unit tests with coverage
177
+ npm run e2e # All E2E tests
178
+ ```
179
+
180
+ For detailed E2E testing documentation, see `docs/E2E-TESTING.md`.
181
+
182
+ ## Development Setup
183
+
184
+ ### Prerequisites
185
+
186
+ - **Bun** 1.3+ (recommended) - [Install Bun](https://bun.sh/docs/installation)
187
+ - **Node.js** 22+ (alternative to Bun)
188
+ - **Python** 3.11+ with uv (for Python package development)
189
+ - **Ruby** 3.4+ with Bundler (optional, for gem builds)
190
+
191
+ ### Quick Start
192
+
193
+ ```bash
194
+ # Clone and install
195
+ git clone https://github.com/lgtm-hq/turbo-themes.git
196
+ cd turbo-themes
197
+ bun install
198
+ bundle install
199
+
200
+ # Build and serve
201
+ bun run build
202
+ bun run build:themes
203
+ bun run serve
204
+ ```
205
+
206
+ ### Why Bun?
207
+
208
+ This project uses [Bun](https://bun.sh/) as its primary JavaScript runtime for:
209
+
210
+ - **5-10x faster** package installation
211
+ - **10x faster** script startup time
212
+ - **~40% reduction** in CI build times
213
+ - Full npm compatibility (works with all existing packages)
214
+
215
+ ## Documentation
216
+
217
+ - Code of Conduct: see `CODE_OF_CONDUCT.md`
218
+ - Contributing Guide: see `CONTRIBUTING.md`
219
+ - Security Policy: see `SECURITY.md`
220
+ - Release process: see `docs/RELEASE-TRAIN.md`
221
+ - E2E Testing: see `docs/E2E-TESTING.md`
222
+ - Workflows & Actions: see `.github/workflows/README.md` and `.github/actions/README.md`
223
+ - Scripts: see `scripts/README.md`
224
+
225
+ ## Governance
226
+
227
+ See `GOVERNANCE.md` and `MAINTAINERS.md`.
228
+
229
+ ## License
230
+
231
+ MIT © Turbo Coder
@@ -0,0 +1,26 @@
1
+ :root {
2
+ /* Backgrounds */
3
+ --bulma-body-background-color: var(--turbo-bg-base);
4
+ --bulma-scheme-main: var(--turbo-bg-base);
5
+ --bulma-scheme-main-bis: var(--turbo-bg-surface);
6
+ --bulma-scheme-main-ter: var(--turbo-bg-surface-alt);
7
+
8
+ /* Text */
9
+ --bulma-body-color: var(--turbo-text-primary);
10
+ --bulma-text-weak: var(--turbo-text-secondary);
11
+ --bulma-light-invert: var(--turbo-text-inverse);
12
+
13
+ /* Brand & links */
14
+ --bulma-primary: var(--turbo-brand-primary);
15
+ --bulma-link: var(--turbo-accent-link, var(--turbo-brand-primary));
16
+
17
+ /* State colors */
18
+ --bulma-info: var(--turbo-state-info);
19
+ --bulma-success: var(--turbo-state-success);
20
+ --bulma-warning: var(--turbo-state-warning);
21
+ --bulma-danger: var(--turbo-state-danger);
22
+
23
+ /* Borders */
24
+ --bulma-border: var(--turbo-border-default);
25
+ --bulma-border-strong: var(--turbo-border-strong, var(--turbo-border-default));
26
+ }
@@ -0,0 +1,90 @@
1
+ /* Generated from bulma-dark.css */
2
+
3
+ [data-theme="bulma-dark"] {
4
+ --turbo-spacing-xs: 0.25rem; /* dimension */
5
+ --turbo-spacing-sm: 0.5rem; /* dimension */
6
+ --turbo-spacing-md: 1rem; /* dimension */
7
+ --turbo-spacing-lg: 1.5rem; /* dimension */
8
+ --turbo-spacing-xl: 2rem; /* dimension */
9
+ --turbo-elevation-none: none; /* shadow */
10
+ --turbo-elevation-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow */
11
+ --turbo-elevation-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); /* shadow */
12
+ --turbo-elevation-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow */
13
+ --turbo-elevation-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); /* shadow */
14
+ --turbo-animation-duration-fast: 150ms; /* duration */
15
+ --turbo-animation-duration-normal: 300ms; /* duration */
16
+ --turbo-animation-duration-slow: 500ms; /* duration */
17
+ --turbo-animation-easing-default: cubic-bezier(0.4, 0, 0.2, 1); /* cubicBezier */
18
+ --turbo-animation-easing-emphasized: cubic-bezier(0.05, 0.7, 0.1, 1); /* cubicBezier */
19
+ --turbo-opacity-disabled: 0.5; /* number */
20
+ --turbo-opacity-hover: 0.8; /* number */
21
+ --turbo-opacity-pressed: 0.6; /* number */
22
+ --turbo-bg-base: #141414; /* color */
23
+ --turbo-bg-surface: #1f1f1f; /* color */
24
+ --turbo-bg-overlay: #2b2b2b; /* color */
25
+ --turbo-text-primary: #f5f5f5; /* color */
26
+ --turbo-text-secondary: #dbdbdb; /* color */
27
+ --turbo-text-inverse: #141414; /* color */
28
+ --turbo-brand-primary: #00d1b2; /* color */
29
+ --turbo-state-info: #3e8ed0; /* color */
30
+ --turbo-state-success: #48c78e; /* color */
31
+ --turbo-state-warning: #ffe08a; /* color */
32
+ --turbo-state-danger: #f14668; /* color */
33
+ --turbo-border-default: #363636; /* color */
34
+ --turbo-accent-link: #485fc7; /* color */
35
+ --turbo-font-sans: "Nunito Sans", BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; /* fontFamily */
36
+ --turbo-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* fontFamily */
37
+ --turbo-heading-h1: #00d1b2; /* color */
38
+ --turbo-heading-h2: #7289da; /* color */
39
+ --turbo-heading-h3: #5dade2; /* color */
40
+ --turbo-heading-h4: #58d68d; /* color */
41
+ --turbo-heading-h5: #f7dc6f; /* color */
42
+ --turbo-heading-h6: #f1948a; /* color */
43
+ --turbo-body-primary: #dbdbdb; /* color */
44
+ --turbo-body-secondary: #b5b5b5; /* color */
45
+ --turbo-link-default: #485fc7; /* color */
46
+ --turbo-selection-fg: #f5f5f5; /* color */
47
+ --turbo-selection-bg: #3273dc; /* color */
48
+ --turbo-blockquote-border: #363636; /* color */
49
+ --turbo-blockquote-fg: #dbdbdb; /* color */
50
+ --turbo-blockquote-bg: #1f1f1f; /* color */
51
+ --turbo-code-inline-fg: #f14668; /* color */
52
+ --turbo-code-inline-bg: #2b2b2b; /* color */
53
+ --turbo-code-block-fg: #f5f5f5; /* color */
54
+ --turbo-code-block-bg: #2b2b2b; /* color */
55
+ --turbo-table-border: #404040; /* color */
56
+ --turbo-table-stripe: #1c1c1c; /* color */
57
+ --turbo-table-thead-bg: #2d2d2d; /* color */
58
+ --turbo-content-table-cell-bg: #1a1a1a; /* color */
59
+ --turbo-content-table-header-fg: #f5f5f5; /* color */
60
+ --turbo-components-card-bg: #1c1c1c; /* color */
61
+ --turbo-components-card-border: #3a3a3a; /* color */
62
+ --turbo-components-card-header-bg: #252525; /* color */
63
+ --turbo-components-card-footer-bg: #1f1f1f; /* color */
64
+ --turbo-components-message-bg: #1f1f1f; /* color */
65
+ --turbo-components-message-header-bg: #2a2a2a; /* color */
66
+ --turbo-components-message-border: #404040; /* color */
67
+ --turbo-components-message-body-fg: #e0e0e0; /* color */
68
+ --turbo-components-panel-bg: #1c1c1c; /* color */
69
+ --turbo-components-panel-header-bg: #2a2a2a; /* color */
70
+ --turbo-components-panel-header-fg: #f5f5f5; /* color */
71
+ --turbo-components-panel-border: #3a3a3a; /* color */
72
+ --turbo-components-panel-block-bg: #1f1f1f; /* color */
73
+ --turbo-components-panel-block-hover-bg: #262626; /* color */
74
+ --turbo-components-panel-block-active-bg: #2d3748; /* color */
75
+ --turbo-components-box-bg: #1c1c1c; /* color */
76
+ --turbo-components-box-border: #3a3a3a; /* color */
77
+ --turbo-components-notification-bg: #252525; /* color */
78
+ --turbo-components-notification-border: #404040; /* color */
79
+ --turbo-components-modal-bg: rgba(0, 0, 0, 0.86); /* color */
80
+ --turbo-components-modal-card-bg: #1c1c1c; /* color */
81
+ --turbo-components-modal-header-bg: #252525; /* color */
82
+ --turbo-components-modal-footer-bg: #1f1f1f; /* color */
83
+ --turbo-components-dropdown-bg: #1c1c1c; /* color */
84
+ --turbo-components-dropdown-item-hover-bg: #2a2a2a; /* color */
85
+ --turbo-components-dropdown-border: #404040; /* color */
86
+ --turbo-components-tabs-border: #404040; /* color */
87
+ --turbo-components-tabs-link-bg: #252525; /* color */
88
+ --turbo-components-tabs-link-active-bg: #1c1c1c; /* color */
89
+ --turbo-components-tabs-link-hover-bg: #2a2a2a; /* color */
90
+ }
@@ -0,0 +1,90 @@
1
+ /* Generated from bulma-light.css */
2
+
3
+ [data-theme="bulma-light"] {
4
+ --turbo-spacing-xs: 0.25rem; /* dimension */
5
+ --turbo-spacing-sm: 0.5rem; /* dimension */
6
+ --turbo-spacing-md: 1rem; /* dimension */
7
+ --turbo-spacing-lg: 1.5rem; /* dimension */
8
+ --turbo-spacing-xl: 2rem; /* dimension */
9
+ --turbo-elevation-none: none; /* shadow */
10
+ --turbo-elevation-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow */
11
+ --turbo-elevation-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); /* shadow */
12
+ --turbo-elevation-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow */
13
+ --turbo-elevation-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); /* shadow */
14
+ --turbo-animation-duration-fast: 150ms; /* duration */
15
+ --turbo-animation-duration-normal: 300ms; /* duration */
16
+ --turbo-animation-duration-slow: 500ms; /* duration */
17
+ --turbo-animation-easing-default: cubic-bezier(0.4, 0, 0.2, 1); /* cubicBezier */
18
+ --turbo-animation-easing-emphasized: cubic-bezier(0.05, 0.7, 0.1, 1); /* cubicBezier */
19
+ --turbo-opacity-disabled: 0.5; /* number */
20
+ --turbo-opacity-hover: 0.8; /* number */
21
+ --turbo-opacity-pressed: 0.6; /* number */
22
+ --turbo-bg-base: #ffffff; /* color */
23
+ --turbo-bg-surface: #f5f5f5; /* color */
24
+ --turbo-bg-overlay: #eeeeee; /* color */
25
+ --turbo-text-primary: #363636; /* color */
26
+ --turbo-text-secondary: #4a4a4a; /* color */
27
+ --turbo-text-inverse: #ffffff; /* color */
28
+ --turbo-brand-primary: #00d1b2; /* color */
29
+ --turbo-state-info: #3e8ed0; /* color */
30
+ --turbo-state-success: #48c78e; /* color */
31
+ --turbo-state-warning: #ffe08a; /* color */
32
+ --turbo-state-danger: #f14668; /* color */
33
+ --turbo-border-default: #dbdbdb; /* color */
34
+ --turbo-accent-link: #485fc7; /* color */
35
+ --turbo-font-sans: "Nunito Sans", BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; /* fontFamily */
36
+ --turbo-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* fontFamily */
37
+ --turbo-heading-h1: #00d1b2; /* color */
38
+ --turbo-heading-h2: #485fc7; /* color */
39
+ --turbo-heading-h3: #3e8ed0; /* color */
40
+ --turbo-heading-h4: #48c78e; /* color */
41
+ --turbo-heading-h5: #ffe08a; /* color */
42
+ --turbo-heading-h6: #f14668; /* color */
43
+ --turbo-body-primary: #4a4a4a; /* color */
44
+ --turbo-body-secondary: #6b6b6b; /* color */
45
+ --turbo-link-default: #485fc7; /* color */
46
+ --turbo-selection-fg: #363636; /* color */
47
+ --turbo-selection-bg: #b5d5ff; /* color */
48
+ --turbo-blockquote-border: #dbdbdb; /* color */
49
+ --turbo-blockquote-fg: #4a4a4a; /* color */
50
+ --turbo-blockquote-bg: #f5f5f5; /* color */
51
+ --turbo-code-inline-fg: #f14668; /* color */
52
+ --turbo-code-inline-bg: #f5f5f5; /* color */
53
+ --turbo-code-block-fg: #363636; /* color */
54
+ --turbo-code-block-bg: #f5f5f5; /* color */
55
+ --turbo-table-border: #dbdbdb; /* color */
56
+ --turbo-table-stripe: #fafafa; /* color */
57
+ --turbo-table-thead-bg: #f0f0f0; /* color */
58
+ --turbo-content-table-cell-bg: #ffffff; /* color */
59
+ --turbo-content-table-header-fg: #363636; /* color */
60
+ --turbo-components-card-bg: #ffffff; /* color */
61
+ --turbo-components-card-border: #d5d5d5; /* color */
62
+ --turbo-components-card-header-bg: #f5f5f5; /* color */
63
+ --turbo-components-card-footer-bg: #fafafa; /* color */
64
+ --turbo-components-message-bg: #f8f9fa; /* color */
65
+ --turbo-components-message-header-bg: #eef1f4; /* color */
66
+ --turbo-components-message-border: #d5dbe1; /* color */
67
+ --turbo-components-message-body-fg: #4a4a4a; /* color */
68
+ --turbo-components-panel-bg: #ffffff; /* color */
69
+ --turbo-components-panel-header-bg: #f0f0f0; /* color */
70
+ --turbo-components-panel-header-fg: #363636; /* color */
71
+ --turbo-components-panel-border: #d5d5d5; /* color */
72
+ --turbo-components-panel-block-bg: #fafafa; /* color */
73
+ --turbo-components-panel-block-hover-bg: #f5f5f5; /* color */
74
+ --turbo-components-panel-block-active-bg: #eef6fc; /* color */
75
+ --turbo-components-box-bg: #ffffff; /* color */
76
+ --turbo-components-box-border: #e0e0e0; /* color */
77
+ --turbo-components-notification-bg: #f5f5f5; /* color */
78
+ --turbo-components-notification-border: #e0e0e0; /* color */
79
+ --turbo-components-modal-bg: rgba(10, 10, 10, 0.86); /* color */
80
+ --turbo-components-modal-card-bg: #ffffff; /* color */
81
+ --turbo-components-modal-header-bg: #f5f5f5; /* color */
82
+ --turbo-components-modal-footer-bg: #fafafa; /* color */
83
+ --turbo-components-dropdown-bg: #ffffff; /* color */
84
+ --turbo-components-dropdown-item-hover-bg: #f5f5f5; /* color */
85
+ --turbo-components-dropdown-border: #dbdbdb; /* color */
86
+ --turbo-components-tabs-border: #dbdbdb; /* color */
87
+ --turbo-components-tabs-link-bg: #f5f5f5; /* color */
88
+ --turbo-components-tabs-link-active-bg: #ffffff; /* color */
89
+ --turbo-components-tabs-link-hover-bg: #eeeeee; /* color */
90
+ }
@@ -0,0 +1,58 @@
1
+ /* Generated from catppuccin-frappe.css */
2
+
3
+ [data-theme="catppuccin-frappe"] {
4
+ --turbo-spacing-xs: 0.25rem; /* dimension */
5
+ --turbo-spacing-sm: 0.5rem; /* dimension */
6
+ --turbo-spacing-md: 1rem; /* dimension */
7
+ --turbo-spacing-lg: 1.5rem; /* dimension */
8
+ --turbo-spacing-xl: 2rem; /* dimension */
9
+ --turbo-elevation-none: none; /* shadow */
10
+ --turbo-elevation-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow */
11
+ --turbo-elevation-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); /* shadow */
12
+ --turbo-elevation-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow */
13
+ --turbo-elevation-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); /* shadow */
14
+ --turbo-animation-duration-fast: 150ms; /* duration */
15
+ --turbo-animation-duration-normal: 300ms; /* duration */
16
+ --turbo-animation-duration-slow: 500ms; /* duration */
17
+ --turbo-animation-easing-default: cubic-bezier(0.4, 0, 0.2, 1); /* cubicBezier */
18
+ --turbo-animation-easing-emphasized: cubic-bezier(0.05, 0.7, 0.1, 1); /* cubicBezier */
19
+ --turbo-opacity-disabled: 0.5; /* number */
20
+ --turbo-opacity-hover: 0.8; /* number */
21
+ --turbo-opacity-pressed: 0.6; /* number */
22
+ --turbo-bg-base: #303446; /* color */
23
+ --turbo-bg-surface: #292c3c; /* color */
24
+ --turbo-bg-overlay: #232634; /* color */
25
+ --turbo-text-primary: #c6d0f5; /* color */
26
+ --turbo-text-secondary: #a5adce; /* color */
27
+ --turbo-text-inverse: #303446; /* color */
28
+ --turbo-brand-primary: #8caaee; /* color */
29
+ --turbo-state-info: #99d1db; /* color */
30
+ --turbo-state-success: #a6d189; /* color */
31
+ --turbo-state-warning: #e5c890; /* color */
32
+ --turbo-state-danger: #e78284; /* color */
33
+ --turbo-border-default: #737994; /* color */
34
+ --turbo-accent-link: #8caaee; /* color */
35
+ --turbo-font-sans: Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"; /* fontFamily */
36
+ --turbo-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* fontFamily */
37
+ --turbo-heading-h1: #a6d189; /* color */
38
+ --turbo-heading-h2: #8caaee; /* color */
39
+ --turbo-heading-h3: #85c1dc; /* color */
40
+ --turbo-heading-h4: #e5c890; /* color */
41
+ --turbo-heading-h5: #ca9ee6; /* color */
42
+ --turbo-heading-h6: #e78284; /* color */
43
+ --turbo-body-primary: #c6d0f5; /* color */
44
+ --turbo-body-secondary: #a5adce; /* color */
45
+ --turbo-link-default: #8caaee; /* color */
46
+ --turbo-selection-fg: #c6d0f5; /* color */
47
+ --turbo-selection-bg: #838ba7; /* color */
48
+ --turbo-blockquote-border: #838ba7; /* color */
49
+ --turbo-blockquote-fg: #c6d0f5; /* color */
50
+ --turbo-blockquote-bg: #292c3c; /* color */
51
+ --turbo-code-inline-fg: #c6d0f5; /* color */
52
+ --turbo-code-inline-bg: #414559; /* color */
53
+ --turbo-code-block-fg: #c6d0f5; /* color */
54
+ --turbo-code-block-bg: #414559; /* color */
55
+ --turbo-table-border: #838ba7; /* color */
56
+ --turbo-table-stripe: #414559; /* color */
57
+ --turbo-table-thead-bg: #51576d; /* color */
58
+ }
@@ -0,0 +1,58 @@
1
+ /* Generated from catppuccin-latte.css */
2
+
3
+ [data-theme="catppuccin-latte"] {
4
+ --turbo-spacing-xs: 0.25rem; /* dimension */
5
+ --turbo-spacing-sm: 0.5rem; /* dimension */
6
+ --turbo-spacing-md: 1rem; /* dimension */
7
+ --turbo-spacing-lg: 1.5rem; /* dimension */
8
+ --turbo-spacing-xl: 2rem; /* dimension */
9
+ --turbo-elevation-none: none; /* shadow */
10
+ --turbo-elevation-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow */
11
+ --turbo-elevation-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); /* shadow */
12
+ --turbo-elevation-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow */
13
+ --turbo-elevation-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); /* shadow */
14
+ --turbo-animation-duration-fast: 150ms; /* duration */
15
+ --turbo-animation-duration-normal: 300ms; /* duration */
16
+ --turbo-animation-duration-slow: 500ms; /* duration */
17
+ --turbo-animation-easing-default: cubic-bezier(0.4, 0, 0.2, 1); /* cubicBezier */
18
+ --turbo-animation-easing-emphasized: cubic-bezier(0.05, 0.7, 0.1, 1); /* cubicBezier */
19
+ --turbo-opacity-disabled: 0.5; /* number */
20
+ --turbo-opacity-hover: 0.8; /* number */
21
+ --turbo-opacity-pressed: 0.6; /* number */
22
+ --turbo-bg-base: #eff1f5; /* color */
23
+ --turbo-bg-surface: #e6e9ef; /* color */
24
+ --turbo-bg-overlay: #dce0e8; /* color */
25
+ --turbo-text-primary: #4c4f69; /* color */
26
+ --turbo-text-secondary: #6c6f85; /* color */
27
+ --turbo-text-inverse: #eff1f5; /* color */
28
+ --turbo-brand-primary: #1e66f5; /* color */
29
+ --turbo-state-info: #04a5e5; /* color */
30
+ --turbo-state-success: #40a02b; /* color */
31
+ --turbo-state-warning: #df8e1d; /* color */
32
+ --turbo-state-danger: #d20f39; /* color */
33
+ --turbo-border-default: #9ca0b0; /* color */
34
+ --turbo-accent-link: #1e66f5; /* color */
35
+ --turbo-font-sans: Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"; /* fontFamily */
36
+ --turbo-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* fontFamily */
37
+ --turbo-heading-h1: #40a02b; /* color */
38
+ --turbo-heading-h2: #1e66f5; /* color */
39
+ --turbo-heading-h3: #209fb5; /* color */
40
+ --turbo-heading-h4: #df8e1d; /* color */
41
+ --turbo-heading-h5: #8839ef; /* color */
42
+ --turbo-heading-h6: #d20f39; /* color */
43
+ --turbo-body-primary: #4c4f69; /* color */
44
+ --turbo-body-secondary: #6c6f85; /* color */
45
+ --turbo-link-default: #1e66f5; /* color */
46
+ --turbo-selection-fg: #4c4f69; /* color */
47
+ --turbo-selection-bg: #8c8fa1; /* color */
48
+ --turbo-blockquote-border: #8c8fa1; /* color */
49
+ --turbo-blockquote-fg: #4c4f69; /* color */
50
+ --turbo-blockquote-bg: #e6e9ef; /* color */
51
+ --turbo-code-inline-fg: #4c4f69; /* color */
52
+ --turbo-code-inline-bg: #ccd0da; /* color */
53
+ --turbo-code-block-fg: #4c4f69; /* color */
54
+ --turbo-code-block-bg: #ccd0da; /* color */
55
+ --turbo-table-border: #8c8fa1; /* color */
56
+ --turbo-table-stripe: #ccd0da; /* color */
57
+ --turbo-table-thead-bg: #bcc0cc; /* color */
58
+ }
@@ -0,0 +1,58 @@
1
+ /* Generated from catppuccin-macchiato.css */
2
+
3
+ [data-theme="catppuccin-macchiato"] {
4
+ --turbo-spacing-xs: 0.25rem; /* dimension */
5
+ --turbo-spacing-sm: 0.5rem; /* dimension */
6
+ --turbo-spacing-md: 1rem; /* dimension */
7
+ --turbo-spacing-lg: 1.5rem; /* dimension */
8
+ --turbo-spacing-xl: 2rem; /* dimension */
9
+ --turbo-elevation-none: none; /* shadow */
10
+ --turbo-elevation-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); /* shadow */
11
+ --turbo-elevation-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); /* shadow */
12
+ --turbo-elevation-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); /* shadow */
13
+ --turbo-elevation-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); /* shadow */
14
+ --turbo-animation-duration-fast: 150ms; /* duration */
15
+ --turbo-animation-duration-normal: 300ms; /* duration */
16
+ --turbo-animation-duration-slow: 500ms; /* duration */
17
+ --turbo-animation-easing-default: cubic-bezier(0.4, 0, 0.2, 1); /* cubicBezier */
18
+ --turbo-animation-easing-emphasized: cubic-bezier(0.05, 0.7, 0.1, 1); /* cubicBezier */
19
+ --turbo-opacity-disabled: 0.5; /* number */
20
+ --turbo-opacity-hover: 0.8; /* number */
21
+ --turbo-opacity-pressed: 0.6; /* number */
22
+ --turbo-bg-base: #24273a; /* color */
23
+ --turbo-bg-surface: #1e2030; /* color */
24
+ --turbo-bg-overlay: #181926; /* color */
25
+ --turbo-text-primary: #cad3f5; /* color */
26
+ --turbo-text-secondary: #a5adcb; /* color */
27
+ --turbo-text-inverse: #24273a; /* color */
28
+ --turbo-brand-primary: #8aadf4; /* color */
29
+ --turbo-state-info: #91d7e3; /* color */
30
+ --turbo-state-success: #a6da95; /* color */
31
+ --turbo-state-warning: #eed49f; /* color */
32
+ --turbo-state-danger: #ed8796; /* color */
33
+ --turbo-border-default: #6e738d; /* color */
34
+ --turbo-accent-link: #8aadf4; /* color */
35
+ --turbo-font-sans: Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"; /* fontFamily */
36
+ --turbo-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* fontFamily */
37
+ --turbo-heading-h1: #a6da95; /* color */
38
+ --turbo-heading-h2: #8aadf4; /* color */
39
+ --turbo-heading-h3: #7dc4e4; /* color */
40
+ --turbo-heading-h4: #eed49f; /* color */
41
+ --turbo-heading-h5: #c6a0f6; /* color */
42
+ --turbo-heading-h6: #ed8796; /* color */
43
+ --turbo-body-primary: #cad3f5; /* color */
44
+ --turbo-body-secondary: #a5adcb; /* color */
45
+ --turbo-link-default: #8aadf4; /* color */
46
+ --turbo-selection-fg: #cad3f5; /* color */
47
+ --turbo-selection-bg: #8087a2; /* color */
48
+ --turbo-blockquote-border: #8087a2; /* color */
49
+ --turbo-blockquote-fg: #cad3f5; /* color */
50
+ --turbo-blockquote-bg: #1e2030; /* color */
51
+ --turbo-code-inline-fg: #cad3f5; /* color */
52
+ --turbo-code-inline-bg: #363a4f; /* color */
53
+ --turbo-code-block-fg: #cad3f5; /* color */
54
+ --turbo-code-block-bg: #363a4f; /* color */
55
+ --turbo-table-border: #8087a2; /* color */
56
+ --turbo-table-stripe: #363a4f; /* color */
57
+ --turbo-table-thead-bg: #494d64; /* color */
58
+ }