@octaviaflow/fonts 1.0.0

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 (48) hide show
  1. package/README.md +189 -0
  2. package/css/octaviaflow-fonts.css +296 -0
  3. package/css/octaviaflow-fonts.min.css +1 -0
  4. package/fonts/jetbrains-mono/JetBrainsMono-Bold.woff2 +0 -0
  5. package/fonts/jetbrains-mono/JetBrainsMono-BoldItalic.woff2 +0 -0
  6. package/fonts/jetbrains-mono/JetBrainsMono-ExtraBold.woff2 +0 -0
  7. package/fonts/jetbrains-mono/JetBrainsMono-ExtraBoldItalic.woff2 +0 -0
  8. package/fonts/jetbrains-mono/JetBrainsMono-ExtraLight.woff2 +0 -0
  9. package/fonts/jetbrains-mono/JetBrainsMono-ExtraLightItalic.woff2 +0 -0
  10. package/fonts/jetbrains-mono/JetBrainsMono-Italic.woff2 +0 -0
  11. package/fonts/jetbrains-mono/JetBrainsMono-Light.woff2 +0 -0
  12. package/fonts/jetbrains-mono/JetBrainsMono-LightItalic.woff2 +0 -0
  13. package/fonts/jetbrains-mono/JetBrainsMono-Medium.woff2 +0 -0
  14. package/fonts/jetbrains-mono/JetBrainsMono-MediumItalic.woff2 +0 -0
  15. package/fonts/jetbrains-mono/JetBrainsMono-Regular.woff2 +0 -0
  16. package/fonts/jetbrains-mono/JetBrainsMono-SemiBold.woff2 +0 -0
  17. package/fonts/jetbrains-mono/JetBrainsMono-SemiBoldItalic.woff2 +0 -0
  18. package/fonts/jetbrains-mono/JetBrainsMono-Thin.woff2 +0 -0
  19. package/fonts/jetbrains-mono/JetBrainsMono-ThinItalic.woff2 +0 -0
  20. package/fonts/lufga/LufgaBlack.woff +0 -0
  21. package/fonts/lufga/LufgaBlackItalic.woff +0 -0
  22. package/fonts/lufga/LufgaBold.woff +0 -0
  23. package/fonts/lufga/LufgaBoldItalic.woff +0 -0
  24. package/fonts/lufga/LufgaExtraBold.woff +0 -0
  25. package/fonts/lufga/LufgaExtraBoldItalic.woff +0 -0
  26. package/fonts/lufga/LufgaExtraLight.woff +0 -0
  27. package/fonts/lufga/LufgaExtraLightItalic.woff +0 -0
  28. package/fonts/lufga/LufgaItalic.woff +0 -0
  29. package/fonts/lufga/LufgaLight.woff +0 -0
  30. package/fonts/lufga/LufgaLightItalic.woff +0 -0
  31. package/fonts/lufga/LufgaMedium.woff +0 -0
  32. package/fonts/lufga/LufgaMediumItalic.woff +0 -0
  33. package/fonts/lufga/LufgaRegular.woff +0 -0
  34. package/fonts/lufga/LufgaSemiBold.woff +0 -0
  35. package/fonts/lufga/LufgaSemiBoldItalic.woff +0 -0
  36. package/fonts/lufga/LufgaThin.woff +0 -0
  37. package/fonts/lufga/LufgaThinItalic.woff +0 -0
  38. package/fonts/rtl-united-text/RTLUnitedTextBold.ttf +0 -0
  39. package/fonts/rtl-united-text/RTLUnitedTextBoldItalic.ttf +0 -0
  40. package/fonts/rtl-united-text/RTLUnitedTextLight.ttf +0 -0
  41. package/fonts/rtl-united-text/RTLUnitedTextLightItalic.ttf +0 -0
  42. package/fonts/rtl-united-text/RTLUnitedTextRegular.ttf +0 -0
  43. package/fonts/rtl-united-text/RTLUnitedTextRegularItalic.ttf +0 -0
  44. package/package.json +47 -0
  45. package/scss/_jetbrains-mono.scss +142 -0
  46. package/scss/_lufga.scss +159 -0
  47. package/scss/_rtl-united-text.scss +57 -0
  48. package/scss/octaviaflow-fonts.scss +8 -0
package/README.md ADDED
@@ -0,0 +1,189 @@
1
+ # @octaviaflow/fonts
2
+
3
+ > Octaviaflow Design System typeface family
4
+
5
+ ## Overview
6
+
7
+ The `@octaviaflow/fonts` package provides the Octaviaflow Design System typeface family, including:
8
+
9
+ - **Lufga** - Modern geometric sans-serif (18 styles: Thin to Black, with italics)
10
+ - **RTL United Text** - Right-to-left language support (6 styles: Light to Bold, with italics)
11
+ - **JetBrains Mono** - Monospace font for code (16 styles: Thin to Extra Bold, with italics)
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @octaviaflow/fonts
17
+ ```
18
+
19
+ Or with Bun:
20
+
21
+ ```bash
22
+ bun add @octaviaflow/fonts
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ### CSS Import (Recommended)
28
+
29
+ Import the compiled CSS file in your application:
30
+
31
+ ```css
32
+ @import '@octaviaflow/fonts/css/octaviaflow-fonts.css';
33
+ ```
34
+
35
+ Or use the minified version:
36
+
37
+ ```css
38
+ @import '@octaviaflow/fonts/css/octaviaflow-fonts.min.css';
39
+ ```
40
+
41
+ ### SCSS Import
42
+
43
+ For more control, import the SCSS files:
44
+
45
+ ```scss
46
+ // Import all fonts
47
+ @import '@octaviaflow/fonts/scss/octaviaflow-fonts';
48
+
49
+ // Or import individually
50
+ @import '@octaviaflow/fonts/scss/lufga';
51
+ @import '@octaviaflow/fonts/scss/rtl-united-text';
52
+ @import '@octaviaflow/fonts/scss/jetbrains-mono';
53
+ ```
54
+
55
+ ### Custom Font Path
56
+
57
+ If you need to customize the font file path:
58
+
59
+ ```scss
60
+ $font-prefix: './custom/path/to/fonts';
61
+ @import '@octaviaflow/fonts/scss/octaviaflow-fonts';
62
+ ```
63
+
64
+ ### Font Family Usage
65
+
66
+ Once imported, use the fonts in your CSS:
67
+
68
+ ```css
69
+ /* Lufga - Primary typeface */
70
+ body {
71
+ font-family: 'Lufga', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
72
+ }
73
+
74
+ /* RTL United Text - For RTL languages */
75
+ [dir='rtl'] {
76
+ font-family: 'RTL United Text', 'Lufga', sans-serif;
77
+ }
78
+
79
+ /* JetBrains Mono - For code */
80
+ code, pre, .code {
81
+ font-family: 'JetBrains Mono', 'Menlo', 'Monaco', 'Courier New', monospace;
82
+ }
83
+ ```
84
+
85
+ ## Font Weights
86
+
87
+ ### Lufga
88
+ - **100** - Thin
89
+ - **200** - Extra Light
90
+ - **300** - Light
91
+ - **400** - Regular (default)
92
+ - **500** - Medium
93
+ - **600** - Semi Bold
94
+ - **700** - Bold
95
+ - **800** - Extra Bold
96
+ - **900** - Black
97
+
98
+ All weights include italic variants.
99
+
100
+ ### RTL United Text
101
+ - **300** - Light
102
+ - **400** - Regular (default)
103
+ - **700** - Bold
104
+
105
+ All weights include italic variants.
106
+
107
+ ### JetBrains Mono
108
+ - **100** - Thin
109
+ - **200** - Extra Light
110
+ - **300** - Light
111
+ - **400** - Regular (default)
112
+ - **500** - Medium
113
+ - **600** - Semi Bold
114
+ - **700** - Bold
115
+ - **800** - Extra Bold
116
+
117
+ All weights include italic variants.
118
+
119
+ ## Storybook Integration
120
+
121
+ To use Octaviaflow fonts globally in Storybook, add to `.storybook/preview-head.html`:
122
+
123
+ ```html
124
+ <link rel="stylesheet" href="../node_modules/@octaviaflow/fonts/css/octaviaflow-fonts.css">
125
+ ```
126
+
127
+ Or import in `.storybook/preview.js`:
128
+
129
+ ```javascript
130
+ import '@octaviaflow/fonts/css/octaviaflow-fonts.css';
131
+ ```
132
+
133
+ ## Next.js Integration
134
+
135
+ In your `_app.tsx` or `layout.tsx`:
136
+
137
+ ```tsx
138
+ import '@octaviaflow/fonts/css/octaviaflow-fonts.css';
139
+
140
+ export default function App({ Component, pageProps }) {
141
+ return <Component {...pageProps} />;
142
+ }
143
+ ```
144
+
145
+ ## React Integration
146
+
147
+ In your main entry file (e.g., `index.tsx`):
148
+
149
+ ```tsx
150
+ import '@octaviaflow/fonts/css/octaviaflow-fonts.css';
151
+ import ReactDOM from 'react-dom/client';
152
+ import App from './App';
153
+
154
+ ReactDOM.createRoot(document.getElementById('root')!).render(<App />);
155
+ ```
156
+
157
+ ## File Structure
158
+
159
+ ```
160
+ @octaviaflow/fonts/
161
+ ├── css/
162
+ │ ├── octaviaflow-fonts.css
163
+ │ └── octaviaflow-fonts.min.css
164
+ ├── scss/
165
+ │ ├── _lufga.scss
166
+ │ ├── _rtl-united-text.scss
167
+ │ └── octaviaflow-fonts.scss
168
+ ├── fonts/
169
+ │ ├── lufga/
170
+ │ │ └── *.woff
171
+ │ └── rtl-united-text/
172
+ │ └── *.ttf
173
+ └── package.json
174
+ ```
175
+
176
+ ## Performance Tips
177
+
178
+ 1. **Use CSS import** - Precompiled CSS is faster than SCSS compilation
179
+ 2. **Minified version** - Use `.min.css` in production
180
+ 3. **Subset fonts** - Only import the fonts you need (Lufga, RTL United Text, or JetBrains Mono)
181
+ 4. **font-display: swap** - All fonts use `font-display: swap` for better performance
182
+
183
+ ## License
184
+
185
+ Apache-2.0
186
+
187
+ ## Support
188
+
189
+ For issues and questions, visit: https://github.com/octaviaflow-design-system/issues
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Copyright Octaviaflow 2026
3
+ * Main entry point for Octaviaflow fonts
4
+ */
5
+ /**
6
+ * Copyright Octaviaflow 2026
7
+ * Lufga typeface
8
+ */
9
+ @font-face {
10
+ font-family: "Lufga";
11
+ font-style: normal;
12
+ font-weight: 100;
13
+ font-display: swap;
14
+ src: url("../fonts/lufga/LufgaThin.woff") format("woff");
15
+ }
16
+ @font-face {
17
+ font-family: "Lufga";
18
+ font-style: italic;
19
+ font-weight: 100;
20
+ font-display: swap;
21
+ src: url("../fonts/lufga/LufgaThinItalic.woff") format("woff");
22
+ }
23
+ @font-face {
24
+ font-family: "Lufga";
25
+ font-style: normal;
26
+ font-weight: 200;
27
+ font-display: swap;
28
+ src: url("../fonts/lufga/LufgaExtraLight.woff") format("woff");
29
+ }
30
+ @font-face {
31
+ font-family: "Lufga";
32
+ font-style: italic;
33
+ font-weight: 200;
34
+ font-display: swap;
35
+ src: url("../fonts/lufga/LufgaExtraLightItalic.woff") format("woff");
36
+ }
37
+ @font-face {
38
+ font-family: "Lufga";
39
+ font-style: normal;
40
+ font-weight: 300;
41
+ font-display: swap;
42
+ src: url("../fonts/lufga/LufgaLight.woff") format("woff");
43
+ }
44
+ @font-face {
45
+ font-family: "Lufga";
46
+ font-style: italic;
47
+ font-weight: 300;
48
+ font-display: swap;
49
+ src: url("../fonts/lufga/LufgaLightItalic.woff") format("woff");
50
+ }
51
+ @font-face {
52
+ font-family: "Lufga";
53
+ font-style: normal;
54
+ font-weight: 400;
55
+ font-display: swap;
56
+ src: url("../fonts/lufga/LufgaRegular.woff") format("woff");
57
+ }
58
+ @font-face {
59
+ font-family: "Lufga";
60
+ font-style: italic;
61
+ font-weight: 400;
62
+ font-display: swap;
63
+ src: url("../fonts/lufga/LufgaItalic.woff") format("woff");
64
+ }
65
+ @font-face {
66
+ font-family: "Lufga";
67
+ font-style: normal;
68
+ font-weight: 500;
69
+ font-display: swap;
70
+ src: url("../fonts/lufga/LufgaMedium.woff") format("woff");
71
+ }
72
+ @font-face {
73
+ font-family: "Lufga";
74
+ font-style: italic;
75
+ font-weight: 500;
76
+ font-display: swap;
77
+ src: url("../fonts/lufga/LufgaMediumItalic.woff") format("woff");
78
+ }
79
+ @font-face {
80
+ font-family: "Lufga";
81
+ font-style: normal;
82
+ font-weight: 600;
83
+ font-display: swap;
84
+ src: url("../fonts/lufga/LufgaSemiBold.woff") format("woff");
85
+ }
86
+ @font-face {
87
+ font-family: "Lufga";
88
+ font-style: italic;
89
+ font-weight: 600;
90
+ font-display: swap;
91
+ src: url("../fonts/lufga/LufgaSemiBoldItalic.woff") format("woff");
92
+ }
93
+ @font-face {
94
+ font-family: "Lufga";
95
+ font-style: normal;
96
+ font-weight: 700;
97
+ font-display: swap;
98
+ src: url("../fonts/lufga/LufgaBold.woff") format("woff");
99
+ }
100
+ @font-face {
101
+ font-family: "Lufga";
102
+ font-style: italic;
103
+ font-weight: 700;
104
+ font-display: swap;
105
+ src: url("../fonts/lufga/LufgaBoldItalic.woff") format("woff");
106
+ }
107
+ @font-face {
108
+ font-family: "Lufga";
109
+ font-style: normal;
110
+ font-weight: 800;
111
+ font-display: swap;
112
+ src: url("../fonts/lufga/LufgaExtraBold.woff") format("woff");
113
+ }
114
+ @font-face {
115
+ font-family: "Lufga";
116
+ font-style: italic;
117
+ font-weight: 800;
118
+ font-display: swap;
119
+ src: url("../fonts/lufga/LufgaExtraBoldItalic.woff") format("woff");
120
+ }
121
+ @font-face {
122
+ font-family: "Lufga";
123
+ font-style: normal;
124
+ font-weight: 900;
125
+ font-display: swap;
126
+ src: url("../fonts/lufga/LufgaBlack.woff") format("woff");
127
+ }
128
+ @font-face {
129
+ font-family: "Lufga";
130
+ font-style: italic;
131
+ font-weight: 900;
132
+ font-display: swap;
133
+ src: url("../fonts/lufga/LufgaBlackItalic.woff") format("woff");
134
+ }
135
+ /**
136
+ * Copyright Octaviaflow 2026
137
+ * RTL United Text typeface
138
+ */
139
+ @font-face {
140
+ font-family: "RTL United Text";
141
+ font-style: normal;
142
+ font-weight: 300;
143
+ font-display: swap;
144
+ src: url("../fonts/rtl-united-text/RTLUnitedTextLight.ttf") format("truetype");
145
+ }
146
+ @font-face {
147
+ font-family: "RTL United Text";
148
+ font-style: italic;
149
+ font-weight: 300;
150
+ font-display: swap;
151
+ src: url("../fonts/rtl-united-text/RTLUnitedTextLightItalic.ttf") format("truetype");
152
+ }
153
+ @font-face {
154
+ font-family: "RTL United Text";
155
+ font-style: normal;
156
+ font-weight: 400;
157
+ font-display: swap;
158
+ src: url("../fonts/rtl-united-text/RTLUnitedTextRegular.ttf") format("truetype");
159
+ }
160
+ @font-face {
161
+ font-family: "RTL United Text";
162
+ font-style: italic;
163
+ font-weight: 400;
164
+ font-display: swap;
165
+ src: url("../fonts/rtl-united-text/RTLUnitedTextRegularItalic.ttf") format("truetype");
166
+ }
167
+ @font-face {
168
+ font-family: "RTL United Text";
169
+ font-style: normal;
170
+ font-weight: 700;
171
+ font-display: swap;
172
+ src: url("../fonts/rtl-united-text/RTLUnitedTextBold.ttf") format("truetype");
173
+ }
174
+ @font-face {
175
+ font-family: "RTL United Text";
176
+ font-style: italic;
177
+ font-weight: 700;
178
+ font-display: swap;
179
+ src: url("../fonts/rtl-united-text/RTLUnitedTextBoldItalic.ttf") format("truetype");
180
+ }
181
+ /**
182
+ * Copyright Octaviaflow 2026
183
+ * JetBrains Mono - Monospace typeface for code
184
+ */
185
+ @font-face {
186
+ font-family: "JetBrains Mono";
187
+ font-style: normal;
188
+ font-weight: 100;
189
+ font-display: swap;
190
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-Thin.woff2") format("woff2");
191
+ }
192
+ @font-face {
193
+ font-family: "JetBrains Mono";
194
+ font-style: italic;
195
+ font-weight: 100;
196
+ font-display: swap;
197
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-ThinItalic.woff2") format("woff2");
198
+ }
199
+ @font-face {
200
+ font-family: "JetBrains Mono";
201
+ font-style: normal;
202
+ font-weight: 200;
203
+ font-display: swap;
204
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-ExtraLight.woff2") format("woff2");
205
+ }
206
+ @font-face {
207
+ font-family: "JetBrains Mono";
208
+ font-style: italic;
209
+ font-weight: 200;
210
+ font-display: swap;
211
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-ExtraLightItalic.woff2") format("woff2");
212
+ }
213
+ @font-face {
214
+ font-family: "JetBrains Mono";
215
+ font-style: normal;
216
+ font-weight: 300;
217
+ font-display: swap;
218
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-Light.woff2") format("woff2");
219
+ }
220
+ @font-face {
221
+ font-family: "JetBrains Mono";
222
+ font-style: italic;
223
+ font-weight: 300;
224
+ font-display: swap;
225
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-LightItalic.woff2") format("woff2");
226
+ }
227
+ @font-face {
228
+ font-family: "JetBrains Mono";
229
+ font-style: normal;
230
+ font-weight: 400;
231
+ font-display: swap;
232
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-Regular.woff2") format("woff2");
233
+ }
234
+ @font-face {
235
+ font-family: "JetBrains Mono";
236
+ font-style: italic;
237
+ font-weight: 400;
238
+ font-display: swap;
239
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-Italic.woff2") format("woff2");
240
+ }
241
+ @font-face {
242
+ font-family: "JetBrains Mono";
243
+ font-style: normal;
244
+ font-weight: 500;
245
+ font-display: swap;
246
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-Medium.woff2") format("woff2");
247
+ }
248
+ @font-face {
249
+ font-family: "JetBrains Mono";
250
+ font-style: italic;
251
+ font-weight: 500;
252
+ font-display: swap;
253
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-MediumItalic.woff2") format("woff2");
254
+ }
255
+ @font-face {
256
+ font-family: "JetBrains Mono";
257
+ font-style: normal;
258
+ font-weight: 600;
259
+ font-display: swap;
260
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-SemiBold.woff2") format("woff2");
261
+ }
262
+ @font-face {
263
+ font-family: "JetBrains Mono";
264
+ font-style: italic;
265
+ font-weight: 600;
266
+ font-display: swap;
267
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-SemiBoldItalic.woff2") format("woff2");
268
+ }
269
+ @font-face {
270
+ font-family: "JetBrains Mono";
271
+ font-style: normal;
272
+ font-weight: 700;
273
+ font-display: swap;
274
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-Bold.woff2") format("woff2");
275
+ }
276
+ @font-face {
277
+ font-family: "JetBrains Mono";
278
+ font-style: italic;
279
+ font-weight: 700;
280
+ font-display: swap;
281
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-BoldItalic.woff2") format("woff2");
282
+ }
283
+ @font-face {
284
+ font-family: "JetBrains Mono";
285
+ font-style: normal;
286
+ font-weight: 800;
287
+ font-display: swap;
288
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-ExtraBold.woff2") format("woff2");
289
+ }
290
+ @font-face {
291
+ font-family: "JetBrains Mono";
292
+ font-style: italic;
293
+ font-weight: 800;
294
+ font-display: swap;
295
+ src: url("../fonts/jetbrains-mono/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2");
296
+ }
@@ -0,0 +1 @@
1
+ @font-face{font-family:"Lufga";font-style:normal;font-weight:100;font-display:swap;src:url("../fonts/lufga/LufgaThin.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:100;font-display:swap;src:url("../fonts/lufga/LufgaThinItalic.woff") format("woff")}@font-face{font-family:"Lufga";font-style:normal;font-weight:200;font-display:swap;src:url("../fonts/lufga/LufgaExtraLight.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:200;font-display:swap;src:url("../fonts/lufga/LufgaExtraLightItalic.woff") format("woff")}@font-face{font-family:"Lufga";font-style:normal;font-weight:300;font-display:swap;src:url("../fonts/lufga/LufgaLight.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:300;font-display:swap;src:url("../fonts/lufga/LufgaLightItalic.woff") format("woff")}@font-face{font-family:"Lufga";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/lufga/LufgaRegular.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:400;font-display:swap;src:url("../fonts/lufga/LufgaItalic.woff") format("woff")}@font-face{font-family:"Lufga";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/lufga/LufgaMedium.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:500;font-display:swap;src:url("../fonts/lufga/LufgaMediumItalic.woff") format("woff")}@font-face{font-family:"Lufga";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/lufga/LufgaSemiBold.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:600;font-display:swap;src:url("../fonts/lufga/LufgaSemiBoldItalic.woff") format("woff")}@font-face{font-family:"Lufga";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/lufga/LufgaBold.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:700;font-display:swap;src:url("../fonts/lufga/LufgaBoldItalic.woff") format("woff")}@font-face{font-family:"Lufga";font-style:normal;font-weight:800;font-display:swap;src:url("../fonts/lufga/LufgaExtraBold.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:800;font-display:swap;src:url("../fonts/lufga/LufgaExtraBoldItalic.woff") format("woff")}@font-face{font-family:"Lufga";font-style:normal;font-weight:900;font-display:swap;src:url("../fonts/lufga/LufgaBlack.woff") format("woff")}@font-face{font-family:"Lufga";font-style:italic;font-weight:900;font-display:swap;src:url("../fonts/lufga/LufgaBlackItalic.woff") format("woff")}@font-face{font-family:"RTL United Text";font-style:normal;font-weight:300;font-display:swap;src:url("../fonts/rtl-united-text/RTLUnitedTextLight.ttf") format("truetype")}@font-face{font-family:"RTL United Text";font-style:italic;font-weight:300;font-display:swap;src:url("../fonts/rtl-united-text/RTLUnitedTextLightItalic.ttf") format("truetype")}@font-face{font-family:"RTL United Text";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/rtl-united-text/RTLUnitedTextRegular.ttf") format("truetype")}@font-face{font-family:"RTL United Text";font-style:italic;font-weight:400;font-display:swap;src:url("../fonts/rtl-united-text/RTLUnitedTextRegularItalic.ttf") format("truetype")}@font-face{font-family:"RTL United Text";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/rtl-united-text/RTLUnitedTextBold.ttf") format("truetype")}@font-face{font-family:"RTL United Text";font-style:italic;font-weight:700;font-display:swap;src:url("../fonts/rtl-united-text/RTLUnitedTextBoldItalic.ttf") format("truetype")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:100;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-Thin.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:100;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-ThinItalic.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:200;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-ExtraLight.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:200;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-ExtraLightItalic.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:300;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-Light.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:300;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-LightItalic.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-Regular.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:400;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-Italic.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-Medium.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:500;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-MediumItalic.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-SemiBold.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:600;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-SemiBoldItalic.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-Bold.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:700;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-BoldItalic.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:800;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-ExtraBold.woff2") format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:italic;font-weight:800;font-display:swap;src:url("../fonts/jetbrains-mono/JetBrainsMono-ExtraBoldItalic.woff2") format("woff2")}
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@octaviaflow/fonts",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "Octaviaflow Design System typeface family - Lufga, RTL United Text, and JetBrains Mono",
6
+ "license": "Apache-2.0",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/octaviaflow-design-system.git",
10
+ "directory": "packages/fonts"
11
+ },
12
+ "bugs": "https://github.com/octaviaflow-design-system/issues",
13
+ "keywords": [
14
+ "octaviaflow",
15
+ "fonts",
16
+ "typeface",
17
+ "lufga",
18
+ "rtl-united-text",
19
+ "jetbrains-mono",
20
+ "monospace",
21
+ "design-system"
22
+ ],
23
+ "files": [
24
+ "css",
25
+ "scss",
26
+ "fonts/lufga/**/*.woff",
27
+ "fonts/lufga/**/*.woff2",
28
+ "fonts/rtl-united-text/**/*.ttf",
29
+ "fonts/rtl-united-text/**/*.woff",
30
+ "fonts/rtl-united-text/**/*.woff2",
31
+ "fonts/jetbrains-mono/**/*.woff2"
32
+ ],
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "scripts": {
37
+ "clean": "rimraf css",
38
+ "build": "bun run clean && node tasks/build-css.js"
39
+ },
40
+ "devDependencies": {
41
+ "rimraf": "^6.0.1",
42
+ "sass": "^1.97.3"
43
+ },
44
+ "dependencies": {
45
+ "sass": "1.97.3"
46
+ }
47
+ }
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Copyright Octaviaflow 2026
3
+ * JetBrains Mono - Monospace typeface for code
4
+ */
5
+
6
+ $font-prefix: '../fonts' !default;
7
+
8
+ // JetBrains Mono Thin
9
+ @font-face {
10
+ font-family: 'JetBrains Mono';
11
+ font-style: normal;
12
+ font-weight: 100;
13
+ font-display: swap;
14
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-Thin.woff2') format('woff2');
15
+ }
16
+
17
+ @font-face {
18
+ font-family: 'JetBrains Mono';
19
+ font-style: italic;
20
+ font-weight: 100;
21
+ font-display: swap;
22
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-ThinItalic.woff2') format('woff2');
23
+ }
24
+
25
+ // JetBrains Mono Extra Light
26
+ @font-face {
27
+ font-family: 'JetBrains Mono';
28
+ font-style: normal;
29
+ font-weight: 200;
30
+ font-display: swap;
31
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-ExtraLight.woff2') format('woff2');
32
+ }
33
+
34
+ @font-face {
35
+ font-family: 'JetBrains Mono';
36
+ font-style: italic;
37
+ font-weight: 200;
38
+ font-display: swap;
39
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-ExtraLightItalic.woff2') format('woff2');
40
+ }
41
+
42
+ // JetBrains Mono Light
43
+ @font-face {
44
+ font-family: 'JetBrains Mono';
45
+ font-style: normal;
46
+ font-weight: 300;
47
+ font-display: swap;
48
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-Light.woff2') format('woff2');
49
+ }
50
+
51
+ @font-face {
52
+ font-family: 'JetBrains Mono';
53
+ font-style: italic;
54
+ font-weight: 300;
55
+ font-display: swap;
56
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-LightItalic.woff2') format('woff2');
57
+ }
58
+
59
+ // JetBrains Mono Regular
60
+ @font-face {
61
+ font-family: 'JetBrains Mono';
62
+ font-style: normal;
63
+ font-weight: 400;
64
+ font-display: swap;
65
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-Regular.woff2') format('woff2');
66
+ }
67
+
68
+ @font-face {
69
+ font-family: 'JetBrains Mono';
70
+ font-style: italic;
71
+ font-weight: 400;
72
+ font-display: swap;
73
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-Italic.woff2') format('woff2');
74
+ }
75
+
76
+ // JetBrains Mono Medium
77
+ @font-face {
78
+ font-family: 'JetBrains Mono';
79
+ font-style: normal;
80
+ font-weight: 500;
81
+ font-display: swap;
82
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-Medium.woff2') format('woff2');
83
+ }
84
+
85
+ @font-face {
86
+ font-family: 'JetBrains Mono';
87
+ font-style: italic;
88
+ font-weight: 500;
89
+ font-display: swap;
90
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-MediumItalic.woff2') format('woff2');
91
+ }
92
+
93
+ // JetBrains Mono Semi Bold
94
+ @font-face {
95
+ font-family: 'JetBrains Mono';
96
+ font-style: normal;
97
+ font-weight: 600;
98
+ font-display: swap;
99
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-SemiBold.woff2') format('woff2');
100
+ }
101
+
102
+ @font-face {
103
+ font-family: 'JetBrains Mono';
104
+ font-style: italic;
105
+ font-weight: 600;
106
+ font-display: swap;
107
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-SemiBoldItalic.woff2') format('woff2');
108
+ }
109
+
110
+ // JetBrains Mono Bold
111
+ @font-face {
112
+ font-family: 'JetBrains Mono';
113
+ font-style: normal;
114
+ font-weight: 700;
115
+ font-display: swap;
116
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-Bold.woff2') format('woff2');
117
+ }
118
+
119
+ @font-face {
120
+ font-family: 'JetBrains Mono';
121
+ font-style: italic;
122
+ font-weight: 700;
123
+ font-display: swap;
124
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-BoldItalic.woff2') format('woff2');
125
+ }
126
+
127
+ // JetBrains Mono Extra Bold
128
+ @font-face {
129
+ font-family: 'JetBrains Mono';
130
+ font-style: normal;
131
+ font-weight: 800;
132
+ font-display: swap;
133
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-ExtraBold.woff2') format('woff2');
134
+ }
135
+
136
+ @font-face {
137
+ font-family: 'JetBrains Mono';
138
+ font-style: italic;
139
+ font-weight: 800;
140
+ font-display: swap;
141
+ src: url('#{$font-prefix}/jetbrains-mono/JetBrainsMono-ExtraBoldItalic.woff2') format('woff2');
142
+ }
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Copyright Octaviaflow 2026
3
+ * Lufga typeface
4
+ */
5
+
6
+ $font-prefix: '../fonts' !default;
7
+
8
+ // Lufga Thin
9
+ @font-face {
10
+ font-family: 'Lufga';
11
+ font-style: normal;
12
+ font-weight: 100;
13
+ font-display: swap;
14
+ src: url('#{$font-prefix}/lufga/LufgaThin.woff') format('woff');
15
+ }
16
+
17
+ @font-face {
18
+ font-family: 'Lufga';
19
+ font-style: italic;
20
+ font-weight: 100;
21
+ font-display: swap;
22
+ src: url('#{$font-prefix}/lufga/LufgaThinItalic.woff') format('woff');
23
+ }
24
+
25
+ // Lufga Extra Light
26
+ @font-face {
27
+ font-family: 'Lufga';
28
+ font-style: normal;
29
+ font-weight: 200;
30
+ font-display: swap;
31
+ src: url('#{$font-prefix}/lufga/LufgaExtraLight.woff') format('woff');
32
+ }
33
+
34
+ @font-face {
35
+ font-family: 'Lufga';
36
+ font-style: italic;
37
+ font-weight: 200;
38
+ font-display: swap;
39
+ src: url('#{$font-prefix}/lufga/LufgaExtraLightItalic.woff') format('woff');
40
+ }
41
+
42
+ // Lufga Light
43
+ @font-face {
44
+ font-family: 'Lufga';
45
+ font-style: normal;
46
+ font-weight: 300;
47
+ font-display: swap;
48
+ src: url('#{$font-prefix}/lufga/LufgaLight.woff') format('woff');
49
+ }
50
+
51
+ @font-face {
52
+ font-family: 'Lufga';
53
+ font-style: italic;
54
+ font-weight: 300;
55
+ font-display: swap;
56
+ src: url('#{$font-prefix}/lufga/LufgaLightItalic.woff') format('woff');
57
+ }
58
+
59
+ // Lufga Regular
60
+ @font-face {
61
+ font-family: 'Lufga';
62
+ font-style: normal;
63
+ font-weight: 400;
64
+ font-display: swap;
65
+ src: url('#{$font-prefix}/lufga/LufgaRegular.woff') format('woff');
66
+ }
67
+
68
+ @font-face {
69
+ font-family: 'Lufga';
70
+ font-style: italic;
71
+ font-weight: 400;
72
+ font-display: swap;
73
+ src: url('#{$font-prefix}/lufga/LufgaItalic.woff') format('woff');
74
+ }
75
+
76
+ // Lufga Medium
77
+ @font-face {
78
+ font-family: 'Lufga';
79
+ font-style: normal;
80
+ font-weight: 500;
81
+ font-display: swap;
82
+ src: url('#{$font-prefix}/lufga/LufgaMedium.woff') format('woff');
83
+ }
84
+
85
+ @font-face {
86
+ font-family: 'Lufga';
87
+ font-style: italic;
88
+ font-weight: 500;
89
+ font-display: swap;
90
+ src: url('#{$font-prefix}/lufga/LufgaMediumItalic.woff') format('woff');
91
+ }
92
+
93
+ // Lufga Semi Bold
94
+ @font-face {
95
+ font-family: 'Lufga';
96
+ font-style: normal;
97
+ font-weight: 600;
98
+ font-display: swap;
99
+ src: url('#{$font-prefix}/lufga/LufgaSemiBold.woff') format('woff');
100
+ }
101
+
102
+ @font-face {
103
+ font-family: 'Lufga';
104
+ font-style: italic;
105
+ font-weight: 600;
106
+ font-display: swap;
107
+ src: url('#{$font-prefix}/lufga/LufgaSemiBoldItalic.woff') format('woff');
108
+ }
109
+
110
+ // Lufga Bold
111
+ @font-face {
112
+ font-family: 'Lufga';
113
+ font-style: normal;
114
+ font-weight: 700;
115
+ font-display: swap;
116
+ src: url('#{$font-prefix}/lufga/LufgaBold.woff') format('woff');
117
+ }
118
+
119
+ @font-face {
120
+ font-family: 'Lufga';
121
+ font-style: italic;
122
+ font-weight: 700;
123
+ font-display: swap;
124
+ src: url('#{$font-prefix}/lufga/LufgaBoldItalic.woff') format('woff');
125
+ }
126
+
127
+ // Lufga Extra Bold
128
+ @font-face {
129
+ font-family: 'Lufga';
130
+ font-style: normal;
131
+ font-weight: 800;
132
+ font-display: swap;
133
+ src: url('#{$font-prefix}/lufga/LufgaExtraBold.woff') format('woff');
134
+ }
135
+
136
+ @font-face {
137
+ font-family: 'Lufga';
138
+ font-style: italic;
139
+ font-weight: 800;
140
+ font-display: swap;
141
+ src: url('#{$font-prefix}/lufga/LufgaExtraBoldItalic.woff') format('woff');
142
+ }
143
+
144
+ // Lufga Black
145
+ @font-face {
146
+ font-family: 'Lufga';
147
+ font-style: normal;
148
+ font-weight: 900;
149
+ font-display: swap;
150
+ src: url('#{$font-prefix}/lufga/LufgaBlack.woff') format('woff');
151
+ }
152
+
153
+ @font-face {
154
+ font-family: 'Lufga';
155
+ font-style: italic;
156
+ font-weight: 900;
157
+ font-display: swap;
158
+ src: url('#{$font-prefix}/lufga/LufgaBlackItalic.woff') format('woff');
159
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Copyright Octaviaflow 2026
3
+ * RTL United Text typeface
4
+ */
5
+
6
+ $font-prefix: '../fonts' !default;
7
+
8
+ // RTL United Text Light
9
+ @font-face {
10
+ font-family: 'RTL United Text';
11
+ font-style: normal;
12
+ font-weight: 300;
13
+ font-display: swap;
14
+ src: url('#{$font-prefix}/rtl-united-text/RTLUnitedTextLight.ttf') format('truetype');
15
+ }
16
+
17
+ @font-face {
18
+ font-family: 'RTL United Text';
19
+ font-style: italic;
20
+ font-weight: 300;
21
+ font-display: swap;
22
+ src: url('#{$font-prefix}/rtl-united-text/RTLUnitedTextLightItalic.ttf') format('truetype');
23
+ }
24
+
25
+ // RTL United Text Regular
26
+ @font-face {
27
+ font-family: 'RTL United Text';
28
+ font-style: normal;
29
+ font-weight: 400;
30
+ font-display: swap;
31
+ src: url('#{$font-prefix}/rtl-united-text/RTLUnitedTextRegular.ttf') format('truetype');
32
+ }
33
+
34
+ @font-face {
35
+ font-family: 'RTL United Text';
36
+ font-style: italic;
37
+ font-weight: 400;
38
+ font-display: swap;
39
+ src: url('#{$font-prefix}/rtl-united-text/RTLUnitedTextRegularItalic.ttf') format('truetype');
40
+ }
41
+
42
+ // RTL United Text Bold
43
+ @font-face {
44
+ font-family: 'RTL United Text';
45
+ font-style: normal;
46
+ font-weight: 700;
47
+ font-display: swap;
48
+ src: url('#{$font-prefix}/rtl-united-text/RTLUnitedTextBold.ttf') format('truetype');
49
+ }
50
+
51
+ @font-face {
52
+ font-family: 'RTL United Text';
53
+ font-style: italic;
54
+ font-weight: 700;
55
+ font-display: swap;
56
+ src: url('#{$font-prefix}/rtl-united-text/RTLUnitedTextBoldItalic.ttf') format('truetype');
57
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright Octaviaflow 2026
3
+ * Main entry point for Octaviaflow fonts
4
+ */
5
+
6
+ @use 'lufga';
7
+ @use 'rtl-united-text';
8
+ @use 'jetbrains-mono';