Compare commits

..
14 Commits
Author SHA1 Message Date
siujamo dd4b3189f4 Merge pull request #1 from onixbyte-opensource/chore/switch-to-oxlint
chore: switch from eslint to oxlint
2026-09-14 11:12:43 +08:00
siujamo 48e0015599 chore: switch from eslint to oxlint
- Replace eslint and its plugins with oxlint, add .oxlintrc.json
- Add type-check and check scripts, drop deploy and predeploy
- Remove the GitHub Pages deploy workflow
- Move dayjs setup to src/lib and export the configured instance
- Bump React to 19.3, Vite to 8.3, Tailwind to 4.3 and other deps
- Reformat the contact page with prettier
2026-09-14 11:10:12 +08:00
siujamo 6738d6a39c chore: update Tailwind flex-shrink utility to v4 syntax 2026-06-02 17:40:24 +08:00
siujamo cecc76e1a2 chore: bump dependencies 2026-06-02 17:23:34 +08:00
siujamo 9bdfbaa1b2 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	package.json
#	pnpm-lock.yaml
2026-06-02 17:22:07 +08:00
siujamo c979385388 chore: bump dependencies 2026-06-02 17:19:29 +08:00
zihluwang 945d9dd2eb feat: add VITE_REDUX_STORAGE environment variable and update storage configuration 2026-03-21 03:37:30 +08:00
zihluwang 3735e902b0 chore: bump dependencies 2026-03-21 03:24:52 +08:00
zihluwang 727dadd932 Merge pull request #71 from onixbyte/dependabot/npm_and_yarn/axios-1.13.5
chore: bump axios from 1.13.2 to 1.13.5
2026-03-21 03:05:18 +08:00
zihluwang 759029deaf Merge branch 'main' into dependabot/npm_and_yarn/axios-1.13.5 2026-03-21 03:05:00 +08:00
zihluwang 9db6914bc1 Merge pull request #73
chore: bump the dependency-updates group across 1 directory with 12 updates
2026-03-21 02:57:31 +08:00
zihluwang 95b3c4ac53 Merge pull request #74
chore: bump pnpm/action-setup from 4 to 5
2026-03-21 02:56:53 +08:00
dependabot[bot] e7f8781514 chore: bump pnpm/action-setup from 4 to 5
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4 to 5.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/v4...v5)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-18 04:54:13 +00:00
dependabot[bot] 40ee25bbc0 chore: bump the dependency-updates group across 1 directory with 12 updates
Bumps the dependency-updates group with 12 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@reduxjs/toolkit](https://github.com/reduxjs/redux-toolkit) | `2.11.1` | `2.11.2` |
| [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.1.18` | `4.2.1` |
| [axios](https://github.com/axios/axios) | `1.13.2` | `1.13.6` |
| [dayjs](https://github.com/iamkun/dayjs) | `1.11.19` | `1.11.20` |
| [react](https://github.com/facebook/react/tree/HEAD/packages/react) | `19.2.3` | `19.2.4` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.7` | `19.2.14` |
| [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) | `19.2.3` | `19.2.4` |
| [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) | `7.10.1` | `7.13.1` |
| [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) | `7.10.1` | `7.13.1` |
| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.1.18` | `4.2.1` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `22.19.2` | `22.19.15` |
| [prettier](https://github.com/prettier/prettier) | `3.7.4` | `3.8.1` |



Updates `@reduxjs/toolkit` from 2.11.1 to 2.11.2
- [Release notes](https://github.com/reduxjs/redux-toolkit/releases)
- [Commits](https://github.com/reduxjs/redux-toolkit/compare/v2.11.1...v2.11.2)

Updates `@tailwindcss/vite` from 4.1.18 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/@tailwindcss-vite)

Updates `axios` from 1.13.2 to 1.13.6
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.13.2...v1.13.6)

Updates `dayjs` from 1.11.19 to 1.11.20
- [Release notes](https://github.com/iamkun/dayjs/releases)
- [Changelog](https://github.com/iamkun/dayjs/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/iamkun/dayjs/compare/v1.11.19...v1.11.20)

Updates `react` from 19.2.3 to 19.2.4
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.4/packages/react)

Updates `@types/react` from 19.2.7 to 19.2.14
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `react-dom` from 19.2.3 to 19.2.4
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.4/packages/react-dom)

Updates `react-router` from 7.10.1 to 7.13.1
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router@7.13.1/packages/react-router)

Updates `react-router-dom` from 7.10.1 to 7.13.1
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.13.1/packages/react-router-dom)

Updates `tailwindcss` from 4.1.18 to 4.2.1
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.2.1/packages/tailwindcss)

Updates `@types/node` from 22.19.2 to 22.19.15
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@types/react` from 19.2.7 to 19.2.14
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `prettier` from 3.7.4 to 3.8.1
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.7.4...3.8.1)

---
updated-dependencies:
- dependency-name: "@reduxjs/toolkit"
  dependency-version: 2.11.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependency-updates
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependency-updates
- dependency-name: axios
  dependency-version: 1.13.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependency-updates
- dependency-name: dayjs
  dependency-version: 1.11.20
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependency-updates
- dependency-name: react
  dependency-version: 19.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependency-updates
- dependency-name: "@types/react"
  dependency-version: 19.2.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependency-updates
- dependency-name: react-dom
  dependency-version: 19.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependency-updates
- dependency-name: react-router
  dependency-version: 7.13.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependency-updates
- dependency-name: react-router-dom
  dependency-version: 7.13.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependency-updates
- dependency-name: tailwindcss
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dependency-updates
- dependency-name: "@types/node"
  dependency-version: 22.19.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependency-updates
- dependency-name: "@types/react"
  dependency-version: 19.2.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dependency-updates
- dependency-name: prettier
  dependency-version: 3.8.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dependency-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-13 04:55:45 +00:00
15 changed files with 928 additions and 1213 deletions

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
# Redux Persistence Location
VITE_REDUX_STORAGE=local
-79
View File
@@ -1,79 +0,0 @@
name: Deploy to GitHub Pages
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '20'
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: latest
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- name: Setup pnpm cache
uses: actions/cache@v5
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v4
with:
path: './dist'
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
+7
View File
@@ -0,0 +1,7 @@
{
"plugins": ["react", "react-hooks", "typescript"],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
FROM node:20-alpine as builder
FROM node:24-trixie-slim as builder
WORKDIR /app
COPY . .
RUN corepack enable pnpm
+24 -30
View File
@@ -6,40 +6,34 @@
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"preview": "vite preview",
"deploy": "pnpm build && gh-pages -d dist",
"predeploy": "pnpm build"
"lint": "oxlint",
"type-check": "tsc --noEmit",
"check": "oxlint && tsc --noEmit",
"preview": "vite preview"
},
"dependencies": {
"@reduxjs/toolkit": "^2.11.1",
"@tailwindcss/vite": "^4.1.18",
"axios": "^1.13.5",
"dayjs": "^1.11.19",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-redux": "^9.2.0",
"react-router": "^7.10.1",
"react-router-dom": "^7.10.1",
"@reduxjs/toolkit": "^2.12.0",
"@tailwindcss/vite": "^4.3.3",
"axios": "^1.20.0",
"dayjs": "^1.11.23",
"react": "^19.3.0",
"react-dom": "^19.3.0",
"react-redux": "^9.3.0",
"react-router": "^7.18.3",
"react-router-dom": "^7.18.3",
"redux-persist": "^6.0.0",
"tailwindcss": "^4.1.18"
"tailwindcss": "^4.3.3"
},
"devDependencies": {
"@types/node": "^22.19.2",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.1.2",
"globals": "^16.5.0",
"prettier": "^3.7.4",
"typescript": "~5.9.3",
"vite": "^7.2.7"
},
"pnpm": {
"ignoredBuiltDependencies": [
"esbuild"
],
"onlyBuiltDependencies": [
"@tailwindcss/oxide"
]
"@eslint/js": "^9.39.5",
"@types/node": "^25.9.6",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"@vitejs/plugin-react": "^6.1.1",
"globals": "^17.12.0",
"oxlint": "^1.82.0",
"prettier": "^3.9.6",
"typescript": "~6.0.3",
"vite": "^8.3.0"
}
}
+822 -1061
View File
File diff suppressed because it is too large. Load diff
+2
View File
@@ -0,0 +1,2 @@
allowBuilds:
esbuild: true
-1
View File
@@ -1 +0,0 @@
import "./dayjs"
+1 -1
View File
@@ -45,7 +45,7 @@ export default function HeroLayout() {
</header>
{/* Main Content Area */}
<main className="max-w-7xl mx-auto py-6 sm:px-6 lg:px-8 flex-grow">
<main className="max-w-7xl mx-auto py-6 sm:px-6 lg:px-8 grow">
<div className="px-4 py-6 sm:px-0">
<Outlet />
</div>
@@ -3,4 +3,4 @@ import duration from "dayjs/plugin/duration"
dayjs.extend(duration)
console.log("Global Dayjs plugins initialised.")
export default dayjs
-1
View File
@@ -3,7 +3,6 @@ import { createRoot } from "react-dom/client"
import { Provider as ReduxProvider } from "react-redux"
import { PersistGate } from "redux-persist/integration/react"
import { RouterProvider } from "react-router-dom"
import "@/init"
import store, { persistor } from "@/store"
import router from "@/router"
import "./index.css"
+61 -32
View File
@@ -1,10 +1,10 @@
import React from "react"
import type { SubmitEvent } from "react"
/**
* Contact page component that displays contact information and a contact form.
*/
export default function Contact() {
const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
const handleSubmit = (e: SubmitEvent) => {
e.preventDefault()
// Handle form submission logic here
alert("Thank you for your message! This is a demo form.")
@@ -14,9 +14,7 @@ export default function Contact() {
<div className="space-y-8">
{/* Page Header */}
<div className="text-center">
<h1 className="text-3xl font-bold text-gray-900 sm:text-4xl">
Get in Touch
</h1>
<h1 className="text-3xl font-bold text-gray-900 sm:text-4xl">Get in Touch</h1>
<p className="mt-4 text-lg text-gray-600">
Have questions about this template? We&apos;d love to hear from you.
</p>
@@ -25,16 +23,23 @@ export default function Contact() {
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8">
{/* Contact Information */}
<div className="bg-white shadow rounded-lg p-6">
<h2 className="text-xl font-semibold text-gray-900 mb-6">
Contact Information
</h2>
<h2 className="text-xl font-semibold text-gray-900 mb-6">Contact Information</h2>
<div className="space-y-4">
{/* Email */}
<div className="flex items-center">
<div className="flex-shrink-0">
<svg className="h-6 w-6 text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
<div className="shrink-0">
<svg
className="h-6 w-6 text-gray-400"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor">
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
/>
</svg>
</div>
<div className="ml-3">
@@ -45,22 +50,37 @@ export default function Contact() {
{/* GitHub */}
<div className="flex items-center">
<div className="flex-shrink-0">
<div className="shrink-0">
<svg className="h-6 w-6 text-gray-400" fill="currentColor" viewBox="0 0 24 24">
<path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" />
<path
fillRule="evenodd"
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
clipRule="evenodd"
/>
</svg>
</div>
<div className="ml-3">
<p className="text-sm font-medium text-gray-900"><a href="https://github.com/onixbyte/react-template">GitHub</a></p>
<p className="text-sm font-medium text-gray-900">
<a href="https://github.com/onixbyte/react-template">GitHub</a>
</p>
<p className="text-sm text-gray-600">github.com/onixbyte/react-template</p>
</div>
</div>
{/* Documentation */}
<div className="flex items-center">
<div className="flex-shrink-0">
<svg className="h-6 w-6 text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
<div className="shrink-0">
<svg
className="h-6 w-6 text-gray-400"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor">
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
/>
</svg>
</div>
<div className="ml-3">
@@ -74,13 +94,25 @@ export default function Contact() {
<div className="mt-8">
<h3 className="text-lg font-medium text-gray-900 mb-4">Quick Links</h3>
<div className="space-y-2">
<a href="https://reactrouter.com" target="_blank" rel="noopener noreferrer" className="block text-blue-600 hover:text-blue-800 text-sm">
<a
href="https://reactrouter.com"
target="_blank"
rel="noopener noreferrer"
className="block text-blue-600 hover:text-blue-800 text-sm">
React Router Documentation →
</a>
<a href="https://tailwindcss.com" target="_blank" rel="noopener noreferrer" className="block text-blue-600 hover:text-blue-800 text-sm">
<a
href="https://tailwindcss.com"
target="_blank"
rel="noopener noreferrer"
className="block text-blue-600 hover:text-blue-800 text-sm">
Tailwind CSS Documentation →
</a>
<a href="https://vitejs.dev" target="_blank" rel="noopener noreferrer" className="block text-blue-600 hover:text-blue-800 text-sm">
<a
href="https://vitejs.dev"
target="_blank"
rel="noopener noreferrer"
className="block text-blue-600 hover:text-blue-800 text-sm">
Vite Documentation →
</a>
</div>
@@ -89,10 +121,8 @@ export default function Contact() {
{/* Contact Form */}
<div className="bg-white shadow rounded-lg p-6">
<h2 className="text-xl font-semibold text-gray-900 mb-6">
Send us a Message
</h2>
<h2 className="text-xl font-semibold text-gray-900 mb-6">Send us a Message</h2>
<form onSubmit={handleSubmit} className="space-y-4">
{/* Name */}
<div>
@@ -104,7 +134,7 @@ export default function Contact() {
id="name"
name="name"
required
className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
placeholder="Your full name"
/>
</div>
@@ -119,7 +149,7 @@ export default function Contact() {
id="email"
name="email"
required
className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
placeholder="your.email@example.com"
/>
</div>
@@ -134,7 +164,7 @@ export default function Contact() {
id="subject"
name="subject"
required
className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
placeholder="What is this about?"
/>
</div>
@@ -149,7 +179,7 @@ export default function Contact() {
name="message"
rows={4}
required
className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
className="w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
placeholder="Tell us more about your question or feedback..."
/>
</div>
@@ -158,8 +188,7 @@ export default function Contact() {
<div>
<button
type="submit"
className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
>
className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
Send Message
</button>
</div>
@@ -168,4 +197,4 @@ export default function Contact() {
</div>
</div>
)
}
}
+3 -3
View File
@@ -24,7 +24,7 @@ export default function Home() {
<div className="bg-white overflow-hidden shadow rounded-lg">
<div className="p-6">
<div className="flex items-center">
<div className="flex-shrink-0">
<div className="shrink-0">
<svg
className="h-8 w-8 text-blue-600"
fill="none"
@@ -55,7 +55,7 @@ export default function Home() {
<div className="bg-white overflow-hidden shadow rounded-lg">
<div className="p-6">
<div className="flex items-center">
<div className="flex-shrink-0">
<div className="shrink-0">
<svg
className="h-8 w-8 text-green-600"
fill="none"
@@ -86,7 +86,7 @@ export default function Home() {
<div className="bg-white overflow-hidden shadow rounded-lg">
<div className="p-6">
<div className="flex items-center">
<div className="flex-shrink-0">
<div className="shrink-0">
<svg
className="h-8 w-8 text-purple-600"
fill="none"
+3 -2
View File
@@ -10,10 +10,11 @@ import {
PURGE,
REGISTER,
} from "redux-persist"
import storage from "redux-persist/lib/storage/session" // use session storage
// import storage from "redux-persist/lib/storage" // use local storage
import createWebStorage from "redux-persist/es/storage/createWebStorage"
import authReducer from "./auth-slice"
const storage = createWebStorage(import.meta.env.VITE_REDUX_STORAGE ?? "local")
const persistConfig = {
key: "root",
storage,
+1 -1
View File
@@ -1,6 +1,6 @@
/// <reference types="vite/client" />
interface ImportMetaEnv {
// todo add env properties here
readonly VITE_REDUX_STORAGE: "local" | "session"
}
interface ImportMeta {