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.
- package/.changeset/README.md +8 -0
- package/.changeset/config.json +11 -0
- package/.eslintrc.json +22 -0
- package/.github/workflows/publish.yml +54 -0
- package/.husky/pre-commit +2 -0
- package/.idea/inspectionProfiles/Project_Default.xml +7 -0
- package/.idea/jsLibraryMappings.xml +6 -0
- package/.idea/jsLinters/eslint.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/paris.iml +13 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/watcherTasks.xml +4 -0
- package/.storybook/main.ts +43 -0
- package/.storybook/manager-head.html +16 -0
- package/.storybook/manager.ts +6 -0
- package/.storybook/preview.ts +74 -0
- package/.storybook/themes.ts +30 -0
- package/CHANGELOG.md +17 -0
- package/README.md +42 -2
- package/cat +2 -0
- package/global.d.ts +2 -0
- package/next.config.js +6 -0
- package/package.json +71 -9
- package/public/favicon.ico +0 -0
- package/public/fira/fira_code.css +48 -0
- package/public/fira/woff/FiraCode-Bold.woff +0 -0
- package/public/fira/woff/FiraCode-Light.woff +0 -0
- package/public/fira/woff/FiraCode-Medium.woff +0 -0
- package/public/fira/woff/FiraCode-Regular.woff +0 -0
- package/public/fira/woff/FiraCode-SemiBold.woff +0 -0
- package/public/fira/woff/FiraCode-VF.woff +0 -0
- package/public/fira/woff2/FiraCode-Bold.woff2 +0 -0
- package/public/fira/woff2/FiraCode-Light.woff2 +0 -0
- package/public/fira/woff2/FiraCode-Medium.woff2 +0 -0
- package/public/fira/woff2/FiraCode-Regular.woff2 +0 -0
- package/public/fira/woff2/FiraCode-SemiBold.woff2 +0 -0
- package/public/fira/woff2/FiraCode-VF.woff2 +0 -0
- package/public/graphik/GraphikSS-Black.woff +0 -0
- package/public/graphik/GraphikSS-Black.woff2 +0 -0
- package/public/graphik/GraphikSS-BlackItalic.woff +0 -0
- package/public/graphik/GraphikSS-BlackItalic.woff2 +0 -0
- package/public/graphik/GraphikSS-Bold.woff +0 -0
- package/public/graphik/GraphikSS-Bold.woff2 +0 -0
- package/public/graphik/GraphikSS-BoldItalic.woff +0 -0
- package/public/graphik/GraphikSS-BoldItalic.woff2 +0 -0
- package/public/graphik/GraphikSS-Extralight.woff +0 -0
- package/public/graphik/GraphikSS-Extralight.woff2 +0 -0
- package/public/graphik/GraphikSS-ExtralightItalic.woff +0 -0
- package/public/graphik/GraphikSS-ExtralightItalic.woff2 +0 -0
- package/public/graphik/GraphikSS-Light.woff +0 -0
- package/public/graphik/GraphikSS-Light.woff2 +0 -0
- package/public/graphik/GraphikSS-LightItalic.woff +0 -0
- package/public/graphik/GraphikSS-LightItalic.woff2 +0 -0
- package/public/graphik/GraphikSS-Medium.woff +0 -0
- package/public/graphik/GraphikSS-Medium.woff2 +0 -0
- package/public/graphik/GraphikSS-MediumItalic.woff +0 -0
- package/public/graphik/GraphikSS-MediumItalic.woff2 +0 -0
- package/public/graphik/GraphikSS-Regular.woff +0 -0
- package/public/graphik/GraphikSS-Regular.woff2 +0 -0
- package/public/graphik/GraphikSS-RegularItalic.woff +0 -0
- package/public/graphik/GraphikSS-RegularItalic.woff2 +0 -0
- package/public/graphik/GraphikSS-Semibold.woff +0 -0
- package/public/graphik/GraphikSS-Semibold.woff2 +0 -0
- package/public/graphik/GraphikSS-SemiboldItalic.woff +0 -0
- package/public/graphik/GraphikSS-SemiboldItalic.woff2 +0 -0
- package/public/graphik/GraphikSS-Super.woff +0 -0
- package/public/graphik/GraphikSS-Super.woff2 +0 -0
- package/public/graphik/GraphikSS-SuperItalic.woff +0 -0
- package/public/graphik/GraphikSS-SuperItalic.woff2 +0 -0
- package/public/graphik/GraphikSS-Thin.woff +0 -0
- package/public/graphik/GraphikSS-Thin.woff2 +0 -0
- package/public/graphik/GraphikSS-ThinItalic.woff +0 -0
- package/public/graphik/GraphikSS-ThinItalic.woff2 +0 -0
- package/public/graphik/graphik.css +174 -0
- package/public/next.svg +1 -0
- package/public/pte.css +219 -0
- package/public/thirteen.svg +1 -0
- package/public/vercel.svg +1 -0
- package/scripts/createComponent.js +100 -0
- package/scripts/generateEntry.js +35 -0
- package/scripts/text.ts +118 -0
- package/src/pages/_app.tsx +7 -0
- package/src/pages/_document.tsx +15 -0
- package/src/pages/index.tsx +132 -0
- package/src/stories/Tokens.mdx +54 -0
- package/src/stories/Welcome.mdx +8 -0
- package/src/stories/button/Button.module.scss +128 -0
- package/src/stories/button/Button.stories.ts +42 -0
- package/src/stories/button/Button.tsx +81 -0
- package/src/stories/button/index.ts +1 -0
- package/src/stories/text/Text.module.scss +3 -0
- package/src/stories/text/Text.stories.ts +155 -0
- package/src/stories/text/Text.tsx +40 -0
- package/src/stories/text/Typography.module.css +164 -0
- package/src/stories/text/index.ts +1 -0
- package/src/stories/theme/index.ts +2 -0
- package/src/stories/theme/themes.ts +409 -0
- package/src/stories/theme/tokens.ts +68 -0
- package/src/styles/Home.module.css +278 -0
- package/src/styles/globals.css +5 -0
- package/src/styles/tw-preflight.css +369 -0
- package/src/styles/util.scss +4 -0
- package/tsconfig.json +27 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Changesets
|
|
2
|
+
|
|
3
|
+
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
|
|
4
|
+
with multi-package repos, or single-package repos to help you version and publish your code. You can
|
|
5
|
+
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
|
|
6
|
+
|
|
7
|
+
We have a quick list of common questions to get you started engaging with this project in
|
|
8
|
+
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
|
|
3
|
+
"changelog": "@changesets/cli/changelog",
|
|
4
|
+
"commit": false,
|
|
5
|
+
"fixed": [],
|
|
6
|
+
"linked": [],
|
|
7
|
+
"access": "public",
|
|
8
|
+
"baseBranch": "main",
|
|
9
|
+
"updateInternalDependencies": "patch",
|
|
10
|
+
"ignore": []
|
|
11
|
+
}
|
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"root": true,
|
|
3
|
+
"extends": [
|
|
4
|
+
"@ssh",
|
|
5
|
+
"plugin:storybook/recommended",
|
|
6
|
+
"plugin:css/recommended"
|
|
7
|
+
],
|
|
8
|
+
"plugins": [
|
|
9
|
+
"css"
|
|
10
|
+
],
|
|
11
|
+
"parserOptions": {
|
|
12
|
+
"project": "./tsconfig.json"
|
|
13
|
+
},
|
|
14
|
+
"ignorePatterns": [
|
|
15
|
+
"dist/",
|
|
16
|
+
"node_modules/"
|
|
17
|
+
],
|
|
18
|
+
"rules": {
|
|
19
|
+
"react/button-has-type": "off",
|
|
20
|
+
"react/jsx-props-no-spreading": "off"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- "main"
|
|
6
|
+
|
|
7
|
+
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
release:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout
|
|
14
|
+
uses: actions/checkout@v3
|
|
15
|
+
|
|
16
|
+
- name: Install Node.js
|
|
17
|
+
uses: actions/setup-node@v3
|
|
18
|
+
with:
|
|
19
|
+
node-version: 18.x
|
|
20
|
+
|
|
21
|
+
- uses: pnpm/action-setup@v2
|
|
22
|
+
name: Install pnpm
|
|
23
|
+
id: pnpm-install
|
|
24
|
+
with:
|
|
25
|
+
version: ^8.x
|
|
26
|
+
run_install: false
|
|
27
|
+
|
|
28
|
+
- name: Get pnpm store directory
|
|
29
|
+
id: pnpm-cache
|
|
30
|
+
shell: bash
|
|
31
|
+
run: |
|
|
32
|
+
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
|
33
|
+
|
|
34
|
+
- uses: actions/cache@v3
|
|
35
|
+
name: Setup pnpm cache
|
|
36
|
+
with:
|
|
37
|
+
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
|
38
|
+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
39
|
+
restore-keys: |
|
|
40
|
+
${{ runner.os }}-pnpm-store-
|
|
41
|
+
|
|
42
|
+
- name: Install dependencies
|
|
43
|
+
run: pnpm install
|
|
44
|
+
|
|
45
|
+
- name: Create Release Pull Request or Publish
|
|
46
|
+
id: changesets
|
|
47
|
+
uses: changesets/action@v1
|
|
48
|
+
with:
|
|
49
|
+
publish: pnpm release
|
|
50
|
+
title: "chore(release): publish"
|
|
51
|
+
commit: "chore(release): publish"
|
|
52
|
+
env:
|
|
53
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
54
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<component name="InspectionProjectProfileManager">
|
|
2
|
+
<profile version="1.0">
|
|
3
|
+
<option name="myName" value="Project Default" />
|
|
4
|
+
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
|
5
|
+
<inspection_tool class="JSLastCommaInObjectLiteral" enabled="false" level="WARNING" enabled_by_default="false" />
|
|
6
|
+
</profile>
|
|
7
|
+
</component>
|
package/.idea/paris.iml
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="WEB_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager">
|
|
4
|
+
<content url="file://$MODULE_DIR$">
|
|
5
|
+
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
|
6
|
+
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
|
7
|
+
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
|
8
|
+
<excludeFolder url="file://$MODULE_DIR$/storybook-static" />
|
|
9
|
+
</content>
|
|
10
|
+
<orderEntry type="inheritedJdk" />
|
|
11
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
12
|
+
</component>
|
|
13
|
+
</module>
|
package/.idea/vcs.xml
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { StorybookConfig } from "@storybook/nextjs";
|
|
2
|
+
import { TsconfigPathsPlugin } from 'tsconfig-paths-webpack-plugin';
|
|
3
|
+
|
|
4
|
+
const config: StorybookConfig = {
|
|
5
|
+
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
|
|
6
|
+
addons: [
|
|
7
|
+
"@storybook/addon-links",
|
|
8
|
+
"@storybook/addon-essentials",
|
|
9
|
+
"@storybook/addon-interactions",
|
|
10
|
+
"storybook-dark-mode",
|
|
11
|
+
],
|
|
12
|
+
framework: {
|
|
13
|
+
name: "@storybook/nextjs",
|
|
14
|
+
options: {},
|
|
15
|
+
},
|
|
16
|
+
docs: {
|
|
17
|
+
autodocs: "tag",
|
|
18
|
+
},
|
|
19
|
+
staticDirs: [
|
|
20
|
+
'../public'
|
|
21
|
+
],
|
|
22
|
+
previewHead: (head) => (
|
|
23
|
+
`${head}
|
|
24
|
+
<style>
|
|
25
|
+
body {
|
|
26
|
+
color: var(--pte-colors-contentPrimary);
|
|
27
|
+
background-color: var(--pte-colors-backgroundPrimary);
|
|
28
|
+
transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
h2#stories {
|
|
32
|
+
letter-spacing: var(--pte-typography-styles-labelMedium-letterSpacing);
|
|
33
|
+
}
|
|
34
|
+
</style>`
|
|
35
|
+
),
|
|
36
|
+
webpackFinal: async (config) => {
|
|
37
|
+
config.resolve.plugins = [
|
|
38
|
+
new TsconfigPathsPlugin()
|
|
39
|
+
];
|
|
40
|
+
return config;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
export default config;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<link rel="stylesheet" href="/graphik/graphik.css" />
|
|
2
|
+
<link rel="stylesheet" href="/fira/fira_code.css" />
|
|
3
|
+
|
|
4
|
+
<style>
|
|
5
|
+
.sidebar-subheading button {
|
|
6
|
+
letter-spacing: 0.1rem !important;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
* {
|
|
10
|
+
transition: color 0.2s ease, background-color 0.2s ease;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
#storybook-explorer-searchfield {
|
|
14
|
+
border-radius: 0;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Preview } from '@storybook/react';
|
|
2
|
+
import { Dark, Light } from './themes';
|
|
3
|
+
import { DocsContainer } from '@storybook/blocks';
|
|
4
|
+
import { useDarkMode } from 'storybook-dark-mode';
|
|
5
|
+
import { createElement, useEffect } from 'react';
|
|
6
|
+
import { injectTheme, LightTheme, DarkTheme } from '../src/stories/theme';
|
|
7
|
+
|
|
8
|
+
import '../public/graphik/graphik.css';
|
|
9
|
+
import '../public/fira/fira_code.css';
|
|
10
|
+
import '../src/styles/globals.css';
|
|
11
|
+
import '../src/styles/tw-preflight.css';
|
|
12
|
+
|
|
13
|
+
const Wrapper = (props: any) => {
|
|
14
|
+
const isDark = useDarkMode();
|
|
15
|
+
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
injectTheme(!isDark ? LightTheme : DarkTheme);
|
|
18
|
+
}, [isDark]);
|
|
19
|
+
|
|
20
|
+
return props.children;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const decorators = [
|
|
24
|
+
(renderStory) => createElement(Wrapper, {}, renderStory()),
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const preview: Preview = {
|
|
28
|
+
parameters: {
|
|
29
|
+
actions: { argTypesRegex: "^on[A-Z].*" },
|
|
30
|
+
backgrounds: { disable: true },
|
|
31
|
+
controls: {
|
|
32
|
+
matchers: {
|
|
33
|
+
color: /(background|color)$/i,
|
|
34
|
+
date: /Date$/,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
docs: {
|
|
38
|
+
container: (context: any) => {
|
|
39
|
+
const isDark = useDarkMode();
|
|
40
|
+
|
|
41
|
+
const props = {
|
|
42
|
+
...context,
|
|
43
|
+
theme: isDark ? Dark : Light,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
injectTheme(!isDark ? LightTheme : DarkTheme);
|
|
48
|
+
}, [isDark]);
|
|
49
|
+
|
|
50
|
+
return createElement(DocsContainer, props);
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
options: {
|
|
54
|
+
storySort: {
|
|
55
|
+
order: [
|
|
56
|
+
'Welcome',
|
|
57
|
+
'Tokens',
|
|
58
|
+
'Inputs',
|
|
59
|
+
'Content',
|
|
60
|
+
'Uncategorized'
|
|
61
|
+
],
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
darkMode: {
|
|
65
|
+
stylePreview: true,
|
|
66
|
+
// Override the default dark theme
|
|
67
|
+
dark: Dark,
|
|
68
|
+
// Override the default light theme
|
|
69
|
+
light: Light
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export default preview;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { create, ThemeVars } from '@storybook/theming';
|
|
2
|
+
import { LightTheme, DarkTheme, pvar } from '../src/stories/theme';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Shared theme variables across light and dark themes.
|
|
6
|
+
*/
|
|
7
|
+
const sharedConfig: Partial<ThemeVars> = {
|
|
8
|
+
brandTitle: 'Paris',
|
|
9
|
+
brandUrl: 'https://slingshot.fm',
|
|
10
|
+
brandTarget: '_blank',
|
|
11
|
+
colorSecondary: '#FB46BE',
|
|
12
|
+
fontBase: '"Graphik Web", sans-serif',
|
|
13
|
+
fontCode: '"Fira Code VF", monospace',
|
|
14
|
+
inputBorderRadius: 0,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const Light = create({
|
|
18
|
+
...sharedConfig,
|
|
19
|
+
base: 'light',
|
|
20
|
+
brandImage: 'https://fast.slingshot.fm/sling/logo/paris-sb.png',
|
|
21
|
+
appBg: LightTheme.colors.backgroundPrimary,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export const Dark = create({
|
|
25
|
+
...sharedConfig,
|
|
26
|
+
base: 'dark',
|
|
27
|
+
brandImage: 'https://fast.slingshot.fm/sling/logo/paris-sb-white.png',
|
|
28
|
+
appBg: DarkTheme.colors.backgroundPrimary,
|
|
29
|
+
appContentBg: DarkTheme.colors.backgroundPrimary,
|
|
30
|
+
});
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# paris
|
|
2
|
+
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 7b3a5fc: `Button` component
|
|
8
|
+
- d1630ec: `Text` component for typography and script for auto-generating typography CSS module + Storybook stories
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- 4a3ecb1: Document tokens, update README and auto-import it to Welcome
|
|
13
|
+
- 6d358a4: Update proof-of-concept `Button` with `pte` theming
|
|
14
|
+
- 952ee38: Add `pte` for theming
|
|
15
|
+
- 3b46865: Circular colors on Tokens page
|
|
16
|
+
- 2059fea: Proper theme injection and updates across stories and docs
|
|
17
|
+
- 72875c5: Set up changesets & husky
|
package/README.md
CHANGED
|
@@ -1,3 +1,43 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Paris
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Paris is Slingshot's React design system, meant to work universally across server and client components. It's a collection of reusable components, design tokens, and guidelines for building consistent, accessible, and performant user interfaces.
|
|
4
|
+
|
|
5
|
+
Currently, Paris is provided as a set of *unbundled* `.tsx` components styled with SCSS modules. This means that you can import only the components you need, and you can use your own bundler to optimize your bundle size. As a result, Paris works best with frameworks like Next.js that have built-in support for TypeScript and SCSS modules.
|
|
6
|
+
|
|
7
|
+
Paris 1.x styling is heavily inspired by Uber's [Base Web](https://baseweb.design), which we previously used in our production apps. We built Paris because to move away from Styletron and CSS-in-JS, since we're now largely working with React 18, RSC, and the Next.js `app` directory.
|
|
8
|
+
|
|
9
|
+
<br />
|
|
10
|
+
|
|
11
|
+
## Getting started
|
|
12
|
+
|
|
13
|
+
First, install Paris and SASS in your project:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm i paris sass
|
|
17
|
+
# or
|
|
18
|
+
yarn add paris sass
|
|
19
|
+
# or
|
|
20
|
+
npm i paris sass
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Map our types in your `.tsconfig.json` file (this is a temporary workaround that we'll fix soon):
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"paths": {
|
|
28
|
+
"paris/*": ["./node_modules/paris/src/stories/*"]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
That's it! You can now import any component from Paris:
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
import { Button } from 'paris/button';
|
|
37
|
+
|
|
38
|
+
const App = () => (
|
|
39
|
+
<Button>Click me</Button>
|
|
40
|
+
);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
This should work out of the box with Next.js, since it has built-in support for TypeScript and SCSS modules. If you're using another framework or bundler, you may need to configure it for generic SCSS support.
|
package/cat
ADDED
package/global.d.ts
ADDED
package/next.config.js
ADDED
package/package.json
CHANGED
|
@@ -1,12 +1,74 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "paris",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
"description": "Paris is Slingshot's React design system. It's a collection of reusable components, design tokens, and guidelines that help us build consistent, accessible, and performant user interfaces.",
|
|
4
|
+
"version": "0.2.0",
|
|
5
|
+
"engines": {
|
|
6
|
+
"pnpm": "^8.x"
|
|
7
|
+
},
|
|
8
|
+
"exports": {
|
|
9
|
+
"./*": "./src/stories/*"
|
|
10
|
+
},
|
|
11
|
+
"peerDependencies": {
|
|
12
|
+
"react": "^18.x || ^17.x",
|
|
13
|
+
"react-dom": "^18.x || ^17.x",
|
|
14
|
+
"sass": "^1.x",
|
|
15
|
+
"typescript": "^5.0 || ^4.9"
|
|
8
16
|
},
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@changesets/cli": "^2.26.1",
|
|
19
|
+
"@ssh/csstypes": "^1.1.0",
|
|
20
|
+
"@ssh/eslint-config": "^1.0.0",
|
|
21
|
+
"@storybook/addon-essentials": "^7.0.12",
|
|
22
|
+
"@storybook/addon-interactions": "^7.0.12",
|
|
23
|
+
"@storybook/addon-links": "^7.0.12",
|
|
24
|
+
"@storybook/blocks": "^7.0.12",
|
|
25
|
+
"@storybook/manager-api": "^7.0.12",
|
|
26
|
+
"@storybook/nextjs": "^7.0.12",
|
|
27
|
+
"@storybook/react": "^7.0.12",
|
|
28
|
+
"@storybook/testing-library": "^0.1.0",
|
|
29
|
+
"@storybook/theming": "^7.0.12",
|
|
30
|
+
"@types/node": "18.15.11",
|
|
31
|
+
"@types/react": "18.0.31",
|
|
32
|
+
"@types/react-dom": "18.0.11",
|
|
33
|
+
"@typescript-eslint/eslint-plugin": "^5.13.0",
|
|
34
|
+
"@typescript-eslint/parser": "^5.0.0",
|
|
35
|
+
"change-case": "^4.1.2",
|
|
36
|
+
"csstype": "^3.1.2",
|
|
37
|
+
"esbuild-scss-modules-plugin": "^1.1.1",
|
|
38
|
+
"eslint": "^8.2.0",
|
|
39
|
+
"eslint-config-next": "13.4.2",
|
|
40
|
+
"eslint-plugin-css": "^0.8.0",
|
|
41
|
+
"eslint-plugin-storybook": "^0.6.12",
|
|
42
|
+
"husky": "^8.0.0",
|
|
43
|
+
"jss": "^10.10.0",
|
|
44
|
+
"jss-preset-default": "^10.10.0",
|
|
45
|
+
"next": "^13.4.2",
|
|
46
|
+
"react": "^18.2.0",
|
|
47
|
+
"react-dom": "^18.2.0",
|
|
48
|
+
"sass": "^1.62.1",
|
|
49
|
+
"storybook": "^7.0.12",
|
|
50
|
+
"storybook-dark-mode": "^3.0.0",
|
|
51
|
+
"title-case": "^3.0.3",
|
|
52
|
+
"ts-node": "^10.9.1",
|
|
53
|
+
"tsconfig-paths-webpack-plugin": "^4.0.1",
|
|
54
|
+
"tsup": "^6.7.0",
|
|
55
|
+
"type-fest": "^3.10.0",
|
|
56
|
+
"typescript": "^5.0.2"
|
|
57
|
+
},
|
|
58
|
+
"dependencies": {
|
|
59
|
+
"pte": "^0.4.7"
|
|
60
|
+
},
|
|
61
|
+
"scripts": {
|
|
62
|
+
"dev": "next dev",
|
|
63
|
+
"build": "next build",
|
|
64
|
+
"start": "next start",
|
|
65
|
+
"lint": "next lint",
|
|
66
|
+
"storybook": "storybook dev -p 6006",
|
|
67
|
+
"build:storybook": "storybook build",
|
|
68
|
+
"create:component": "node ./scripts/createComponent.js",
|
|
69
|
+
"generate:entry": "node ./scripts/generateEntry.js",
|
|
70
|
+
"generate:theme": "pte export ./src/stories/theme/themes.ts LightTheme -o ./public/pte.css",
|
|
71
|
+
"generate:text": "ts-node --esm ./scripts/text.ts",
|
|
72
|
+
"release": "pnpm changeset publish"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: 'Fira Code';
|
|
3
|
+
src: url('woff2/FiraCode-Light.woff2') format('woff2'),
|
|
4
|
+
url("woff/FiraCode-Light.woff") format("woff");
|
|
5
|
+
font-weight: 300;
|
|
6
|
+
font-style: normal;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@font-face {
|
|
10
|
+
font-family: 'Fira Code';
|
|
11
|
+
src: url('woff2/FiraCode-Regular.woff2') format('woff2'),
|
|
12
|
+
url("woff/FiraCode-Regular.woff") format("woff");
|
|
13
|
+
font-weight: 400;
|
|
14
|
+
font-style: normal;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@font-face {
|
|
18
|
+
font-family: 'Fira Code';
|
|
19
|
+
src: url('woff2/FiraCode-Medium.woff2') format('woff2'),
|
|
20
|
+
url("woff/FiraCode-Medium.woff") format("woff");
|
|
21
|
+
font-weight: 500;
|
|
22
|
+
font-style: normal;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@font-face {
|
|
26
|
+
font-family: 'Fira Code';
|
|
27
|
+
src: url('woff2/FiraCode-SemiBold.woff2') format('woff2'),
|
|
28
|
+
url("woff/FiraCode-SemiBold.woff") format("woff");
|
|
29
|
+
font-weight: 600;
|
|
30
|
+
font-style: normal;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@font-face {
|
|
34
|
+
font-family: 'Fira Code';
|
|
35
|
+
src: url('woff2/FiraCode-Bold.woff2') format('woff2'),
|
|
36
|
+
url("woff/FiraCode-Bold.woff") format("woff");
|
|
37
|
+
font-weight: 700;
|
|
38
|
+
font-style: normal;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@font-face {
|
|
42
|
+
font-family: 'Fira Code VF';
|
|
43
|
+
src: url('woff2/FiraCode-VF.woff2') format('woff2-variations'),
|
|
44
|
+
url('woff/FiraCode-VF.woff') format('woff-variations');
|
|
45
|
+
/* font-weight requires a range: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide#Using_a_variable_font_font-face_changes */
|
|
46
|
+
font-weight: 300 700;
|
|
47
|
+
font-style: normal;
|
|
48
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|