From c9c944928e353b2ba878805ea369773d1fbe3c8d Mon Sep 17 00:00:00 2001 From: fecapark Date: Thu, 11 Dec 2025 18:03:35 +0900 Subject: [PATCH 1/4] refactor(demo): split globals.css as its style context --- apps/demo/src/app/layout.tsx | 2 +- apps/demo/src/styles/animations.css | 15 ++++++ .../{app/globals.css => styles/colors.css} | 46 +------------------ apps/demo/src/styles/fonts.css | 6 +++ apps/demo/src/styles/globals.css | 35 ++++++++++++++ 5 files changed, 58 insertions(+), 46 deletions(-) create mode 100644 apps/demo/src/styles/animations.css rename apps/demo/src/{app/globals.css => styles/colors.css} (57%) create mode 100644 apps/demo/src/styles/fonts.css create mode 100644 apps/demo/src/styles/globals.css diff --git a/apps/demo/src/app/layout.tsx b/apps/demo/src/app/layout.tsx index ed3e52c..5b553be 100644 --- a/apps/demo/src/app/layout.tsx +++ b/apps/demo/src/app/layout.tsx @@ -3,7 +3,7 @@ import type { Metadata } from 'next'; import { Noto_Sans_KR } from 'next/font/google'; import localFont from 'next/font/local'; -import './globals.css'; +import '../styles/globals.css'; const NotoSansKR = Noto_Sans_KR({ subsets: ['latin'], diff --git a/apps/demo/src/styles/animations.css b/apps/demo/src/styles/animations.css new file mode 100644 index 0000000..8d031c3 --- /dev/null +++ b/apps/demo/src/styles/animations.css @@ -0,0 +1,15 @@ +@import 'tailwindcss'; + +@keyframes fadeout { + to { + opacity: 0; + } +} + +@theme { + /* Easings */ + --ease-materialBase: cubic-bezier(0.2, 0, 0, 1); + + /* Animations */ + --animate-fadeout: fadeout 0.5s ease-in-out forwards 0.2s; +} diff --git a/apps/demo/src/app/globals.css b/apps/demo/src/styles/colors.css similarity index 57% rename from apps/demo/src/app/globals.css rename to apps/demo/src/styles/colors.css index 6a8a365..e06799d 100644 --- a/apps/demo/src/app/globals.css +++ b/apps/demo/src/styles/colors.css @@ -1,11 +1,5 @@ @import 'tailwindcss'; -@keyframes fadeout { - to { - opacity: 0; - } -} - :root { --background: #141414; --layerBackground: #202020; @@ -36,44 +30,6 @@ --color-neutralSubtle: var(--neutralSubtle); --color-neutralPlaceholder: var(--neutralPlaceholder); --color-neutralInspector: var(--neutralInspector); - --color-blueAccent: var(--blueAccent); - - --font-sans: var(--soehne), var(--noto-sans-kr), sans-serif; - - --ease-materialBase: cubic-bezier(0.2, 0, 0, 1); -} - -@theme { - --animate-fadeout: fadeout 0.5s ease-in-out forwards 0.2s; -} - -@layer base { - a { - color: var(--blueAccent); - text-decoration: none; - } - a:hover { - text-decoration: underline; - } - input[type='number'] { - appearance: textfield; - -webkit-appearance: textfield; - -moz-appearance: textfield; - } - - input::-webkit-outer-spin-button, - input::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; - } -} - -html, -body { - width: 100%; - height: 100%; - - background-color: var(--background); - color: var(--neutral); + --color-blueAccent: var(--blueAccent); } diff --git a/apps/demo/src/styles/fonts.css b/apps/demo/src/styles/fonts.css new file mode 100644 index 0000000..44adb1b --- /dev/null +++ b/apps/demo/src/styles/fonts.css @@ -0,0 +1,6 @@ +@import 'tailwindcss'; + +@theme inline { + /* Declare from app/layout.tsx, next/font */ + --font-sans: var(--soehne), var(--noto-sans-kr), sans-serif; +} diff --git a/apps/demo/src/styles/globals.css b/apps/demo/src/styles/globals.css new file mode 100644 index 0000000..4a5d65b --- /dev/null +++ b/apps/demo/src/styles/globals.css @@ -0,0 +1,35 @@ +@import 'tailwindcss'; +@import './colors.css'; +@import './fonts.css'; +@import './animations.css'; + +@layer base { + a { + color: var(--blueAccent); + text-decoration: none; + } + a:hover { + text-decoration: underline; + } + + input[type='number'] { + appearance: textfield; + -webkit-appearance: textfield; + -moz-appearance: textfield; + } + + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + + html, + body { + width: 100%; + height: 100%; + + background-color: var(--background); + color: var(--neutral); + } +} From aa33b584ae155511195c47c42c2d015aa75f2362 Mon Sep 17 00:00:00 2001 From: fecapark Date: Thu, 11 Dec 2025 18:36:19 +0900 Subject: [PATCH 2/4] feat(demo): add tailwindcss custom breakpoints --- apps/demo/src/styles/breakpoints.css | 9 +++++++++ apps/demo/src/styles/globals.css | 1 + 2 files changed, 10 insertions(+) create mode 100644 apps/demo/src/styles/breakpoints.css diff --git a/apps/demo/src/styles/breakpoints.css b/apps/demo/src/styles/breakpoints.css new file mode 100644 index 0000000..cbda0bd --- /dev/null +++ b/apps/demo/src/styles/breakpoints.css @@ -0,0 +1,9 @@ +@import 'tailwindcss'; + +@theme { + --breakpoint-*: initial; + + --breakpoint-md: 578px; + --breakpoint-lg: 900px; + --breakpoint-xl: 1350px; +} diff --git a/apps/demo/src/styles/globals.css b/apps/demo/src/styles/globals.css index 4a5d65b..49dd8ca 100644 --- a/apps/demo/src/styles/globals.css +++ b/apps/demo/src/styles/globals.css @@ -2,6 +2,7 @@ @import './colors.css'; @import './fonts.css'; @import './animations.css'; +@import './breakpoints.css'; @layer base { a { From 54666a3c780739e2b353fab5367d4552ab3e4bc4 Mon Sep 17 00:00:00 2001 From: fecapark Date: Thu, 11 Dec 2025 18:36:41 +0900 Subject: [PATCH 3/4] feat(demo): add responsive layout into demo app --- apps/demo/src/app/page.tsx | 2 +- .../demo/src/components/Footer/ValueField.tsx | 65 ++++++++++--------- apps/demo/src/components/Footer/index.tsx | 2 +- .../src/components/Header/PackageHelper.tsx | 4 +- apps/demo/src/components/Header/index.tsx | 24 +++---- apps/demo/src/components/Inspector/index.tsx | 2 +- 6 files changed, 54 insertions(+), 45 deletions(-) diff --git a/apps/demo/src/app/page.tsx b/apps/demo/src/app/page.tsx index 0ec1c64..0f6116f 100644 --- a/apps/demo/src/app/page.tsx +++ b/apps/demo/src/app/page.tsx @@ -11,7 +11,7 @@ import { Header } from '@/components/Header'; import { Inspector } from '@/components/Inspector'; const rollerContainer = tv({ - base: 'relative w-full px-3 text-5xl leading-[1.1]', + base: 'relative w-full px-3 text-4xl leading-[1.1] md:text-5xl', variants: { align: { left: 'translate-x-[calc(50%-180px)]', diff --git a/apps/demo/src/components/Footer/ValueField.tsx b/apps/demo/src/components/Footer/ValueField.tsx index abb5c27..a709369 100644 --- a/apps/demo/src/components/Footer/ValueField.tsx +++ b/apps/demo/src/components/Footer/ValueField.tsx @@ -41,20 +41,43 @@ export const ValueField = ({ value, onValueChange }: Props) => { }; return ( -
- - +
+
+
+ + +
-
+
+ + +
+
+ +
{
- -
); }; diff --git a/apps/demo/src/components/Footer/index.tsx b/apps/demo/src/components/Footer/index.tsx index 338b38d..b5d17fb 100644 --- a/apps/demo/src/components/Footer/index.tsx +++ b/apps/demo/src/components/Footer/index.tsx @@ -13,7 +13,7 @@ export const Footer = ({ value, onValueChange }: Props) => { return (