From 1de48ee17a168a4f6b8e63e1f6bbd8f828b425fb Mon Sep 17 00:00:00 2001 From: Kabir Goel Date: Sat, 17 Jun 2023 18:22:33 -0700 Subject: [PATCH] Support Tailwind out of the box (#1155) --- .../jinja/web/tailwind.config.js.jinja2 | 17 +++++++++ pynecone/.templates/web/bun.lockb | Bin 257247 -> 284503 bytes pynecone/.templates/web/package.json | 5 +++ pynecone/.templates/web/pages/_app.js | 2 + pynecone/.templates/web/postcss.config.js | 6 +++ pynecone/.templates/web/styles/tailwind.css | 3 ++ pynecone/app.py | 7 ++++ pynecone/compiler/compiler.py | 36 ++++++++++++++++++ pynecone/compiler/templates.py | 3 ++ pynecone/config.py | 5 ++- pynecone/constants.py | 4 ++ 11 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 pynecone/.templates/jinja/web/tailwind.config.js.jinja2 create mode 100644 pynecone/.templates/web/postcss.config.js create mode 100644 pynecone/.templates/web/styles/tailwind.css diff --git a/pynecone/.templates/jinja/web/tailwind.config.js.jinja2 b/pynecone/.templates/jinja/web/tailwind.config.js.jinja2 new file mode 100644 index 000000000..afe9ecfa0 --- /dev/null +++ b/pynecone/.templates/jinja/web/tailwind.config.js.jinja2 @@ -0,0 +1,17 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: {{content|json_dumps}}, + theme: {{theme|json_dumps}}, + plugins: [ + {% for plugin in plugins %} + require({{plugin|json_dumps}}), + {% endfor %} + ], + {% if presets is defined %} + presets: [ + {% for preset in presets %} + require({{preset|json_dumps}}) + {% endfor %} + ] + {% endif %} +}; diff --git a/pynecone/.templates/web/bun.lockb b/pynecone/.templates/web/bun.lockb index c5a22c3e032df388fa4c830d137454b7ed8d7367..a1152504c2a693b556cf7e08419abc1c8111971c 100755 GIT binary patch delta 76618 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

iemyq8)~Nls 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 DgHIhy delta 55945 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 str: ) +def _compile_tailwind( + config: dict, +) -> str: + """Compile the Tailwind config. + + Args: + config: The Tailwind config. + + Returns: + The compiled Tailwind config. + """ + return templates.TAILWIND_CONFIG.render( + **config, + ) + + def write_output(fn: Callable[..., Tuple[str, str]]): """Write the output of the function to a file. @@ -239,6 +255,26 @@ def compile_components(components: Set[CustomComponent]): return output_path, code +@write_output +def compile_tailwind( + config: dict, +): + """Compile the Tailwind config. + + Args: + config: The Tailwind config. + + Returns: + The compiled Tailwind config. + """ + # Get the path for the output file. + output_path = constants.TAILWIND_CONFIG + + # Compile the config. + code = _compile_tailwind(config) + return output_path, code + + def purge_web_pages_dir(): """Empty out .web directory.""" template_files = ["_app.js", "404.js"] diff --git a/pynecone/compiler/templates.py b/pynecone/compiler/templates.py index c336aa258..beae4f88a 100644 --- a/pynecone/compiler/templates.py +++ b/pynecone/compiler/templates.py @@ -65,6 +65,9 @@ DOCUMENT_ROOT = get_template("web/pages/_document.js.jinja2") # Template for the theme file. THEME = get_template("web/utils/theme.js.jinja2") +# Template for Tailwind config. +TAILWIND_CONFIG = get_template("web/tailwind.config.js.jinja2") + # Code to render a single NextJS page. PAGE = get_template("web/pages/index.js.jinja2") diff --git a/pynecone/config.py b/pynecone/config.py index 67889ac98..a44acbe71 100644 --- a/pynecone/config.py +++ b/pynecone/config.py @@ -6,7 +6,7 @@ import importlib import os import sys import urllib.parse -from typing import List, Optional +from typing import Any, Dict, List, Optional from dotenv import load_dotenv @@ -197,6 +197,9 @@ class Config(Base): # Whether to override OS environment variables. override_os_envs: Optional[bool] = True + # Tailwind config. + tailwind: Optional[Dict[str, Any]] = None + # Timeout when launching the gunicorn server. timeout: int = constants.TIMEOUT diff --git a/pynecone/constants.py b/pynecone/constants.py index 36681a20f..bf38acb39 100644 --- a/pynecone/constants.py +++ b/pynecone/constants.py @@ -77,6 +77,10 @@ WEB_STATIC_DIR = os.path.join(WEB_DIR, "_static") WEB_UTILS_DIR = os.path.join(WEB_DIR, UTILS_DIR) # The directory where the assets are located. WEB_ASSETS_DIR = os.path.join(WEB_DIR, "public") +# The Tailwind config. +TAILWIND_CONFIG = os.path.join(WEB_DIR, "tailwind.config.js") +# Default Tailwind content paths +TAILWIND_CONTENT = ["./pages/**/*.{js,ts,jsx,tsx}"] # The sitemap config file. SITEMAP_CONFIG_FILE = os.path.join(WEB_DIR, "next-sitemap.config.js") # The node modules directory.