From b9be244ff632b4a5743a2c4010d8db89501e4509 Mon Sep 17 00:00:00 2001
From: paku <paku@skyizwhite.dev>
Date: Thu, 3 Oct 2024 02:03:14 +0900
Subject: [PATCH] Use standalone CLI of TailwindCSS

---
 .gitignore                |   2 +-
 Makefile                  |  37 ++++++++++++++++++++++++++++++-------
 bun.lockb                 | Bin 41874 -> 0 bytes
 package.json              |   6 ------
 qlfile.lock               |   2 +-
 src/routes/index.lisp     |  14 ++++++++++++--
 src/routes/not-found.lisp |   2 +-
 tailwind.config.js        |   7 +------
 8 files changed, 46 insertions(+), 24 deletions(-)
 delete mode 100755 bun.lockb
 delete mode 100644 package.json

diff --git a/.gitignore b/.gitignore
index 026fb0a..e63012d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
 .qlot
 public/dist.css
-node_modules
+bin/tailwindcss
diff --git a/Makefile b/Makefile
index 6e473ab..88584ac 100644
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,35 @@
-install: ## Install dependencies
+TAILWINDCSS_URL=https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-macos-arm64
+TAILWIND_TARGET=tailwindcss-macos-arm64
+BIN_DIR=./bin
+TAILWIND_BIN=$(BIN_DIR)/tailwindcss
+STYLE_SRC=./public/style.css
+STYLE_DIST=./public/dist.css
+
+all: install
+
+install: ## Download TailwindCSS binary and install other dependencies
+	@echo "Creating bin directory if it doesn't exist..."
+	mkdir -p $(BIN_DIR)
+	@echo "Downloading TailwindCSS binary..."
+	curl -sLO $(TAILWINDCSS_URL)
+	@echo "Making TailwindCSS binary executable..."
+	chmod +x $(TAILWIND_TARGET)
+	@echo "Moving TailwindCSS binary to $(BIN_DIR)..."
+	mv $(TAILWIND_TARGET) $(TAILWIND_BIN)
+	@echo "TailwindCSS is ready in $(BIN_DIR)/"
+	@echo "Installing qlot dependencies..."
 	@qlot install
 
-watch: ## Run watch mode
-	@bun run tailwindcss -i ./public/style.css -o ./public/dist.css --watch=always
+watch: ## Start TailwindCSS in watch mode for automatic rebuilds
+	@$(TAILWIND_BIN) -i $(STYLE_SRC) -o $(STYLE_DIST) --watch=always
 
-build: ## Build
-	@bun run tailwindcss -i ./public/style.css -o ./public/dist.css
+build: ## Generate the final CSS output
+	@$(TAILWIND_BIN) -i $(STYLE_SRC) -o $(STYLE_DIST)
 
-help: ## Show options
+help: ## Display available commands and their descriptions
 	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
-		awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
\ No newline at end of file
+		awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
+
+clean: ## Remove the bin directory and clean up generated files
+	@echo "Removing $(BIN_DIR)..."
+	rm -rf $(BIN_DIR)
\ No newline at end of file
diff --git a/bun.lockb b/bun.lockb
deleted file mode 100755
index ca8f5b850ed172e7956adef5f65f356b487d2770..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 41874
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
S8m}oWQhI54&;P&g|NjD&PfI-j

diff --git a/package.json b/package.json
deleted file mode 100644
index f59efc1..0000000
--- a/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "devDependencies": {
-    "daisyui": "^4.12.2",
-    "tailwindcss": "^3.4.4"
-  }
-}
\ No newline at end of file
diff --git a/qlfile.lock b/qlfile.lock
index 007ec94..0233c46 100644
--- a/qlfile.lock
+++ b/qlfile.lock
@@ -17,7 +17,7 @@
 ("hsx" .
  (:class qlot/source/git:source-git
   :initargs (:remote-url "https://github.com/skyizwhite/hsx.git")
-  :version "git-4e83acaae7570b89efaf821809a534e2d5de278e"))
+  :version "git-6f8df3e00da00b977c623cc2e1b42d53d06d259f"))
 ("ningle-fbr" .
  (:class qlot/source/git:source-git
   :initargs (:remote-url "https://github.com/skyizwhite/ningle-fbr.git")
diff --git a/src/routes/index.lisp b/src/routes/index.lisp
index 3817195..f7f4bc1 100644
--- a/src/routes/index.lisp
+++ b/src/routes/index.lisp
@@ -6,8 +6,18 @@
 
 (defcomp page ()
   (hsx
-   (h1 :class "text-primary"
-     "こんにちは")))
+   (<>
+     (h1 :class "text-green-600"
+       "こんにちは")
+     (div :x-data "{
+         open: false,
+         get isOpen() { return this.open },
+         toggle() { this.open = ! this.open },
+     }"
+       (button :@click "toggle()"
+         "Toggle")
+       (div :x-show "isOpen"
+         "Content ...")))))
 
 (defun handle-get (params)
   (declare (ignore params))
diff --git a/src/routes/not-found.lisp b/src/routes/not-found.lisp
index 9505348..f3d9202 100644
--- a/src/routes/not-found.lisp
+++ b/src/routes/not-found.lisp
@@ -11,7 +11,7 @@
 
 (defcomp page ()
   (hsx
-   (h1 :class "text-primary"
+   (h1 :class "text-red-600"
      "404 Not Found")))
 
 (defun handle-not-found ()
diff --git a/tailwind.config.js b/tailwind.config.js
index f5337ec..73f793e 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -5,10 +5,5 @@ module.exports = {
     "./src/routes/**/*.lisp",
     "./src/components/**/*.lisp",
   ],
-  theme: {
-    extend: {},
-  },
-  plugins: [
-    require('daisyui'),
-  ],
+  plugins: [],
 }