| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import { Children } from 'react'
- import { cn } from 'ui'
- export const FormSection = ({
- children,
- id,
- header,
- disabled,
- className,
- }: {
- children: React.ReactNode
- id?: string
- header?: React.ReactNode
- disabled?: boolean
- visible?: boolean
- className?: string
- }) => {
- const classes = [
- 'grid grid-cols-12 gap-6 px-card py-4 md:py-8',
- `${disabled ? ' opacity-30' : ' opacity-100'}`,
- `${className}`,
- ]
- return (
- <div id={id} className={classes.join(' ')}>
- {header}
- {children}
- </div>
- )
- }
- export const FormSectionLabel = ({
- children,
- className = '',
- description,
- }: {
- children: React.ReactNode | string
- className?: string
- description?: React.ReactNode
- }) => {
- if (description !== undefined) {
- return (
- <div className={cn('flex flex-col space-y-2 col-span-12 lg:col-span-5', className)}>
- <label className="text-foreground text-sm">{children}</label>
- {description}
- </div>
- )
- } else {
- return (
- <label className={`text-foreground col-span-12 text-sm lg:col-span-5 ${className}`}>
- {children}
- </label>
- )
- }
- }
- const Shimmer = () => (
- <div className="flex w-full flex-col gap-2">
- <div className="shimmering-loader h-2 w-1/3 rounded-sm"></div>
- <div className="flex flex-col justify-between space-y-2">
- <div className="shimmering-loader h-[34px] w-2/3 rounded-sm" />
- </div>
- </div>
- )
- export const FormSectionContent = ({
- children,
- loading = true,
- loaders,
- fullWidth,
- className,
- }: {
- children: React.ReactNode | string
- loading?: boolean
- loaders?: number
- fullWidth?: boolean
- className?: string
- }) => {
- return (
- <div
- className={`
- relative col-span-12 flex flex-col gap-6 @lg:col-span-7
- ${fullWidth && 'col-span-12!'}
- ${className}
- `}
- >
- {loading
- ? !!loaders
- ? new Array(loaders).fill(0).map((_, idx) => <Shimmer key={idx} />)
- : Children.map(children, (_, idx) => <Shimmer key={idx} />)
- : children}
- </div>
- )
- }
|