From 2f753308b117a919cb698f25aaafee43b70c361b Mon Sep 17 00:00:00 2001 From: Ahmed Al-Taiar Date: Tue, 24 Oct 2023 20:45:30 -0400 Subject: [PATCH] Basic navbar, tailwindcss setup, and other stuff --- .vscode/extensions.json | 6 +- package.json | 3 +- prettier.config.js | 2 + redwood.toml | 2 +- web/config/postcss.config.js | 8 + web/config/tailwind.config.js | 19 + web/package.json | 12 +- web/src/Routes.tsx | 7 +- .../ThemeToggle/ThemeToggle.stories.tsx | 25 + .../ThemeToggle/ThemeToggle.test.tsx | 14 + .../components/ThemeToggle/ThemeToggle.tsx | 36 ++ web/src/index.css | 13 + web/src/index.html | 6 +- .../NavbarLayout/NavbarLayout.stories.tsx | 13 + .../NavbarLayout/NavbarLayout.test.tsx | 14 + web/src/layouts/NavbarLayout/NavbarLayout.tsx | 90 ++++ web/src/pages/HomePage/HomePage.stories.tsx | 13 + web/src/pages/HomePage/HomePage.test.tsx | 14 + web/src/pages/HomePage/HomePage.tsx | 21 + yarn.lock | 432 +++++++++++++++++- 20 files changed, 729 insertions(+), 21 deletions(-) create mode 100644 web/config/postcss.config.js create mode 100644 web/config/tailwind.config.js create mode 100644 web/src/components/ThemeToggle/ThemeToggle.stories.tsx create mode 100644 web/src/components/ThemeToggle/ThemeToggle.test.tsx create mode 100644 web/src/components/ThemeToggle/ThemeToggle.tsx create mode 100644 web/src/layouts/NavbarLayout/NavbarLayout.stories.tsx create mode 100644 web/src/layouts/NavbarLayout/NavbarLayout.test.tsx create mode 100644 web/src/layouts/NavbarLayout/NavbarLayout.tsx create mode 100644 web/src/pages/HomePage/HomePage.stories.tsx create mode 100644 web/src/pages/HomePage/HomePage.test.tsx create mode 100644 web/src/pages/HomePage/HomePage.tsx diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 7fc50a1..6e458a9 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -8,7 +8,9 @@ "pflannery.vscode-versionlens", "editorconfig.editorconfig", "prisma.prisma", - "graphql.vscode-graphql" + "graphql.vscode-graphql", + "csstools.postcss", + "bradlc.vscode-tailwindcss" ], "unwantedRecommendations": [] -} +} \ No newline at end of file diff --git a/package.json b/package.json index 2e4974a..2f226c2 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ ] }, "devDependencies": { - "@redwoodjs/core": "6.3.2" + "@redwoodjs/core": "6.3.2", + "prettier-plugin-tailwindcss": "0.4.1" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", diff --git a/prettier.config.js b/prettier.config.js index 45058f7..e532314 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -15,4 +15,6 @@ module.exports = { }, }, ], + tailwindConfig: './web/config/tailwind.config.js', + plugins: [require('prettier-plugin-tailwindcss')], } diff --git a/redwood.toml b/redwood.toml index 147631d..6faf693 100644 --- a/redwood.toml +++ b/redwood.toml @@ -6,7 +6,7 @@ # https://redwoodjs.com/docs/app-configuration-redwood-toml [web] - title = "Redwood App" + title = "Arduino Parts Inventory" port = 8910 apiUrl = "/.redwood/functions" # You can customize graphql and dbauth urls individually too: see https://redwoodjs.com/docs/app-configuration-redwood-toml#api-paths includeEnvironmentVariables = [ diff --git a/web/config/postcss.config.js b/web/config/postcss.config.js new file mode 100644 index 0000000..ca420ca --- /dev/null +++ b/web/config/postcss.config.js @@ -0,0 +1,8 @@ +const path = require('path') + +module.exports = { + plugins: [ + require('tailwindcss')(path.resolve(__dirname, 'tailwind.config.js')), + require('autoprefixer'), + ], +} diff --git a/web/config/tailwind.config.js b/web/config/tailwind.config.js new file mode 100644 index 0000000..d027457 --- /dev/null +++ b/web/config/tailwind.config.js @@ -0,0 +1,19 @@ +/** @type {import('tailwindcss').Config} */ +export const content = ['src/**/*.{js,jsx,ts,tsx}'] +export const theme = { + extend: { + fontFamily: { + inter: ['Inter', 'sans-serif'], + }, + colors: { + logo: { + DEFAULT: '#246EB9', + hover: '#1f5d9d', + }, + }, + }, +} +export const plugins = [require('daisyui')] +export const daisyui = { + themes: ['light', 'dark'], +} diff --git a/web/package.json b/web/package.json index 97b4bca..122c394 100644 --- a/web/package.json +++ b/web/package.json @@ -11,16 +11,24 @@ ] }, "dependencies": { + "@mdi/js": "^7.3.67", + "@mdi/react": "^1.6.1", "@redwoodjs/forms": "6.3.2", "@redwoodjs/router": "6.3.2", "@redwoodjs/web": "6.3.2", "prop-types": "15.8.1", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "theme-change": "^2.5.0" }, "devDependencies": { "@redwoodjs/vite": "6.3.2", "@types/react": "18.2.14", - "@types/react-dom": "18.2.6" + "@types/react-dom": "18.2.6", + "autoprefixer": "^10.4.16", + "daisyui": "^3.9.3", + "postcss": "^8.4.31", + "postcss-loader": "^7.3.3", + "tailwindcss": "^3.3.3" } } diff --git a/web/src/Routes.tsx b/web/src/Routes.tsx index 2c8f02a..e630b02 100644 --- a/web/src/Routes.tsx +++ b/web/src/Routes.tsx @@ -7,11 +7,16 @@ // 'src/pages/HomePage/HomePage.js' -> HomePage // 'src/pages/Admin/BooksPage/BooksPage.js' -> AdminBooksPage -import { Router, Route } from '@redwoodjs/router' +import { Router, Route, Set } from '@redwoodjs/router' + +import NavbarLayout from 'src/layouts/NavbarLayout' const Routes = () => { return ( + + + ) diff --git a/web/src/components/ThemeToggle/ThemeToggle.stories.tsx b/web/src/components/ThemeToggle/ThemeToggle.stories.tsx new file mode 100644 index 0000000..ebd3853 --- /dev/null +++ b/web/src/components/ThemeToggle/ThemeToggle.stories.tsx @@ -0,0 +1,25 @@ +// Pass props to your component by passing an `args` object to your story +// +// ```tsx +// export const Primary: Story = { +// args: { +// propName: propValue +// } +// } +// ``` +// +// See https://storybook.js.org/docs/react/writing-stories/args. + +import type { Meta, StoryObj } from '@storybook/react' + +import ThemeToggle from './ThemeToggle' + +const meta: Meta = { + component: ThemeToggle, +} + +export default meta + +type Story = StoryObj + +export const Primary: Story = {} diff --git a/web/src/components/ThemeToggle/ThemeToggle.test.tsx b/web/src/components/ThemeToggle/ThemeToggle.test.tsx new file mode 100644 index 0000000..09642ab --- /dev/null +++ b/web/src/components/ThemeToggle/ThemeToggle.test.tsx @@ -0,0 +1,14 @@ +import { render } from '@redwoodjs/testing/web' + +import ThemeToggle from './ThemeToggle' + +// Improve this test with help from the Redwood Testing Doc: +// https://redwoodjs.com/docs/testing#testing-components + +describe('ThemeToggle', () => { + it('renders successfully', () => { + expect(() => { + render() + }).not.toThrow() + }) +}) diff --git a/web/src/components/ThemeToggle/ThemeToggle.tsx b/web/src/components/ThemeToggle/ThemeToggle.tsx new file mode 100644 index 0000000..8a59ec9 --- /dev/null +++ b/web/src/components/ThemeToggle/ThemeToggle.tsx @@ -0,0 +1,36 @@ +import { useEffect } from 'react' + +import { mdiWeatherSunny, mdiWeatherNight } from '@mdi/js' +import Icon from '@mdi/react' +import { themeChange } from 'theme-change' + +const ThemeToggle = () => { + let isDark = false + + if (typeof window !== 'undefined') + isDark = localStorage.getItem('theme') === 'dark' + + useEffect(() => { + themeChange(false) + return () => { + themeChange(false) + } + }, []) + + return ( + + ) +} + +export default ThemeToggle diff --git a/web/src/index.css b/web/src/index.css index e69de29..b31cb33 100644 --- a/web/src/index.css +++ b/web/src/index.css @@ -0,0 +1,13 @@ +/** + * START --- SETUP TAILWINDCSS EDIT + * + * `yarn rw setup ui tailwindcss` placed these directives here + * to inject Tailwind's styles into your CSS. + * For more information, see: https://tailwindcss.com/docs/installation + */ +@tailwind base; +@tailwind components; +@tailwind utilities; +/** + * END --- SETUP TAILWINDCSS EDIT + */ diff --git a/web/src/index.html b/web/src/index.html index e240b8e..d0db47f 100644 --- a/web/src/index.html +++ b/web/src/index.html @@ -1,10 +1,14 @@ - + + + + + diff --git a/web/src/layouts/NavbarLayout/NavbarLayout.stories.tsx b/web/src/layouts/NavbarLayout/NavbarLayout.stories.tsx new file mode 100644 index 0000000..d62073c --- /dev/null +++ b/web/src/layouts/NavbarLayout/NavbarLayout.stories.tsx @@ -0,0 +1,13 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import NavbarLayout from './NavbarLayout' + +const meta: Meta = { + component: NavbarLayout, +} + +export default meta + +type Story = StoryObj + +export const Primary: Story = {} diff --git a/web/src/layouts/NavbarLayout/NavbarLayout.test.tsx b/web/src/layouts/NavbarLayout/NavbarLayout.test.tsx new file mode 100644 index 0000000..8acb00b --- /dev/null +++ b/web/src/layouts/NavbarLayout/NavbarLayout.test.tsx @@ -0,0 +1,14 @@ +import { render } from '@redwoodjs/testing/web' + +import NavbarLayout from './NavbarLayout' + +// Improve this test with help from the Redwood Testing Doc: +// https://redwoodjs.com/docs/testing#testing-pages-layouts + +describe('NavbarLayout', () => { + it('renders successfully', () => { + expect(() => { + render() + }).not.toThrow() + }) +}) diff --git a/web/src/layouts/NavbarLayout/NavbarLayout.tsx b/web/src/layouts/NavbarLayout/NavbarLayout.tsx new file mode 100644 index 0000000..93fa53c --- /dev/null +++ b/web/src/layouts/NavbarLayout/NavbarLayout.tsx @@ -0,0 +1,90 @@ +import { mdiChip, mdiMenu } from '@mdi/js' +import Icon from '@mdi/react' + +import { Link, routes } from '@redwoodjs/router' + +import ThemeToggle from 'src/components/ThemeToggle/ThemeToggle' + +type NavBarLayoutProps = { + children?: React.ReactNode +} + +const NavBarLayout = ({ children }: NavBarLayoutProps) => { + return ( + <> +
+
+ + +

+ Parts Inventory +

+ +
+
+ {/*
    +
  • + + FAQ + +
  • +
*/} + +
+ +
+ +
+
+ +
    +
  • +
    + + +

    + Parts Inventory +

    + +
    +
  • + {/*
  • + +

    FAQ

    + +
  • */} +
+
+
+
+
+
{children}
+ + ) +} + +export default NavBarLayout diff --git a/web/src/pages/HomePage/HomePage.stories.tsx b/web/src/pages/HomePage/HomePage.stories.tsx new file mode 100644 index 0000000..d9631ae --- /dev/null +++ b/web/src/pages/HomePage/HomePage.stories.tsx @@ -0,0 +1,13 @@ +import type { Meta, StoryObj } from '@storybook/react' + +import HomePage from './HomePage' + +const meta: Meta = { + component: HomePage, +} + +export default meta + +type Story = StoryObj + +export const Primary: Story = {} diff --git a/web/src/pages/HomePage/HomePage.test.tsx b/web/src/pages/HomePage/HomePage.test.tsx new file mode 100644 index 0000000..c684c7a --- /dev/null +++ b/web/src/pages/HomePage/HomePage.test.tsx @@ -0,0 +1,14 @@ +import { render } from '@redwoodjs/testing/web' + +import HomePage from './HomePage' + +// Improve this test with help from the Redwood Testing Doc: +// https://redwoodjs.com/docs/testing#testing-pages-layouts + +describe('HomePage', () => { + it('renders successfully', () => { + expect(() => { + render() + }).not.toThrow() + }) +}) diff --git a/web/src/pages/HomePage/HomePage.tsx b/web/src/pages/HomePage/HomePage.tsx new file mode 100644 index 0000000..a35adfa --- /dev/null +++ b/web/src/pages/HomePage/HomePage.tsx @@ -0,0 +1,21 @@ +import { Link, routes } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' + +const HomePage = () => { + return ( + <> + + +

HomePage

+

+ Find me in ./web/src/pages/HomePage/HomePage.tsx +

+

+ My default route is named home, link to me with ` + Home` +

+ + ) +} + +export default HomePage diff --git a/yarn.lock b/yarn.lock index 265976f..be7bfdc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,6 +19,13 @@ __metadata: languageName: node linkType: hard +"@alloc/quick-lru@npm:^5.2.0": + version: 5.2.0 + resolution: "@alloc/quick-lru@npm:5.2.0" + checksum: 7b878c48b9d25277d0e1a9b8b2f2312a314af806b4129dc902f2bc29ab09b58236e53964689feec187b28c80d2203aff03829754773a707a8a5987f1b7682d92 + languageName: node + linkType: hard + "@ampproject/remapping@npm:^2.2.0": version: 2.2.1 resolution: "@ampproject/remapping@npm:2.2.1" @@ -3512,6 +3519,22 @@ __metadata: languageName: node linkType: hard +"@mdi/js@npm:^7.3.67": + version: 7.3.67 + resolution: "@mdi/js@npm:7.3.67" + checksum: 0ad378df439ec14748eb9948372e769a01be4d16bceed879e3a61d24d2863aa8dac2a7cc496a286d3527ef55df9df6dc5e33a9ea3eb327c219969a04db90ca76 + languageName: node + linkType: hard + +"@mdi/react@npm:^1.6.1": + version: 1.6.1 + resolution: "@mdi/react@npm:1.6.1" + dependencies: + prop-types: ^15.7.2 + checksum: 6e5c5dcec6596eba4ff274181e1311aa790b5480c4594eaf67a5c74184de15796f7755e6a70e7590be5af7f009ffd328b0f82e7f46f0b09773d774de21a22ddc + languageName: node + linkType: hard + "@mrleebo/prisma-ast@npm:^0.5.2": version: 0.5.2 resolution: "@mrleebo/prisma-ast@npm:0.5.2" @@ -6577,6 +6600,13 @@ __metadata: languageName: node linkType: hard +"any-promise@npm:^1.0.0": + version: 1.3.0 + resolution: "any-promise@npm:1.3.0" + checksum: 60f0298ed34c74fef50daab88e8dab786036ed5a7fad02e012ab57e376e0a0b4b29e83b95ea9b5e7d89df762f5f25119b83e00706ecaccb22cfbacee98d74889 + languageName: node + linkType: hard + "anymatch@npm:^2.0.0": version: 2.0.0 resolution: "anymatch@npm:2.0.0" @@ -6688,7 +6718,7 @@ __metadata: languageName: node linkType: hard -"arg@npm:5.0.2": +"arg@npm:5.0.2, arg@npm:^5.0.2": version: 5.0.2 resolution: "arg@npm:5.0.2" checksum: ccaf86f4e05d342af6666c569f844bec426595c567d32a8289715087825c2ca7edd8a3d204e4d2fb2aa4602e09a57d0c13ea8c9eea75aac3dbb4af5514e6800e @@ -7004,6 +7034,24 @@ __metadata: languageName: node linkType: hard +"autoprefixer@npm:^10.4.16": + version: 10.4.16 + resolution: "autoprefixer@npm:10.4.16" + dependencies: + browserslist: ^4.21.10 + caniuse-lite: ^1.0.30001538 + fraction.js: ^4.3.6 + normalize-range: ^0.1.2 + picocolors: ^1.0.0 + postcss-value-parser: ^4.2.0 + peerDependencies: + postcss: ^8.1.0 + bin: + autoprefixer: bin/autoprefixer + checksum: e00256e754d481a026d928bca729b25954074dd142dbec022f0a7db0d3bbc0dc2e2dc7542e94fec22eff81e21fe140e6856448e2d9a002660cb1e2ad434daee0 + languageName: node + linkType: hard + "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" @@ -7585,7 +7633,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.4, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": +"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": version: 4.22.1 resolution: "browserslist@npm:4.22.1" dependencies: @@ -7799,6 +7847,13 @@ __metadata: languageName: node linkType: hard +"camelcase-css@npm:^2.0.1": + version: 2.0.1 + resolution: "camelcase-css@npm:2.0.1" + checksum: 1a1a3137e8a781e6cbeaeab75634c60ffd8e27850de410c162cce222ea331cd1ba5364e8fb21c95e5ca76f52ac34b81a090925ca00a87221355746d049c6e273 + languageName: node + linkType: hard + "camelcase@npm:6.3.0, camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" @@ -7832,6 +7887,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001538": + version: 1.0.30001553 + resolution: "caniuse-lite@npm:1.0.30001553" + checksum: 75656429566b44f968e5575f2bc4a27052ed5bb49763069f6b6c3f64c5a2d4c561dc17342faee42ef42d004572fba7c214d5321d18d9283c95f3bf17e5498355 + languageName: node + linkType: hard + "capital-case@npm:^1.0.4": version: 1.0.4 resolution: "capital-case@npm:1.0.4" @@ -8337,7 +8399,7 @@ __metadata: languageName: node linkType: hard -"colord@npm:^2.9.1": +"colord@npm:^2.9, colord@npm:^2.9.1": version: 2.9.3 resolution: "colord@npm:2.9.3" checksum: 9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 @@ -8381,7 +8443,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^4.0.1": +"commander@npm:^4.0.0, commander@npm:^4.0.1": version: 4.1.1 resolution: "commander@npm:4.1.1" checksum: 84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab @@ -8708,6 +8770,23 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:^8.2.0": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: ^3.3.0 + js-yaml: ^4.1.0 + parse-json: ^5.2.0 + path-type: ^4.0.0 + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a + languageName: node + linkType: hard + "crc-32@npm:^1.2.0": version: 1.2.2 resolution: "crc-32@npm:1.2.2" @@ -8942,6 +9021,16 @@ __metadata: languageName: node linkType: hard +"css-selector-tokenizer@npm:^0.8": + version: 0.8.0 + resolution: "css-selector-tokenizer@npm:0.8.0" + dependencies: + cssesc: ^3.0.0 + fastparse: ^1.1.2 + checksum: 86f68cc666d41f9d153351677694002a9d00e2609e6abc66fcfd7f580be3d6ecc0929e46a06c621ab28da5febbb54567db9709b819414edae4a36d9ff9133e16 + languageName: node + linkType: hard + "css-tree@npm:^2.2.1": version: 2.3.1 resolution: "css-tree@npm:2.3.1" @@ -9091,6 +9180,19 @@ __metadata: languageName: node linkType: hard +"daisyui@npm:^3.9.3": + version: 3.9.3 + resolution: "daisyui@npm:3.9.3" + dependencies: + colord: ^2.9 + css-selector-tokenizer: ^0.8 + postcss: ^8 + postcss-js: ^4 + tailwindcss: ^3.1 + checksum: f9017d7187bd59679701c25d515fe7d1c48a7ef38d96ec46026c163a848439a28ee7b3d75b24bede7bd188483c1d9e22941e1b600105b883d4705baf08d0dcc7 + languageName: node + linkType: hard + "damerau-levenshtein@npm:^1.0.8": version: 1.0.8 resolution: "damerau-levenshtein@npm:1.0.8" @@ -9461,6 +9563,13 @@ __metadata: languageName: node linkType: hard +"didyoumean@npm:^1.2.2": + version: 1.2.2 + resolution: "didyoumean@npm:1.2.2" + checksum: 95d0b53d23b851aacff56dfadb7ecfedce49da4232233baecfeecb7710248c4aa03f0aa8995062f0acafaf925adf8536bd7044a2e68316fd7d411477599bc27b + languageName: node + linkType: hard + "diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" @@ -9495,6 +9604,13 @@ __metadata: languageName: node linkType: hard +"dlv@npm:^1.1.3": + version: 1.1.3 + resolution: "dlv@npm:1.1.3" + checksum: 03eb4e769f19a027fd5b43b59e8a05e3fd2100ac239ebb0bf9a745de35d449e2f25cfaf3aa3934664551d72856f4ae8b7822016ce5c42c2d27c18ae79429ec42 + languageName: node + linkType: hard + "dns-equal@npm:^1.0.0": version: 1.0.0 resolution: "dns-equal@npm:1.0.0" @@ -10935,6 +11051,13 @@ __metadata: languageName: node linkType: hard +"fastparse@npm:^1.1.2": + version: 1.1.2 + resolution: "fastparse@npm:1.1.2" + checksum: c08d6e7ef10c0928426c1963dd4593e2baaf44d223ab1e5ba5d7b30470144b3a4ecb3605958b73754cea3f857ecef00b67c885f07ca2c312b38b67d9d88b84b5 + languageName: node + linkType: hard + "fastq@npm:^1.6.0, fastq@npm:^1.6.1": version: 1.15.0 resolution: "fastq@npm:1.15.0" @@ -11253,6 +11376,13 @@ __metadata: languageName: node linkType: hard +"fraction.js@npm:^4.3.6": + version: 4.3.7 + resolution: "fraction.js@npm:4.3.7" + checksum: df291391beea9ab4c263487ffd9d17fed162dbb736982dee1379b2a8cc94e4e24e46ed508c6d278aded9080ba51872f1bc5f3a5fd8d7c74e5f105b508ac28711 + languageName: node + linkType: hard + "fragment-cache@npm:^0.2.1": version: 0.2.1 resolution: "fragment-cache@npm:0.2.1" @@ -11566,6 +11696,20 @@ __metadata: languageName: node linkType: hard +"glob@npm:7.1.6": + version: 7.1.6 + resolution: "glob@npm:7.1.6" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 2575cce9306ac534388db751f0aa3e78afedb6af8f3b529ac6b2354f66765545145dba8530abf7bff49fb399a047d3f9b6901c38ee4c9503f592960d9af67763 + languageName: node + linkType: hard + "glob@npm:^10.2.2, glob@npm:^10.2.5": version: 10.3.10 resolution: "glob@npm:10.3.10" @@ -12363,7 +12507,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -13651,7 +13795,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.17.1": +"jiti@npm:^1.17.1, jiti@npm:^1.18.2": version: 1.20.0 resolution: "jiti@npm:1.20.0" bin: @@ -14078,7 +14222,7 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:^2.1.0": +"lilconfig@npm:^2.0.5, lilconfig@npm:^2.1.0": version: 2.1.0 resolution: "lilconfig@npm:2.1.0" checksum: 64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 @@ -15060,6 +15204,17 @@ __metadata: languageName: node linkType: hard +"mz@npm:^2.7.0": + version: 2.7.0 + resolution: "mz@npm:2.7.0" + dependencies: + any-promise: ^1.0.0 + object-assign: ^4.0.1 + thenify-all: ^1.0.0 + checksum: 103114e93f87362f0b56ab5b2e7245051ad0276b646e3902c98397d18bb8f4a77f2ea4a2c9d3ad516034ea3a56553b60d3f5f78220001ca4c404bd711bd0af39 + languageName: node + linkType: hard + "nan@npm:^2.12.1": version: 2.18.0 resolution: "nan@npm:2.18.0" @@ -15322,6 +15477,13 @@ __metadata: languageName: node linkType: hard +"normalize-range@npm:^0.1.2": + version: 0.1.2 + resolution: "normalize-range@npm:0.1.2" + checksum: bf39b73a63e0a42ad1a48c2bd1bda5a07ede64a7e2567307a407674e595bcff0fa0d57e8e5f1e7fa5e91000797c7615e13613227aaaa4d6d6e87f5bd5cc95de6 + languageName: node + linkType: hard + "normalize-url@npm:^4.1.0": version: 4.5.1 resolution: "normalize-url@npm:4.5.1" @@ -15415,7 +15577,7 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": +"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: 1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 @@ -15433,6 +15595,13 @@ __metadata: languageName: node linkType: hard +"object-hash@npm:^3.0.0": + version: 3.0.0 + resolution: "object-hash@npm:3.0.0" + checksum: a06844537107b960c1c8b96cd2ac8592a265186bfa0f6ccafe0d34eabdb526f6fa81da1f37c43df7ed13b12a4ae3457a16071603bcd39d8beddb5f08c37b0f47 + languageName: node + linkType: hard + "object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" @@ -16072,6 +16241,13 @@ __metadata: languageName: node linkType: hard +"pify@npm:^2.3.0": + version: 2.3.0 + resolution: "pify@npm:2.3.0" + checksum: 551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc + languageName: node + linkType: hard + "pify@npm:^3.0.0": version: 3.0.0 resolution: "pify@npm:3.0.0" @@ -16145,7 +16321,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4, pirates@npm:^4.0.5": +"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.5": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 @@ -16287,6 +16463,62 @@ __metadata: languageName: node linkType: hard +"postcss-import@npm:^15.1.0": + version: 15.1.0 + resolution: "postcss-import@npm:15.1.0" + dependencies: + postcss-value-parser: ^4.0.0 + read-cache: ^1.0.0 + resolve: ^1.1.7 + peerDependencies: + postcss: ^8.0.0 + checksum: 518aee5c83ea6940e890b0be675a2588db68b2582319f48c3b4e06535a50ea6ee45f7e63e4309f8754473245c47a0372632378d1d73d901310f295a92f26f17b + languageName: node + linkType: hard + +"postcss-js@npm:^4, postcss-js@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-js@npm:4.0.1" + dependencies: + camelcase-css: ^2.0.1 + peerDependencies: + postcss: ^8.4.21 + checksum: af35d55cb873b0797d3b42529514f5318f447b134541844285c9ac31a17497297eb72296902967911bb737a75163441695737300ce2794e3bd8c70c13a3b106e + languageName: node + linkType: hard + +"postcss-load-config@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-load-config@npm:4.0.1" + dependencies: + lilconfig: ^2.0.5 + yaml: ^2.1.1 + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + checksum: 5f568420c4d758d77d661f26914c08fe8dfb0666c7b779dc4f48d7fd880d131e8aa232a45cc1a8ba3f47f9c5fca572b661ca0103c2212979e9dc00918cff3d5f + languageName: node + linkType: hard + +"postcss-loader@npm:^7.3.3": + version: 7.3.3 + resolution: "postcss-loader@npm:7.3.3" + dependencies: + cosmiconfig: ^8.2.0 + jiti: ^1.18.2 + semver: ^7.3.8 + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + checksum: d039654273f858be1f75dfdf8b550869d88905b73a7684b3e48a2937a6087619e84fd1a3551cdef78685a965a2573e985b29a532c3878d834071ecd2da0eb304 + languageName: node + linkType: hard + "postcss-merge-longhand@npm:^6.0.0": version: 6.0.0 resolution: "postcss-merge-longhand@npm:6.0.0" @@ -16405,6 +16637,17 @@ __metadata: languageName: node linkType: hard +"postcss-nested@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-nested@npm:6.0.1" + dependencies: + postcss-selector-parser: ^6.0.11 + peerDependencies: + postcss: ^8.2.14 + checksum: 2a50aa36d5d103c2e471954830489f4c024deed94fa066169101db55171368d5f80b32446b584029e0471feee409293d0b6b1d8ede361f6675ba097e477b3cbd + languageName: node + linkType: hard + "postcss-normalize-charset@npm:^6.0.0": version: 6.0.0 resolution: "postcss-normalize-charset@npm:6.0.0" @@ -16571,14 +16814,14 @@ __metadata: languageName: node linkType: hard -"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": +"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" checksum: f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 languageName: node linkType: hard -"postcss@npm:^8.2.14, postcss@npm:^8.4.21, postcss@npm:^8.4.24, postcss@npm:^8.4.27": +"postcss@npm:^8, postcss@npm:^8.2.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.24, postcss@npm:^8.4.27, postcss@npm:^8.4.31": version: 8.4.31 resolution: "postcss@npm:8.4.31" dependencies: @@ -16612,6 +16855,61 @@ __metadata: languageName: node linkType: hard +"prettier-plugin-tailwindcss@npm:0.4.1": + version: 0.4.1 + resolution: "prettier-plugin-tailwindcss@npm:0.4.1" + peerDependencies: + "@ianvs/prettier-plugin-sort-imports": "*" + "@prettier/plugin-pug": "*" + "@shopify/prettier-plugin-liquid": "*" + "@shufo/prettier-plugin-blade": "*" + "@trivago/prettier-plugin-sort-imports": "*" + prettier: ^2.2 || ^3.0 + prettier-plugin-astro: "*" + prettier-plugin-css-order: "*" + prettier-plugin-import-sort: "*" + prettier-plugin-jsdoc: "*" + prettier-plugin-marko: "*" + prettier-plugin-organize-attributes: "*" + prettier-plugin-organize-imports: "*" + prettier-plugin-style-order: "*" + prettier-plugin-svelte: "*" + prettier-plugin-twig-melody: "*" + peerDependenciesMeta: + "@ianvs/prettier-plugin-sort-imports": + optional: true + "@prettier/plugin-pug": + optional: true + "@shopify/prettier-plugin-liquid": + optional: true + "@shufo/prettier-plugin-blade": + optional: true + "@trivago/prettier-plugin-sort-imports": + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + prettier-plugin-twig-melody: + optional: true + checksum: da9dc4c8c80b5510d51e671de61bc230e2b076bd4c14ddd3e8bd4fa5395373800d10473718bbf22e1cabe09167e8d2eb1bedaa06587ee905d6e6106003b69d11 + languageName: node + linkType: hard + "prettier@npm:2.8.8, prettier@npm:^2.6.2": version: 2.8.8 resolution: "prettier@npm:2.8.8" @@ -17089,6 +17387,15 @@ __metadata: languageName: node linkType: hard +"read-cache@npm:^1.0.0": + version: 1.0.0 + resolution: "read-cache@npm:1.0.0" + dependencies: + pify: ^2.3.0 + checksum: 90cb2750213c7dd7c80cb420654344a311fdec12944e81eb912cd82f1bc92aea21885fa6ce442e3336d9fccd663b8a7a19c46d9698e6ca55620848ab932da814 + languageName: node + linkType: hard + "read-pkg-up@npm:7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -17494,7 +17801,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.11.1, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": +"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.11.1, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -17533,7 +17840,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.11.1#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.4#~builtin": +"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.11.1#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.22.2#~builtin, resolve@patch:resolve@^1.22.4#~builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -17699,6 +18006,7 @@ __metadata: resolution: "root-workspace-0b6124@workspace:." dependencies: "@redwoodjs/core": 6.3.2 + prettier-plugin-tailwindcss: 0.4.1 languageName: unknown linkType: soft @@ -18884,6 +19192,24 @@ __metadata: languageName: node linkType: hard +"sucrase@npm:^3.32.0": + version: 3.34.0 + resolution: "sucrase@npm:3.34.0" + dependencies: + "@jridgewell/gen-mapping": ^0.3.2 + commander: ^4.0.0 + glob: 7.1.6 + lines-and-columns: ^1.1.6 + mz: ^2.7.0 + pirates: ^4.0.1 + ts-interface-checker: ^0.1.9 + bin: + sucrase: bin/sucrase + sucrase-node: bin/sucrase-node + checksum: 83e524f2b9386c7029fc9e46b8d608485866d08bea5a0a71e9e3442dc12e1d05a5ab555808d1922f45dd012fc71043479d778aac07391d9740daabe45730a056 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -18977,6 +19303,39 @@ __metadata: languageName: node linkType: hard +"tailwindcss@npm:^3.1, tailwindcss@npm:^3.3.3": + version: 3.3.3 + resolution: "tailwindcss@npm:3.3.3" + dependencies: + "@alloc/quick-lru": ^5.2.0 + arg: ^5.0.2 + chokidar: ^3.5.3 + didyoumean: ^1.2.2 + dlv: ^1.1.3 + fast-glob: ^3.2.12 + glob-parent: ^6.0.2 + is-glob: ^4.0.3 + jiti: ^1.18.2 + lilconfig: ^2.1.0 + micromatch: ^4.0.5 + normalize-path: ^3.0.0 + object-hash: ^3.0.0 + picocolors: ^1.0.0 + postcss: ^8.4.23 + postcss-import: ^15.1.0 + postcss-js: ^4.0.1 + postcss-load-config: ^4.0.1 + postcss-nested: ^6.0.1 + postcss-selector-parser: ^6.0.11 + resolve: ^1.22.2 + sucrase: ^3.32.0 + bin: + tailwind: lib/cli.js + tailwindcss: lib/cli.js + checksum: c2435382cd27522a988aaba7e7d98a5ac20f4b3cb5049deb0c58d128302e4158bcca5e7bffbdc97927b6eedba45f0ca1abe76cbae8041e2c3fb3e1c001fe44d2 + languageName: node + linkType: hard + "tapable@npm:^1.0.0, tapable@npm:^1.1.3": version: 1.1.3 resolution: "tapable@npm:1.1.3" @@ -19134,6 +19493,31 @@ __metadata: languageName: node linkType: hard +"theme-change@npm:^2.5.0": + version: 2.5.0 + resolution: "theme-change@npm:2.5.0" + checksum: 6f4824856f9e3d86eb59c2f798418ad8b3d86de42180b734fcc80ac5b2ba587b848712414c8111f99393d21ba63cc4c00099258138fa2f2ad231aaefa5f61465 + languageName: node + linkType: hard + +"thenify-all@npm:^1.0.0": + version: 1.6.0 + resolution: "thenify-all@npm:1.6.0" + dependencies: + thenify: ">= 3.1.0 < 4" + checksum: 9b896a22735e8122754fe70f1d65f7ee691c1d70b1f116fda04fea103d0f9b356e3676cb789506e3909ae0486a79a476e4914b0f92472c2e093d206aed4b7d6b + languageName: node + linkType: hard + +"thenify@npm:>= 3.1.0 < 4": + version: 3.3.1 + resolution: "thenify@npm:3.3.1" + dependencies: + any-promise: ^1.0.0 + checksum: f375aeb2b05c100a456a30bc3ed07ef03a39cbdefe02e0403fb714b8c7e57eeaad1a2f5c4ecfb9ce554ce3db9c2b024eba144843cd9e344566d9fcee73b04767 + languageName: node + linkType: hard + "thread-stream@npm:^2.0.0": version: 2.4.1 resolution: "thread-stream@npm:2.4.1" @@ -19347,6 +19731,13 @@ __metadata: languageName: node linkType: hard +"ts-interface-checker@npm:^0.1.9": + version: 0.1.13 + resolution: "ts-interface-checker@npm:0.1.13" + checksum: 232509f1b84192d07b81d1e9b9677088e590ac1303436da1e92b296e9be8e31ea042e3e1fd3d29b1742ad2c959e95afe30f63117b8f1bc3a3850070a5142fea7 + languageName: node + linkType: hard + "ts-invariant@npm:^0.10.3": version: 0.10.3 resolution: "ts-invariant@npm:0.10.3" @@ -20261,15 +20652,23 @@ __metadata: version: 0.0.0-use.local resolution: "web@workspace:web" dependencies: + "@mdi/js": ^7.3.67 + "@mdi/react": ^1.6.1 "@redwoodjs/forms": 6.3.2 "@redwoodjs/router": 6.3.2 "@redwoodjs/vite": 6.3.2 "@redwoodjs/web": 6.3.2 "@types/react": 18.2.14 "@types/react-dom": 18.2.6 + autoprefixer: ^10.4.16 + daisyui: ^3.9.3 + postcss: ^8.4.31 + postcss-loader: ^7.3.3 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0 + tailwindcss: ^3.3.3 + theme-change: ^2.5.0 languageName: unknown linkType: soft @@ -20883,6 +21282,13 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.1.1": + version: 2.3.3 + resolution: "yaml@npm:2.3.3" + checksum: a0c56bf682159b0567e9cbbddf23efc2f6806f6450716d9be6ec5eb1af1b941e95c8d3dc9c47da20d1b6883a9d6c61e31cf98bb4b77ebca4396bf772657f2f00 + languageName: node + linkType: hard + "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1"