add container

This commit is contained in:
2025-02-21 19:39:38 -03:00
parent a557ee6e34
commit e3f39a0313
3 changed files with 46 additions and 10 deletions

View File

@@ -0,0 +1,18 @@
import clsx from 'clsx'
export function Container({ children, className }) {
return (
<div
className={clsx(
'group-[.is-minimized]:lg:w-10/12',
'group-[.is-minimized]:xl:w-8/12',
'group-[.is-minimized]:2xl:w-6/12',
'xl:w-4/6 2xl:w-3/5',
'mx-auto',
className,
)}
>
{children}
</div>
)
}

View File

@@ -1,4 +1,4 @@
import React, { forwardRef, useContext, useId } from 'react' import React, { createElement, forwardRef, useContext, useId } from 'react'
import { ExclamationCircleIcon } from '@heroicons/react/24/outline' import { ExclamationCircleIcon } from '@heroicons/react/24/outline'
import { omit } from 'ramda' import { omit } from 'ramda'
import { Loader } from './loader' import { Loader } from './loader'
@@ -42,7 +42,7 @@ export function Button({
props['disabled'] = isLoading props['disabled'] = isLoading
} }
return React.createElement( return createElement(
as, as,
{ {
className: clsx( className: clsx(
@@ -90,15 +90,13 @@ export const Input = forwardRef(function Input(
const { className: _, ...field } = useControl(props) const { className: _, ...field } = useControl(props)
const sizes = { base: 'h-12' } const sizes = { base: 'h-12' }
return React.createElement( return createElement(
as, as,
{ {
className: clsx( className: clsx(
'bg-white outline-none px-4 rounded-lg transition', 'bg-white outline-none px-4 rounded-lg transition',
'border border-green-light dark:border-gray-700 dark:bg-gray-800', 'border border-green-light dark:border-gray-700 dark:bg-gray-800',
'focus:ring-1 focus:border-green-secondary focus:ring-green-secondary focus:placeholder:text-transparent', 'focus:ring-1 focus:border-green-secondary focus:ring-green-secondary focus:placeholder:text-transparent',
// Tailwind's won't inherit focus behavior; you must define it explicitly for both modes.
'dark:focus:border-green-secondary',
'aria-[invalid=true]:border-red-400 aria-[invalid=true]:ring-red-400', 'aria-[invalid=true]:border-red-400 aria-[invalid=true]:ring-red-400',
'dark:aria-[invalid=true]:border-red-500 dark:aria-[invalid=true]:ring-red-500', 'dark:aria-[invalid=true]:border-red-500 dark:aria-[invalid=true]:ring-red-500',
'disabled:text-gray-400 disabled:border-gray-300 disabled:bg-gray-200', 'disabled:text-gray-400 disabled:border-gray-300 disabled:bg-gray-200',
@@ -123,10 +121,10 @@ export const Checkbox = forwardRef(function Checkbox(
<input <input
type="checkbox" type="checkbox"
className={clsx( className={clsx(
'text-green-secondary border border-gray-300', // 'text-green-secondary border border-gray-300',
'focus:ring-2 focus:border-green-secondary focus:ring-green-secondary focus:ring-offset-0 focus:ring-opacity-30', // 'focus:ring-2 focus:border-green-secondary focus:ring-green-secondary focus:ring-offset-0 focus:ring-opacity-30',
'dark:border-gray-700 dark:bg-gray-800 focus:dark:border-security dark:checked:bg-green-secondary dark:checked:border-security dark:disabled:bg-gray-700', // 'dark:border-gray-700 dark:bg-gray-800 focus:dark:border-security dark:checked:bg-green-secondary dark:checked:border-security dark:disabled:bg-gray-700',
'disabled:bg-gray-200 outline-none rounded transition', // 'disabled:bg-gray-200 outline-none rounded transition',
className, className,
)} )}
ref={ref} ref={ref}

View File

@@ -3,6 +3,7 @@ import { fetchAuthSession } from 'aws-amplify/auth'
import { Link } from 'react-router' import { Link } from 'react-router'
import { Outlet } from 'react-router' import { Outlet } from 'react-router'
import { useAuth } from '~/hooks/use-auth' import { useAuth } from '~/hooks/use-auth'
import { Container } from '~/components/container'
export async function clientLoader() { export async function clientLoader() {
const session = await fetchAuthSession() const session = await fetchAuthSession()
@@ -43,7 +44,26 @@ export default function Layout() {
</button> </button>
</nav> </nav>
{isNavigating ? <>Loading...</> : <Outlet />} {isNavigating ? <Loading /> : <Outlet />}
</> </>
) )
} }
function Loading() {
return (
<Container>
<div className="animate-pulse flex flex-col gap-2.5 lg:w-2/4 [&>*]:bg-gray-200 dark:[&>*]:bg-gray-700 [&>*]:h-5 [&>*]:rounded-md">
<div className="w-2/6" />
<div className="w-4/6" />
<div className="w-5/6" />
<div className="w-5/6" />
<div className="w-6/6" />
<div className="w-6/6" />
<div className="w-3/6" />
<div className="w-5/6" />
<div className="w-4/6" />
<div className="w-4/6" />
</div>
</Container>
)
}