paris 0.0.1 → 0.2.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 (103) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +11 -0
  3. package/.eslintrc.json +22 -0
  4. package/.github/workflows/publish.yml +54 -0
  5. package/.husky/pre-commit +2 -0
  6. package/.idea/inspectionProfiles/Project_Default.xml +7 -0
  7. package/.idea/jsLibraryMappings.xml +6 -0
  8. package/.idea/jsLinters/eslint.xml +6 -0
  9. package/.idea/modules.xml +8 -0
  10. package/.idea/paris.iml +13 -0
  11. package/.idea/vcs.xml +6 -0
  12. package/.idea/watcherTasks.xml +4 -0
  13. package/.storybook/main.ts +43 -0
  14. package/.storybook/manager-head.html +16 -0
  15. package/.storybook/manager.ts +6 -0
  16. package/.storybook/preview.ts +74 -0
  17. package/.storybook/themes.ts +30 -0
  18. package/CHANGELOG.md +17 -0
  19. package/README.md +42 -2
  20. package/cat +2 -0
  21. package/global.d.ts +2 -0
  22. package/next.config.js +6 -0
  23. package/package.json +71 -9
  24. package/public/favicon.ico +0 -0
  25. package/public/fira/fira_code.css +48 -0
  26. package/public/fira/woff/FiraCode-Bold.woff +0 -0
  27. package/public/fira/woff/FiraCode-Light.woff +0 -0
  28. package/public/fira/woff/FiraCode-Medium.woff +0 -0
  29. package/public/fira/woff/FiraCode-Regular.woff +0 -0
  30. package/public/fira/woff/FiraCode-SemiBold.woff +0 -0
  31. package/public/fira/woff/FiraCode-VF.woff +0 -0
  32. package/public/fira/woff2/FiraCode-Bold.woff2 +0 -0
  33. package/public/fira/woff2/FiraCode-Light.woff2 +0 -0
  34. package/public/fira/woff2/FiraCode-Medium.woff2 +0 -0
  35. package/public/fira/woff2/FiraCode-Regular.woff2 +0 -0
  36. package/public/fira/woff2/FiraCode-SemiBold.woff2 +0 -0
  37. package/public/fira/woff2/FiraCode-VF.woff2 +0 -0
  38. package/public/graphik/GraphikSS-Black.woff +0 -0
  39. package/public/graphik/GraphikSS-Black.woff2 +0 -0
  40. package/public/graphik/GraphikSS-BlackItalic.woff +0 -0
  41. package/public/graphik/GraphikSS-BlackItalic.woff2 +0 -0
  42. package/public/graphik/GraphikSS-Bold.woff +0 -0
  43. package/public/graphik/GraphikSS-Bold.woff2 +0 -0
  44. package/public/graphik/GraphikSS-BoldItalic.woff +0 -0
  45. package/public/graphik/GraphikSS-BoldItalic.woff2 +0 -0
  46. package/public/graphik/GraphikSS-Extralight.woff +0 -0
  47. package/public/graphik/GraphikSS-Extralight.woff2 +0 -0
  48. package/public/graphik/GraphikSS-ExtralightItalic.woff +0 -0
  49. package/public/graphik/GraphikSS-ExtralightItalic.woff2 +0 -0
  50. package/public/graphik/GraphikSS-Light.woff +0 -0
  51. package/public/graphik/GraphikSS-Light.woff2 +0 -0
  52. package/public/graphik/GraphikSS-LightItalic.woff +0 -0
  53. package/public/graphik/GraphikSS-LightItalic.woff2 +0 -0
  54. package/public/graphik/GraphikSS-Medium.woff +0 -0
  55. package/public/graphik/GraphikSS-Medium.woff2 +0 -0
  56. package/public/graphik/GraphikSS-MediumItalic.woff +0 -0
  57. package/public/graphik/GraphikSS-MediumItalic.woff2 +0 -0
  58. package/public/graphik/GraphikSS-Regular.woff +0 -0
  59. package/public/graphik/GraphikSS-Regular.woff2 +0 -0
  60. package/public/graphik/GraphikSS-RegularItalic.woff +0 -0
  61. package/public/graphik/GraphikSS-RegularItalic.woff2 +0 -0
  62. package/public/graphik/GraphikSS-Semibold.woff +0 -0
  63. package/public/graphik/GraphikSS-Semibold.woff2 +0 -0
  64. package/public/graphik/GraphikSS-SemiboldItalic.woff +0 -0
  65. package/public/graphik/GraphikSS-SemiboldItalic.woff2 +0 -0
  66. package/public/graphik/GraphikSS-Super.woff +0 -0
  67. package/public/graphik/GraphikSS-Super.woff2 +0 -0
  68. package/public/graphik/GraphikSS-SuperItalic.woff +0 -0
  69. package/public/graphik/GraphikSS-SuperItalic.woff2 +0 -0
  70. package/public/graphik/GraphikSS-Thin.woff +0 -0
  71. package/public/graphik/GraphikSS-Thin.woff2 +0 -0
  72. package/public/graphik/GraphikSS-ThinItalic.woff +0 -0
  73. package/public/graphik/GraphikSS-ThinItalic.woff2 +0 -0
  74. package/public/graphik/graphik.css +174 -0
  75. package/public/next.svg +1 -0
  76. package/public/pte.css +219 -0
  77. package/public/thirteen.svg +1 -0
  78. package/public/vercel.svg +1 -0
  79. package/scripts/createComponent.js +100 -0
  80. package/scripts/generateEntry.js +35 -0
  81. package/scripts/text.ts +118 -0
  82. package/src/pages/_app.tsx +7 -0
  83. package/src/pages/_document.tsx +15 -0
  84. package/src/pages/index.tsx +132 -0
  85. package/src/stories/Tokens.mdx +54 -0
  86. package/src/stories/Welcome.mdx +8 -0
  87. package/src/stories/button/Button.module.scss +128 -0
  88. package/src/stories/button/Button.stories.ts +42 -0
  89. package/src/stories/button/Button.tsx +81 -0
  90. package/src/stories/button/index.ts +1 -0
  91. package/src/stories/text/Text.module.scss +3 -0
  92. package/src/stories/text/Text.stories.ts +155 -0
  93. package/src/stories/text/Text.tsx +40 -0
  94. package/src/stories/text/Typography.module.css +164 -0
  95. package/src/stories/text/index.ts +1 -0
  96. package/src/stories/theme/index.ts +2 -0
  97. package/src/stories/theme/themes.ts +409 -0
  98. package/src/stories/theme/tokens.ts +68 -0
  99. package/src/styles/Home.module.css +278 -0
  100. package/src/styles/globals.css +5 -0
  101. package/src/styles/tw-preflight.css +369 -0
  102. package/src/styles/util.scss +4 -0
  103. package/tsconfig.json +27 -0
@@ -0,0 +1,409 @@
1
+ import { createTheme } from 'pte';
2
+ import type { CSSColor, CSSLength } from '@ssh/csstypes';
3
+ import type { Property } from 'csstype';
4
+ import type { PartialDeep } from 'type-fest';
5
+ import { Tokens as T } from './tokens';
6
+ import type { TokensT } from './tokens';
7
+
8
+ export type FontDefinition = {
9
+ fontSize: CSSLength,
10
+ fontWeight: number | 'normal',
11
+ lineHeight: CSSLength,
12
+ fontStyle: 'normal' | 'italic',
13
+ letterSpacing: CSSLength | 'normal',
14
+ textTransform: Property.TextTransform,
15
+ };
16
+
17
+ export type FontClassDefinition = Omit<FontDefinition, 'fontSize' | 'lineHeight'>;
18
+
19
+ export type Theme = {
20
+ tokens: TokensT,
21
+ colors: {
22
+ // Primary
23
+
24
+ black: CSSColor,
25
+ white: CSSColor,
26
+ accent: CSSColor,
27
+ negative: CSSColor,
28
+ warning: CSSColor,
29
+ positive: CSSColor,
30
+
31
+ // Content
32
+
33
+ contentPrimary: CSSColor,
34
+ contentSecondary: CSSColor,
35
+ contentTertiary: CSSColor,
36
+ contentDisabled: CSSColor,
37
+ contentAccent: CSSColor,
38
+ contentNegative: CSSColor,
39
+ contentWarning: CSSColor,
40
+ contentPositive: CSSColor,
41
+
42
+ // Content Inverse
43
+
44
+ contentInversePrimary: CSSColor,
45
+ contentInverseSecondary: CSSColor,
46
+ contentInverseTertiary: CSSColor,
47
+ contentInverseDisabled: CSSColor,
48
+
49
+ // Background
50
+
51
+ backgroundSidebar: CSSColor,
52
+ backgroundPrimary: CSSColor,
53
+ backgroundSecondary: CSSColor,
54
+ backgroundTertiary: CSSColor,
55
+ backgroundAccent: CSSColor,
56
+ backgroundNegative: CSSColor,
57
+ backgroundWarning: CSSColor,
58
+ backgroundPositive: CSSColor,
59
+
60
+ // Background Inverse
61
+
62
+ backgroundInverseSidebar: CSSColor,
63
+ backgroundInversePrimary: CSSColor,
64
+ backgroundInverseSecondary: CSSColor,
65
+ backgroundInverseTertiary: CSSColor,
66
+ backgroundInverseNegative: CSSColor,
67
+ backgroundInversePositive: CSSColor,
68
+
69
+ // Background Overlays
70
+
71
+ backgroundOverlayLight: CSSColor,
72
+ backgroundOverlayXLight: CSSColor,
73
+ backgroundOverlayGrey: CSSColor,
74
+ backgroundOverlayTeal: CSSColor,
75
+
76
+ // Border
77
+
78
+ borderOpaque: CSSColor,
79
+ borderSelected: CSSColor,
80
+ borderAccent: CSSColor,
81
+ borderNegative: CSSColor,
82
+ borderWarning: CSSColor,
83
+ borderPositive: CSSColor,
84
+
85
+ // Border Inverse
86
+
87
+ borderInverseOpaque: CSSColor,
88
+ borderInverseSelected: CSSColor,
89
+ },
90
+ typography: {
91
+ fontFamily: string,
92
+ boldFontWeight: number,
93
+ italicLetterSpacing: CSSLength,
94
+
95
+ styles: {
96
+ // Display
97
+
98
+ displayLarge: FontDefinition,
99
+ displayMedium: FontDefinition,
100
+ displaySmall: FontDefinition,
101
+
102
+ // Heading
103
+
104
+ headingLarge: FontDefinition,
105
+ headingMedium: FontDefinition,
106
+ headingSmall: FontDefinition,
107
+ headingXSmall: FontDefinition,
108
+ headingXXSmall: FontDefinition,
109
+
110
+ // Label
111
+
112
+ labelXLarge: FontDefinition,
113
+ labelLarge: FontDefinition,
114
+ labelMedium: FontDefinition,
115
+ labelSmall: FontDefinition,
116
+ labelXSmall: FontDefinition,
117
+
118
+ // Paragraph
119
+
120
+ paragraphLarge: FontDefinition,
121
+ paragraphMedium: FontDefinition,
122
+ paragraphSmall: FontDefinition,
123
+ paragraphXSmall: FontDefinition,
124
+ paragraphXXSmall: FontDefinition,
125
+ }
126
+ },
127
+ borders: {
128
+ // Border Radius
129
+ radius: {
130
+ pill: CSSLength,
131
+ circle: CSSLength,
132
+ rectangle: CSSLength,
133
+ rounded: CSSLength,
134
+ roundedSmall: CSSLength,
135
+ roundedLarge: CSSLength,
136
+ },
137
+ },
138
+ animations: {
139
+ interaction: string,
140
+ }
141
+ };
142
+
143
+ export type ThemeOverrides = PartialDeep<Theme>;
144
+
145
+ export const DisplayFontClass: FontClassDefinition = {
146
+ fontStyle: 'normal',
147
+ letterSpacing: '-0.01em',
148
+ fontWeight: 600,
149
+ textTransform: 'none',
150
+ };
151
+
152
+ export const HeadingFontClass: FontClassDefinition = {
153
+ fontStyle: 'normal',
154
+ letterSpacing: 'normal',
155
+ fontWeight: 600,
156
+ textTransform: 'none',
157
+ };
158
+
159
+ export const LabelFontClass: FontClassDefinition = {
160
+ fontStyle: 'normal',
161
+ letterSpacing: '0.1em',
162
+ fontWeight: 600,
163
+ textTransform: 'uppercase',
164
+ };
165
+
166
+ export const ParagraphFontClass: FontClassDefinition = {
167
+ fontStyle: 'normal',
168
+ letterSpacing: 'normal',
169
+ fontWeight: 400,
170
+ textTransform: 'none',
171
+ };
172
+
173
+ export const LightTheme: Theme = {
174
+ tokens: T,
175
+ colors: {
176
+ // Primary
177
+
178
+ black: T.colors.black,
179
+ white: T.colors.white,
180
+ accent: T.colors.teal,
181
+ negative: T.colors.red,
182
+ warning: T.colors.yellow,
183
+ positive: T.colors.green,
184
+
185
+ // Content
186
+
187
+ contentPrimary: T.colors.grey1050,
188
+ contentSecondary: T.colors.grey600,
189
+ contentTertiary: T.colors.grey500,
190
+ contentDisabled: T.colors.grey400,
191
+ contentAccent: T.colors.teal400,
192
+ contentNegative: T.colors.red400,
193
+ contentWarning: T.colors.yellow400,
194
+ contentPositive: T.colors.green400,
195
+
196
+ // Content Inverse
197
+
198
+ contentInversePrimary: T.colors.white,
199
+ contentInverseSecondary: T.colors.grey200,
200
+ contentInverseTertiary: T.colors.grey400,
201
+ contentInverseDisabled: T.colors.grey500,
202
+
203
+ // Background
204
+
205
+ backgroundSidebar: T.colors.black,
206
+ backgroundPrimary: T.colors.white,
207
+ backgroundSecondary: T.colors.grey50,
208
+ backgroundTertiary: T.colors.grey100,
209
+ backgroundAccent: T.colors.teal100,
210
+ backgroundNegative: T.colors.red100,
211
+ backgroundWarning: T.colors.yellow100,
212
+ backgroundPositive: T.colors.green100,
213
+
214
+ // Background Inverse
215
+
216
+ backgroundInverseSidebar: T.colors.grey1050,
217
+ backgroundInversePrimary: T.colors.black,
218
+ backgroundInverseSecondary: T.colors.grey900,
219
+ backgroundInverseTertiary: T.colors.grey800,
220
+ backgroundInverseNegative: T.colors.red700,
221
+ backgroundInversePositive: T.colors.green700,
222
+
223
+ // Background Overlays
224
+
225
+ backgroundOverlayLight: 'rgba(255, 255, 255, 0.07)',
226
+ backgroundOverlayXLight: 'rgba(255, 255, 255, 0.1)',
227
+ backgroundOverlayGrey: 'rgba(175, 175, 175, 0.8)',
228
+ backgroundOverlayTeal: 'rgba(29, 238, 205, 0.1)',
229
+
230
+ // Border
231
+
232
+ borderOpaque: T.colors.grey200,
233
+ borderSelected: T.colors.grey500,
234
+ borderAccent: T.colors.teal400,
235
+ borderNegative: T.colors.red400,
236
+ borderWarning: T.colors.yellow400,
237
+ borderPositive: T.colors.green400,
238
+
239
+ // Border Inverse
240
+
241
+ borderInverseOpaque: T.colors.grey750,
242
+ borderInverseSelected: T.colors.grey200,
243
+ },
244
+ typography: {
245
+ fontFamily: '"Graphik Web", -apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif',
246
+ boldFontWeight: 500,
247
+ italicLetterSpacing: '-0.01em',
248
+
249
+ styles: {
250
+ // Display
251
+
252
+ displayLarge: {
253
+ ...DisplayFontClass,
254
+ fontSize: '72px',
255
+ lineHeight: '86px',
256
+ },
257
+ displayMedium: {
258
+ ...DisplayFontClass,
259
+ fontSize: '52px',
260
+ lineHeight: '62px',
261
+ },
262
+ displaySmall: {
263
+ ...DisplayFontClass,
264
+ fontSize: '34px',
265
+ lineHeight: '41px',
266
+ },
267
+
268
+ // Heading
269
+
270
+ headingLarge: {
271
+ ...HeadingFontClass,
272
+ fontSize: '32px',
273
+ lineHeight: '38px',
274
+ },
275
+ headingMedium: {
276
+ ...HeadingFontClass,
277
+ fontSize: '28px',
278
+ lineHeight: '34px',
279
+ },
280
+ headingSmall: {
281
+ ...HeadingFontClass,
282
+ fontSize: '24px',
283
+ lineHeight: '29px',
284
+ },
285
+ headingXSmall: {
286
+ ...HeadingFontClass,
287
+ fontSize: '20px',
288
+ lineHeight: '24px',
289
+ },
290
+ headingXXSmall: {
291
+ ...HeadingFontClass,
292
+ fontSize: '18px',
293
+ lineHeight: '22px',
294
+ },
295
+
296
+ // Label
297
+
298
+ labelXLarge: {
299
+ ...LabelFontClass,
300
+ fontSize: '18px',
301
+ lineHeight: '22px',
302
+ },
303
+ labelLarge: {
304
+ ...LabelFontClass,
305
+ fontSize: '16px',
306
+ lineHeight: '19px',
307
+ },
308
+ labelMedium: {
309
+ ...LabelFontClass,
310
+ fontSize: '14px',
311
+ lineHeight: '17px',
312
+ },
313
+ labelSmall: {
314
+ ...LabelFontClass,
315
+ fontSize: '12px',
316
+ lineHeight: '14px',
317
+ },
318
+ labelXSmall: {
319
+ ...LabelFontClass,
320
+ fontSize: '10px',
321
+ lineHeight: '12px',
322
+ },
323
+
324
+ // Paragraph
325
+
326
+ paragraphLarge: {
327
+ ...ParagraphFontClass,
328
+ fontSize: '18px',
329
+ lineHeight: '150%',
330
+ },
331
+ paragraphMedium: {
332
+ ...ParagraphFontClass,
333
+ fontSize: '16px',
334
+ lineHeight: '150%',
335
+ },
336
+ paragraphSmall: {
337
+ ...ParagraphFontClass,
338
+ fontSize: '14px',
339
+ lineHeight: '150%',
340
+ },
341
+ paragraphXSmall: {
342
+ ...ParagraphFontClass,
343
+ fontSize: '12px',
344
+ lineHeight: '150%',
345
+ },
346
+ paragraphXXSmall: {
347
+ ...ParagraphFontClass,
348
+ fontSize: '10px',
349
+ lineHeight: '150%',
350
+ },
351
+ },
352
+ },
353
+ borders: {
354
+ radius: {
355
+ pill: '1000px',
356
+ circle: '100%',
357
+ rectangle: '0px',
358
+ rounded: '8px',
359
+ roundedSmall: '4px',
360
+ roundedLarge: '12px',
361
+ },
362
+ },
363
+ animations: {
364
+ interaction: '0.2s cubic-bezier(0.25, 1, 0.5, 1)',
365
+ },
366
+ };
367
+
368
+ export const DarkTheme: Theme = {
369
+ ...LightTheme,
370
+ colors: {
371
+ ...LightTheme.colors,
372
+
373
+ // Reverse all inverse colors
374
+
375
+ contentPrimary: LightTheme.colors.contentInversePrimary,
376
+ contentSecondary: LightTheme.colors.contentInverseSecondary,
377
+ contentTertiary: LightTheme.colors.contentInverseTertiary,
378
+ contentDisabled: LightTheme.colors.contentInverseDisabled,
379
+ backgroundSidebar: LightTheme.colors.backgroundInverseSidebar,
380
+ backgroundPrimary: LightTheme.colors.backgroundInversePrimary,
381
+ backgroundSecondary: LightTheme.colors.backgroundInverseSecondary,
382
+ backgroundTertiary: LightTheme.colors.backgroundInverseTertiary,
383
+ backgroundNegative: LightTheme.colors.backgroundInverseNegative,
384
+ backgroundPositive: LightTheme.colors.backgroundInversePositive,
385
+ borderOpaque: LightTheme.colors.borderInverseOpaque,
386
+ borderSelected: LightTheme.colors.borderInverseSelected,
387
+ contentInversePrimary: LightTheme.colors.contentPrimary,
388
+ contentInverseSecondary: LightTheme.colors.contentSecondary,
389
+ contentInverseTertiary: LightTheme.colors.contentTertiary,
390
+ contentInverseDisabled: LightTheme.colors.contentDisabled,
391
+ backgroundInverseSidebar: LightTheme.colors.backgroundSidebar,
392
+ backgroundInversePrimary: LightTheme.colors.backgroundPrimary,
393
+ backgroundInverseSecondary: LightTheme.colors.backgroundSecondary,
394
+ backgroundInverseTertiary: LightTheme.colors.backgroundTertiary,
395
+ backgroundInverseNegative: LightTheme.colors.backgroundNegative,
396
+ backgroundInversePositive: LightTheme.colors.backgroundPositive,
397
+ borderInverseOpaque: LightTheme.colors.borderOpaque,
398
+ borderInverseSelected: LightTheme.colors.borderSelected,
399
+ },
400
+ };
401
+
402
+ export const {
403
+ theme,
404
+ pvar,
405
+ pget,
406
+ updateTheme,
407
+ injectTheme,
408
+ generateThemeInjection,
409
+ } = createTheme(LightTheme);
@@ -0,0 +1,68 @@
1
+ export const Colors = {
2
+ black: '#060606',
3
+ white: '#ffffff',
4
+ teal: '#1deecd',
5
+ orange: '#ff9426',
6
+ pink: '#fb46be',
7
+ red: '#fd4d2e',
8
+ yellow: '#ffc043',
9
+ green: '#08c94e',
10
+
11
+ grey1050: '#121212',
12
+ grey1000: '#171717',
13
+ grey950: '#1f1f1f',
14
+ grey900: '#252525',
15
+ grey800: '#2e2e2e',
16
+ grey750: '#3c3c3c',
17
+ grey700: '#4a4a4a',
18
+ grey600: '#545454',
19
+ grey500: '#757575',
20
+ grey400: '#afafaf',
21
+ grey300: '#c9c9c9',
22
+ grey200: '#e2e2e2',
23
+ grey100: '#eeeeee',
24
+ grey50: '#f6f6f6',
25
+
26
+ teal600: '#18b199',
27
+ teal500: '#1ad4b6',
28
+ teal400: '#1deecd',
29
+ teal300: '#8ef7e6',
30
+ teal200: '#d9fcf7',
31
+ teal100: '#ecfefb',
32
+
33
+ red700: '#331611',
34
+ red600: '#541a0f',
35
+ red500: '#a9331f',
36
+ red400: '#fd4d2e',
37
+ red300: '#fea697',
38
+ red200: '#ffe1dc',
39
+ red100: '#fff0ee',
40
+
41
+ yellow600: '#554016',
42
+ yellow500: '#aa802d',
43
+ yellow450: '#eba417',
44
+ yellow400: '#ffc043',
45
+ yellow300: '#ffe0a1',
46
+ yellow200: '#fff5e0',
47
+ yellow100: '#fff8e8',
48
+
49
+ green700: '#063717',
50
+ green600: '#0a4820',
51
+ green500: '#148f41',
52
+ green400: '#08c94e',
53
+ green300: '#8febb0',
54
+ green200: '#daf8e5',
55
+ green100: '#edfcf2',
56
+
57
+ gradientTeal: 'linear-gradient(95.14deg, #26EDED 0%, #14EFAC 100%)',
58
+ gradientOrange: 'linear-gradient(95.14deg, #FF814A 0%, #FFA800 100%)',
59
+ gradientPink: 'linear-gradient(90deg, #FF4BED 0%, #F7418D 100%)',
60
+ } as const;
61
+
62
+ export type TokensT = {
63
+ colors: typeof Colors,
64
+ };
65
+
66
+ export const Tokens: TokensT = {
67
+ colors: Colors,
68
+ };