@tsmodule/tsmodule 17.0.1 → 17.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +2 -2
  3. package/templates/default/.eslintrc +52 -0
  4. package/templates/default/.github/workflows/ci.yml +30 -0
  5. package/templates/default/.gitignore +10 -0
  6. package/templates/default/README.md +5 -0
  7. package/templates/default/package.json +35 -0
  8. package/templates/default/src/index.ts +4 -0
  9. package/templates/default/test/example.test.ts +7 -0
  10. package/templates/default/tsconfig.json +41 -0
  11. package/templates/react/.eslintrc +54 -0
  12. package/templates/react/.gitignore +11 -0
  13. package/templates/react/next-env.d.ts +5 -0
  14. package/templates/react/next.config.js +18 -0
  15. package/templates/react/package.json +38 -0
  16. package/templates/react/postcss.config.js +6 -0
  17. package/templates/react/src/components/Card/index.tsx +13 -0
  18. package/templates/react/src/components/CardGrid/index.tsx +29 -0
  19. package/templates/react/src/components/Footer/index.tsx +19 -0
  20. package/templates/react/src/components/GetStarted/index.tsx +8 -0
  21. package/templates/react/src/components/Welcome/index.tsx +7 -0
  22. package/templates/react/src/components/index.ts +4 -0
  23. package/templates/react/src/index.ts +1 -0
  24. package/templates/react/src/pages/_app.tsx +13 -0
  25. package/templates/react/src/pages/api/hello.ts +13 -0
  26. package/templates/react/src/pages/index.tsx +26 -0
  27. package/templates/react/src/styles/custom/index.css +0 -0
  28. package/templates/react/src/styles/elements/card/index.css +14 -0
  29. package/templates/react/src/styles/elements/index.css +1 -0
  30. package/templates/react/src/styles/index.css +253 -0
  31. package/templates/react/src/styles/viewport/index.css +26 -0
  32. package/templates/react/src/utils/globs.ts +1 -0
  33. package/templates/react/tailwind.config.js +21 -0
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- var r="@tsmodule/tsmodule",a="module",m="17.0.1",d="tsmodule/tsmodule",s="TypeScript Module loader and compiler",l="MIT",c={tsmodule:"dist/index.js"},p={".":"./dist/loader/index.js","./*":"./dist/*/index.js","./package.json":"./package.json"},u="dist/types/index.d.ts",f=[{name:"C. Lewis",email:"ctj.lewis@icloud.com",url:"https://ctjlewis.com"}],b=["dist/","template/"],v={node:">=14"},g={bootstrap:"node bootstrap.js",bootload:"node --no-warnings --loader ./dist/loader/index.js src/index.ts build -f",prebuild:"yarn bootstrap && yarn bootload && yarn link -f",build:"tsmodule build",dev:"tsmodule dev",lint:"eslint --fix src",prepare:"yarn build -f",prepublishOnly:"yarn build && yarn test",pretest:"yarn build -f",test:"ava --no-worker-threads"},h={"@types/glob":"^7.2.0","@types/node":"^17.0.15","@typescript-eslint/eslint-plugin":"^5.9.1","@typescript-eslint/parser":"^5.9.1",ava:"^4.0.1","await-shell":"^29.0.1-0",chalk:"^5.0.0",commander:"^8.3.0","create-debug-logger":"^1.10.1",esbuild:"^0.14.0",eslint:"^8.8.0","fast-glob":"^3.2.10","fs-extra":"^10.0.0",glob:"^7.2.0","node-watch":"^0.7.3",ora:"^6.0.1",path:"^0.12.7",typescript:"^4.5.5"},S=["esm","loader","typescript","loader hook","require hook","experimental-loader"],w={timeout:"10 minutes",files:["test/**/*.test.ts"],extensions:{ts:"module"},nodeArguments:["--no-warnings","--loader=@tsmodule/tsmodule"]},y={"@types/fs-extra":"^9.0.13"},t={name:r,type:a,version:m,repository:d,description:s,license:l,bin:c,exports:p,types:u,contributors:f,files:b,engines:v,scripts:g,dependencies:h,keywords:S,ava:w,devDependencies:y};import e from"chalk";import{Command as T}from"commander";import{build as B}from"./commands/build/index.js";import{create as C}from"./commands/create/index.js";import{dev as R}from"./commands/dev/index.js";import{execute as j}from"./commands/execute/index.js";import{normalizeImportSpecifiers as x}from"./commands/normalize/index.js";const{version:A}=t,i=new T;i.name(e.white(e.bold("tsmodule"))).usage(e.white(e.bold("<file | command> [options]"))).description(e.blueBright(`A tool for building TypeScript modules.
2
+ var r="@tsmodule/tsmodule",a="module",m="17.0.2",d="tsmodule/tsmodule",s="TypeScript Module loader and compiler",l="MIT",c={tsmodule:"dist/index.js"},p={".":"./dist/loader/index.js","./*":"./dist/*/index.js","./package.json":"./package.json"},u="dist/types/index.d.ts",f=[{name:"C. Lewis",email:"ctj.lewis@icloud.com",url:"https://ctjlewis.com"}],b=["dist/","templates/"],v={node:">=14"},g={bootstrap:"node bootstrap.js",bootload:"node --no-warnings --loader ./dist/loader/index.js src/index.ts build -f",prebuild:"yarn bootstrap && yarn bootload && yarn link -f",build:"tsmodule build",dev:"tsmodule dev",lint:"eslint --fix src",prepare:"yarn build -f",prepublishOnly:"yarn build && yarn test",pretest:"yarn build -f",test:"ava --no-worker-threads"},h={"@types/glob":"^7.2.0","@types/node":"^17.0.15","@typescript-eslint/eslint-plugin":"^5.9.1","@typescript-eslint/parser":"^5.9.1",ava:"^4.0.1","await-shell":"^29.0.1-0",chalk:"^5.0.0",commander:"^8.3.0","create-debug-logger":"^1.10.1",esbuild:"^0.14.0",eslint:"^8.8.0","fast-glob":"^3.2.10","fs-extra":"^10.0.0",glob:"^7.2.0","node-watch":"^0.7.3",ora:"^6.0.1",path:"^0.12.7",typescript:"^4.5.5"},S=["esm","loader","typescript","loader hook","require hook","experimental-loader"],w={timeout:"10 minutes",files:["test/**/*.test.ts"],extensions:{ts:"module"},nodeArguments:["--no-warnings","--loader=@tsmodule/tsmodule"]},y={"@types/fs-extra":"^9.0.13"},t={name:r,type:a,version:m,repository:d,description:s,license:l,bin:c,exports:p,types:u,contributors:f,files:b,engines:v,scripts:g,dependencies:h,keywords:S,ava:w,devDependencies:y};import e from"chalk";import{Command as T}from"commander";import{build as B}from"./commands/build/index.js";import{create as C}from"./commands/create/index.js";import{dev as R}from"./commands/dev/index.js";import{execute as j}from"./commands/execute/index.js";import{normalizeImportSpecifiers as x}from"./commands/normalize/index.js";const{version:A}=t,i=new T;i.name(e.white(e.bold("tsmodule"))).usage(e.white(e.bold("<file | command> [options]"))).description(e.blueBright(`A tool for building TypeScript modules.
3
3
 
4
4
  Run TS directly: ${e.bold("tsmodule src/index.ts")}
5
5
  Use a command: ${e.bold("tsmodule build")}`)).version(String(A)),i.command("dev").description("Build and watch for changes.").action(R),i.command("build").option("--files <files>","The files to build (default: all)").option("-d, --dev","Build development version").option("-f, --fast","Do not emit type declarations, only transform to JS").description("Builds TS files to output in dist/.").action(B),i.command("create <name>").option("--react","Create React component library with Next.js").description("Create a new project.").action(C),i.command("normalize [files]").description(`Rewrites import specifiers in files to ESM-compliant paths.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tsmodule/tsmodule",
3
3
  "type": "module",
4
- "version": "17.0.1",
4
+ "version": "17.0.2",
5
5
  "repository": "tsmodule/tsmodule",
6
6
  "description": "TypeScript Module loader and compiler",
7
7
  "license": "MIT",
@@ -23,7 +23,7 @@
23
23
  ],
24
24
  "files": [
25
25
  "dist/",
26
- "template/"
26
+ "templates/"
27
27
  ],
28
28
  "engines": {
29
29
  "node": ">=14"
@@ -0,0 +1,52 @@
1
+ {
2
+ "extends": [
3
+ "plugin:@typescript-eslint/recommended"
4
+ ],
5
+ "parser": "@typescript-eslint/parser",
6
+ "plugins": ["@typescript-eslint"],
7
+ "rules": {
8
+
9
+ "no-console": "error",
10
+ "no-trailing-spaces": "error",
11
+ "max-len": [1, 80, 2, {
12
+ "ignorePattern": "^import\\s.+\\sfrom\\s.+;$",
13
+ "ignoreUrls": true,
14
+ "ignoreStrings": true,
15
+ "ignoreTemplateLiterals": true,
16
+ "ignoreRegExpLiterals": true
17
+ }],
18
+
19
+ "@typescript-eslint/type-annotation-spacing": ["error"],
20
+
21
+ "@typescript-eslint/ban-ts-comment": [
22
+ "error",
23
+ {
24
+ "ts-nocheck": "allow-with-description",
25
+ "ts-ignore": "allow-with-description"
26
+ }
27
+ ],
28
+
29
+ "indent": "off",
30
+ "@typescript-eslint/indent": ["error", 2],
31
+
32
+ "semi": "off",
33
+ "@typescript-eslint/semi": ["error", "always"],
34
+
35
+ "quotes": "off",
36
+ "@typescript-eslint/quotes": ["error", "double"],
37
+
38
+ "object-curly-spacing": "off",
39
+ "@typescript-eslint/object-curly-spacing": ["error", "always"],
40
+
41
+ "sort-imports": [
42
+ "warn",
43
+ {
44
+ "ignoreCase": false,
45
+ "ignoreDeclarationSort": false,
46
+ "ignoreMemberSort": true,
47
+ "memberSyntaxSortOrder": ["none", "all", "multiple", "single"],
48
+ "allowSeparatedGroups": true
49
+ }
50
+ ]
51
+ }
52
+ }
@@ -0,0 +1,30 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - '**'
7
+ pull_request:
8
+ branches:
9
+ - '**'
10
+
11
+ jobs:
12
+ test:
13
+ name: Node ${{ matrix.nodejs }} on ${{ matrix.os }}
14
+ runs-on: ${{ matrix.os }}
15
+ timeout-minutes: 10
16
+ strategy:
17
+ matrix:
18
+ nodejs: [14, 16, "lts/*"]
19
+ os: [ubuntu-latest, windows-latest, macos-latest]
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+ - uses: actions/setup-node@v2
23
+ with:
24
+ node-version: ${{ matrix.nodejs }}
25
+
26
+ - name: Install and link
27
+ run: yarn install --frozen-lockfile && yarn build
28
+
29
+ - name: Test
30
+ run: yarn test
@@ -0,0 +1,10 @@
1
+ node_modules
2
+
3
+ # Potential Firebase / GCP credentials.
4
+ service-account.json
5
+
6
+ # Emitted output.
7
+ dist/
8
+
9
+ # Incremental TS build info.
10
+ *.tsbuildinfo
@@ -0,0 +1,5 @@
1
+ This is a TS module. Build it with tsmodule via:
2
+
3
+ ```shell
4
+ yarn build
5
+ ```
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "template",
3
+ "type": "module",
4
+ "version": "0.0.1",
5
+ "license": "MIT",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "exports": {
11
+ "./package.json": "./package.json",
12
+ ".": "./dist/index.js",
13
+ "./*": "./dist/*/index.js"
14
+ },
15
+ "scripts": {
16
+ "build": "tsmodule build",
17
+ "test": "ava",
18
+ "lint": "eslint src --fix",
19
+ "pretest": "tsmodule build -f",
20
+ "prepublishOnly": "yarn build && yarn test"
21
+ },
22
+ "ava": {
23
+ "timout": 240000,
24
+ "files": [
25
+ "test/**/*.test.ts"
26
+ ],
27
+ "extensions": {
28
+ "ts": "module"
29
+ },
30
+ "nodeArguments": [
31
+ "--no-warnings",
32
+ "--loader=@tsmodule/tsmodule"
33
+ ]
34
+ }
35
+ }
@@ -0,0 +1,4 @@
1
+ export const helloWorld = () => {
2
+ // eslint-disable-next-line no-console
3
+ console.log("Hello World!");
4
+ };
@@ -0,0 +1,7 @@
1
+ import test from "ava";
2
+
3
+ test("two plus two should equal four", (t) => {
4
+ if (2 + 2 === 4) {
5
+ t.pass();
6
+ }
7
+ });
@@ -0,0 +1,41 @@
1
+ {
2
+ "include": [
3
+ "*env.d.ts",
4
+ "src/**/*"
5
+ ],
6
+ "exclude": [
7
+ "node_modules",
8
+ "test/**"
9
+ ],
10
+ "compilerOptions": {
11
+ "moduleResolution": "Node",
12
+ "target": "ESNext",
13
+ "module": "ESNext",
14
+ "lib": [
15
+ "DOM",
16
+ "DOM.Iterable",
17
+ "ESNext"
18
+ ],
19
+ "jsx": "preserve",
20
+ "rootDir": "src",
21
+ "outDir": "dist",
22
+ "allowJs": true,
23
+ "importHelpers": true,
24
+ "esModuleInterop": true,
25
+ "allowSyntheticDefaultImports": true,
26
+ "strict": true,
27
+ "noUnusedLocals": true,
28
+ "noUnusedParameters": true,
29
+ "noImplicitReturns": true,
30
+ "noFallthroughCasesInSwitch": true,
31
+ "skipLibCheck": true,
32
+ "resolveJsonModule": true,
33
+ "declaration": true,
34
+ "sourceMap": true,
35
+ "checkJs": true,
36
+ "noEmit": false,
37
+ "forceConsistentCasingInFileNames": true,
38
+ "isolatedModules": true,
39
+ "incremental": false
40
+ }
41
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "extends": [
3
+ "plugin:@typescript-eslint/recommended",
4
+ "next",
5
+ "next/core-web-vitals"
6
+ ],
7
+ "parser": "@typescript-eslint/parser",
8
+ "plugins": ["@typescript-eslint"],
9
+ "rules": {
10
+
11
+ "no-console": "error",
12
+ "no-trailing-spaces": "error",
13
+ "max-len": [1, 80, 2, {
14
+ "ignorePattern": "^import\\s.+\\sfrom\\s.+;$",
15
+ "ignoreUrls": true,
16
+ "ignoreStrings": true,
17
+ "ignoreTemplateLiterals": true,
18
+ "ignoreRegExpLiterals": true
19
+ }],
20
+
21
+ "@typescript-eslint/type-annotation-spacing": ["error"],
22
+
23
+ "@typescript-eslint/ban-ts-comment": [
24
+ "error",
25
+ {
26
+ "ts-nocheck": "allow-with-description",
27
+ "ts-ignore": "allow-with-description"
28
+ }
29
+ ],
30
+
31
+ "indent": "off",
32
+ "@typescript-eslint/indent": ["error", 2],
33
+
34
+ "semi": "off",
35
+ "@typescript-eslint/semi": ["error", "always"],
36
+
37
+ "quotes": "off",
38
+ "@typescript-eslint/quotes": ["error", "double"],
39
+
40
+ "object-curly-spacing": "off",
41
+ "@typescript-eslint/object-curly-spacing": ["error", "always"],
42
+
43
+ "sort-imports": [
44
+ "warn",
45
+ {
46
+ "ignoreCase": false,
47
+ "ignoreDeclarationSort": false,
48
+ "ignoreMemberSort": true,
49
+ "memberSyntaxSortOrder": ["none", "all", "multiple", "single"],
50
+ "allowSeparatedGroups": true
51
+ }
52
+ ]
53
+ }
54
+ }
@@ -0,0 +1,11 @@
1
+ node_modules
2
+
3
+ # Potential Firebase / GCP credentials.
4
+ service-account.json
5
+
6
+ # Emitted output.
7
+ dist/
8
+ .next/
9
+
10
+ # Incremental TS build info.
11
+ *.tsbuildinfo
@@ -0,0 +1,5 @@
1
+ /// <reference types="next" />
2
+ /// <reference types="next/image-types/global" />
3
+
4
+ // NOTE: This file should not be edited
5
+ // see https://nextjs.org/docs/basic-features/typescript for more information.
@@ -0,0 +1,18 @@
1
+ module.exports = {
2
+ reactStrictMode: true,
3
+ webpack: (config) => {
4
+ // config.experiments = { topLevelAwait: true };
5
+ // config.resolve.fallback = {
6
+ // assert: false,
7
+ // process: false,
8
+ // events: false,
9
+ // fs: false,
10
+ // util: false,
11
+ // path: false,
12
+ // stream: false,
13
+ // constants: false,
14
+ // os: false,
15
+ // };
16
+ return config;
17
+ },
18
+ };
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "template",
3
+ "version": "0.0.1",
4
+ "license": "MIT",
5
+ "types": "dist/index.d.ts",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "exports": {
10
+ ".": "./dist/index.js",
11
+ "./styles": "./dist/styles/index.css",
12
+ "./styles/*": "./dist/styles/*/index.css",
13
+ "./package.json": "./package.json",
14
+ "./*": "./dist/components/*/index.js"
15
+ },
16
+ "scripts": {
17
+ "export": "tsmodule build",
18
+ "dev": "next dev",
19
+ "build": "next build",
20
+ "start": "next start",
21
+ "lint": "next lint --fix",
22
+ "test": "ava",
23
+ "prepublishOnly": "yarn build && yarn test"
24
+ },
25
+ "ava": {
26
+ "timout": 240000,
27
+ "files": [
28
+ "test/**/*.test.ts"
29
+ ],
30
+ "extensions": {
31
+ "ts": "module"
32
+ },
33
+ "nodeArguments": [
34
+ "--no-warnings",
35
+ "--loader=@tsmodule/tsmodule"
36
+ ]
37
+ }
38
+ }
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ }
@@ -0,0 +1,13 @@
1
+ import { FC } from "react";
2
+
3
+ interface CardProps {
4
+ href: string;
5
+ }
6
+
7
+ export const Card: FC<CardProps> = ({ href, children }) => {
8
+ return (
9
+ <a href={href} className="card">
10
+ {children}
11
+ </a>
12
+ );
13
+ };
@@ -0,0 +1,29 @@
1
+ import { Card } from "../Card";
2
+
3
+ export const CardGrid = () => {
4
+ return (
5
+ <div className="grid md:grid-cols-2">
6
+ <a href="https://nextjs.org/docs" className="card">
7
+ <h4>Documentation &rarr;</h4>
8
+ <p>Find in-depth information about Next.js features and API.</p>
9
+ </a>
10
+
11
+ <Card href="https://nextjs.org/learn">
12
+ <h4>Learn &rarr;</h4>
13
+ <p>Learn about Next.js in an interactive course with quizzes!</p>
14
+ </Card>
15
+
16
+ <Card href="https://github.com/vercel/next.js/tree/master/examples">
17
+ <h4>Examples &rarr;</h4>
18
+ <p>Discover and deploy boilerplate example Next.js projects.</p>
19
+ </Card>
20
+
21
+ <Card href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app">
22
+ <h4>Deploy &rarr;</h4>
23
+ <p>
24
+ Instantly deploy your Next.js site to a public URL with Vercel.
25
+ </p>
26
+ </Card>
27
+ </div>
28
+ );
29
+ };
@@ -0,0 +1,19 @@
1
+ import Image from "next/image";
2
+
3
+ export const Footer = () => {
4
+ return (
5
+ <footer>
6
+ <a
7
+ className="flex-center"
8
+ href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
9
+ target="_blank"
10
+ rel="noopener noreferrer"
11
+ >
12
+ Powered by{" "}
13
+ <span className="h-4 ml-2 flex-center">
14
+ <Image src="/vercel.svg" alt="Vercel Logo" width={72} height={16} />
15
+ </span>
16
+ </a>
17
+ </footer>
18
+ );
19
+ };
@@ -0,0 +1,8 @@
1
+ export const GetStarted = () => {
2
+ return (
3
+ <p className="my-8 text-center md:my-16 font-size-3">
4
+ Get started by editing{" "}
5
+ <code className="code">pages/index.js</code>
6
+ </p>
7
+ );
8
+ };
@@ -0,0 +1,7 @@
1
+ export const Welcome = () => {
2
+ return (
3
+ <h1 className="text-center">
4
+ Welcome to <a href="https://nextjs.org">Next.js!</a>
5
+ </h1>
6
+ );
7
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./Card";
2
+ export * from "./CardGrid";
3
+ export * from "./GetStarted";
4
+ export * from "./Welcome";
@@ -0,0 +1 @@
1
+ export * from "./components";
@@ -0,0 +1,13 @@
1
+ import "../styles/index.css";
2
+ import type { AppProps } from "next/app";
3
+ import { StrictMode } from "react";
4
+
5
+ function MyApp({ Component, pageProps }: AppProps) {
6
+ return (
7
+ <StrictMode>
8
+ <Component {...pageProps} />
9
+ </StrictMode>
10
+ );
11
+ }
12
+
13
+ export default MyApp;
@@ -0,0 +1,13 @@
1
+ // Next.js API route support: https://nextjs.org/docs/api-routes/introduction
2
+ import type { NextApiRequest, NextApiResponse } from "next";
3
+
4
+ type Data = {
5
+ name: string
6
+ };
7
+
8
+ export default function handler(
9
+ _: NextApiRequest,
10
+ res: NextApiResponse<Data>
11
+ ) {
12
+ res.status(200).json({ name: "John Doe" });
13
+ }
@@ -0,0 +1,26 @@
1
+ import Head from "next/head";
2
+
3
+ import { CardGrid } from "../components/CardGrid";
4
+ import { Footer } from "../components/Footer";
5
+ import { GetStarted } from "../components/GetStarted";
6
+ import { Welcome } from "../components/Welcome";
7
+
8
+ export default function Home() {
9
+ return (
10
+ <>
11
+ <Head>
12
+ <title>Create Next App</title>
13
+ <meta name="description" content="Generated by create next app" />
14
+ <link rel="icon" href="/favicon.ico" />
15
+ </Head>
16
+
17
+ <main>
18
+ <Welcome />
19
+ <GetStarted />
20
+ <CardGrid />
21
+ </main>
22
+
23
+ <Footer />
24
+ </>
25
+ );
26
+ }
File without changes
@@ -0,0 +1,14 @@
1
+ .card {
2
+ @apply m-4 p-6 text-left rounded-lg;
3
+ text-decoration: none;
4
+ border: 1px solid #eaeaea;
5
+ transition: color 0.15s ease, border-color 0.15s ease;
6
+ /* max-width: 300px; */
7
+ }
8
+
9
+ .card:hover,
10
+ .card:focus,
11
+ .card:active {
12
+ color: #0070f3;
13
+ border-color: #0070f3;
14
+ }
@@ -0,0 +1 @@
1
+ @import './card/index.css';
@@ -0,0 +1,253 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ /* FONTS: Customize */
6
+ @layer base {
7
+ /* Style your serif font here. */
8
+ .serif {
9
+ font-family: serif;
10
+ }
11
+
12
+ /* Style your sans font here. */
13
+ .sans-serif {
14
+ font-family: sans-serif;
15
+ }
16
+
17
+ /* Style your display font here. */
18
+ .display {}
19
+
20
+ /* Style your interface font here. */
21
+ .interface {
22
+ font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
23
+ Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
24
+ }
25
+ }
26
+
27
+ /* DEFAULT BODY FONT */
28
+ @layer base {
29
+ html, body {
30
+ @apply font-size-sm interface;
31
+ }
32
+ }
33
+
34
+ /* LINKS */
35
+ @layer base {
36
+ a {
37
+ @apply underline;
38
+ color: inherit;
39
+ text-decoration: none;
40
+ }
41
+
42
+ h1 a,
43
+ h2 a,
44
+ h3 a,
45
+ h4 a,
46
+ h5 a,
47
+ h6 a {
48
+ color: #0070f3;
49
+ }
50
+
51
+ /* If the user can hover, transition in by default. */
52
+ @media (hover: hover) {
53
+ a {
54
+ transition: 300ms;
55
+ text-decoration: underline;
56
+ text-decoration-color: transparent;
57
+ }
58
+
59
+ a:hover {
60
+ text-decoration-color: inherit;
61
+ }
62
+ }
63
+ }
64
+
65
+ /* FONT SIZES */
66
+ @layer base {
67
+ .font-size-1 {
68
+ @apply text-4xl sm:text-5xl 2xl:text-6xl 4xl:text-8xl;
69
+ }
70
+
71
+ .font-size-2 {
72
+ @apply text-2xl sm:text-4xl 2xl:text-5xl 4xl:text-6xl;
73
+ }
74
+
75
+ .font-size-3 {
76
+ @apply text-xl sm:text-2xl 2xl:text-4xl 4xl:text-5xl;
77
+ }
78
+
79
+ .font-size-base {
80
+ @apply text-lg sm:text-xl 2xl:text-2xl 4xl:text-3xl;
81
+ }
82
+
83
+ .font-size-sm {
84
+ @apply text-base 2xl:text-lg 4xl:text-2xl;
85
+ }
86
+
87
+ .font-size-xs {
88
+ @apply text-sm 2xl:text-base 4xl:text-lg;
89
+ }
90
+ }
91
+
92
+ /* HEADINGS */
93
+ @layer base {
94
+ h1, .h1,
95
+ h2, .h2,
96
+ h3, .h3,
97
+ h4, .h4,
98
+ h5, .h5,
99
+ h6, .h6 {
100
+ @apply font-bold display;
101
+ @apply pb-2 leading-snug;
102
+ }
103
+
104
+ h1, .h1 {
105
+ @apply font-size-1;
106
+ }
107
+
108
+ h2, .h2 {
109
+ @apply font-size-2;
110
+ }
111
+
112
+ h3, .h3 {
113
+ @apply font-size-3;
114
+ }
115
+
116
+ h4, .h4 {
117
+ @apply font-size-base;
118
+ }
119
+
120
+ h5, .h5 {
121
+ @apply font-size-sm;
122
+ }
123
+
124
+ h6, .h6 {
125
+ @apply font-size-xs;
126
+ }
127
+
128
+ .title {
129
+ @apply mt-2 display font-bold;
130
+ }
131
+
132
+ .title p {
133
+ @apply p-0 m-0;
134
+ }
135
+ }
136
+
137
+ /* FLEX */
138
+ @layer base {
139
+ /**
140
+ * A container that fills its parent.
141
+ */
142
+ .expanded {
143
+ @apply h-full w-full;
144
+ }
145
+ /**
146
+ * Flex container that fills its content.
147
+ */
148
+ .filled {
149
+ @apply flex flex-1 items-stretch;
150
+ }
151
+ /**
152
+ * A pure-flex container will be display: flex.
153
+ */
154
+ .pure-flex {
155
+ @apply flex;
156
+ }
157
+ /**
158
+ * And its immediate children will have zero padding and margin.
159
+ */
160
+ .pure-flex > * {
161
+ @apply m-0 p-0;
162
+ }
163
+ /*
164
+ * A flex container centered along both axes.
165
+ */
166
+ .flex-center {
167
+ @apply flex justify-center items-center;
168
+ }
169
+ /**
170
+ * Center flex and text.
171
+ */
172
+ .center {
173
+ @apply flex-center text-center;
174
+ }
175
+ }
176
+
177
+ /* CONTENT */
178
+ @layer base {
179
+ code {}
180
+
181
+ main {
182
+ @apply p-8 flex-col filled flex-center;
183
+ }
184
+
185
+ header {
186
+ z-index: 9999;
187
+ }
188
+
189
+ footer {
190
+ @apply flex-center py-4 border-t-2 border-gray-200;
191
+ }
192
+
193
+ article {
194
+ @apply font-size-base serif mx-auto;
195
+ @apply max-w-screen-sm lg:max-w-screen-lg 2xl:max-w-screen-2xl 4xl:max-w-screen-4xl;
196
+ }
197
+ }
198
+
199
+ /* FORMS */
200
+ @layer base {
201
+ button, .button {
202
+ text-decoration: none !important;
203
+ @apply cursor-pointer;
204
+ @apply pure-flex flex-center;
205
+ @apply px-8 py-4;
206
+ @apply rounded-lg border-2;
207
+ @apply bg-blue-500 text-white font-bold;
208
+ }
209
+
210
+ label {
211
+ @apply p-4 font-light;
212
+ }
213
+
214
+ input {
215
+ @apply border-2 border-gray-300 rounded-lg;
216
+ @apply p-2;
217
+ }
218
+
219
+ select {
220
+ @apply bg-white;
221
+ @apply border-2 border-gray-300 rounded-lg;
222
+ @apply p-2;
223
+ }
224
+
225
+ /* Buttons already signal that the user can interact by touching. */
226
+ button, .button {
227
+ text-decoration: none !important;
228
+ @apply cursor-pointer;
229
+ @apply pure-flex flex-center;
230
+ @apply px-8 py-4;
231
+ @apply rounded-lg border-2;
232
+ @apply bg-blue-500 text-white font-bold;
233
+ }
234
+ }
235
+
236
+ /* TABLES */
237
+ @layer base {
238
+ table {
239
+ @apply mx-auto w-full;
240
+ }
241
+
242
+ table tr, table tr div {
243
+ @apply truncate;
244
+ }
245
+
246
+ table tr:nth-child(even) {
247
+ /* @apply bg-gray-400; */
248
+ }
249
+ }
250
+
251
+ @import './elements/index.css';
252
+ @import './viewport/index.css';
253
+ @import './custom/index.css';
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Ensure the page fills the viewport. Prevent purgecss from removing this
3
+ * styling, which it likes to do for the #__next selector.
4
+ */
5
+ /* purgecss start ignore */
6
+ html, body, #__next, #root, main {
7
+ /* Border-box, no padding. */
8
+ @apply m-0 p-0 box-border;
9
+ /* Fill screen, flex column, stretch items. */
10
+ @apply min-h-screen flex-col;
11
+ }
12
+
13
+ html,
14
+ body {
15
+ background: #fafafa;
16
+
17
+ /* font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
18
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
19
+ sans-serif; */
20
+ -webkit-font-smoothing: antialiased;
21
+ -moz-osx-font-smoothing: grayscale;
22
+ /* background-color: #90d5ec; */
23
+ /* background-image: linear-gradient(320deg, #fec3c5 20%, #d1ebf6 80%); */
24
+ }
25
+
26
+ /* purgecss end ignore */
@@ -0,0 +1 @@
1
+ export const PRODUCTION = process.env.NODE_ENV === 'production';
@@ -0,0 +1,21 @@
1
+ module.exports = {
2
+ content: ["src/**/*.{js,ts,jsx,tsx}"],
3
+ theme: {
4
+ extend: {
5
+ screens: {
6
+ "3xl": "1920px",
7
+ "4xl": "3840px",
8
+ },
9
+ backgroundImage: {
10
+ "gradient-radial": "radial-gradient(var(--tw-gradient-stops))"
11
+ },
12
+ border : [ "hover"],
13
+
14
+
15
+ },
16
+ },
17
+ variants: {
18
+ extend: {},
19
+ },
20
+ plugins: [],
21
+ };