@ttoss/theme 1.2.10 → 1.4.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.
@@ -0,0 +1,445 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+
3
+ // src/themes/Bruttal/BruttalIcons.ts
4
+ import { addIcon } from "@iconify-icon/react";
5
+ import addFilledIcon from "@iconify/icons-carbon/add-filled";
6
+ import calendarIcon from "@iconify/icons-carbon/calendar";
7
+ import checkboxCheckedFilled from "@iconify/icons-carbon/checkbox-checked-filled";
8
+ import checkboxIcon from "@iconify/icons-carbon/checkbox";
9
+ import checkboxIndeterminateFilledIcon from "@iconify/icons-carbon/checkbox-indeterminate-filled";
10
+ import chevronDownIcon from "@iconify/icons-carbon/chevron-down";
11
+ import chevronLeftIcon from "@iconify/icons-carbon/chevron-left";
12
+ import chevronRightIcon from "@iconify/icons-carbon/chevron-right";
13
+ import chevronUpIcon from "@iconify/icons-carbon/chevron-up";
14
+ import closeFilledIcon from "@iconify/icons-carbon/close-filled";
15
+ import copyIcon from "@iconify/icons-carbon/copy";
16
+ import errorFilledIcon from "@iconify/icons-carbon/error-filled";
17
+ import informationFilledIcon from "@iconify/icons-carbon/information-filled";
18
+ import pasteIcon from "@iconify/icons-carbon/paste";
19
+ import radioButtonCheckedIcon from "@iconify/icons-carbon/radio-button-checked";
20
+ import radioButtonIcon from "@iconify/icons-carbon/radio-button";
21
+ import renewIcon from "@iconify/icons-carbon/renew";
22
+ import timeIcon from "@iconify/icons-carbon/time";
23
+ import trashCanIcon from "@iconify/icons-carbon/trash-can";
24
+ import userAvatarFilledAltIcon from "@iconify/icons-carbon/user-avatar-filled-alt";
25
+ import viewFilledIcon from "@iconify/icons-carbon/view-filled";
26
+ import viewOffFilledIcon from "@iconify/icons-carbon/view-off-filled";
27
+ import warningFilledIcon from "@iconify/icons-carbon/warning-filled";
28
+ var replicateIcon = {
29
+ body: `<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
30
+ <path d="M42 15V42H15V15H42ZM42 12H15C14.2044 12 13.4413 12.3161 12.8787 12.8787C12.3161 13.4413 12 14.2044 12 15V42C12 42.7956 12.3161 43.5587 12.8787 44.1213C13.4413 44.6839 14.2044 45 15 45H42C42.7956 45 43.5587 44.6839 44.1213 44.1213C44.6839 43.5587 45 42.7956 45 42V15C45 14.2044 44.6839 13.4413 44.1213 12.8787C43.5587 12.3161 42.7956 12 42 12Z" fill="currentColor"/>
31
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3 5.76389C3 4.23744 4.26071 3 5.81588 3H29V5.57963H5.81588C5.71221 5.57963 5.62816 5.66213 5.62816 5.76389V28.994C5.62816 29.0957 5.71221 29.1782 5.81588 29.1782H22.2607L18.7784 25.7602L20.6368 23.9361L27.2916 30.4681L20.6368 37L18.7784 35.1759L22.2607 31.7579H5.81588C4.26071 31.7579 3 30.5204 3 28.994V5.76389Z" fill="currentColor"/>
32
+ </svg>`,
33
+ width: 48,
34
+ height: 48
35
+ };
36
+ addIcon("add", addFilledIcon);
37
+ addIcon("avatar", userAvatarFilledAltIcon);
38
+ addIcon("calendar", calendarIcon);
39
+ addIcon("checkbox-checked", checkboxCheckedFilled);
40
+ addIcon("checkbox-indeterminate", checkboxIndeterminateFilledIcon);
41
+ addIcon("checkbox-unchecked", checkboxIcon);
42
+ addIcon("close", closeFilledIcon);
43
+ addIcon("copy", copyIcon);
44
+ addIcon("delete", trashCanIcon);
45
+ addIcon("error", errorFilledIcon);
46
+ addIcon("info", informationFilledIcon);
47
+ addIcon("paste", pasteIcon);
48
+ addIcon("picker-down", chevronDownIcon);
49
+ addIcon("picker-up", chevronUpIcon);
50
+ addIcon("picker-left", chevronLeftIcon);
51
+ addIcon("picker-right", chevronRightIcon);
52
+ addIcon("radio-not-selected", radioButtonIcon);
53
+ addIcon("radio-selected", radioButtonCheckedIcon);
54
+ addIcon("refresh", renewIcon);
55
+ addIcon("replicate", replicateIcon);
56
+ addIcon("small-close", closeFilledIcon);
57
+ addIcon("time", timeIcon);
58
+ addIcon("view-off", viewOffFilledIcon);
59
+ addIcon("view-on", viewFilledIcon);
60
+ addIcon("warning", warningFilledIcon);
61
+
62
+ // src/themes/Bruttal/BruttalFonts.ts
63
+ var BruttalFonts = [
64
+ "https://fonts.googleapis.com/css?family=Inconsolata:wght@100;200;300;400;500;700;800;900",
65
+ "https://fonts.googleapis.com/css?family=Work+Sans:wght@100;200;300;400;500;700;800;900",
66
+ "https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400;1,700&display=swap"
67
+ ];
68
+
69
+ // src/tokens/fontSizes.ts
70
+ var fontSizes = {
71
+ "2xs": "0.5rem",
72
+ xs: "0.75rem",
73
+ sm: "0.875rem",
74
+ base: "1rem",
75
+ lg: "1.125rem",
76
+ xl: "1.25rem",
77
+ "2xl": "1.5rem",
78
+ "3xl": "1.875rem",
79
+ "4xl": "2.25rem",
80
+ "5xl": "3rem",
81
+ "6xl": "3.75rem",
82
+ "7xl": "4.5rem",
83
+ "8xl": "6rem",
84
+ "9xl": "8rem"
85
+ };
86
+
87
+ // src/tokens/fontWeights.ts
88
+ var fontWeights = {
89
+ thin: 100,
90
+ extralight: 200,
91
+ light: 300,
92
+ normal: 400,
93
+ medium: 500,
94
+ semibold: 600,
95
+ bold: 700,
96
+ extrabold: 800
97
+ };
98
+
99
+ // src/tokens/letterSpacings.ts
100
+ var letterSpacings = {
101
+ tighter: "-0.05em",
102
+ tight: "-0.025em",
103
+ normal: "0em",
104
+ wide: "0.025em",
105
+ wider: "0.05em",
106
+ widest: "0.1em"
107
+ };
108
+
109
+ // src/tokens/space.ts
110
+ var space = {
111
+ none: 0,
112
+ "2xs": "2px",
113
+ xs: "3px",
114
+ sm: "5px",
115
+ md: "8px",
116
+ lg: "13px",
117
+ xl: "21px",
118
+ "2xl": "34px",
119
+ "3xl": "55px",
120
+ "4xl": "89px",
121
+ "5xl": "144px",
122
+ "6xl": "233px",
123
+ "7xl": "377px"
124
+ };
125
+
126
+ // src/themes/Bruttal/BruttalTheme.ts
127
+ var coreFonts = {
128
+ main: '"Atkinson Hyperlegible", sans-serif',
129
+ contrast: '"Work Sans", sans-serif',
130
+ monospace: '"Inconsolata", sans-serif'
131
+ };
132
+ var brandColors = {
133
+ complimentary: "#f4f3f3",
134
+ main: "#292C2a",
135
+ darkNeutral: "#325C82",
136
+ accent: "#0469E3",
137
+ lightNeutral: "#F8F8F8"
138
+ };
139
+ var coreColors = {
140
+ ...brandColors,
141
+ gray100: "#f9f9f9",
142
+ gray200: "#dedede",
143
+ gray300: "#c4c4c4",
144
+ gray400: "#ababab",
145
+ gray500: "#929292",
146
+ gray600: "#7a7a7a",
147
+ gray700: "#626262",
148
+ gray800: "#4c4c4c",
149
+ gray900: "#323232",
150
+ black: "#000000",
151
+ red100: "#ffebeb",
152
+ red200: "#fdbfbf",
153
+ red300: "#f99595",
154
+ red400: "#f56c6c",
155
+ red500: "#ef4444",
156
+ red600: "#e42828",
157
+ red700: "#c62121",
158
+ white: "#ffffff",
159
+ amber600: "#d97706",
160
+ teal600: "#0d9488"
161
+ };
162
+ var coreBorders = {
163
+ none: "0px solid",
164
+ thin: "1px solid",
165
+ medium: "2px solid",
166
+ thick: "4px solid"
167
+ };
168
+ var coreRadii = {
169
+ sharp: "0px",
170
+ xs: "2px",
171
+ sm: "4px",
172
+ md: "6px",
173
+ lg: "8px",
174
+ xl: "12px",
175
+ "2xl": "16px",
176
+ "3xl": "24px",
177
+ circle: "9999px"
178
+ };
179
+ var BruttalTheme = {
180
+ /**
181
+ * Tokens
182
+ */
183
+ fontSizes,
184
+ fontWeights,
185
+ letterSpacings,
186
+ space,
187
+ colors: {
188
+ background: coreColors.white,
189
+ text: coreColors.black,
190
+ muted: coreColors.gray200,
191
+ onMuted: coreColors.gray500,
192
+ mutedOutline: coreColors.gray300,
193
+ danger: coreColors.red700,
194
+ onDanger: coreColors.white,
195
+ notice: coreColors.amber600,
196
+ positive: coreColors.teal600,
197
+ surface: coreColors.white,
198
+ contentHeader: coreColors.gray200,
199
+ onContentHeader: coreColors.black,
200
+ outline: coreColors.gray500,
201
+ primary: coreColors.main,
202
+ onPrimary: coreColors.white,
203
+ secondary: coreColors.gray500,
204
+ onSecondary: coreColors.complimentary,
205
+ highlight: coreColors.darkNeutral,
206
+ onHighlight: coreColors.complimentary,
207
+ accent: coreColors.accent,
208
+ onAccent: coreColors.white,
209
+ neutral: coreColors.darkNeutral,
210
+ onNeutral: coreColors.lightNeutral,
211
+ underemphasize: coreColors.gray300
212
+ },
213
+ fonts: {
214
+ h1: coreFonts.contrast,
215
+ h2: coreFonts.contrast,
216
+ h3: coreFonts.contrast,
217
+ h4: coreFonts.contrast,
218
+ h5: coreFonts.contrast,
219
+ h6: coreFonts.contrast,
220
+ body: coreFonts.main,
221
+ highlight: coreFonts.main,
222
+ caption: coreFonts.monospace
223
+ },
224
+ borders: {
225
+ default: coreBorders.medium
226
+ },
227
+ radii: {
228
+ default: coreRadii.sm
229
+ },
230
+ /**
231
+ * Global styles
232
+ */
233
+ styles: {
234
+ root: {
235
+ fontFamily: "body",
236
+ fontWeight: "normal",
237
+ fontSize: "base",
238
+ margin: 0,
239
+ padding: 0
240
+ }
241
+ },
242
+ /**
243
+ * Components
244
+ */
245
+ badges: {
246
+ primary: {
247
+ color: "onPrimary",
248
+ bg: "primary",
249
+ fontSize: "sm",
250
+ paddingX: "sm",
251
+ borderRadius: "default"
252
+ }
253
+ },
254
+ buttons: {
255
+ accent: {
256
+ backgroundColor: "accent",
257
+ color: "onAccent",
258
+ fontFamily: "highlight",
259
+ fontWeight: "bold",
260
+ border: "default",
261
+ borderRadius: "default",
262
+ borderColor: "accent",
263
+ ":hover:not(:active,[disabled])": {
264
+ backgroundColor: "highlight",
265
+ color: "onHighlight",
266
+ borderColor: "highlight"
267
+ },
268
+ ":disabled": {
269
+ cursor: "default",
270
+ backgroundColor: "muted",
271
+ borderColor: "muted"
272
+ }
273
+ },
274
+ primary: {
275
+ backgroundColor: "primary",
276
+ color: "onPrimary",
277
+ fontFamily: "body",
278
+ border: "default",
279
+ borderRadius: "default",
280
+ borderColor: "outline",
281
+ ":hover:not(:active,[disabled])": {
282
+ backgroundColor: "highlight",
283
+ color: "onHighlight",
284
+ borderColor: "highlight"
285
+ },
286
+ ":active": {
287
+ backgroundColor: "primary",
288
+ color: "onPrimary",
289
+ borderColor: "outline"
290
+ },
291
+ ":disabled": {
292
+ cursor: "default",
293
+ backgroundColor: "muted",
294
+ borderColor: "muted"
295
+ }
296
+ },
297
+ secondary: {
298
+ backgroundColor: "secondary",
299
+ color: "onSecondary",
300
+ fontFamily: "body",
301
+ border: "default",
302
+ borderRadius: "default",
303
+ borderColor: "outline",
304
+ ":hover:not(:active,[disabled])": {
305
+ backgroundColor: "highlight",
306
+ color: "onHighlight",
307
+ borderColor: "highlight"
308
+ },
309
+ ":disabled": {
310
+ cursor: "default",
311
+ backgroundColor: "muted",
312
+ borderColor: "muted"
313
+ }
314
+ },
315
+ neutral: {
316
+ backgroundColor: "neutral",
317
+ color: "onNeutral",
318
+ fontFamily: "body",
319
+ border: "default",
320
+ borderRadius: "default",
321
+ borderColor: "outline",
322
+ ":hover:not(:active,[disabled])": {
323
+ backgroundColor: "highlight",
324
+ color: "onHighlight",
325
+ borderColor: "highlight"
326
+ },
327
+ ":disabled": {
328
+ cursor: "default",
329
+ backgroundColor: "muted",
330
+ borderColor: "muted"
331
+ }
332
+ },
333
+ danger: {
334
+ color: "white",
335
+ backgroundColor: "danger"
336
+ }
337
+ },
338
+ cards: {
339
+ primary: {
340
+ backgroundColor: "primary",
341
+ border: "1px solid black",
342
+ padding: [4, 5],
343
+ display: "flex",
344
+ flexDirection: "column",
345
+ alignItems: "center",
346
+ width: "fit-content"
347
+ }
348
+ },
349
+ forms: {
350
+ label: {
351
+ "&:has(+ div > input.error)": {
352
+ "span > iconify-icon": {
353
+ color: "danger"
354
+ }
355
+ },
356
+ '&:has(input[type="checkbox"]:disabled)': {
357
+ color: "onMuted"
358
+ }
359
+ },
360
+ checkbox: {
361
+ "input:not(:checked) ~ &": {
362
+ color: "primary"
363
+ },
364
+ "input:disabled ~ &": {
365
+ color: "muted"
366
+ },
367
+ "input:disabled ~ & path": {
368
+ backgroundColor: "onMuted"
369
+ }
370
+ },
371
+ input: {
372
+ fontFamily: "body",
373
+ color: "text",
374
+ paddingY: "md",
375
+ paddingX: "lg",
376
+ "::placeholder": {
377
+ color: "underemphasize"
378
+ },
379
+ ":focus-within": {
380
+ outlineColor: "neutral"
381
+ },
382
+ ":disabled": {
383
+ backgroundColor: "onMuted",
384
+ borderColor: "muted"
385
+ },
386
+ "&.error": {
387
+ borderColor: "danger"
388
+ },
389
+ "&.error+span>iconify-icon": {
390
+ color: "danger"
391
+ }
392
+ }
393
+ },
394
+ text: {
395
+ default: {
396
+ color: "text",
397
+ fontFamily: "body"
398
+ },
399
+ title: {
400
+ fontFamily: "heading",
401
+ fontSize: 4,
402
+ lineSpace: "3.5"
403
+ },
404
+ error: {
405
+ '&[role="alert"]': {
406
+ color: "danger"
407
+ }
408
+ },
409
+ h1: {
410
+ fontFamily: "heading",
411
+ fontSize: "6xl",
412
+ fontWeight: "bold",
413
+ letterSpacing: "normal"
414
+ },
415
+ h2: {
416
+ fontFamily: "heading",
417
+ fontSize: "5xl",
418
+ fontWeight: "bold",
419
+ letterSpacing: "normal"
420
+ },
421
+ h3: {
422
+ fontFamily: "heading",
423
+ fontSize: "4xl",
424
+ fontWeight: "bold",
425
+ letterSpacing: "normal"
426
+ },
427
+ h4: {
428
+ fontFamily: "heading",
429
+ fontSize: "2xl",
430
+ fontWeight: "bold",
431
+ letterSpacing: "normal"
432
+ },
433
+ h5: {
434
+ fontFamily: "heading",
435
+ fontSize: "xl",
436
+ fontWeight: "bold",
437
+ letterSpacing: "normal"
438
+ }
439
+ }
440
+ };
441
+
442
+ export {
443
+ BruttalFonts,
444
+ BruttalTheme
445
+ };