@lindle/linoardo 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +13 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -22
- package/dist/index.d.ts +13 -22
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- package/dist/styles.css +73 -7
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -33,7 +33,7 @@ var iconBaseClasses = {
|
|
|
33
33
|
|
|
34
34
|
// src/Containment/Button/states.button.ts
|
|
35
35
|
var base = "btn-base focus-visible:outline-none focus-visible:ring-2 rounded-md transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed";
|
|
36
|
-
var blackAndWhiteVariantClass = "bg-white
|
|
36
|
+
var blackAndWhiteVariantClass = "bg-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
37
37
|
var paletteVariantClasses = {
|
|
38
38
|
primary: {
|
|
39
39
|
solid: "bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary",
|
|
@@ -156,7 +156,7 @@ var Button = React6__namespace.forwardRef(
|
|
|
156
156
|
ref,
|
|
157
157
|
onClick,
|
|
158
158
|
disabled: isDisabled,
|
|
159
|
-
className: tailwindMerge.twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className),
|
|
159
|
+
className: tailwindMerge.twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className, "border-2 border-l"),
|
|
160
160
|
"data-loading": loading || void 0,
|
|
161
161
|
"aria-busy": loading || void 0,
|
|
162
162
|
children: [
|
|
@@ -952,7 +952,16 @@ var resolveIconClassName3 = (icon) => {
|
|
|
952
952
|
const classes = [...baseClasses, normalizedName];
|
|
953
953
|
return Array.from(new Set(classes)).join(" ");
|
|
954
954
|
};
|
|
955
|
-
var Input = ({
|
|
955
|
+
var Input = ({
|
|
956
|
+
variant = "outline",
|
|
957
|
+
success,
|
|
958
|
+
error,
|
|
959
|
+
warn,
|
|
960
|
+
icon,
|
|
961
|
+
className,
|
|
962
|
+
wrapperClassName,
|
|
963
|
+
...props
|
|
964
|
+
}) => {
|
|
956
965
|
const classBase = "input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full";
|
|
957
966
|
const variantClasses = {
|
|
958
967
|
outline: "rounded border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary",
|
|
@@ -974,7 +983,7 @@ var Input = ({ variant = "outline", success, error, warn, icon, className, ...pr
|
|
|
974
983
|
const toneClass = status ? statusClasses[status.tone] : void 0;
|
|
975
984
|
const prependIconClass = resolveIconClassName3(icon);
|
|
976
985
|
const prependPadding = prependIconClass ? "pl-10" : void 0;
|
|
977
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
986
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tailwindMerge.twMerge("flex flex-col gap-1", wrapperClassName), children: [
|
|
978
987
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center", children: [
|
|
979
988
|
prependIconClass && /* @__PURE__ */ jsxRuntime.jsx("i", { className: tailwindMerge.twMerge("pointer-events-none absolute left-3 ", prependIconClass), "aria-hidden": true }),
|
|
980
989
|
/* @__PURE__ */ jsxRuntime.jsx("input", { ...props, className: tailwindMerge.twMerge(classBase, variantClass, toneClass, prependPadding, className) })
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/globals.ts","../src/Containment/Button/states.button.ts","../src/Containment/Button/index.tsx","../src/Containment/Chip/states.chip.ts","../src/Containment/Chip/index.tsx","../src/Containment/List/list.context.ts","../src/Containment/List/Item/index.tsx","../src/Containment/List/index.tsx","../src/Containment/Menu/index.tsx","../src/Form/Input/states.input.ts","../src/Form/Input/index.tsx"],"names":["normalized","React","twMerge","jsxs","jsx","paletteVariantClasses","resolveVariantClass","resolveIconClassName","React2","React3","React4","React5","React6","Fragment","normalizedName"],"mappings":"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","file":"index.cjs","sourcesContent":["export const iconBaseClasses = {\n mdi: ['mdi']\n} as const;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { Palette } from '@lindle/linoardo/global.types';\nimport type { ButtonProps } from './types.button';\nimport { ContainmentSize, ContainmentVariant } from '../containment.types';\n\nexport const base =\n 'btn-base focus-visible:outline-none focus-visible:ring-2 rounded-md transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed';\n\nconst blackAndWhiteVariantClass =\n 'bg-white hover:bg-black hover:text-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst paletteVariantClasses: Record<Palette, Record<ContainmentVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary',\n outline: 'border border-primary text-primary bg-white hover:bg-primary hover:text-white focus-visible:ring-primary',\n ghost: 'text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40',\n text: 'bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n neutral: {\n solid: 'bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500',\n outline:\n 'border border-gray-400 text-gray-700 bg-white hover:bg-gray-700 hover:text-white focus-visible:ring-gray-400',\n ghost: 'text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300',\n text: 'bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n info: {\n solid: 'bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400',\n outline: 'border border-sky-500 text-sky-600 bg-white hover:bg-sky-500 hover:text-white focus-visible:ring-sky-400',\n ghost: 'text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300',\n text: 'bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n success: {\n solid: 'bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400',\n outline:\n 'border border-emerald-500 text-emerald-600 bg-white hover:bg-emerald-500 hover:text-white focus-visible:ring-emerald-400',\n ghost: 'text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300',\n text: 'bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n warning: {\n solid: 'bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400',\n outline:\n 'border border-amber-500 text-amber-600 bg-white hover:bg-amber-500 hover:text-white focus-visible:ring-amber-400',\n ghost: 'text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300',\n text: 'bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n danger: {\n solid: 'bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400',\n outline: 'border border-red-500 text-red-600 bg-white hover:bg-red-500 hover:text-white focus-visible:ring-red-400',\n ghost: 'text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300',\n text: 'bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200',\n outline: 'border border-gray-300 text-gray-900 bg-white hover:bg-gray-100 focus-visible:ring-gray-200',\n ghost: 'text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200',\n text: 'bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n }\n};\n\nexport const resolveVariantClass = (variant: ContainmentVariant, palette: Palette) => {\n const paletteVariants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return paletteVariants[variant] ?? paletteVariants.solid;\n};\n\nexport const resolveIconClassName = (icon?: ButtonProps['icon']) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n\nexport const sizeClasses = {\n 'x-small': 'px-2.5 py-1 text-xs',\n small: 'px-3 py-1.5 text-sm',\n medium: 'px-4 py-2 text-base',\n large: 'px-6 py-3 text-lg',\n 'x-large': 'px-7 py-3.5 text-xl'\n} satisfies Record<ContainmentSize, string>;\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { ButtonProps } from './types.button';\nimport { base, resolveIconClassName, resolveVariantClass, sizeClasses } from './states.button';\n\n/**\n * Containment button supporting variant, size, block layout and loading states.\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n block = false,\n loading = false,\n loadingText,\n icon,\n className,\n children,\n disabled,\n onClick,\n ...rest\n },\n ref\n ) => {\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = sizeClasses[size] ?? sizeClasses.medium;\n const blockClass = block ? 'w-full' : null;\n const isDisabled = disabled || loading;\n const cursor = onClick && !isDisabled ? 'cursor-pointer' : 'cursor-default';\n const resolvedIconClass = resolveIconClassName(icon);\n const shouldRenderIcon = Boolean(resolvedIconClass && !loading);\n const isLoadingTextProvided = loadingText !== undefined && loadingText !== null;\n const content = loading && isLoadingTextProvided ? loadingText : children;\n const hasDecorators = (loading || shouldRenderIcon) && Boolean(content);\n const gapClass = hasDecorators ? 'gap-2' : undefined;\n const loadingIconClass = loading ? twMerge('mdi mdi-loading mdi-spin', 'leading-none') : undefined;\n const iconClassName = shouldRenderIcon ? twMerge('leading-none', resolvedIconClass) : undefined;\n\n return (\n <button\n {...rest}\n ref={ref}\n onClick={onClick}\n disabled={isDisabled}\n className={twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className)}\n data-loading={loading || undefined}\n aria-busy={loading || undefined}\n >\n {loading && <i className={loadingIconClass} aria-hidden />}\n {iconClassName && <i className={iconClassName} aria-hidden />}\n {content}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { Palette, PropIcon } from '@lindle/linoardo/global.types';\nimport { ChipSize, ChipVariant } from './types.chip';\n\nexport const chipBaseClasses =\n 'inline-flex items-center gap-1.5 border font-medium leading-tight transition-all duration-200 select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nexport const chipSizeClasses: Record<ChipSize, string> = {\n small: 'text-xs px-3 py-1 min-h-[1.5rem]',\n medium: 'text-sm px-4 py-1.5 min-h-[2rem]',\n large: 'text-base px-5 py-2 min-h-[2.5rem]'\n};\n\nexport const closeButtonClasses =\n 'ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2';\n\nconst blackAndWhiteChipVariantClass =\n 'bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst paletteVariantClasses: Record<Palette, Record<ChipVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white border border-primary hover:bg-primary/90',\n outline: 'bg-transparent text-primary border border-primary hover:bg-primary/10',\n ghost: 'bg-primary/15 text-primary border border-transparent hover:bg-primary/25',\n text: 'bg-transparent text-primary border border-transparent hover:text-primary/80',\n bw: blackAndWhiteChipVariantClass\n },\n neutral: {\n solid: 'bg-gray-900 text-white border border-gray-900 hover:bg-gray-800',\n outline: 'bg-transparent text-gray-900 border border-gray-500 hover:bg-gray-100',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-700',\n bw: blackAndWhiteChipVariantClass\n },\n info: {\n solid: 'bg-sky-500 text-white border border-sky-500 hover:bg-sky-600',\n outline: 'bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50',\n ghost: 'bg-sky-100 text-sky-700 border border-transparent hover:bg-sky-200',\n text: 'bg-transparent text-sky-600 border border-transparent hover:text-sky-700',\n bw: blackAndWhiteChipVariantClass\n },\n success: {\n solid: 'bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600',\n outline: 'bg-transparent text-emerald-600 border border-emerald-500 hover:bg-emerald-50',\n ghost: 'bg-emerald-100 text-emerald-700 border border-transparent hover:bg-emerald-200',\n text: 'bg-transparent text-emerald-600 border border-transparent hover:text-emerald-700',\n bw: blackAndWhiteChipVariantClass\n },\n warning: {\n solid: 'bg-amber-500 text-white border border-amber-500 hover:bg-amber-600',\n outline: 'bg-transparent text-amber-700 border border-amber-500 hover:bg-amber-50',\n ghost: 'bg-amber-100 text-amber-800 border border-transparent hover:bg-amber-200',\n text: 'bg-transparent text-amber-700 border border-transparent hover:text-amber-800',\n bw: blackAndWhiteChipVariantClass\n },\n danger: {\n solid: 'bg-red-500 text-white border border-red-500 hover:bg-red-600',\n outline: 'bg-transparent text-red-600 border border-red-500 hover:bg-red-50',\n ghost: 'bg-red-100 text-red-700 border border-transparent hover:bg-red-200',\n text: 'bg-transparent text-red-600 border border-transparent hover:text-red-700',\n bw: blackAndWhiteChipVariantClass\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50',\n outline: 'bg-transparent text-gray-900 border border-gray-300 hover:bg-gray-50',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-600',\n bw: blackAndWhiteChipVariantClass\n }\n};\n\nexport const resolveVariantClass = (variant: ChipVariant, palette: Palette) => {\n const variants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return variants[variant] ?? variants.solid;\n};\n\nexport const resolveIconClassName = (icon?: PropIcon) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n","'use client';\n\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { ChipProps } from './types.chip';\nimport {\n chipBaseClasses,\n chipSizeClasses,\n closeButtonClasses,\n resolveIconClassName,\n resolveVariantClass\n} from './states.chip';\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n pill = true,\n selected = false,\n closable = false,\n closeIcon = 'mdi-close',\n onClose,\n filter = false,\n filterIcon = 'mdi-check-bold',\n prependIcon,\n appendIcon,\n disabled = false,\n className,\n children,\n ...rest\n },\n ref\n ) => {\n const { onClick, onKeyDown, role, tabIndex, ...nativeProps } = rest;\n const interactive = typeof onClick === 'function';\n\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = chipSizeClasses[size] ?? chipSizeClasses.medium;\n const pillClass = pill ? 'rounded-full' : 'rounded-lg';\n const cursorClass = disabled ? 'pointer-events-none opacity-50' : interactive ? 'cursor-pointer' : 'cursor-default';\n const selectedClass = selected ? 'ring-2 ring-current/50 ring-offset-2 ring-offset-white' : undefined;\n\n const resolvedRole = disabled ? role : role ?? (interactive ? 'button' : undefined);\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive ? 0 : undefined);\n const prependIconClassName = resolveIconClassName(prependIcon);\n const appendIconClassName = resolveIconClassName(appendIcon);\n const closeIconClassName = resolveIconClassName(closeIcon);\n const filterIconClassName = filter && selected ? resolveIconClassName(filterIcon) : undefined;\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n onClick?.(event);\n },\n [disabled, onClick]\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled || !interactive) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n (event.currentTarget as HTMLSpanElement).click();\n }\n },\n [disabled, interactive, onKeyDown]\n );\n\n const handleCloseClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClose?.(event);\n },\n [disabled, onClose]\n );\n\n const handleCloseKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.stopPropagation();\n }\n }, []);\n\n const renderableChildren =\n typeof children === 'string' || typeof children === 'number' ? (\n <span className='truncate'>{children}</span>\n ) : (\n children\n );\n\n const filterAdornment = filter ? (\n <span\n className='flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-current/30 text-[0.55rem]'\n aria-hidden\n >\n {filterIconClassName ? <i className={filterIconClassName} aria-hidden /> : null}\n </span>\n ) : null;\n\n return (\n <span\n {...nativeProps}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-pressed={filter ? selected : undefined}\n data-selected={selected || undefined}\n className={twMerge(chipBaseClasses, sizeClass, pillClass, variantClass, cursorClass, selectedClass, className)}\n onClick={interactive ? handleClick : undefined}\n onKeyDown={interactive ? handleKeyDown : onKeyDown}\n >\n {filterAdornment}\n {prependIconClassName && <i className={twMerge('text-[1em] leading-none', prependIconClassName)} aria-hidden />}\n {renderableChildren}\n {appendIconClassName && <i className={twMerge('text-[1em] leading-none', appendIconClassName)} aria-hidden />}\n {closable && (\n <button\n type='button'\n disabled={disabled}\n aria-label='Remove chip'\n className={twMerge(closeButtonClasses)}\n onClick={handleCloseClick}\n onKeyDown={handleCloseKeyDown}\n >\n {closeIconClassName ? <i className={closeIconClassName} aria-hidden /> : <span aria-hidden>×</span>}\n </button>\n )}\n </span>\n );\n }\n);\n\nChip.displayName = 'Chip';\n\nexport type { ChipProps, ChipSize, ChipVariant } from './types.chip';\nexport default Chip;\n","import * as React from 'react';\nimport type { Palette } from '@lindle/linoardo/global.types';\nimport type { ListDensity, ListLines } from './types.list';\n\nexport interface ListContextValue {\n density: ListDensity;\n lines: ListLines;\n nav: boolean;\n divided: boolean;\n color: Palette;\n}\n\nexport const defaultListContext: ListContextValue = {\n density: 'default',\n lines: 'one',\n nav: false,\n divided: false,\n color: 'primary'\n};\n\nexport const ListContext = React.createContext<ListContextValue>(defaultListContext);\n\nexport const useListContext = () => React.useContext(ListContext);\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport { useListContext } from '../list.context';\nimport type { ListDensity, ListLines } from '../types.list';\n\nconst listItemBaseClasses =\n 'relative flex w-full items-center gap-4 bg-transparent text-left text-sm transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white hover:bg-neutral-200';\n\nconst densityClasses: Record<ListDensity, string> = {\n default: 'px-4 py-3 text-base',\n comfortable: 'px-4 py-2.5 text-sm',\n compact: 'px-3 py-2 text-sm'\n};\n\nconst lineClasses: Record<ListLines, string> = {\n one: 'min-h-[3rem]',\n two: 'min-h-[3.75rem]',\n three: 'min-h-[4.5rem]'\n};\n\nconst accentClasses: Record<Palette, { text: string; bg: string; indicator: string }> = {\n primary: { text: 'text-primary', bg: 'bg-primary/10', indicator: 'bg-primary' },\n neutral: { text: 'text-gray-900', bg: 'bg-gray-100', indicator: 'bg-gray-900' },\n info: { text: 'text-sky-600', bg: 'bg-sky-50', indicator: 'bg-sky-500' },\n success: { text: 'text-emerald-600', bg: 'bg-emerald-50', indicator: 'bg-emerald-500' },\n warning: { text: 'text-amber-700', bg: 'bg-amber-50', indicator: 'bg-amber-500' },\n danger: { text: 'text-red-600', bg: 'bg-red-50', indicator: 'bg-red-500' },\n surface: { text: 'text-gray-900', bg: 'bg-gray-100', indicator: 'bg-gray-900' }\n};\n\nexport interface ListItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n component?: React.ElementType;\n href?: string;\n target?: string;\n rel?: string;\n type?: 'button' | 'submit' | 'reset';\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n overline?: React.ReactNode;\n prepend?: React.ReactNode;\n append?: React.ReactNode;\n active?: boolean;\n disabled?: boolean;\n inset?: boolean;\n density?: ListDensity;\n lines?: ListLines;\n}\n\nconst ListItem = React.forwardRef<HTMLElement, ListItemProps>((props, ref) => {\n const {\n component,\n href,\n target,\n rel,\n type,\n title,\n subtitle,\n overline,\n prepend,\n append,\n active = false,\n disabled = false,\n inset = false,\n density: densityOverride,\n lines: linesOverride,\n className,\n children,\n tabIndex,\n role,\n ...rest\n } = props;\n\n const listContext = useListContext();\n const density = densityOverride ?? listContext.density;\n const lines = linesOverride ?? listContext.lines;\n const nav = listContext.nav;\n const accent = accentClasses[listContext.color] ?? accentClasses.primary;\n const shapeClass = listContext.divided ? 'rounded-none' : 'rounded-lg';\n\n const Component = component ?? (href ? 'a' : 'div');\n const interactive = typeof rest.onClick === 'function' || Component === 'a' || Component === 'button';\n\n const resolvedRole = role ?? 'listitem';\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive && Component === 'div' ? 0 : undefined);\n const resolvedRel = Component === 'a' ? rel : undefined;\n const resolvedTarget = Component === 'a' ? target : undefined;\n const resolvedHref = Component === 'a' ? href : undefined;\n const resolvedType = Component === 'button' ? type ?? 'button' : undefined;\n\n const disabledClass = disabled ? 'pointer-events-none opacity-60' : 'cursor-pointer';\n const navPaddingClass = nav ? 'pl-5' : undefined;\n const insetClass = inset ? 'pl-12' : undefined;\n const activeClasses = active ? accent.bg : undefined;\n\n return (\n <Component\n {...rest}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-current={active ? 'true' : undefined}\n className={twMerge(\n listItemBaseClasses,\n densityClasses[density],\n lineClasses[lines],\n shapeClass,\n navPaddingClass,\n insetClass,\n disabledClass,\n activeClasses,\n className\n )}\n href={resolvedHref}\n target={resolvedTarget}\n rel={resolvedRel}\n type={resolvedType}\n data-active={active || undefined}\n >\n {nav && (\n <span\n aria-hidden\n className={twMerge(\n 'absolute left-1 top-2 bottom-2 w-0.5 rounded-full bg-transparent transition-colors duration-150',\n active ? accent.indicator : undefined\n )}\n />\n )}\n {prepend && (\n <span className='flex h-10 w-10 shrink-0 items-center justify-center text-base text-gray-500'>{prepend}</span>\n )}\n <span className='flex min-w-0 flex-col gap-0.5 text-left'>\n {overline && (\n <span className='text-[0.65rem] font-semibold uppercase tracking-wide text-gray-500'>{overline}</span>\n )}\n {title && (\n <span className={twMerge('truncate font-medium text-gray-900', active ? accent.text : undefined)}>\n {title}\n </span>\n )}\n {subtitle && <span className='text-sm text-gray-500'>{subtitle}</span>}\n {children}\n </span>\n {append && (\n <span className='ml-auto flex items-center gap-2 whitespace-nowrap text-sm text-gray-500'>{append}</span>\n )}\n </Component>\n );\n});\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\nexport type { ListDensity, ListLines } from '../types.list';\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport ListItem from './Item';\nimport { ListContext } from './list.context';\nimport type { ListContextValue } from './list.context';\nimport type { ListDensity, ListLines, ListRounded, ListVariant } from './types.list';\n\nconst listBaseClasses = 'flex w-full min-w-0 flex-col text-gray-900 transition-colors duration-150';\n\nconst listVariantClasses: Record<ListVariant, string> = {\n solid: 'bg-white border border-gray-200 shadow-sm shadow-gray-900/5',\n outline: 'bg-transparent border border-gray-300',\n ghost: 'bg-gray-50 border border-transparent',\n text: 'bg-transparent border border-transparent',\n bw: 'bg-white text-black border border-black shadow-none'\n};\n\nconst listRoundedClasses: Record<ListRounded, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n pill: 'rounded-full'\n};\n\nexport interface ListProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: ListVariant;\n density?: ListDensity;\n lines?: ListLines;\n nav?: boolean;\n divided?: boolean;\n rounded?: ListRounded;\n color?: Palette;\n}\n\nconst List = React.forwardRef<HTMLDivElement, ListProps>((props, ref) => {\n const {\n variant = 'solid',\n density = 'default',\n lines = 'one',\n nav = false,\n divided = false,\n rounded = 'lg',\n color = 'primary',\n className,\n role,\n children,\n ...rest\n } = props;\n\n const variantClass = listVariantClasses[variant] ?? listVariantClasses.solid;\n const roundedClass = listRoundedClasses[rounded] ?? listRoundedClasses.lg;\n const dividerClass = divided ? 'divide-y divide-gray-100' : undefined;\n const gapClass = divided ? 'p-0' : 'gap-1 p-1';\n const navClass = nav ? 'py-1' : undefined;\n const accentColor = variant === 'bw' ? 'surface' : color;\n\n const contextValue = React.useMemo<ListContextValue>(\n () => ({\n density,\n lines,\n nav,\n divided,\n color: accentColor\n }),\n [accentColor, density, lines, nav, divided]\n );\n\n return (\n <ListContext.Provider value={contextValue}>\n <div\n {...rest}\n ref={ref}\n role={role ?? 'list'}\n className={twMerge(listBaseClasses, variantClass, roundedClass, dividerClass, gapClass, navClass, className)}\n >\n {children}\n </div>\n </ListContext.Provider>\n );\n});\n\nList.displayName = 'List';\n\nexport { ListItem };\nexport type { ListItemProps } from './Item';\nexport type { ListVariant, ListDensity, ListLines, ListRounded } from './types.list';\nexport default List;\n","'use client';\n\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst isBrowser = typeof window !== 'undefined';\nconst useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;\n\nexport type MenuPlacement = 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\nexport interface MenuActivatorRenderProps {\n ref: (node: HTMLElement | null) => void;\n id: string;\n 'aria-haspopup': 'menu';\n 'aria-expanded': boolean;\n 'aria-controls': string;\n onClick: React.MouseEventHandler<HTMLElement>;\n onKeyDown: React.KeyboardEventHandler<HTMLElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLElement>;\n disabled?: boolean;\n open: boolean;\n}\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n activator: (props: MenuActivatorRenderProps) => React.ReactNode;\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: MenuPlacement;\n openOnHover?: boolean;\n closeOnContentClick?: boolean;\n matchActivatorWidth?: boolean;\n keepMounted?: boolean;\n disabled?: boolean;\n scrim?: boolean;\n contentClassName?: string;\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n overlayClassName?: string;\n}\n\nconst placementClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'left-0 top-full origin-top-left',\n bottom: 'left-1/2 top-full -translate-x-1/2 origin-top',\n 'bottom-end': 'right-0 top-full origin-top-right',\n 'top-start': 'left-0 bottom-full origin-bottom-left',\n top: 'left-1/2 bottom-full -translate-x-1/2 origin-bottom',\n 'top-end': 'right-0 bottom-full origin-bottom-right'\n};\n\nconst offsetClasses: Record<'top' | 'bottom', string> = {\n top: 'mb-2',\n bottom: 'mt-2'\n};\n\nconst menuBaseClasses =\n 'absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0 data-[state=closed]:scale-95 data-[state=open]:opacity-100 data-[state=open]:scale-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nconst overlayBaseClasses = 'fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]';\n\nconst Menu = React.forwardRef<HTMLDivElement, MenuProps>((props, ref) => {\n const {\n activator,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom-start',\n openOnHover = false,\n closeOnContentClick = true,\n matchActivatorWidth = false,\n keepMounted = false,\n disabled = false,\n scrim = false,\n contentClassName,\n contentProps,\n overlayClassName,\n className,\n onMouseEnter: rootMouseEnter,\n onMouseLeave: rootMouseLeave,\n ...rest\n } = props;\n\n const baseId = React.useId();\n const menuId = `${baseId}-menu`;\n const activatorId = `${baseId}-activator`;\n\n const isControlled = typeof openProp === 'boolean';\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const open = isControlled ? Boolean(openProp) : internalOpen;\n\n const localRootRef = React.useRef<HTMLDivElement | null>(null);\n const menuRef = React.useRef<HTMLDivElement | null>(null);\n const activatorRef = React.useRef<HTMLElement | null>(null);\n const closeTimeoutRef = React.useRef<number | null>(null);\n\n const mergedRootRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRootRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [ref]\n );\n\n const [activatorWidth, setActivatorWidth] = React.useState<number>();\n\n const updateActivatorWidth = React.useCallback(() => {\n if (!matchActivatorWidth) {\n setActivatorWidth(undefined);\n return;\n }\n const node = activatorRef.current;\n if (!node) {\n return;\n }\n setActivatorWidth(node.getBoundingClientRect().width);\n }, [matchActivatorWidth]);\n\n useIsomorphicLayoutEffect(() => {\n if (!matchActivatorWidth) {\n return;\n }\n updateActivatorWidth();\n if (!activatorRef.current || typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => updateActivatorWidth());\n observer.observe(activatorRef.current);\n return () => observer.disconnect();\n }, [matchActivatorWidth, updateActivatorWidth]);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (disabled || open === nextOpen) {\n return;\n }\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [disabled, isControlled, onOpenChange, open]\n );\n\n React.useEffect(() => {\n if (!disabled || !open) {\n return;\n }\n if (!isControlled) {\n setInternalOpen(false);\n }\n onOpenChange?.(false);\n }, [disabled, open, isControlled, onOpenChange]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (!target) {\n return;\n }\n if (localRootRef.current?.contains(target)) {\n return;\n }\n setOpen(false);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setOpen(false);\n activatorRef.current?.focus();\n }\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [open, setOpen]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n const node = menuRef.current;\n if (!node) {\n return;\n }\n const id = window.requestAnimationFrame(() => {\n node.focus({ preventScroll: true });\n });\n return () => window.cancelAnimationFrame(id);\n }, [open]);\n\n const setActivatorNode = React.useCallback(\n (node: HTMLElement | null) => {\n activatorRef.current = node;\n if (node && matchActivatorWidth) {\n setActivatorWidth(node.getBoundingClientRect().width);\n }\n },\n [matchActivatorWidth]\n );\n\n const handleActivatorClick = React.useCallback<React.MouseEventHandler<HTMLElement>>(\n event => {\n event.preventDefault();\n if (disabled) {\n return;\n }\n setOpen(!open);\n },\n [disabled, open, setOpen]\n );\n\n const handleActivatorKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLElement>>(\n event => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setOpen(!open);\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setOpen(true);\n }\n },\n [open, setOpen]\n );\n\n const clearCloseTimeout = React.useCallback(() => {\n if (closeTimeoutRef.current !== null) {\n if (isBrowser) {\n window.clearTimeout(closeTimeoutRef.current);\n }\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleClose = React.useCallback(() => {\n if (!isBrowser) {\n setOpen(false);\n return;\n }\n clearCloseTimeout();\n closeTimeoutRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimeoutRef.current = null;\n }, 150);\n }, [clearCloseTimeout, setOpen]);\n\n React.useEffect(() => {\n return () => clearCloseTimeout();\n }, [clearCloseTimeout]);\n\n const isMovingWithinMenu = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const nextTarget = event.relatedTarget as Node | null;\n if (!nextTarget || !localRootRef.current) {\n return false;\n }\n return localRootRef.current.contains(nextTarget);\n },\n [localRootRef]\n );\n\n const handleRootMouseEnter = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n rootMouseEnter?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n clearCloseTimeout();\n setOpen(true);\n }\n },\n [clearCloseTimeout, openOnHover, rootMouseEnter, setOpen]\n );\n\n const handleRootMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n rootMouseLeave?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n }\n },\n [isMovingWithinMenu, openOnHover, rootMouseLeave, scheduleClose]\n );\n\n const handleActivatorMouseEnter = React.useCallback(\n (_event: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n return;\n }\n clearCloseTimeout();\n setOpen(true);\n },\n [clearCloseTimeout, disabled, setOpen]\n );\n\n const handleActivatorMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (disabled || !openOnHover) {\n return;\n }\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n },\n [disabled, isMovingWithinMenu, openOnHover, scheduleClose]\n );\n\n const {\n className: contentClass,\n style: contentStyle,\n onClick: contentOnClick,\n onMouseEnter: contentOnMouseEnter,\n onMouseLeave: contentOnMouseLeave,\n role: contentRole,\n tabIndex: contentTabIndex,\n ['aria-labelledby']: ariaLabelledBy,\n ...restContentProps\n } = contentProps ?? {};\n\n const shouldRenderContent = open || keepMounted;\n const verticalPlacement = placement.startsWith('top') ? 'top' : 'bottom';\n\n const activatorElement = activator({\n ref: setActivatorNode,\n id: activatorId,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n 'aria-controls': menuId,\n onClick: handleActivatorClick,\n onKeyDown: handleActivatorKeyDown,\n onMouseEnter: openOnHover ? handleActivatorMouseEnter : undefined,\n onMouseLeave: openOnHover ? handleActivatorMouseLeave : undefined,\n disabled,\n open\n });\n\n return (\n <>\n {scrim && open ? (\n <div\n className={twMerge(overlayBaseClasses, overlayClassName)}\n aria-hidden\n onClick={() => setOpen(false)}\n onMouseDown={event => event.preventDefault()}\n />\n ) : null}\n <div\n {...rest}\n ref={mergedRootRef}\n className={twMerge('relative inline-flex min-w-0', className)}\n data-open={open || undefined}\n onMouseEnter={openOnHover ? handleRootMouseEnter : rootMouseEnter}\n onMouseLeave={openOnHover ? handleRootMouseLeave : rootMouseLeave}\n >\n {activatorElement}\n {shouldRenderContent ? (\n <div\n {...restContentProps}\n ref={menuRef}\n id={menuId}\n role={contentRole ?? 'menu'}\n tabIndex={contentTabIndex ?? -1}\n aria-labelledby={ariaLabelledBy ?? activatorId}\n data-state={open ? 'open' : 'closed'}\n className={twMerge(\n menuBaseClasses,\n placementClasses[placement],\n offsetClasses[verticalPlacement],\n contentClassName,\n contentClass\n )}\n style={{\n ...contentStyle,\n ...(matchActivatorWidth && activatorWidth\n ? { minWidth: activatorWidth, width: activatorWidth }\n : undefined)\n }}\n onMouseEnter={event => {\n contentOnMouseEnter?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n clearCloseTimeout();\n setOpen(true);\n }\n }}\n onMouseLeave={event => {\n contentOnMouseLeave?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n }\n }}\n onClick={event => {\n contentOnClick?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (closeOnContentClick) {\n setOpen(false);\n }\n }}\n >\n {children}\n </div>\n ) : null}\n </div>\n </>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { InputProp } from './types';\n\nexport const resolveIconClassName = (icon?: InputProp['icon']) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalizedName = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalizedName].join(' ');\n }\n\n const [library, iconNameRaw] = icon;\n const baseClasses = iconBaseClasses[library] ?? [library];\n const iconName = iconNameRaw.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n const normalizedName = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n const classes = [...baseClasses, normalizedName];\n return Array.from(new Set(classes)).join(' ');\n};\n","'use client';\n\nimport { twMerge } from 'tailwind-merge';\nimport { InputProp, InputVariant } from './types';\nimport { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { resolveIconClassName } from './states.input';\n\nconst Input: React.FC<InputProp> = ({ variant = 'outline', success, error, warn, icon, className, ...props }) => {\n const classBase =\n 'input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full';\n const variantClasses = {\n outline: 'rounded border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary',\n filled: 'rounded bg-gray-100 border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary',\n underlined: 'border-b-1 border-gray-300 focus:border-red-400 focus:outline-none focus:ring-none'\n } satisfies Record<InputVariant, string>;\n\n const status = error\n ? { tone: 'error' as const, message: error }\n : warn\n ? { tone: 'warn' as const, message: warn }\n : success\n ? { tone: 'success' as const, message: success }\n : undefined;\n\n const statusClasses = {\n error: 'border-red-500 focus:border-red-500 focus:ring-red-400',\n warn: 'border-amber-500 focus:border-amber-500 focus:ring-amber-400',\n success: 'border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400'\n } as const;\n\n const statusMessageClasses = {\n error: 'text-red-600',\n warn: 'text-amber-600',\n success: 'text-emerald-600'\n } as const;\n\n const variantClass = variantClasses[variant] ?? variantClasses.outline;\n const toneClass = status ? statusClasses[status.tone] : undefined;\n const prependIconClass = resolveIconClassName(icon);\n const prependPadding = prependIconClass ? 'pl-10' : undefined;\n\n return (\n <div className='flex flex-col gap-1'>\n <div className='relative flex items-center'>\n {prependIconClass && (\n <i className={twMerge('pointer-events-none absolute left-3 ', prependIconClass)} aria-hidden />\n )}\n <input {...props} className={twMerge(classBase, variantClass, toneClass, prependPadding, className)} />\n {/* {appendIconClass && (\n <i className={twMerge('pointer-events-none absolute right-3 text-gray-500', appendIconClass)} aria-hidden />\n )} */}\n </div>\n {status?.message && (\n <span className={twMerge('text-sm', statusMessageClasses[status.tone])}>{status.message}</span>\n )}\n </div>\n );\n};\n\nexport default Input;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/globals.ts","../src/Containment/Button/states.button.ts","../src/Containment/Button/index.tsx","../src/Containment/Chip/states.chip.ts","../src/Containment/Chip/index.tsx","../src/Containment/List/list.context.ts","../src/Containment/List/Item/index.tsx","../src/Containment/List/index.tsx","../src/Containment/Menu/index.tsx","../src/Form/Input/states.input.ts","../src/Form/Input/index.tsx"],"names":["normalized","React","twMerge","jsxs","jsx","paletteVariantClasses","resolveVariantClass","resolveIconClassName","React2","React3","React4","React5","React6","Fragment","normalizedName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,IAAM,eAAA,GAAkB;AAAA,EAC7B,GAAA,EAAK,CAAC,KAAK;AACb,CAAA;;;ACEO,IAAM,IAAA,GACX,gKAAA;AAEF,IAAM,yBAAA,GACJ,yGAAA;AAEF,IAAM,qBAAA,GAAwE;AAAA,EAC5E,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,sEAAA;AAAA,IACP,OAAA,EAAS,0GAAA;AAAA,IACT,KAAA,EAAO,8EAAA;AAAA,IACP,IAAA,EAAM,kGAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,sEAAA;AAAA,IACP,OAAA,EACE,8GAAA;AAAA,IACF,KAAA,EAAO,yEAAA;AAAA,IACP,IAAA,EAAM,+FAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,mEAAA;AAAA,IACP,OAAA,EAAS,0GAAA;AAAA,IACT,KAAA,EAAO,qEAAA;AAAA,IACP,IAAA,EAAM,4FAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,+EAAA;AAAA,IACP,OAAA,EACE,0HAAA;AAAA,IACF,KAAA,EAAO,qFAAA;AAAA,IACP,IAAA,EAAM,wGAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,yEAAA;AAAA,IACP,OAAA,EACE,kHAAA;AAAA,IACF,KAAA,EAAO,6EAAA;AAAA,IACP,IAAA,EAAM,kGAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,mEAAA;AAAA,IACP,OAAA,EAAS,0GAAA;AAAA,IACT,KAAA,EAAO,qEAAA;AAAA,IACP,IAAA,EAAM,4FAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,4FAAA;AAAA,IACP,OAAA,EAAS,6FAAA;AAAA,IACT,KAAA,EAAO,yEAAA;AAAA,IACP,IAAA,EAAM,+FAAA;AAAA,IACN,EAAA,EAAI;AAAA;AAER,CAAA;AAEO,IAAM,mBAAA,GAAsB,CAAC,OAAA,EAAwB,OAAA,KAAqB;AAC/E,EAAA,MAAM,eAAA,GAAkB,qBAAA,CAAsB,OAAO,CAAA,IAAK,qBAAA,CAAsB,OAAA;AAChF,EAAA,OAAO,eAAA,CAAgB,OAAO,CAAA,IAAK,eAAA,CAAgB,KAAA;AACrD,CAAA;AAEO,IAAM,oBAAA,GAAuB,CAAC,IAAA,KAA+B;AAClE,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AACzB,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,MAAMA,cAAa,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,GAAI,OAAA,GAAU,OAAO,OAAO,CAAA,CAAA;AACxE,IAAA,OAAO,CAAC,KAAA,EAAOA,WAAU,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EACrC;AAEA,EAAA,MAAM,CAAC,OAAA,EAAS,YAAY,CAAA,GAAI,IAAA;AAChC,EAAA,MAAM,iBAAA,GAAoB,QAAQ,IAAA,EAAK;AACvC,EAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,iBAAiD,CAAA,IAAK,CAAC,iBAAiB,CAAA;AAC5G,EAAA,MAAM,QAAA,GAAW,aAAa,IAAA,EAAK;AACnC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,WAAA,CAAY,KAAK,GAAG,CAAA;AAAA,EAC7B;AAEA,EAAA,MAAM,aAAa,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,GAAI,QAAA,GAAW,OAAO,QAAQ,CAAA,CAAA;AAC3E,EAAA,OAAO,KAAA,CAAM,IAAA,iBAAK,IAAI,GAAA,CAAI,CAAC,GAAG,WAAA,EAAa,UAAU,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACnE,CAAA;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,SAAA,EAAW,qBAAA;AAAA,EACX,KAAA,EAAO,qBAAA;AAAA,EACP,MAAA,EAAQ,qBAAA;AAAA,EACR,KAAA,EAAO,mBAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;ACnGA,IAAM,MAAA,GAAeC,iBAAA,CAAA,UAAA;AAAA,EACnB,CACE;AAAA,IACE,OAAA,GAAU,OAAA;AAAA,IACV,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,QAAA;AAAA,IACP,KAAA,GAAQ,KAAA;AAAA,IACR,OAAA,GAAU,KAAA;AAAA,IACV,WAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,YAAA,GAAe,mBAAA,CAAoB,OAAA,EAAS,KAAK,CAAA;AACvD,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,IAAI,CAAA,IAAK,WAAA,CAAY,MAAA;AACnD,IAAA,MAAM,UAAA,GAAa,QAAQ,QAAA,GAAW,IAAA;AACtC,IAAA,MAAM,aAAa,QAAA,IAAY,OAAA;AAC/B,IAAA,MAAM,MAAA,GAAS,OAAA,IAAW,CAAC,UAAA,GAAa,gBAAA,GAAmB,gBAAA;AAC3D,IAAA,MAAM,iBAAA,GAAoB,qBAAqB,IAAI,CAAA;AACnD,IAAA,MAAM,gBAAA,GAAmB,OAAA,CAAQ,iBAAA,IAAqB,CAAC,OAAO,CAAA;AAC9D,IAAA,MAAM,qBAAA,GAAwB,WAAA,KAAgB,MAAA,IAAa,WAAA,KAAgB,IAAA;AAC3E,IAAA,MAAM,OAAA,GAAU,OAAA,IAAW,qBAAA,GAAwB,WAAA,GAAc,QAAA;AACjE,IAAA,MAAM,aAAA,GAAA,CAAiB,OAAA,IAAW,gBAAA,KAAqB,OAAA,CAAQ,OAAO,CAAA;AACtE,IAAA,MAAM,QAAA,GAAW,gBAAgB,OAAA,GAAU,MAAA;AAC3C,IAAA,MAAM,gBAAA,GAAmB,OAAA,GAAUC,qBAAA,CAAQ,0BAAA,EAA4B,cAAc,CAAA,GAAI,MAAA;AACzF,IAAA,MAAM,aAAA,GAAgB,gBAAA,GAAmBA,qBAAA,CAAQ,cAAA,EAAgB,iBAAiB,CAAA,GAAI,MAAA;AAEtF,IAAA,uBACEC,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA,EAAU,UAAA;AAAA,QACV,SAAA,EAAWD,sBAAQ,IAAA,EAAM,MAAA,EAAQ,cAAc,SAAA,EAAW,UAAA,EAAY,QAAA,EAAU,SAAA,EAAW,mBAAmB,CAAA;AAAA,QAC9G,gBAAc,OAAA,IAAW,MAAA;AAAA,QACzB,aAAW,OAAA,IAAW,MAAA;AAAA,QAErB,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAWE,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,gBAAA,EAAkB,eAAW,IAAA,EAAC,CAAA;AAAA,UACvD,iCAAiBA,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,aAAA,EAAe,eAAW,IAAA,EAAC,CAAA;AAAA,UAC1D;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AAErB,IAAO,cAAA,GAAQ;;;ACxDR,IAAM,eAAA,GACX,qNAAA;AAEK,IAAM,eAAA,GAA4C;AAAA,EACvD,KAAA,EAAO,kCAAA;AAAA,EACP,MAAA,EAAQ,kCAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,kBAAA,GACX,4QAAA;AAEF,IAAM,6BAAA,GACJ,oHAAA;AAEF,IAAMC,sBAAAA,GAAsE;AAAA,EAC1E,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,iEAAA;AAAA,IACP,OAAA,EAAS,uEAAA;AAAA,IACT,KAAA,EAAO,0EAAA;AAAA,IACP,IAAA,EAAM,6EAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,iEAAA;AAAA,IACP,OAAA,EAAS,uEAAA;AAAA,IACT,KAAA,EAAO,uEAAA;AAAA,IACP,IAAA,EAAM,4EAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,8DAAA;AAAA,IACP,OAAA,EAAS,mEAAA;AAAA,IACT,KAAA,EAAO,oEAAA;AAAA,IACP,IAAA,EAAM,0EAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,0EAAA;AAAA,IACP,OAAA,EAAS,+EAAA;AAAA,IACT,KAAA,EAAO,gFAAA;AAAA,IACP,IAAA,EAAM,kFAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,oEAAA;AAAA,IACP,OAAA,EAAS,yEAAA;AAAA,IACT,KAAA,EAAO,0EAAA;AAAA,IACP,IAAA,EAAM,8EAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,8DAAA;AAAA,IACP,OAAA,EAAS,mEAAA;AAAA,IACT,KAAA,EAAO,oEAAA;AAAA,IACP,IAAA,EAAM,0EAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,gEAAA;AAAA,IACP,OAAA,EAAS,sEAAA;AAAA,IACT,KAAA,EAAO,uEAAA;AAAA,IACP,IAAA,EAAM,4EAAA;AAAA,IACN,EAAA,EAAI;AAAA;AAER,CAAA;AAEO,IAAMC,oBAAAA,GAAsB,CAAC,OAAA,EAAsB,OAAA,KAAqB;AAC7E,EAAA,MAAM,QAAA,GAAWD,sBAAAA,CAAsB,OAAO,CAAA,IAAKA,sBAAAA,CAAsB,OAAA;AACzE,EAAA,OAAO,QAAA,CAAS,OAAO,CAAA,IAAK,QAAA,CAAS,KAAA;AACvC,CAAA;AAEO,IAAME,qBAAAA,GAAuB,CAAC,IAAA,KAAoB;AACvD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AACzB,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,MAAMP,cAAa,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,GAAI,OAAA,GAAU,OAAO,OAAO,CAAA,CAAA;AACxE,IAAA,OAAO,CAAC,KAAA,EAAOA,WAAU,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EACrC;AAEA,EAAA,MAAM,CAAC,OAAA,EAAS,YAAY,CAAA,GAAI,IAAA;AAChC,EAAA,MAAM,iBAAA,GAAoB,QAAQ,IAAA,EAAK;AACvC,EAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,iBAAiD,CAAA,IAAK,CAAC,iBAAiB,CAAA;AAC5G,EAAA,MAAM,QAAA,GAAW,aAAa,IAAA,EAAK;AACnC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,WAAA,CAAY,KAAK,GAAG,CAAA;AAAA,EAC7B;AAEA,EAAA,MAAM,aAAa,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,GAAI,QAAA,GAAW,OAAO,QAAQ,CAAA,CAAA;AAC3E,EAAA,OAAO,KAAA,CAAM,IAAA,iBAAK,IAAI,GAAA,CAAI,CAAC,GAAG,WAAA,EAAa,UAAU,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACnE,CAAA;AC5FA,IAAM,IAAA,GAAaQ,iBAAA,CAAA,UAAA;AAAA,EACjB,CACE;AAAA,IACE,OAAA,GAAU,OAAA;AAAA,IACV,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,QAAA;AAAA,IACP,IAAA,GAAO,IAAA;AAAA,IACP,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,WAAA;AAAA,IACZ,OAAA;AAAA,IACA,MAAA,GAAS,KAAA;AAAA,IACT,UAAA,GAAa,gBAAA;AAAA,IACb,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAW,MAAM,QAAA,EAAU,GAAG,aAAY,GAAI,IAAA;AAC/D,IAAA,MAAM,WAAA,GAAc,OAAO,OAAA,KAAY,UAAA;AAEvC,IAAA,MAAM,YAAA,GAAeF,oBAAAA,CAAoB,OAAA,EAAS,KAAK,CAAA;AACvD,IAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,IAAI,CAAA,IAAK,eAAA,CAAgB,MAAA;AAC3D,IAAA,MAAM,SAAA,GAAY,OAAO,cAAA,GAAiB,YAAA;AAC1C,IAAA,MAAM,WAAA,GAAc,QAAA,GAAW,gCAAA,GAAmC,WAAA,GAAc,gBAAA,GAAmB,gBAAA;AACnG,IAAA,MAAM,aAAA,GAAgB,WAAW,wDAAA,GAA2D,MAAA;AAE5F,IAAA,MAAM,YAAA,GAAe,QAAA,GAAW,IAAA,GAAO,IAAA,KAAS,cAAc,QAAA,GAAW,MAAA,CAAA;AACzE,IAAA,MAAM,gBAAA,GAAmB,QAAA,GAAW,EAAA,GAAK,QAAA,KAAa,cAAc,CAAA,GAAI,MAAA,CAAA;AACxE,IAAA,MAAM,oBAAA,GAAuBC,sBAAqB,WAAW,CAAA;AAC7D,IAAA,MAAM,mBAAA,GAAsBA,sBAAqB,UAAU,CAAA;AAC3D,IAAA,MAAM,kBAAA,GAAqBA,sBAAqB,SAAS,CAAA;AACzD,IAAA,MAAM,mBAAA,GAAsB,MAAA,IAAU,QAAA,GAAWA,qBAAAA,CAAqB,UAAU,CAAA,GAAI,MAAA;AAEpF,IAAA,MAAM,WAAA,GAAoBC,iBAAA,CAAA,WAAA;AAAA,MACxB,CAAC,KAAA,KAA6C;AAC5C,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,UAAA;AAAA,QACF;AAEA,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,CAAC,UAAU,OAAO;AAAA,KACpB;AAEA,IAAA,MAAM,aAAA,GAAsBA,iBAAA,CAAA,WAAA;AAAA,MAC1B,CAAC,KAAA,KAAgD;AAC/C,QAAA,SAAA,GAAY,KAAK,CAAA;AACjB,QAAA,IAAI,KAAA,CAAM,gBAAA,IAAoB,QAAA,IAAY,CAAC,WAAA,EAAa;AACtD,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAC,KAAA,CAAM,cAAkC,KAAA,EAAM;AAAA,QACjD;AAAA,MACF,CAAA;AAAA,MACA,CAAC,QAAA,EAAU,WAAA,EAAa,SAAS;AAAA,KACnC;AAEA,IAAA,MAAM,gBAAA,GAAyBA,iBAAA,CAAA,WAAA;AAAA,MAC7B,CAAC,KAAA,KAA+C;AAC9C,QAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA;AAAA,QACF;AACA,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,CAAC,UAAU,OAAO;AAAA,KACpB;AAEA,IAAA,MAAM,kBAAA,GAA2BA,iBAAA,CAAA,WAAA,CAAY,CAAC,KAAA,KAAkD;AAC9F,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,QAAQ,OAAA,EAAS;AAC9C,QAAA,KAAA,CAAM,eAAA,EAAgB;AAAA,MACxB;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,kBAAA,GACJ,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,QAAA,mBAClDJ,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,UAAS,CAAA,GAErC,QAAA;AAGJ,IAAA,MAAM,eAAA,GAAkB,yBACtBA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,wGAAA;AAAA,QACV,aAAA,EAAW,IAAA;AAAA,QAEV,QAAA,EAAA,mBAAA,mBAAsBA,cAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,mBAAA,EAAqB,aAAA,EAAW,MAAC,CAAA,GAAK;AAAA;AAAA,KAC7E,GACE,IAAA;AAEJ,IAAA,uBACED,eAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACE,GAAG,WAAA;AAAA,QACJ,GAAA;AAAA,QACA,IAAA,EAAM,YAAA;AAAA,QACN,QAAA,EAAU,gBAAA;AAAA,QACV,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,cAAA,EAAc,SAAS,QAAA,GAAW,MAAA;AAAA,QAClC,iBAAe,QAAA,IAAY,MAAA;AAAA,QAC3B,SAAA,EAAWD,sBAAQ,eAAA,EAAiB,SAAA,EAAW,WAAW,YAAA,EAAc,WAAA,EAAa,eAAe,SAAS,CAAA;AAAA,QAC7G,OAAA,EAAS,cAAc,WAAA,GAAc,MAAA;AAAA,QACrC,SAAA,EAAW,cAAc,aAAA,GAAgB,SAAA;AAAA,QAExC,QAAA,EAAA;AAAA,UAAA,eAAA;AAAA,UACA,oBAAA,oBAAwBE,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAWF,sBAAQ,yBAAA,EAA2B,oBAAoB,CAAA,EAAG,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,UAC5G,kBAAA;AAAA,UACA,mBAAA,oBAAuBE,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAWF,sBAAQ,yBAAA,EAA2B,mBAAmB,CAAA,EAAG,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,UAC1G,4BACCE,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,QAAA;AAAA,cACA,YAAA,EAAW,aAAA;AAAA,cACX,SAAA,EAAWF,sBAAQ,kBAAkB,CAAA;AAAA,cACrC,OAAA,EAAS,gBAAA;AAAA,cACT,SAAA,EAAW,kBAAA;AAAA,cAEV,QAAA,EAAA,kBAAA,mBAAqBE,cAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,kBAAA,EAAoB,aAAA,EAAW,IAAA,EAAC,CAAA,mBAAKA,cAAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAW,MAAC,QAAA,EAAA,MAAA,EAAO;AAAA;AAAA;AACpG;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF,CAAA;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AAGnB,IAAO,YAAA,GAAQ;AC1IR,IAAM,kBAAA,GAAuC;AAAA,EAClD,OAAA,EAAS,SAAA;AAAA,EACT,KAAA,EAAO,KAAA;AAAA,EACP,GAAA,EAAK,KAAA;AAAA,EACL,OAAA,EAAS,KAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,WAAA,GAAoBK,gCAAgC,kBAAkB,CAAA;AAE5E,IAAM,cAAA,GAAiB,MAAYA,iBAAA,CAAA,UAAA,CAAW,WAAW,CAAA;ACfhE,IAAM,mBAAA,GACJ,wQAAA;AAEF,IAAM,cAAA,GAA8C;AAAA,EAClD,OAAA,EAAS,qBAAA;AAAA,EACT,WAAA,EAAa,qBAAA;AAAA,EACb,OAAA,EAAS;AACX,CAAA;AAEA,IAAM,WAAA,GAAyC;AAAA,EAC7C,GAAA,EAAK,cAAA;AAAA,EACL,GAAA,EAAK,iBAAA;AAAA,EACL,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,aAAA,GAAkF;AAAA,EACtF,SAAS,EAAE,IAAA,EAAM,gBAAgB,EAAA,EAAI,eAAA,EAAiB,WAAW,YAAA,EAAa;AAAA,EAC9E,SAAS,EAAE,IAAA,EAAM,iBAAiB,EAAA,EAAI,aAAA,EAAe,WAAW,aAAA,EAAc;AAAA,EAC9E,MAAM,EAAE,IAAA,EAAM,gBAAgB,EAAA,EAAI,WAAA,EAAa,WAAW,YAAA,EAAa;AAAA,EACvE,SAAS,EAAE,IAAA,EAAM,oBAAoB,EAAA,EAAI,eAAA,EAAiB,WAAW,gBAAA,EAAiB;AAAA,EACtF,SAAS,EAAE,IAAA,EAAM,kBAAkB,EAAA,EAAI,aAAA,EAAe,WAAW,cAAA,EAAe;AAAA,EAChF,QAAQ,EAAE,IAAA,EAAM,gBAAgB,EAAA,EAAI,WAAA,EAAa,WAAW,YAAA,EAAa;AAAA,EACzE,SAAS,EAAE,IAAA,EAAM,iBAAiB,EAAA,EAAI,aAAA,EAAe,WAAW,aAAA;AAClE,CAAA;AAoBA,IAAM,QAAA,GAAiBC,iBAAA,CAAA,UAAA,CAAuC,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC5E,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA,GAAS,KAAA;AAAA,IACT,QAAA,GAAW,KAAA;AAAA,IACX,KAAA,GAAQ,KAAA;AAAA,IACR,OAAA,EAAS,eAAA;AAAA,IACT,KAAA,EAAO,aAAA;AAAA,IACP,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,OAAA,GAAU,mBAAmB,WAAA,CAAY,OAAA;AAC/C,EAAA,MAAM,KAAA,GAAQ,iBAAiB,WAAA,CAAY,KAAA;AAC3C,EAAA,MAAM,MAAM,WAAA,CAAY,GAAA;AACxB,EAAA,MAAM,MAAA,GAAS,aAAA,CAAc,WAAA,CAAY,KAAK,KAAK,aAAA,CAAc,OAAA;AACjE,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,OAAA,GAAU,cAAA,GAAiB,YAAA;AAE1D,EAAA,MAAM,SAAA,GAAY,SAAA,KAAc,IAAA,GAAO,GAAA,GAAM,KAAA,CAAA;AAC7C,EAAA,MAAM,cAAc,OAAO,IAAA,CAAK,YAAY,UAAA,IAAc,SAAA,KAAc,OAAO,SAAA,KAAc,QAAA;AAE7F,EAAA,MAAM,eAAe,IAAA,IAAQ,UAAA;AAC7B,EAAA,MAAM,mBAAmB,QAAA,GAAW,EAAA,GAAK,aAAa,WAAA,IAAe,SAAA,KAAc,QAAQ,CAAA,GAAI,MAAA,CAAA;AAC/F,EAAA,MAAM,WAAA,GAAc,SAAA,KAAc,GAAA,GAAM,GAAA,GAAM,MAAA;AAC9C,EAAA,MAAM,cAAA,GAAiB,SAAA,KAAc,GAAA,GAAM,MAAA,GAAS,MAAA;AACpD,EAAA,MAAM,YAAA,GAAe,SAAA,KAAc,GAAA,GAAM,IAAA,GAAO,MAAA;AAChD,EAAA,MAAM,YAAA,GAAe,SAAA,KAAc,QAAA,GAAW,IAAA,IAAQ,QAAA,GAAW,MAAA;AAEjE,EAAA,MAAM,aAAA,GAAgB,WAAW,gCAAA,GAAmC,gBAAA;AACpE,EAAA,MAAM,eAAA,GAAkB,MAAM,MAAA,GAAS,MAAA;AACvC,EAAA,MAAM,UAAA,GAAa,QAAQ,OAAA,GAAU,MAAA;AACrC,EAAA,MAAM,aAAA,GAAgB,MAAA,GAAS,MAAA,CAAO,EAAA,GAAK,MAAA;AAE3C,EAAA,uBACEP,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,IAAA,EAAM,YAAA;AAAA,MACN,QAAA,EAAU,gBAAA;AAAA,MACV,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,cAAA,EAAc,SAAS,MAAA,GAAS,MAAA;AAAA,MAChC,SAAA,EAAWD,qBAAAA;AAAA,QACT,mBAAA;AAAA,QACA,eAAe,OAAO,CAAA;AAAA,QACtB,YAAY,KAAK,CAAA;AAAA,QACjB,UAAA;AAAA,QACA,eAAA;AAAA,QACA,UAAA;AAAA,QACA,aAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,IAAA,EAAM,YAAA;AAAA,MACN,MAAA,EAAQ,cAAA;AAAA,MACR,GAAA,EAAK,WAAA;AAAA,MACL,IAAA,EAAM,YAAA;AAAA,MACN,eAAa,MAAA,IAAU,MAAA;AAAA,MAEtB,QAAA,EAAA;AAAA,QAAA,GAAA,oBACCE,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAW,IAAA;AAAA,YACX,SAAA,EAAWF,qBAAAA;AAAA,cACT,iGAAA;AAAA,cACA,MAAA,GAAS,OAAO,SAAA,GAAY;AAAA;AAC9B;AAAA,SACF;AAAA,QAED,2BACCE,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+EAA+E,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,wBAEzGD,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,UAAA,QAAA,oBACCC,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sEAAsE,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,UAEhG,KAAA,oBACCA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAWF,qBAAAA,CAAQ,oCAAA,EAAsC,MAAA,GAAS,MAAA,CAAO,IAAA,GAAO,MAAS,CAAA,EAC5F,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UAED,4BAAYE,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAyB,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,UAC9D;AAAA,SAAA,EACH,CAAA;AAAA,QACC,0BACCA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2EAA2E,QAAA,EAAA,MAAA,EAAO;AAAA;AAAA;AAAA,GAEtG;AAEJ,CAAC,CAAA;AAED,QAAA,CAAS,WAAA,GAAc,UAAA;AAEvB,IAAO,YAAA,GAAQ;ACjJf,IAAM,eAAA,GAAkB,2EAAA;AAExB,IAAM,kBAAA,GAAkD;AAAA,EACtD,KAAA,EAAO,6DAAA;AAAA,EACP,OAAA,EAAS,uCAAA;AAAA,EACT,KAAA,EAAO,sCAAA;AAAA,EACP,IAAA,EAAM,0CAAA;AAAA,EACN,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,kBAAA,GAAkD;AAAA,EACtD,IAAA,EAAM,cAAA;AAAA,EACN,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAYA,IAAM,IAAA,GAAaO,iBAAA,CAAA,UAAA,CAAsC,CAAC,KAAA,EAAO,GAAA,KAAQ;AACvE,EAAA,MAAM;AAAA,IACJ,OAAA,GAAU,OAAA;AAAA,IACV,OAAA,GAAU,SAAA;AAAA,IACV,KAAA,GAAQ,KAAA;AAAA,IACR,GAAA,GAAM,KAAA;AAAA,IACN,OAAA,GAAU,KAAA;AAAA,IACV,OAAA,GAAU,IAAA;AAAA,IACV,KAAA,GAAQ,SAAA;AAAA,IACR,SAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,OAAO,CAAA,IAAK,kBAAA,CAAmB,KAAA;AACvE,EAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,OAAO,CAAA,IAAK,kBAAA,CAAmB,EAAA;AACvE,EAAA,MAAM,YAAA,GAAe,UAAU,0BAAA,GAA6B,MAAA;AAC5D,EAAA,MAAM,QAAA,GAAW,UAAU,KAAA,GAAQ,WAAA;AACnC,EAAA,MAAM,QAAA,GAAW,MAAM,MAAA,GAAS,MAAA;AAChC,EAAA,MAAM,WAAA,GAAc,OAAA,KAAY,IAAA,GAAO,SAAA,GAAY,KAAA;AAEnD,EAAA,MAAM,YAAA,GAAqBA,iBAAA,CAAA,OAAA;AAAA,IACzB,OAAO;AAAA,MACL,OAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA,EAAO;AAAA,KACT,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,OAAA,EAAS,KAAA,EAAO,KAAK,OAAO;AAAA,GAC5C;AAEA,EAAA,uBACEP,cAAAA,CAAC,WAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,cAC3B,QAAA,kBAAAA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,MAAM,IAAA,IAAQ,MAAA;AAAA,MACd,SAAA,EAAWF,sBAAQ,eAAA,EAAiB,YAAA,EAAc,cAAc,YAAA,EAAc,QAAA,EAAU,UAAU,SAAS,CAAA;AAAA,MAE1G;AAAA;AAAA,GACH,EACF,CAAA;AAEJ,CAAC,CAAA;AAED,IAAA,CAAK,WAAA,GAAc,MAAA;AAKnB,IAAO,YAAA,GAAQ;ACrFf,IAAM,SAAA,GAAY,OAAO,MAAA,KAAW,WAAA;AACpC,IAAM,yBAAA,GAA4B,YAAkBU,iBAAA,CAAA,eAAA,GAAwBA,iBAAA,CAAA,SAAA;AAoC5E,IAAM,gBAAA,GAAkD;AAAA,EACtD,cAAA,EAAgB,iCAAA;AAAA,EAChB,MAAA,EAAQ,+CAAA;AAAA,EACR,YAAA,EAAc,mCAAA;AAAA,EACd,WAAA,EAAa,uCAAA;AAAA,EACb,GAAA,EAAK,qDAAA;AAAA,EACL,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,aAAA,GAAkD;AAAA,EACtD,GAAA,EAAK,MAAA;AAAA,EACL,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,eAAA,GACJ,6cAAA;AAEF,IAAM,kBAAA,GAAqB,uDAAA;AAE3B,IAAM,IAAA,GAAaA,iBAAA,CAAA,UAAA,CAAsC,CAAC,KAAA,EAAO,GAAA,KAAQ;AACvE,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,GAAc,KAAA;AAAA,IACd,YAAA;AAAA,IACA,SAAA,GAAY,cAAA;AAAA,IACZ,WAAA,GAAc,KAAA;AAAA,IACd,mBAAA,GAAsB,IAAA;AAAA,IACtB,mBAAA,GAAsB,KAAA;AAAA,IACtB,WAAA,GAAc,KAAA;AAAA,IACd,QAAA,GAAW,KAAA;AAAA,IACX,KAAA,GAAQ,KAAA;AAAA,IACR,gBAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA,EAAc,cAAA;AAAA,IACd,YAAA,EAAc,cAAA;AAAA,IACd,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,SAAeA,iBAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,MAAA,GAAS,GAAG,MAAM,CAAA,KAAA,CAAA;AACxB,EAAA,MAAM,WAAA,GAAc,GAAG,MAAM,CAAA,UAAA,CAAA;AAE7B,EAAA,MAAM,YAAA,GAAe,OAAO,QAAA,KAAa,SAAA;AACzC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAUA,2BAAS,WAAW,CAAA;AAClE,EAAA,MAAM,IAAA,GAAO,YAAA,GAAe,OAAA,CAAQ,QAAQ,CAAA,GAAI,YAAA;AAEhD,EAAA,MAAM,YAAA,GAAqBA,yBAA8B,IAAI,CAAA;AAC7D,EAAA,MAAM,OAAA,GAAgBA,yBAA8B,IAAI,CAAA;AACxD,EAAA,MAAM,YAAA,GAAqBA,yBAA2B,IAAI,CAAA;AAC1D,EAAA,MAAM,eAAA,GAAwBA,yBAAsB,IAAI,CAAA;AAExD,EAAA,MAAM,aAAA,GAAsBA,iBAAA,CAAA,WAAA;AAAA,IAC1B,CAAC,IAAA,KAAgC;AAC/B,MAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,MAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,QAAA,GAAA,CAAI,IAAI,CAAA;AAAA,MACV,WAAW,GAAA,EAAK;AACd,QAAC,IAAsD,OAAA,GAAU,IAAA;AAAA,MACnE;AAAA,IACF,CAAA;AAAA,IACA,CAAC,GAAG;AAAA,GACN;AAEA,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAUA,iBAAA,CAAA,QAAA,EAAiB;AAEnE,EAAA,MAAM,oBAAA,GAA6BA,8BAAY,MAAM;AACnD,IAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,MAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAO,YAAA,CAAa,OAAA;AAC1B,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AACA,IAAA,iBAAA,CAAkB,IAAA,CAAK,qBAAA,EAAsB,CAAE,KAAK,CAAA;AAAA,EACtD,CAAA,EAAG,CAAC,mBAAmB,CAAC,CAAA;AAExB,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,MAAA;AAAA,IACF;AACA,IAAA,oBAAA,EAAqB;AACrB,IAAA,IAAI,CAAC,YAAA,CAAa,OAAA,IAAW,OAAO,mBAAmB,WAAA,EAAa;AAClE,MAAA;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,MAAM,sBAAsB,CAAA;AAChE,IAAA,QAAA,CAAS,OAAA,CAAQ,aAAa,OAAO,CAAA;AACrC,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,mBAAA,EAAqB,oBAAoB,CAAC,CAAA;AAE9C,EAAA,MAAM,OAAA,GAAgBA,iBAAA,CAAA,WAAA;AAAA,IACpB,CAAC,QAAA,KAAsB;AACrB,MAAA,IAAI,QAAA,IAAY,SAAS,QAAA,EAAU;AACjC,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,MAC1B;AACA,MAAA,YAAA,GAAe,QAAQ,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,YAAA,EAAc,YAAA,EAAc,IAAI;AAAA,GAC7C;AAEA,EAAMA,4BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,IAAA,EAAM;AACtB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB;AACA,IAAA,YAAA,GAAe,KAAK,CAAA;AAAA,EACtB,GAAG,CAAC,QAAA,EAAU,IAAA,EAAM,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/C,EAAMA,4BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAwB;AACjD,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA;AAAA,MACF;AACA,MAAA,IAAI,YAAA,CAAa,OAAA,EAAS,QAAA,CAAS,MAAM,CAAA,EAAG;AAC1C,QAAA;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAyB;AAC9C,MAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,QAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,QAAA,OAAA,CAAQ,KAAK,CAAA;AACb,QAAA,YAAA,CAAa,SAAS,KAAA,EAAM;AAAA,MAC9B;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AAC1D,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAElD,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,eAAe,iBAAiB,CAAA;AAC7D,MAAA,QAAA,CAAS,mBAAA,CAAoB,WAAW,aAAa,CAAA;AAAA,IACvD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA;AAElB,EAAMA,4BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,qBAAA,CAAsB,MAAM;AAC5C,MAAA,IAAA,CAAK,KAAA,CAAM,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA;AAAA,IACpC,CAAC,CAAA;AACD,IAAA,OAAO,MAAM,MAAA,CAAO,oBAAA,CAAqB,EAAE,CAAA;AAAA,EAC7C,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,gBAAA,GAAyBA,iBAAA,CAAA,WAAA;AAAA,IAC7B,CAAC,IAAA,KAA6B;AAC5B,MAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,MAAA,IAAI,QAAQ,mBAAA,EAAqB;AAC/B,QAAA,iBAAA,CAAkB,IAAA,CAAK,qBAAA,EAAsB,CAAE,KAAK,CAAA;AAAA,MACtD;AAAA,IACF,CAAA;AAAA,IACA,CAAC,mBAAmB;AAAA,GACtB;AAEA,EAAA,MAAM,oBAAA,GAA6BA,iBAAA,CAAA,WAAA;AAAA,IACjC,CAAA,KAAA,KAAS;AACP,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,CAAC,IAAI,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,IAAA,EAAM,OAAO;AAAA,GAC1B;AAEA,EAAA,MAAM,sBAAA,GAA+BA,iBAAA,CAAA,WAAA;AAAA,IACnC,CAAA,KAAA,KAAS;AACP,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,OAAA,CAAQ,CAAC,IAAI,CAAA;AAAA,MACf;AAEA,MAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,MACd;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAM,OAAO;AAAA,GAChB;AAEA,EAAA,MAAM,iBAAA,GAA0BA,8BAAY,MAAM;AAChD,IAAA,IAAI,eAAA,CAAgB,YAAY,IAAA,EAAM;AACpC,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,MAAA,CAAO,YAAA,CAAa,gBAAgB,OAAO,CAAA;AAAA,MAC7C;AACA,MAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,IAC5B;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAsBA,8BAAY,MAAM;AAC5C,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA;AAAA,IACF;AACA,IAAA,iBAAA,EAAkB;AAClB,IAAA,eAAA,CAAgB,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,MAAM;AAChD,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,eAAA,CAAgB,OAAA,GAAU,IAAA;AAAA,IAC5B,GAAG,GAAG,CAAA;AAAA,EACR,CAAA,EAAG,CAAC,iBAAA,EAAmB,OAAO,CAAC,CAAA;AAE/B,EAAMA,4BAAU,MAAM;AACpB,IAAA,OAAO,MAAM,iBAAA,EAAkB;AAAA,EACjC,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,MAAM,kBAAA,GAA2BA,iBAAA,CAAA,WAAA;AAAA,IAC/B,CAAC,KAAA,KAAyC;AACxC,MAAA,MAAM,aAAa,KAAA,CAAM,aAAA;AACzB,MAAA,IAAI,CAAC,UAAA,IAAc,CAAC,YAAA,CAAa,OAAA,EAAS;AACxC,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OAAO,YAAA,CAAa,OAAA,CAAQ,QAAA,CAAS,UAAU,CAAA;AAAA,IACjD,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,oBAAA,GAA6BA,iBAAA,CAAA,WAAA;AAAA,IACjC,CAAC,KAAA,KAA4C;AAC3C,MAAA,cAAA,GAAiB,KAAK,CAAA;AACtB,MAAA,IAAI,MAAM,gBAAA,EAAkB;AAC1B,QAAA;AAAA,MACF;AACA,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,iBAAA,EAAkB;AAClB,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,MACd;AAAA,IACF,CAAA;AAAA,IACA,CAAC,iBAAA,EAAmB,WAAA,EAAa,cAAA,EAAgB,OAAO;AAAA,GAC1D;AAEA,EAAA,MAAM,oBAAA,GAA6BA,iBAAA,CAAA,WAAA;AAAA,IACjC,CAAC,KAAA,KAA4C;AAC3C,MAAA,cAAA,GAAiB,KAAK,CAAA;AACtB,MAAA,IAAI,MAAM,gBAAA,EAAkB;AAC1B,QAAA;AAAA,MACF;AACA,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,IAAI,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC7B,UAAA;AAAA,QACF;AACA,QAAA,aAAA,EAAc;AAAA,MAChB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,kBAAA,EAAoB,WAAA,EAAa,cAAA,EAAgB,aAAa;AAAA,GACjE;AAEA,EAAA,MAAM,yBAAA,GAAkCA,iBAAA,CAAA,WAAA;AAAA,IACtC,CAAC,MAAA,KAA0C;AACzC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA;AAAA,MACF;AACA,MAAA,iBAAA,EAAkB;AAClB,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,CAAA;AAAA,IACA,CAAC,iBAAA,EAAmB,QAAA,EAAU,OAAO;AAAA,GACvC;AAEA,EAAA,MAAM,yBAAA,GAAkCA,iBAAA,CAAA,WAAA;AAAA,IACtC,CAAC,KAAA,KAAyC;AACxC,MAAA,IAAI,QAAA,IAAY,CAAC,WAAA,EAAa;AAC5B,QAAA;AAAA,MACF;AACA,MAAA,IAAI,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC7B,QAAA;AAAA,MACF;AACA,MAAA,aAAA,EAAc;AAAA,IAChB,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,kBAAA,EAAoB,WAAA,EAAa,aAAa;AAAA,GAC3D;AAEA,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,YAAA;AAAA,IACX,KAAA,EAAO,YAAA;AAAA,IACP,OAAA,EAAS,cAAA;AAAA,IACT,YAAA,EAAc,mBAAA;AAAA,IACd,YAAA,EAAc,mBAAA;AAAA,IACd,IAAA,EAAM,WAAA;AAAA,IACN,QAAA,EAAU,eAAA;AAAA,IACV,CAAC,iBAAiB,GAAG,cAAA;AAAA,IACrB,GAAG;AAAA,GACL,GAAI,gBAAgB,EAAC;AAErB,EAAA,MAAM,sBAAsB,IAAA,IAAQ,WAAA;AACpC,EAAA,MAAM,iBAAA,GAAoB,SAAA,CAAU,UAAA,CAAW,KAAK,IAAI,KAAA,GAAQ,QAAA;AAEhE,EAAA,MAAM,mBAAmB,SAAA,CAAU;AAAA,IACjC,GAAA,EAAK,gBAAA;AAAA,IACL,EAAA,EAAI,WAAA;AAAA,IACJ,eAAA,EAAiB,MAAA;AAAA,IACjB,eAAA,EAAiB,IAAA;AAAA,IACjB,eAAA,EAAiB,MAAA;AAAA,IACjB,OAAA,EAAS,oBAAA;AAAA,IACT,SAAA,EAAW,sBAAA;AAAA,IACX,YAAA,EAAc,cAAc,yBAAA,GAA4B,MAAA;AAAA,IACxD,YAAA,EAAc,cAAc,yBAAA,GAA4B,MAAA;AAAA,IACxD,QAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,uBACET,gBAAAU,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,KAAA,IAAS,uBACRT,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWF,qBAAAA,CAAQ,kBAAA,EAAoB,gBAAgB,CAAA;AAAA,QACvD,aAAA,EAAW,IAAA;AAAA,QACX,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,QAC5B,WAAA,EAAa,CAAA,KAAA,KAAS,KAAA,CAAM,cAAA;AAAe;AAAA,KAC7C,GACE,IAAA;AAAA,oBACJC,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA,EAAK,aAAA;AAAA,QACL,SAAA,EAAWD,qBAAAA,CAAQ,8BAAA,EAAgC,SAAS,CAAA;AAAA,QAC5D,aAAW,IAAA,IAAQ,MAAA;AAAA,QACnB,YAAA,EAAc,cAAc,oBAAA,GAAuB,cAAA;AAAA,QACnD,YAAA,EAAc,cAAc,oBAAA,GAAuB,cAAA;AAAA,QAElD,QAAA,EAAA;AAAA,UAAA,gBAAA;AAAA,UACA,sCACCE,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACE,GAAG,gBAAA;AAAA,cACJ,GAAA,EAAK,OAAA;AAAA,cACL,EAAA,EAAI,MAAA;AAAA,cACJ,MAAM,WAAA,IAAe,MAAA;AAAA,cACrB,UAAU,eAAA,IAAmB,EAAA;AAAA,cAC7B,mBAAiB,cAAA,IAAkB,WAAA;AAAA,cACnC,YAAA,EAAY,OAAO,MAAA,GAAS,QAAA;AAAA,cAC5B,SAAA,EAAWF,qBAAAA;AAAA,gBACT,eAAA;AAAA,gBACA,iBAAiB,SAAS,CAAA;AAAA,gBAC1B,cAAc,iBAAiB,CAAA;AAAA,gBAC/B,gBAAA;AAAA,gBACA;AAAA,eACF;AAAA,cACA,KAAA,EAAO;AAAA,gBACL,GAAG,YAAA;AAAA,gBACH,GAAI,uBAAuB,cAAA,GACvB,EAAE,UAAU,cAAA,EAAgB,KAAA,EAAO,gBAAe,GAClD;AAAA,eACN;AAAA,cACA,cAAc,CAAA,KAAA,KAAS;AACrB,gBAAA,mBAAA,GAAsB,KAAK,CAAA;AAC3B,gBAAA,IAAI,MAAM,gBAAA,EAAkB;AAC1B,kBAAA;AAAA,gBACF;AACA,gBAAA,IAAI,WAAA,EAAa;AACf,kBAAA,iBAAA,EAAkB;AAClB,kBAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,gBACd;AAAA,cACF,CAAA;AAAA,cACA,cAAc,CAAA,KAAA,KAAS;AACrB,gBAAA,mBAAA,GAAsB,KAAK,CAAA;AAC3B,gBAAA,IAAI,MAAM,gBAAA,EAAkB;AAC1B,kBAAA;AAAA,gBACF;AACA,gBAAA,IAAI,WAAA,EAAa;AACf,kBAAA,IAAI,kBAAA,CAAmB,KAAK,CAAA,EAAG;AAC7B,oBAAA;AAAA,kBACF;AACA,kBAAA,aAAA,EAAc;AAAA,gBAChB;AAAA,cACF,CAAA;AAAA,cACA,SAAS,CAAA,KAAA,KAAS;AAChB,gBAAA,cAAA,GAAiB,KAAK,CAAA;AACtB,gBAAA,IAAI,MAAM,gBAAA,EAAkB;AAC1B,kBAAA;AAAA,gBACF;AACA,gBAAA,IAAI,mBAAA,EAAqB;AACvB,kBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,gBACf;AAAA,cACF,CAAA;AAAA,cAEC;AAAA;AAAA,WACH,GACE;AAAA;AAAA;AAAA;AACN,GAAA,EACF,CAAA;AAEJ,CAAC,CAAA;AAED,IAAA,CAAK,WAAA,GAAc,MAAA;AAEnB,IAAO,YAAA,GAAQ;;;ACzbR,IAAMK,qBAAAA,GAAuB,CAAC,IAAA,KAA6B;AAChE,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AACzB,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,MAAMO,kBAAiB,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,GAAI,OAAA,GAAU,OAAO,OAAO,CAAA,CAAA;AAC5E,IAAA,OAAO,CAAC,KAAA,EAAOA,eAAc,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EACzC;AAEA,EAAA,MAAM,CAAC,OAAA,EAAS,WAAW,CAAA,GAAI,IAAA;AAC/B,EAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,OAAO,CAAA,IAAK,CAAC,OAAO,CAAA;AACxD,EAAA,MAAM,QAAA,GAAW,YAAY,IAAA,EAAK;AAClC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,WAAA,CAAY,KAAK,GAAG,CAAA;AAAA,EAC7B;AACA,EAAA,MAAM,iBAAiB,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,GAAI,QAAA,GAAW,OAAO,QAAQ,CAAA,CAAA;AAC/E,EAAA,MAAM,OAAA,GAAU,CAAC,GAAG,WAAA,EAAa,cAAc,CAAA;AAC/C,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,GAAA,CAAI,OAAO,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA;AAC9C,CAAA;ACzBA,IAAM,QAA6B,CAAC;AAAA,EAClC,OAAA,GAAU,SAAA;AAAA,EACV,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,SAAA,GACJ,kKAAA;AACF,EAAA,MAAM,cAAA,GAAiB;AAAA,IACrB,OAAA,EAAS,qFAAA;AAAA,IACT,MAAA,EAAQ,iGAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAEA,EAAA,MAAM,MAAA,GAAS,QACX,EAAE,IAAA,EAAM,SAAkB,OAAA,EAAS,KAAA,KACnC,IAAA,GACA,EAAE,MAAM,MAAA,EAAiB,OAAA,EAAS,MAAK,GACvC,OAAA,GACA,EAAE,IAAA,EAAM,SAAA,EAAoB,OAAA,EAAS,OAAA,EAAQ,GAC7C,MAAA;AAEJ,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,KAAA,EAAO,wDAAA;AAAA,IACP,IAAA,EAAM,8DAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,MAAM,oBAAA,GAAuB;AAAA,IAC3B,KAAA,EAAO,cAAA;AAAA,IACP,IAAA,EAAM,gBAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,MAAM,YAAA,GAAe,cAAA,CAAe,OAAO,CAAA,IAAK,cAAA,CAAe,OAAA;AAC/D,EAAA,MAAM,SAAA,GAAY,MAAA,GAAS,aAAA,CAAc,MAAA,CAAO,IAAI,CAAA,GAAI,MAAA;AACxD,EAAA,MAAM,gBAAA,GAAmBP,sBAAqB,IAAI,CAAA;AAClD,EAAA,MAAM,cAAA,GAAiB,mBAAmB,OAAA,GAAU,MAAA;AAEpD,EAAA,uBACEJ,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAWD,qBAAAA,CAAQ,qBAAA,EAAuB,gBAAgB,CAAA,EAC7D,QAAA,EAAA;AAAA,oBAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAAA,EACZ,QAAA,EAAA;AAAA,MAAA,gBAAA,oBACCC,eAAC,GAAA,EAAA,EAAE,SAAA,EAAWF,sBAAQ,sCAAA,EAAwC,gBAAgB,CAAA,EAAG,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,sBAE/FE,cAAAA,CAAC,OAAA,EAAA,EAAO,GAAG,KAAA,EAAO,SAAA,EAAWF,qBAAAA,CAAQ,SAAA,EAAW,YAAA,EAAc,SAAA,EAAW,cAAA,EAAgB,SAAS,CAAA,EAAG;AAAA,KAAA,EAIvG,CAAA;AAAA,IACC,MAAA,EAAQ,OAAA,oBACPE,cAAAA,CAAC,UAAK,SAAA,EAAWF,qBAAAA,CAAQ,SAAA,EAAW,oBAAA,CAAqB,MAAA,CAAO,IAAI,CAAC,CAAA,EAAI,iBAAO,OAAA,EAAQ;AAAA,GAAA,EAE5F,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"index.cjs","sourcesContent":["export const iconBaseClasses = {\n mdi: ['mdi']\n} as const;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport type { GlobalSize, Palette } from '@lindle/linoardo/global.types';\nimport type { ButtonProps, ButtonVariant } from './types.button';\n\nexport const base =\n 'btn-base focus-visible:outline-none focus-visible:ring-2 rounded-md transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed';\n\nconst blackAndWhiteVariantClass =\n 'bg-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst paletteVariantClasses: Record<Palette, Record<ButtonVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary',\n outline: 'border border-primary text-primary bg-white hover:bg-primary hover:text-white focus-visible:ring-primary',\n ghost: 'text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40',\n text: 'bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n neutral: {\n solid: 'bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500',\n outline:\n 'border border-gray-400 text-gray-700 bg-white hover:bg-gray-700 hover:text-white focus-visible:ring-gray-400',\n ghost: 'text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300',\n text: 'bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n info: {\n solid: 'bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400',\n outline: 'border border-sky-500 text-sky-600 bg-white hover:bg-sky-500 hover:text-white focus-visible:ring-sky-400',\n ghost: 'text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300',\n text: 'bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n success: {\n solid: 'bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400',\n outline:\n 'border border-emerald-500 text-emerald-600 bg-white hover:bg-emerald-500 hover:text-white focus-visible:ring-emerald-400',\n ghost: 'text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300',\n text: 'bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n warning: {\n solid: 'bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400',\n outline:\n 'border border-amber-500 text-amber-600 bg-white hover:bg-amber-500 hover:text-white focus-visible:ring-amber-400',\n ghost: 'text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300',\n text: 'bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n danger: {\n solid: 'bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400',\n outline: 'border border-red-500 text-red-600 bg-white hover:bg-red-500 hover:text-white focus-visible:ring-red-400',\n ghost: 'text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300',\n text: 'bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200',\n outline: 'border border-gray-300 text-gray-900 bg-white hover:bg-gray-100 focus-visible:ring-gray-200',\n ghost: 'text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200',\n text: 'bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n }\n};\n\nexport const resolveVariantClass = (variant: ButtonVariant, palette: Palette) => {\n const paletteVariants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return paletteVariants[variant] ?? paletteVariants.solid;\n};\n\nexport const resolveIconClassName = (icon?: ButtonProps['icon']) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n\nexport const sizeClasses = {\n 'x-small': 'px-2.5 py-1 text-xs',\n small: 'px-3 py-1.5 text-sm',\n medium: 'px-4 py-2 text-base',\n large: 'px-6 py-3 text-lg',\n 'x-large': 'px-7 py-3.5 text-xl'\n} satisfies Record<GlobalSize, string>;\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { ButtonProps } from './types.button';\nimport { base, resolveIconClassName, resolveVariantClass, sizeClasses } from './states.button';\n\n/**\n * Containment button supporting variant, size, block layout and loading states.\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n block = false,\n loading = false,\n loadingText,\n icon,\n className,\n children,\n disabled,\n onClick,\n ...rest\n },\n ref\n ) => {\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = sizeClasses[size] ?? sizeClasses.medium;\n const blockClass = block ? 'w-full' : null;\n const isDisabled = disabled || loading;\n const cursor = onClick && !isDisabled ? 'cursor-pointer' : 'cursor-default';\n const resolvedIconClass = resolveIconClassName(icon);\n const shouldRenderIcon = Boolean(resolvedIconClass && !loading);\n const isLoadingTextProvided = loadingText !== undefined && loadingText !== null;\n const content = loading && isLoadingTextProvided ? loadingText : children;\n const hasDecorators = (loading || shouldRenderIcon) && Boolean(content);\n const gapClass = hasDecorators ? 'gap-2' : undefined;\n const loadingIconClass = loading ? twMerge('mdi mdi-loading mdi-spin', 'leading-none') : undefined;\n const iconClassName = shouldRenderIcon ? twMerge('leading-none', resolvedIconClass) : undefined;\n\n return (\n <button\n {...rest}\n ref={ref}\n onClick={onClick}\n disabled={isDisabled}\n className={twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className, 'border-2 border-l')}\n data-loading={loading || undefined}\n aria-busy={loading || undefined}\n >\n {loading && <i className={loadingIconClass} aria-hidden />}\n {iconClassName && <i className={iconClassName} aria-hidden />}\n {content}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { Palette, PropIcon } from '@lindle/linoardo/global.types';\nimport { ChipSize, ChipVariant } from './types.chip';\n\nexport const chipBaseClasses =\n 'inline-flex items-center gap-1.5 border font-medium leading-tight transition-all duration-200 select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nexport const chipSizeClasses: Record<ChipSize, string> = {\n small: 'text-xs px-3 py-1 min-h-[1.5rem]',\n medium: 'text-sm px-4 py-1.5 min-h-[2rem]',\n large: 'text-base px-5 py-2 min-h-[2.5rem]'\n};\n\nexport const closeButtonClasses =\n 'ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2';\n\nconst blackAndWhiteChipVariantClass =\n 'bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst paletteVariantClasses: Record<Palette, Record<ChipVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white border border-primary hover:bg-primary/90',\n outline: 'bg-transparent text-primary border border-primary hover:bg-primary/10',\n ghost: 'bg-primary/15 text-primary border border-transparent hover:bg-primary/25',\n text: 'bg-transparent text-primary border border-transparent hover:text-primary/80',\n bw: blackAndWhiteChipVariantClass\n },\n neutral: {\n solid: 'bg-gray-900 text-white border border-gray-900 hover:bg-gray-800',\n outline: 'bg-transparent text-gray-900 border border-gray-500 hover:bg-gray-100',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-700',\n bw: blackAndWhiteChipVariantClass\n },\n info: {\n solid: 'bg-sky-500 text-white border border-sky-500 hover:bg-sky-600',\n outline: 'bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50',\n ghost: 'bg-sky-100 text-sky-700 border border-transparent hover:bg-sky-200',\n text: 'bg-transparent text-sky-600 border border-transparent hover:text-sky-700',\n bw: blackAndWhiteChipVariantClass\n },\n success: {\n solid: 'bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600',\n outline: 'bg-transparent text-emerald-600 border border-emerald-500 hover:bg-emerald-50',\n ghost: 'bg-emerald-100 text-emerald-700 border border-transparent hover:bg-emerald-200',\n text: 'bg-transparent text-emerald-600 border border-transparent hover:text-emerald-700',\n bw: blackAndWhiteChipVariantClass\n },\n warning: {\n solid: 'bg-amber-500 text-white border border-amber-500 hover:bg-amber-600',\n outline: 'bg-transparent text-amber-700 border border-amber-500 hover:bg-amber-50',\n ghost: 'bg-amber-100 text-amber-800 border border-transparent hover:bg-amber-200',\n text: 'bg-transparent text-amber-700 border border-transparent hover:text-amber-800',\n bw: blackAndWhiteChipVariantClass\n },\n danger: {\n solid: 'bg-red-500 text-white border border-red-500 hover:bg-red-600',\n outline: 'bg-transparent text-red-600 border border-red-500 hover:bg-red-50',\n ghost: 'bg-red-100 text-red-700 border border-transparent hover:bg-red-200',\n text: 'bg-transparent text-red-600 border border-transparent hover:text-red-700',\n bw: blackAndWhiteChipVariantClass\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50',\n outline: 'bg-transparent text-gray-900 border border-gray-300 hover:bg-gray-50',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-600',\n bw: blackAndWhiteChipVariantClass\n }\n};\n\nexport const resolveVariantClass = (variant: ChipVariant, palette: Palette) => {\n const variants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return variants[variant] ?? variants.solid;\n};\n\nexport const resolveIconClassName = (icon?: PropIcon) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n","'use client';\n\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { ChipProps } from './types.chip';\nimport {\n chipBaseClasses,\n chipSizeClasses,\n closeButtonClasses,\n resolveIconClassName,\n resolveVariantClass\n} from './states.chip';\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n pill = true,\n selected = false,\n closable = false,\n closeIcon = 'mdi-close',\n onClose,\n filter = false,\n filterIcon = 'mdi-check-bold',\n prependIcon,\n appendIcon,\n disabled = false,\n className,\n children,\n ...rest\n },\n ref\n ) => {\n const { onClick, onKeyDown, role, tabIndex, ...nativeProps } = rest;\n const interactive = typeof onClick === 'function';\n\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = chipSizeClasses[size] ?? chipSizeClasses.medium;\n const pillClass = pill ? 'rounded-full' : 'rounded-lg';\n const cursorClass = disabled ? 'pointer-events-none opacity-50' : interactive ? 'cursor-pointer' : 'cursor-default';\n const selectedClass = selected ? 'ring-2 ring-current/50 ring-offset-2 ring-offset-white' : undefined;\n\n const resolvedRole = disabled ? role : role ?? (interactive ? 'button' : undefined);\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive ? 0 : undefined);\n const prependIconClassName = resolveIconClassName(prependIcon);\n const appendIconClassName = resolveIconClassName(appendIcon);\n const closeIconClassName = resolveIconClassName(closeIcon);\n const filterIconClassName = filter && selected ? resolveIconClassName(filterIcon) : undefined;\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n onClick?.(event);\n },\n [disabled, onClick]\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled || !interactive) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n (event.currentTarget as HTMLSpanElement).click();\n }\n },\n [disabled, interactive, onKeyDown]\n );\n\n const handleCloseClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClose?.(event);\n },\n [disabled, onClose]\n );\n\n const handleCloseKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.stopPropagation();\n }\n }, []);\n\n const renderableChildren =\n typeof children === 'string' || typeof children === 'number' ? (\n <span className='truncate'>{children}</span>\n ) : (\n children\n );\n\n const filterAdornment = filter ? (\n <span\n className='flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-current/30 text-[0.55rem]'\n aria-hidden\n >\n {filterIconClassName ? <i className={filterIconClassName} aria-hidden /> : null}\n </span>\n ) : null;\n\n return (\n <span\n {...nativeProps}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-pressed={filter ? selected : undefined}\n data-selected={selected || undefined}\n className={twMerge(chipBaseClasses, sizeClass, pillClass, variantClass, cursorClass, selectedClass, className)}\n onClick={interactive ? handleClick : undefined}\n onKeyDown={interactive ? handleKeyDown : onKeyDown}\n >\n {filterAdornment}\n {prependIconClassName && <i className={twMerge('text-[1em] leading-none', prependIconClassName)} aria-hidden />}\n {renderableChildren}\n {appendIconClassName && <i className={twMerge('text-[1em] leading-none', appendIconClassName)} aria-hidden />}\n {closable && (\n <button\n type='button'\n disabled={disabled}\n aria-label='Remove chip'\n className={twMerge(closeButtonClasses)}\n onClick={handleCloseClick}\n onKeyDown={handleCloseKeyDown}\n >\n {closeIconClassName ? <i className={closeIconClassName} aria-hidden /> : <span aria-hidden>×</span>}\n </button>\n )}\n </span>\n );\n }\n);\n\nChip.displayName = 'Chip';\n\nexport type { ChipProps, ChipSize, ChipVariant } from './types.chip';\nexport default Chip;\n","import * as React from 'react';\nimport type { Palette } from '@lindle/linoardo/global.types';\nimport type { ListDensity, ListLines } from './types.list';\n\nexport interface ListContextValue {\n density: ListDensity;\n lines: ListLines;\n nav: boolean;\n divided: boolean;\n color: Palette;\n}\n\nexport const defaultListContext: ListContextValue = {\n density: 'default',\n lines: 'one',\n nav: false,\n divided: false,\n color: 'primary'\n};\n\nexport const ListContext = React.createContext<ListContextValue>(defaultListContext);\n\nexport const useListContext = () => React.useContext(ListContext);\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport { useListContext } from '../list.context';\nimport type { ListDensity, ListLines } from '../types.list';\n\nconst listItemBaseClasses =\n 'relative flex w-full items-center gap-4 bg-transparent text-left text-sm transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white hover:bg-neutral-200';\n\nconst densityClasses: Record<ListDensity, string> = {\n default: 'px-4 py-3 text-base',\n comfortable: 'px-4 py-2.5 text-sm',\n compact: 'px-3 py-2 text-sm'\n};\n\nconst lineClasses: Record<ListLines, string> = {\n one: 'min-h-[3rem]',\n two: 'min-h-[3.75rem]',\n three: 'min-h-[4.5rem]'\n};\n\nconst accentClasses: Record<Palette, { text: string; bg: string; indicator: string }> = {\n primary: { text: 'text-primary', bg: 'bg-primary/10', indicator: 'bg-primary' },\n neutral: { text: 'text-gray-900', bg: 'bg-gray-100', indicator: 'bg-gray-900' },\n info: { text: 'text-sky-600', bg: 'bg-sky-50', indicator: 'bg-sky-500' },\n success: { text: 'text-emerald-600', bg: 'bg-emerald-50', indicator: 'bg-emerald-500' },\n warning: { text: 'text-amber-700', bg: 'bg-amber-50', indicator: 'bg-amber-500' },\n danger: { text: 'text-red-600', bg: 'bg-red-50', indicator: 'bg-red-500' },\n surface: { text: 'text-gray-900', bg: 'bg-gray-100', indicator: 'bg-gray-900' }\n};\n\nexport interface ListItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n component?: React.ElementType;\n href?: string;\n target?: string;\n rel?: string;\n type?: 'button' | 'submit' | 'reset';\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n overline?: React.ReactNode;\n prepend?: React.ReactNode;\n append?: React.ReactNode;\n active?: boolean;\n disabled?: boolean;\n inset?: boolean;\n density?: ListDensity;\n lines?: ListLines;\n}\n\nconst ListItem = React.forwardRef<HTMLElement, ListItemProps>((props, ref) => {\n const {\n component,\n href,\n target,\n rel,\n type,\n title,\n subtitle,\n overline,\n prepend,\n append,\n active = false,\n disabled = false,\n inset = false,\n density: densityOverride,\n lines: linesOverride,\n className,\n children,\n tabIndex,\n role,\n ...rest\n } = props;\n\n const listContext = useListContext();\n const density = densityOverride ?? listContext.density;\n const lines = linesOverride ?? listContext.lines;\n const nav = listContext.nav;\n const accent = accentClasses[listContext.color] ?? accentClasses.primary;\n const shapeClass = listContext.divided ? 'rounded-none' : 'rounded-lg';\n\n const Component = component ?? (href ? 'a' : 'div');\n const interactive = typeof rest.onClick === 'function' || Component === 'a' || Component === 'button';\n\n const resolvedRole = role ?? 'listitem';\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive && Component === 'div' ? 0 : undefined);\n const resolvedRel = Component === 'a' ? rel : undefined;\n const resolvedTarget = Component === 'a' ? target : undefined;\n const resolvedHref = Component === 'a' ? href : undefined;\n const resolvedType = Component === 'button' ? type ?? 'button' : undefined;\n\n const disabledClass = disabled ? 'pointer-events-none opacity-60' : 'cursor-pointer';\n const navPaddingClass = nav ? 'pl-5' : undefined;\n const insetClass = inset ? 'pl-12' : undefined;\n const activeClasses = active ? accent.bg : undefined;\n\n return (\n <Component\n {...rest}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-current={active ? 'true' : undefined}\n className={twMerge(\n listItemBaseClasses,\n densityClasses[density],\n lineClasses[lines],\n shapeClass,\n navPaddingClass,\n insetClass,\n disabledClass,\n activeClasses,\n className\n )}\n href={resolvedHref}\n target={resolvedTarget}\n rel={resolvedRel}\n type={resolvedType}\n data-active={active || undefined}\n >\n {nav && (\n <span\n aria-hidden\n className={twMerge(\n 'absolute left-1 top-2 bottom-2 w-0.5 rounded-full bg-transparent transition-colors duration-150',\n active ? accent.indicator : undefined\n )}\n />\n )}\n {prepend && (\n <span className='flex h-10 w-10 shrink-0 items-center justify-center text-base text-gray-500'>{prepend}</span>\n )}\n <span className='flex min-w-0 flex-col gap-0.5 text-left'>\n {overline && (\n <span className='text-[0.65rem] font-semibold uppercase tracking-wide text-gray-500'>{overline}</span>\n )}\n {title && (\n <span className={twMerge('truncate font-medium text-gray-900', active ? accent.text : undefined)}>\n {title}\n </span>\n )}\n {subtitle && <span className='text-sm text-gray-500'>{subtitle}</span>}\n {children}\n </span>\n {append && (\n <span className='ml-auto flex items-center gap-2 whitespace-nowrap text-sm text-gray-500'>{append}</span>\n )}\n </Component>\n );\n});\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\nexport type { ListDensity, ListLines } from '../types.list';\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport ListItem from './Item';\nimport { ListContext } from './list.context';\nimport type { ListContextValue } from './list.context';\nimport type { ListDensity, ListLines, ListRounded, ListVariant } from './types.list';\n\nconst listBaseClasses = 'flex w-full min-w-0 flex-col text-gray-900 transition-colors duration-150';\n\nconst listVariantClasses: Record<ListVariant, string> = {\n solid: 'bg-white border border-gray-200 shadow-sm shadow-gray-900/5',\n outline: 'bg-transparent border border-gray-300',\n ghost: 'bg-gray-50 border border-transparent',\n text: 'bg-transparent border border-transparent',\n bw: 'bg-white text-black border border-black shadow-none'\n};\n\nconst listRoundedClasses: Record<ListRounded, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n pill: 'rounded-full'\n};\n\nexport interface ListProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: ListVariant;\n density?: ListDensity;\n lines?: ListLines;\n nav?: boolean;\n divided?: boolean;\n rounded?: ListRounded;\n color?: Palette;\n}\n\nconst List = React.forwardRef<HTMLDivElement, ListProps>((props, ref) => {\n const {\n variant = 'solid',\n density = 'default',\n lines = 'one',\n nav = false,\n divided = false,\n rounded = 'lg',\n color = 'primary',\n className,\n role,\n children,\n ...rest\n } = props;\n\n const variantClass = listVariantClasses[variant] ?? listVariantClasses.solid;\n const roundedClass = listRoundedClasses[rounded] ?? listRoundedClasses.lg;\n const dividerClass = divided ? 'divide-y divide-gray-100' : undefined;\n const gapClass = divided ? 'p-0' : 'gap-1 p-1';\n const navClass = nav ? 'py-1' : undefined;\n const accentColor = variant === 'bw' ? 'surface' : color;\n\n const contextValue = React.useMemo<ListContextValue>(\n () => ({\n density,\n lines,\n nav,\n divided,\n color: accentColor\n }),\n [accentColor, density, lines, nav, divided]\n );\n\n return (\n <ListContext.Provider value={contextValue}>\n <div\n {...rest}\n ref={ref}\n role={role ?? 'list'}\n className={twMerge(listBaseClasses, variantClass, roundedClass, dividerClass, gapClass, navClass, className)}\n >\n {children}\n </div>\n </ListContext.Provider>\n );\n});\n\nList.displayName = 'List';\n\nexport { ListItem };\nexport type { ListItemProps } from './Item';\nexport type { ListVariant, ListDensity, ListLines, ListRounded } from './types.list';\nexport default List;\n","'use client';\n\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst isBrowser = typeof window !== 'undefined';\nconst useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;\n\nexport type MenuPlacement = 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\nexport interface MenuActivatorRenderProps {\n ref: (node: HTMLElement | null) => void;\n id: string;\n 'aria-haspopup': 'menu';\n 'aria-expanded': boolean;\n 'aria-controls': string;\n onClick: React.MouseEventHandler<HTMLElement>;\n onKeyDown: React.KeyboardEventHandler<HTMLElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLElement>;\n disabled?: boolean;\n open: boolean;\n}\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n activator: (props: MenuActivatorRenderProps) => React.ReactNode;\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: MenuPlacement;\n openOnHover?: boolean;\n closeOnContentClick?: boolean;\n matchActivatorWidth?: boolean;\n keepMounted?: boolean;\n disabled?: boolean;\n scrim?: boolean;\n contentClassName?: string;\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n overlayClassName?: string;\n}\n\nconst placementClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'left-0 top-full origin-top-left',\n bottom: 'left-1/2 top-full -translate-x-1/2 origin-top',\n 'bottom-end': 'right-0 top-full origin-top-right',\n 'top-start': 'left-0 bottom-full origin-bottom-left',\n top: 'left-1/2 bottom-full -translate-x-1/2 origin-bottom',\n 'top-end': 'right-0 bottom-full origin-bottom-right'\n};\n\nconst offsetClasses: Record<'top' | 'bottom', string> = {\n top: 'mb-2',\n bottom: 'mt-2'\n};\n\nconst menuBaseClasses =\n 'absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0 data-[state=closed]:scale-95 data-[state=open]:opacity-100 data-[state=open]:scale-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nconst overlayBaseClasses = 'fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]';\n\nconst Menu = React.forwardRef<HTMLDivElement, MenuProps>((props, ref) => {\n const {\n activator,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom-start',\n openOnHover = false,\n closeOnContentClick = true,\n matchActivatorWidth = false,\n keepMounted = false,\n disabled = false,\n scrim = false,\n contentClassName,\n contentProps,\n overlayClassName,\n className,\n onMouseEnter: rootMouseEnter,\n onMouseLeave: rootMouseLeave,\n ...rest\n } = props;\n\n const baseId = React.useId();\n const menuId = `${baseId}-menu`;\n const activatorId = `${baseId}-activator`;\n\n const isControlled = typeof openProp === 'boolean';\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const open = isControlled ? Boolean(openProp) : internalOpen;\n\n const localRootRef = React.useRef<HTMLDivElement | null>(null);\n const menuRef = React.useRef<HTMLDivElement | null>(null);\n const activatorRef = React.useRef<HTMLElement | null>(null);\n const closeTimeoutRef = React.useRef<number | null>(null);\n\n const mergedRootRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRootRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [ref]\n );\n\n const [activatorWidth, setActivatorWidth] = React.useState<number>();\n\n const updateActivatorWidth = React.useCallback(() => {\n if (!matchActivatorWidth) {\n setActivatorWidth(undefined);\n return;\n }\n const node = activatorRef.current;\n if (!node) {\n return;\n }\n setActivatorWidth(node.getBoundingClientRect().width);\n }, [matchActivatorWidth]);\n\n useIsomorphicLayoutEffect(() => {\n if (!matchActivatorWidth) {\n return;\n }\n updateActivatorWidth();\n if (!activatorRef.current || typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => updateActivatorWidth());\n observer.observe(activatorRef.current);\n return () => observer.disconnect();\n }, [matchActivatorWidth, updateActivatorWidth]);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (disabled || open === nextOpen) {\n return;\n }\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [disabled, isControlled, onOpenChange, open]\n );\n\n React.useEffect(() => {\n if (!disabled || !open) {\n return;\n }\n if (!isControlled) {\n setInternalOpen(false);\n }\n onOpenChange?.(false);\n }, [disabled, open, isControlled, onOpenChange]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (!target) {\n return;\n }\n if (localRootRef.current?.contains(target)) {\n return;\n }\n setOpen(false);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setOpen(false);\n activatorRef.current?.focus();\n }\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [open, setOpen]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n const node = menuRef.current;\n if (!node) {\n return;\n }\n const id = window.requestAnimationFrame(() => {\n node.focus({ preventScroll: true });\n });\n return () => window.cancelAnimationFrame(id);\n }, [open]);\n\n const setActivatorNode = React.useCallback(\n (node: HTMLElement | null) => {\n activatorRef.current = node;\n if (node && matchActivatorWidth) {\n setActivatorWidth(node.getBoundingClientRect().width);\n }\n },\n [matchActivatorWidth]\n );\n\n const handleActivatorClick = React.useCallback<React.MouseEventHandler<HTMLElement>>(\n event => {\n event.preventDefault();\n if (disabled) {\n return;\n }\n setOpen(!open);\n },\n [disabled, open, setOpen]\n );\n\n const handleActivatorKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLElement>>(\n event => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setOpen(!open);\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setOpen(true);\n }\n },\n [open, setOpen]\n );\n\n const clearCloseTimeout = React.useCallback(() => {\n if (closeTimeoutRef.current !== null) {\n if (isBrowser) {\n window.clearTimeout(closeTimeoutRef.current);\n }\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleClose = React.useCallback(() => {\n if (!isBrowser) {\n setOpen(false);\n return;\n }\n clearCloseTimeout();\n closeTimeoutRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimeoutRef.current = null;\n }, 150);\n }, [clearCloseTimeout, setOpen]);\n\n React.useEffect(() => {\n return () => clearCloseTimeout();\n }, [clearCloseTimeout]);\n\n const isMovingWithinMenu = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const nextTarget = event.relatedTarget as Node | null;\n if (!nextTarget || !localRootRef.current) {\n return false;\n }\n return localRootRef.current.contains(nextTarget);\n },\n [localRootRef]\n );\n\n const handleRootMouseEnter = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n rootMouseEnter?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n clearCloseTimeout();\n setOpen(true);\n }\n },\n [clearCloseTimeout, openOnHover, rootMouseEnter, setOpen]\n );\n\n const handleRootMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n rootMouseLeave?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n }\n },\n [isMovingWithinMenu, openOnHover, rootMouseLeave, scheduleClose]\n );\n\n const handleActivatorMouseEnter = React.useCallback(\n (_event: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n return;\n }\n clearCloseTimeout();\n setOpen(true);\n },\n [clearCloseTimeout, disabled, setOpen]\n );\n\n const handleActivatorMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (disabled || !openOnHover) {\n return;\n }\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n },\n [disabled, isMovingWithinMenu, openOnHover, scheduleClose]\n );\n\n const {\n className: contentClass,\n style: contentStyle,\n onClick: contentOnClick,\n onMouseEnter: contentOnMouseEnter,\n onMouseLeave: contentOnMouseLeave,\n role: contentRole,\n tabIndex: contentTabIndex,\n ['aria-labelledby']: ariaLabelledBy,\n ...restContentProps\n } = contentProps ?? {};\n\n const shouldRenderContent = open || keepMounted;\n const verticalPlacement = placement.startsWith('top') ? 'top' : 'bottom';\n\n const activatorElement = activator({\n ref: setActivatorNode,\n id: activatorId,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n 'aria-controls': menuId,\n onClick: handleActivatorClick,\n onKeyDown: handleActivatorKeyDown,\n onMouseEnter: openOnHover ? handleActivatorMouseEnter : undefined,\n onMouseLeave: openOnHover ? handleActivatorMouseLeave : undefined,\n disabled,\n open\n });\n\n return (\n <>\n {scrim && open ? (\n <div\n className={twMerge(overlayBaseClasses, overlayClassName)}\n aria-hidden\n onClick={() => setOpen(false)}\n onMouseDown={event => event.preventDefault()}\n />\n ) : null}\n <div\n {...rest}\n ref={mergedRootRef}\n className={twMerge('relative inline-flex min-w-0', className)}\n data-open={open || undefined}\n onMouseEnter={openOnHover ? handleRootMouseEnter : rootMouseEnter}\n onMouseLeave={openOnHover ? handleRootMouseLeave : rootMouseLeave}\n >\n {activatorElement}\n {shouldRenderContent ? (\n <div\n {...restContentProps}\n ref={menuRef}\n id={menuId}\n role={contentRole ?? 'menu'}\n tabIndex={contentTabIndex ?? -1}\n aria-labelledby={ariaLabelledBy ?? activatorId}\n data-state={open ? 'open' : 'closed'}\n className={twMerge(\n menuBaseClasses,\n placementClasses[placement],\n offsetClasses[verticalPlacement],\n contentClassName,\n contentClass\n )}\n style={{\n ...contentStyle,\n ...(matchActivatorWidth && activatorWidth\n ? { minWidth: activatorWidth, width: activatorWidth }\n : undefined)\n }}\n onMouseEnter={event => {\n contentOnMouseEnter?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n clearCloseTimeout();\n setOpen(true);\n }\n }}\n onMouseLeave={event => {\n contentOnMouseLeave?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n }\n }}\n onClick={event => {\n contentOnClick?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (closeOnContentClick) {\n setOpen(false);\n }\n }}\n >\n {children}\n </div>\n ) : null}\n </div>\n </>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { InputProp } from './types';\n\nexport const resolveIconClassName = (icon?: InputProp['icon']) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalizedName = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalizedName].join(' ');\n }\n\n const [library, iconNameRaw] = icon;\n const baseClasses = iconBaseClasses[library] ?? [library];\n const iconName = iconNameRaw.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n const normalizedName = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n const classes = [...baseClasses, normalizedName];\n return Array.from(new Set(classes)).join(' ');\n};\n","'use client';\n\nimport { twMerge } from 'tailwind-merge';\nimport { InputProp, InputVariant } from './types';\nimport { resolveIconClassName } from './states.input';\n\nconst Input: React.FC<InputProp> = ({\n variant = 'outline',\n success,\n error,\n warn,\n icon,\n className,\n wrapperClassName,\n ...props\n}) => {\n const classBase =\n 'input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full';\n const variantClasses = {\n outline: 'rounded border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary',\n filled: 'rounded bg-gray-100 border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary',\n underlined: 'border-b-1 border-gray-300 focus:border-red-400 focus:outline-none focus:ring-none'\n } satisfies Record<InputVariant, string>;\n\n const status = error\n ? { tone: 'error' as const, message: error }\n : warn\n ? { tone: 'warn' as const, message: warn }\n : success\n ? { tone: 'success' as const, message: success }\n : undefined;\n\n const statusClasses = {\n error: 'border-red-500 focus:border-red-500 focus:ring-red-400',\n warn: 'border-amber-500 focus:border-amber-500 focus:ring-amber-400',\n success: 'border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400'\n } as const;\n\n const statusMessageClasses = {\n error: 'text-red-600',\n warn: 'text-amber-600',\n success: 'text-emerald-600'\n } as const;\n\n const variantClass = variantClasses[variant] ?? variantClasses.outline;\n const toneClass = status ? statusClasses[status.tone] : undefined;\n const prependIconClass = resolveIconClassName(icon);\n const prependPadding = prependIconClass ? 'pl-10' : undefined;\n\n return (\n <div className={twMerge('flex flex-col gap-1', wrapperClassName)}>\n <div className='relative flex items-center'>\n {prependIconClass && (\n <i className={twMerge('pointer-events-none absolute left-3 ', prependIconClass)} aria-hidden />\n )}\n <input {...props} className={twMerge(classBase, variantClass, toneClass, prependPadding, className)} />\n {/* {appendIconClass && (\n <i className={twMerge('pointer-events-none absolute right-3 text-gray-500', appendIconClass)} aria-hidden />\n )} */}\n </div>\n {status?.message && (\n <span className={twMerge('text-sm', statusMessageClasses[status.tone])}>{status.message}</span>\n )}\n </div>\n );\n};\n\nexport default Input;\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
2
|
|
|
3
3
|
type Palette = 'primary' | 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'surface';
|
|
4
|
+
type GlobalVariant = 'solid' | 'outline' | 'text' | 'ghost' | 'bw' | 'filled' | 'underlined';
|
|
5
|
+
type GlobalSize = 'x-small' | 'small' | 'medium' | 'large' | 'x-large';
|
|
4
6
|
type IconLibrary$1 = 'mdi';
|
|
5
7
|
type PropIcon = string | readonly [IconLibrary$1, string];
|
|
6
8
|
|
|
7
|
-
type
|
|
8
|
-
type ContainmentSize = 'x-small' | 'small' | 'medium' | 'large' | 'x-large';
|
|
9
|
+
type ButtonVariant = Extract<GlobalVariant, 'solid' | 'outline' | 'text' | 'ghost' | 'bw'>;
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Containment button supporting variant, size, block layout and loading states.
|
|
12
13
|
*/
|
|
13
14
|
declare const Button: React$1.ForwardRefExoticComponent<React$1.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
14
|
-
variant?:
|
|
15
|
+
variant?: ButtonVariant;
|
|
15
16
|
color?: Palette;
|
|
16
|
-
size?:
|
|
17
|
+
size?: GlobalSize;
|
|
17
18
|
block?: boolean;
|
|
18
19
|
loading?: boolean;
|
|
19
20
|
loadingText?: string;
|
|
20
21
|
icon?: PropIcon;
|
|
21
22
|
} & React$1.RefAttributes<HTMLButtonElement>>;
|
|
22
23
|
|
|
23
|
-
type ChipVariant =
|
|
24
|
+
type ChipVariant = Extract<GlobalVariant, 'solid' | 'outline' | 'text' | 'ghost' | 'bw'>;
|
|
24
25
|
type ChipSize = 'small' | 'medium' | 'large';
|
|
25
26
|
type NativeChipProps = Omit<React$1.HTMLAttributes<HTMLSpanElement>, 'color'>;
|
|
26
27
|
type ChipProps = NativeChipProps & {
|
|
@@ -384,7 +385,7 @@ declare const Chip: React$1.ForwardRefExoticComponent<{
|
|
|
384
385
|
disabled?: boolean;
|
|
385
386
|
} & React$1.RefAttributes<HTMLSpanElement>>;
|
|
386
387
|
|
|
387
|
-
type ListVariant =
|
|
388
|
+
type ListVariant = Extract<GlobalVariant, 'solid' | 'outline' | 'text' | 'ghost' | 'bw'>;
|
|
388
389
|
type ListDensity = 'default' | 'comfortable' | 'compact';
|
|
389
390
|
type ListLines = 'one' | 'two' | 'three';
|
|
390
391
|
type ListRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'pill';
|
|
@@ -452,31 +453,21 @@ interface MenuProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'childr
|
|
|
452
453
|
}
|
|
453
454
|
declare const Menu: React$1.ForwardRefExoticComponent<MenuProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
454
455
|
|
|
455
|
-
type InputVariant = 'outline' | 'filled' | 'underlined'
|
|
456
|
+
type InputVariant = Extract<GlobalVariant, 'outline' | 'filled' | 'underlined'>;
|
|
456
457
|
type StatusMessage = string;
|
|
457
458
|
type EmptyStatus = undefined | null | '';
|
|
459
|
+
type StatusValue = StatusMessage | EmptyStatus;
|
|
458
460
|
type IconLibrary = 'mdi';
|
|
459
461
|
type InputIcon = string | readonly [IconLibrary, string];
|
|
460
462
|
type InputStatusProps = {
|
|
461
|
-
success
|
|
462
|
-
error?:
|
|
463
|
-
warn?:
|
|
464
|
-
} | {
|
|
465
|
-
success?: EmptyStatus;
|
|
466
|
-
error: StatusMessage;
|
|
467
|
-
warn?: EmptyStatus;
|
|
468
|
-
} | {
|
|
469
|
-
success?: EmptyStatus;
|
|
470
|
-
error?: EmptyStatus;
|
|
471
|
-
warn: StatusMessage;
|
|
472
|
-
} | {
|
|
473
|
-
success?: EmptyStatus;
|
|
474
|
-
error?: EmptyStatus;
|
|
475
|
-
warn?: EmptyStatus;
|
|
463
|
+
success?: StatusValue;
|
|
464
|
+
error?: StatusValue;
|
|
465
|
+
warn?: StatusValue;
|
|
476
466
|
};
|
|
477
467
|
type InputProp = React.InputHTMLAttributes<HTMLInputElement> & InputStatusProps & {
|
|
478
468
|
variant?: InputVariant;
|
|
479
469
|
icon?: InputIcon;
|
|
470
|
+
wrapperClassName?: string;
|
|
480
471
|
};
|
|
481
472
|
|
|
482
473
|
declare const Input: React.FC<InputProp>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
2
|
|
|
3
3
|
type Palette = 'primary' | 'neutral' | 'info' | 'success' | 'warning' | 'danger' | 'surface';
|
|
4
|
+
type GlobalVariant = 'solid' | 'outline' | 'text' | 'ghost' | 'bw' | 'filled' | 'underlined';
|
|
5
|
+
type GlobalSize = 'x-small' | 'small' | 'medium' | 'large' | 'x-large';
|
|
4
6
|
type IconLibrary$1 = 'mdi';
|
|
5
7
|
type PropIcon = string | readonly [IconLibrary$1, string];
|
|
6
8
|
|
|
7
|
-
type
|
|
8
|
-
type ContainmentSize = 'x-small' | 'small' | 'medium' | 'large' | 'x-large';
|
|
9
|
+
type ButtonVariant = Extract<GlobalVariant, 'solid' | 'outline' | 'text' | 'ghost' | 'bw'>;
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Containment button supporting variant, size, block layout and loading states.
|
|
12
13
|
*/
|
|
13
14
|
declare const Button: React$1.ForwardRefExoticComponent<React$1.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
14
|
-
variant?:
|
|
15
|
+
variant?: ButtonVariant;
|
|
15
16
|
color?: Palette;
|
|
16
|
-
size?:
|
|
17
|
+
size?: GlobalSize;
|
|
17
18
|
block?: boolean;
|
|
18
19
|
loading?: boolean;
|
|
19
20
|
loadingText?: string;
|
|
20
21
|
icon?: PropIcon;
|
|
21
22
|
} & React$1.RefAttributes<HTMLButtonElement>>;
|
|
22
23
|
|
|
23
|
-
type ChipVariant =
|
|
24
|
+
type ChipVariant = Extract<GlobalVariant, 'solid' | 'outline' | 'text' | 'ghost' | 'bw'>;
|
|
24
25
|
type ChipSize = 'small' | 'medium' | 'large';
|
|
25
26
|
type NativeChipProps = Omit<React$1.HTMLAttributes<HTMLSpanElement>, 'color'>;
|
|
26
27
|
type ChipProps = NativeChipProps & {
|
|
@@ -384,7 +385,7 @@ declare const Chip: React$1.ForwardRefExoticComponent<{
|
|
|
384
385
|
disabled?: boolean;
|
|
385
386
|
} & React$1.RefAttributes<HTMLSpanElement>>;
|
|
386
387
|
|
|
387
|
-
type ListVariant =
|
|
388
|
+
type ListVariant = Extract<GlobalVariant, 'solid' | 'outline' | 'text' | 'ghost' | 'bw'>;
|
|
388
389
|
type ListDensity = 'default' | 'comfortable' | 'compact';
|
|
389
390
|
type ListLines = 'one' | 'two' | 'three';
|
|
390
391
|
type ListRounded = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'pill';
|
|
@@ -452,31 +453,21 @@ interface MenuProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'childr
|
|
|
452
453
|
}
|
|
453
454
|
declare const Menu: React$1.ForwardRefExoticComponent<MenuProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
454
455
|
|
|
455
|
-
type InputVariant = 'outline' | 'filled' | 'underlined'
|
|
456
|
+
type InputVariant = Extract<GlobalVariant, 'outline' | 'filled' | 'underlined'>;
|
|
456
457
|
type StatusMessage = string;
|
|
457
458
|
type EmptyStatus = undefined | null | '';
|
|
459
|
+
type StatusValue = StatusMessage | EmptyStatus;
|
|
458
460
|
type IconLibrary = 'mdi';
|
|
459
461
|
type InputIcon = string | readonly [IconLibrary, string];
|
|
460
462
|
type InputStatusProps = {
|
|
461
|
-
success
|
|
462
|
-
error?:
|
|
463
|
-
warn?:
|
|
464
|
-
} | {
|
|
465
|
-
success?: EmptyStatus;
|
|
466
|
-
error: StatusMessage;
|
|
467
|
-
warn?: EmptyStatus;
|
|
468
|
-
} | {
|
|
469
|
-
success?: EmptyStatus;
|
|
470
|
-
error?: EmptyStatus;
|
|
471
|
-
warn: StatusMessage;
|
|
472
|
-
} | {
|
|
473
|
-
success?: EmptyStatus;
|
|
474
|
-
error?: EmptyStatus;
|
|
475
|
-
warn?: EmptyStatus;
|
|
463
|
+
success?: StatusValue;
|
|
464
|
+
error?: StatusValue;
|
|
465
|
+
warn?: StatusValue;
|
|
476
466
|
};
|
|
477
467
|
type InputProp = React.InputHTMLAttributes<HTMLInputElement> & InputStatusProps & {
|
|
478
468
|
variant?: InputVariant;
|
|
479
469
|
icon?: InputIcon;
|
|
470
|
+
wrapperClassName?: string;
|
|
480
471
|
};
|
|
481
472
|
|
|
482
473
|
declare const Input: React.FC<InputProp>;
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@ var iconBaseClasses = {
|
|
|
11
11
|
|
|
12
12
|
// src/Containment/Button/states.button.ts
|
|
13
13
|
var base = "btn-base focus-visible:outline-none focus-visible:ring-2 rounded-md transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed";
|
|
14
|
-
var blackAndWhiteVariantClass = "bg-white
|
|
14
|
+
var blackAndWhiteVariantClass = "bg-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
15
15
|
var paletteVariantClasses = {
|
|
16
16
|
primary: {
|
|
17
17
|
solid: "bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary",
|
|
@@ -134,7 +134,7 @@ var Button = React6.forwardRef(
|
|
|
134
134
|
ref,
|
|
135
135
|
onClick,
|
|
136
136
|
disabled: isDisabled,
|
|
137
|
-
className: twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className),
|
|
137
|
+
className: twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className, "border-2 border-l"),
|
|
138
138
|
"data-loading": loading || void 0,
|
|
139
139
|
"aria-busy": loading || void 0,
|
|
140
140
|
children: [
|
|
@@ -930,7 +930,16 @@ var resolveIconClassName3 = (icon) => {
|
|
|
930
930
|
const classes = [...baseClasses, normalizedName];
|
|
931
931
|
return Array.from(new Set(classes)).join(" ");
|
|
932
932
|
};
|
|
933
|
-
var Input = ({
|
|
933
|
+
var Input = ({
|
|
934
|
+
variant = "outline",
|
|
935
|
+
success,
|
|
936
|
+
error,
|
|
937
|
+
warn,
|
|
938
|
+
icon,
|
|
939
|
+
className,
|
|
940
|
+
wrapperClassName,
|
|
941
|
+
...props
|
|
942
|
+
}) => {
|
|
934
943
|
const classBase = "input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full";
|
|
935
944
|
const variantClasses = {
|
|
936
945
|
outline: "rounded border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary",
|
|
@@ -952,7 +961,7 @@ var Input = ({ variant = "outline", success, error, warn, icon, className, ...pr
|
|
|
952
961
|
const toneClass = status ? statusClasses[status.tone] : void 0;
|
|
953
962
|
const prependIconClass = resolveIconClassName3(icon);
|
|
954
963
|
const prependPadding = prependIconClass ? "pl-10" : void 0;
|
|
955
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
964
|
+
return /* @__PURE__ */ jsxs("div", { className: twMerge("flex flex-col gap-1", wrapperClassName), children: [
|
|
956
965
|
/* @__PURE__ */ jsxs("div", { className: "relative flex items-center", children: [
|
|
957
966
|
prependIconClass && /* @__PURE__ */ jsx("i", { className: twMerge("pointer-events-none absolute left-3 ", prependIconClass), "aria-hidden": true }),
|
|
958
967
|
/* @__PURE__ */ jsx("input", { ...props, className: twMerge(classBase, variantClass, toneClass, prependPadding, className) })
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/globals.ts","../src/Containment/Button/states.button.ts","../src/Containment/Button/index.tsx","../src/Containment/Chip/states.chip.ts","../src/Containment/Chip/index.tsx","../src/Containment/List/list.context.ts","../src/Containment/List/Item/index.tsx","../src/Containment/List/index.tsx","../src/Containment/Menu/index.tsx","../src/Form/Input/states.input.ts","../src/Form/Input/index.tsx"],"names":["normalized","React","paletteVariantClasses","resolveVariantClass","resolveIconClassName","React2","jsx","jsxs","twMerge","React3","React4","React5","normalizedName"],"mappings":"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","file":"index.js","sourcesContent":["export const iconBaseClasses = {\n mdi: ['mdi']\n} as const;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { Palette } from '@lindle/linoardo/global.types';\nimport type { ButtonProps } from './types.button';\nimport { ContainmentSize, ContainmentVariant } from '../containment.types';\n\nexport const base =\n 'btn-base focus-visible:outline-none focus-visible:ring-2 rounded-md transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed';\n\nconst blackAndWhiteVariantClass =\n 'bg-white hover:bg-black hover:text-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst paletteVariantClasses: Record<Palette, Record<ContainmentVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary',\n outline: 'border border-primary text-primary bg-white hover:bg-primary hover:text-white focus-visible:ring-primary',\n ghost: 'text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40',\n text: 'bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n neutral: {\n solid: 'bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500',\n outline:\n 'border border-gray-400 text-gray-700 bg-white hover:bg-gray-700 hover:text-white focus-visible:ring-gray-400',\n ghost: 'text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300',\n text: 'bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n info: {\n solid: 'bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400',\n outline: 'border border-sky-500 text-sky-600 bg-white hover:bg-sky-500 hover:text-white focus-visible:ring-sky-400',\n ghost: 'text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300',\n text: 'bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n success: {\n solid: 'bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400',\n outline:\n 'border border-emerald-500 text-emerald-600 bg-white hover:bg-emerald-500 hover:text-white focus-visible:ring-emerald-400',\n ghost: 'text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300',\n text: 'bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n warning: {\n solid: 'bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400',\n outline:\n 'border border-amber-500 text-amber-600 bg-white hover:bg-amber-500 hover:text-white focus-visible:ring-amber-400',\n ghost: 'text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300',\n text: 'bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n danger: {\n solid: 'bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400',\n outline: 'border border-red-500 text-red-600 bg-white hover:bg-red-500 hover:text-white focus-visible:ring-red-400',\n ghost: 'text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300',\n text: 'bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200',\n outline: 'border border-gray-300 text-gray-900 bg-white hover:bg-gray-100 focus-visible:ring-gray-200',\n ghost: 'text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200',\n text: 'bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n }\n};\n\nexport const resolveVariantClass = (variant: ContainmentVariant, palette: Palette) => {\n const paletteVariants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return paletteVariants[variant] ?? paletteVariants.solid;\n};\n\nexport const resolveIconClassName = (icon?: ButtonProps['icon']) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n\nexport const sizeClasses = {\n 'x-small': 'px-2.5 py-1 text-xs',\n small: 'px-3 py-1.5 text-sm',\n medium: 'px-4 py-2 text-base',\n large: 'px-6 py-3 text-lg',\n 'x-large': 'px-7 py-3.5 text-xl'\n} satisfies Record<ContainmentSize, string>;\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { ButtonProps } from './types.button';\nimport { base, resolveIconClassName, resolveVariantClass, sizeClasses } from './states.button';\n\n/**\n * Containment button supporting variant, size, block layout and loading states.\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n block = false,\n loading = false,\n loadingText,\n icon,\n className,\n children,\n disabled,\n onClick,\n ...rest\n },\n ref\n ) => {\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = sizeClasses[size] ?? sizeClasses.medium;\n const blockClass = block ? 'w-full' : null;\n const isDisabled = disabled || loading;\n const cursor = onClick && !isDisabled ? 'cursor-pointer' : 'cursor-default';\n const resolvedIconClass = resolveIconClassName(icon);\n const shouldRenderIcon = Boolean(resolvedIconClass && !loading);\n const isLoadingTextProvided = loadingText !== undefined && loadingText !== null;\n const content = loading && isLoadingTextProvided ? loadingText : children;\n const hasDecorators = (loading || shouldRenderIcon) && Boolean(content);\n const gapClass = hasDecorators ? 'gap-2' : undefined;\n const loadingIconClass = loading ? twMerge('mdi mdi-loading mdi-spin', 'leading-none') : undefined;\n const iconClassName = shouldRenderIcon ? twMerge('leading-none', resolvedIconClass) : undefined;\n\n return (\n <button\n {...rest}\n ref={ref}\n onClick={onClick}\n disabled={isDisabled}\n className={twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className)}\n data-loading={loading || undefined}\n aria-busy={loading || undefined}\n >\n {loading && <i className={loadingIconClass} aria-hidden />}\n {iconClassName && <i className={iconClassName} aria-hidden />}\n {content}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { Palette, PropIcon } from '@lindle/linoardo/global.types';\nimport { ChipSize, ChipVariant } from './types.chip';\n\nexport const chipBaseClasses =\n 'inline-flex items-center gap-1.5 border font-medium leading-tight transition-all duration-200 select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nexport const chipSizeClasses: Record<ChipSize, string> = {\n small: 'text-xs px-3 py-1 min-h-[1.5rem]',\n medium: 'text-sm px-4 py-1.5 min-h-[2rem]',\n large: 'text-base px-5 py-2 min-h-[2.5rem]'\n};\n\nexport const closeButtonClasses =\n 'ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2';\n\nconst blackAndWhiteChipVariantClass =\n 'bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst paletteVariantClasses: Record<Palette, Record<ChipVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white border border-primary hover:bg-primary/90',\n outline: 'bg-transparent text-primary border border-primary hover:bg-primary/10',\n ghost: 'bg-primary/15 text-primary border border-transparent hover:bg-primary/25',\n text: 'bg-transparent text-primary border border-transparent hover:text-primary/80',\n bw: blackAndWhiteChipVariantClass\n },\n neutral: {\n solid: 'bg-gray-900 text-white border border-gray-900 hover:bg-gray-800',\n outline: 'bg-transparent text-gray-900 border border-gray-500 hover:bg-gray-100',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-700',\n bw: blackAndWhiteChipVariantClass\n },\n info: {\n solid: 'bg-sky-500 text-white border border-sky-500 hover:bg-sky-600',\n outline: 'bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50',\n ghost: 'bg-sky-100 text-sky-700 border border-transparent hover:bg-sky-200',\n text: 'bg-transparent text-sky-600 border border-transparent hover:text-sky-700',\n bw: blackAndWhiteChipVariantClass\n },\n success: {\n solid: 'bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600',\n outline: 'bg-transparent text-emerald-600 border border-emerald-500 hover:bg-emerald-50',\n ghost: 'bg-emerald-100 text-emerald-700 border border-transparent hover:bg-emerald-200',\n text: 'bg-transparent text-emerald-600 border border-transparent hover:text-emerald-700',\n bw: blackAndWhiteChipVariantClass\n },\n warning: {\n solid: 'bg-amber-500 text-white border border-amber-500 hover:bg-amber-600',\n outline: 'bg-transparent text-amber-700 border border-amber-500 hover:bg-amber-50',\n ghost: 'bg-amber-100 text-amber-800 border border-transparent hover:bg-amber-200',\n text: 'bg-transparent text-amber-700 border border-transparent hover:text-amber-800',\n bw: blackAndWhiteChipVariantClass\n },\n danger: {\n solid: 'bg-red-500 text-white border border-red-500 hover:bg-red-600',\n outline: 'bg-transparent text-red-600 border border-red-500 hover:bg-red-50',\n ghost: 'bg-red-100 text-red-700 border border-transparent hover:bg-red-200',\n text: 'bg-transparent text-red-600 border border-transparent hover:text-red-700',\n bw: blackAndWhiteChipVariantClass\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50',\n outline: 'bg-transparent text-gray-900 border border-gray-300 hover:bg-gray-50',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-600',\n bw: blackAndWhiteChipVariantClass\n }\n};\n\nexport const resolveVariantClass = (variant: ChipVariant, palette: Palette) => {\n const variants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return variants[variant] ?? variants.solid;\n};\n\nexport const resolveIconClassName = (icon?: PropIcon) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n","'use client';\n\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { ChipProps } from './types.chip';\nimport {\n chipBaseClasses,\n chipSizeClasses,\n closeButtonClasses,\n resolveIconClassName,\n resolveVariantClass\n} from './states.chip';\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n pill = true,\n selected = false,\n closable = false,\n closeIcon = 'mdi-close',\n onClose,\n filter = false,\n filterIcon = 'mdi-check-bold',\n prependIcon,\n appendIcon,\n disabled = false,\n className,\n children,\n ...rest\n },\n ref\n ) => {\n const { onClick, onKeyDown, role, tabIndex, ...nativeProps } = rest;\n const interactive = typeof onClick === 'function';\n\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = chipSizeClasses[size] ?? chipSizeClasses.medium;\n const pillClass = pill ? 'rounded-full' : 'rounded-lg';\n const cursorClass = disabled ? 'pointer-events-none opacity-50' : interactive ? 'cursor-pointer' : 'cursor-default';\n const selectedClass = selected ? 'ring-2 ring-current/50 ring-offset-2 ring-offset-white' : undefined;\n\n const resolvedRole = disabled ? role : role ?? (interactive ? 'button' : undefined);\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive ? 0 : undefined);\n const prependIconClassName = resolveIconClassName(prependIcon);\n const appendIconClassName = resolveIconClassName(appendIcon);\n const closeIconClassName = resolveIconClassName(closeIcon);\n const filterIconClassName = filter && selected ? resolveIconClassName(filterIcon) : undefined;\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n onClick?.(event);\n },\n [disabled, onClick]\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled || !interactive) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n (event.currentTarget as HTMLSpanElement).click();\n }\n },\n [disabled, interactive, onKeyDown]\n );\n\n const handleCloseClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClose?.(event);\n },\n [disabled, onClose]\n );\n\n const handleCloseKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.stopPropagation();\n }\n }, []);\n\n const renderableChildren =\n typeof children === 'string' || typeof children === 'number' ? (\n <span className='truncate'>{children}</span>\n ) : (\n children\n );\n\n const filterAdornment = filter ? (\n <span\n className='flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-current/30 text-[0.55rem]'\n aria-hidden\n >\n {filterIconClassName ? <i className={filterIconClassName} aria-hidden /> : null}\n </span>\n ) : null;\n\n return (\n <span\n {...nativeProps}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-pressed={filter ? selected : undefined}\n data-selected={selected || undefined}\n className={twMerge(chipBaseClasses, sizeClass, pillClass, variantClass, cursorClass, selectedClass, className)}\n onClick={interactive ? handleClick : undefined}\n onKeyDown={interactive ? handleKeyDown : onKeyDown}\n >\n {filterAdornment}\n {prependIconClassName && <i className={twMerge('text-[1em] leading-none', prependIconClassName)} aria-hidden />}\n {renderableChildren}\n {appendIconClassName && <i className={twMerge('text-[1em] leading-none', appendIconClassName)} aria-hidden />}\n {closable && (\n <button\n type='button'\n disabled={disabled}\n aria-label='Remove chip'\n className={twMerge(closeButtonClasses)}\n onClick={handleCloseClick}\n onKeyDown={handleCloseKeyDown}\n >\n {closeIconClassName ? <i className={closeIconClassName} aria-hidden /> : <span aria-hidden>×</span>}\n </button>\n )}\n </span>\n );\n }\n);\n\nChip.displayName = 'Chip';\n\nexport type { ChipProps, ChipSize, ChipVariant } from './types.chip';\nexport default Chip;\n","import * as React from 'react';\nimport type { Palette } from '@lindle/linoardo/global.types';\nimport type { ListDensity, ListLines } from './types.list';\n\nexport interface ListContextValue {\n density: ListDensity;\n lines: ListLines;\n nav: boolean;\n divided: boolean;\n color: Palette;\n}\n\nexport const defaultListContext: ListContextValue = {\n density: 'default',\n lines: 'one',\n nav: false,\n divided: false,\n color: 'primary'\n};\n\nexport const ListContext = React.createContext<ListContextValue>(defaultListContext);\n\nexport const useListContext = () => React.useContext(ListContext);\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport { useListContext } from '../list.context';\nimport type { ListDensity, ListLines } from '../types.list';\n\nconst listItemBaseClasses =\n 'relative flex w-full items-center gap-4 bg-transparent text-left text-sm transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white hover:bg-neutral-200';\n\nconst densityClasses: Record<ListDensity, string> = {\n default: 'px-4 py-3 text-base',\n comfortable: 'px-4 py-2.5 text-sm',\n compact: 'px-3 py-2 text-sm'\n};\n\nconst lineClasses: Record<ListLines, string> = {\n one: 'min-h-[3rem]',\n two: 'min-h-[3.75rem]',\n three: 'min-h-[4.5rem]'\n};\n\nconst accentClasses: Record<Palette, { text: string; bg: string; indicator: string }> = {\n primary: { text: 'text-primary', bg: 'bg-primary/10', indicator: 'bg-primary' },\n neutral: { text: 'text-gray-900', bg: 'bg-gray-100', indicator: 'bg-gray-900' },\n info: { text: 'text-sky-600', bg: 'bg-sky-50', indicator: 'bg-sky-500' },\n success: { text: 'text-emerald-600', bg: 'bg-emerald-50', indicator: 'bg-emerald-500' },\n warning: { text: 'text-amber-700', bg: 'bg-amber-50', indicator: 'bg-amber-500' },\n danger: { text: 'text-red-600', bg: 'bg-red-50', indicator: 'bg-red-500' },\n surface: { text: 'text-gray-900', bg: 'bg-gray-100', indicator: 'bg-gray-900' }\n};\n\nexport interface ListItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n component?: React.ElementType;\n href?: string;\n target?: string;\n rel?: string;\n type?: 'button' | 'submit' | 'reset';\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n overline?: React.ReactNode;\n prepend?: React.ReactNode;\n append?: React.ReactNode;\n active?: boolean;\n disabled?: boolean;\n inset?: boolean;\n density?: ListDensity;\n lines?: ListLines;\n}\n\nconst ListItem = React.forwardRef<HTMLElement, ListItemProps>((props, ref) => {\n const {\n component,\n href,\n target,\n rel,\n type,\n title,\n subtitle,\n overline,\n prepend,\n append,\n active = false,\n disabled = false,\n inset = false,\n density: densityOverride,\n lines: linesOverride,\n className,\n children,\n tabIndex,\n role,\n ...rest\n } = props;\n\n const listContext = useListContext();\n const density = densityOverride ?? listContext.density;\n const lines = linesOverride ?? listContext.lines;\n const nav = listContext.nav;\n const accent = accentClasses[listContext.color] ?? accentClasses.primary;\n const shapeClass = listContext.divided ? 'rounded-none' : 'rounded-lg';\n\n const Component = component ?? (href ? 'a' : 'div');\n const interactive = typeof rest.onClick === 'function' || Component === 'a' || Component === 'button';\n\n const resolvedRole = role ?? 'listitem';\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive && Component === 'div' ? 0 : undefined);\n const resolvedRel = Component === 'a' ? rel : undefined;\n const resolvedTarget = Component === 'a' ? target : undefined;\n const resolvedHref = Component === 'a' ? href : undefined;\n const resolvedType = Component === 'button' ? type ?? 'button' : undefined;\n\n const disabledClass = disabled ? 'pointer-events-none opacity-60' : 'cursor-pointer';\n const navPaddingClass = nav ? 'pl-5' : undefined;\n const insetClass = inset ? 'pl-12' : undefined;\n const activeClasses = active ? accent.bg : undefined;\n\n return (\n <Component\n {...rest}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-current={active ? 'true' : undefined}\n className={twMerge(\n listItemBaseClasses,\n densityClasses[density],\n lineClasses[lines],\n shapeClass,\n navPaddingClass,\n insetClass,\n disabledClass,\n activeClasses,\n className\n )}\n href={resolvedHref}\n target={resolvedTarget}\n rel={resolvedRel}\n type={resolvedType}\n data-active={active || undefined}\n >\n {nav && (\n <span\n aria-hidden\n className={twMerge(\n 'absolute left-1 top-2 bottom-2 w-0.5 rounded-full bg-transparent transition-colors duration-150',\n active ? accent.indicator : undefined\n )}\n />\n )}\n {prepend && (\n <span className='flex h-10 w-10 shrink-0 items-center justify-center text-base text-gray-500'>{prepend}</span>\n )}\n <span className='flex min-w-0 flex-col gap-0.5 text-left'>\n {overline && (\n <span className='text-[0.65rem] font-semibold uppercase tracking-wide text-gray-500'>{overline}</span>\n )}\n {title && (\n <span className={twMerge('truncate font-medium text-gray-900', active ? accent.text : undefined)}>\n {title}\n </span>\n )}\n {subtitle && <span className='text-sm text-gray-500'>{subtitle}</span>}\n {children}\n </span>\n {append && (\n <span className='ml-auto flex items-center gap-2 whitespace-nowrap text-sm text-gray-500'>{append}</span>\n )}\n </Component>\n );\n});\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\nexport type { ListDensity, ListLines } from '../types.list';\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport ListItem from './Item';\nimport { ListContext } from './list.context';\nimport type { ListContextValue } from './list.context';\nimport type { ListDensity, ListLines, ListRounded, ListVariant } from './types.list';\n\nconst listBaseClasses = 'flex w-full min-w-0 flex-col text-gray-900 transition-colors duration-150';\n\nconst listVariantClasses: Record<ListVariant, string> = {\n solid: 'bg-white border border-gray-200 shadow-sm shadow-gray-900/5',\n outline: 'bg-transparent border border-gray-300',\n ghost: 'bg-gray-50 border border-transparent',\n text: 'bg-transparent border border-transparent',\n bw: 'bg-white text-black border border-black shadow-none'\n};\n\nconst listRoundedClasses: Record<ListRounded, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n pill: 'rounded-full'\n};\n\nexport interface ListProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: ListVariant;\n density?: ListDensity;\n lines?: ListLines;\n nav?: boolean;\n divided?: boolean;\n rounded?: ListRounded;\n color?: Palette;\n}\n\nconst List = React.forwardRef<HTMLDivElement, ListProps>((props, ref) => {\n const {\n variant = 'solid',\n density = 'default',\n lines = 'one',\n nav = false,\n divided = false,\n rounded = 'lg',\n color = 'primary',\n className,\n role,\n children,\n ...rest\n } = props;\n\n const variantClass = listVariantClasses[variant] ?? listVariantClasses.solid;\n const roundedClass = listRoundedClasses[rounded] ?? listRoundedClasses.lg;\n const dividerClass = divided ? 'divide-y divide-gray-100' : undefined;\n const gapClass = divided ? 'p-0' : 'gap-1 p-1';\n const navClass = nav ? 'py-1' : undefined;\n const accentColor = variant === 'bw' ? 'surface' : color;\n\n const contextValue = React.useMemo<ListContextValue>(\n () => ({\n density,\n lines,\n nav,\n divided,\n color: accentColor\n }),\n [accentColor, density, lines, nav, divided]\n );\n\n return (\n <ListContext.Provider value={contextValue}>\n <div\n {...rest}\n ref={ref}\n role={role ?? 'list'}\n className={twMerge(listBaseClasses, variantClass, roundedClass, dividerClass, gapClass, navClass, className)}\n >\n {children}\n </div>\n </ListContext.Provider>\n );\n});\n\nList.displayName = 'List';\n\nexport { ListItem };\nexport type { ListItemProps } from './Item';\nexport type { ListVariant, ListDensity, ListLines, ListRounded } from './types.list';\nexport default List;\n","'use client';\n\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst isBrowser = typeof window !== 'undefined';\nconst useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;\n\nexport type MenuPlacement = 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\nexport interface MenuActivatorRenderProps {\n ref: (node: HTMLElement | null) => void;\n id: string;\n 'aria-haspopup': 'menu';\n 'aria-expanded': boolean;\n 'aria-controls': string;\n onClick: React.MouseEventHandler<HTMLElement>;\n onKeyDown: React.KeyboardEventHandler<HTMLElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLElement>;\n disabled?: boolean;\n open: boolean;\n}\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n activator: (props: MenuActivatorRenderProps) => React.ReactNode;\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: MenuPlacement;\n openOnHover?: boolean;\n closeOnContentClick?: boolean;\n matchActivatorWidth?: boolean;\n keepMounted?: boolean;\n disabled?: boolean;\n scrim?: boolean;\n contentClassName?: string;\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n overlayClassName?: string;\n}\n\nconst placementClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'left-0 top-full origin-top-left',\n bottom: 'left-1/2 top-full -translate-x-1/2 origin-top',\n 'bottom-end': 'right-0 top-full origin-top-right',\n 'top-start': 'left-0 bottom-full origin-bottom-left',\n top: 'left-1/2 bottom-full -translate-x-1/2 origin-bottom',\n 'top-end': 'right-0 bottom-full origin-bottom-right'\n};\n\nconst offsetClasses: Record<'top' | 'bottom', string> = {\n top: 'mb-2',\n bottom: 'mt-2'\n};\n\nconst menuBaseClasses =\n 'absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0 data-[state=closed]:scale-95 data-[state=open]:opacity-100 data-[state=open]:scale-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nconst overlayBaseClasses = 'fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]';\n\nconst Menu = React.forwardRef<HTMLDivElement, MenuProps>((props, ref) => {\n const {\n activator,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom-start',\n openOnHover = false,\n closeOnContentClick = true,\n matchActivatorWidth = false,\n keepMounted = false,\n disabled = false,\n scrim = false,\n contentClassName,\n contentProps,\n overlayClassName,\n className,\n onMouseEnter: rootMouseEnter,\n onMouseLeave: rootMouseLeave,\n ...rest\n } = props;\n\n const baseId = React.useId();\n const menuId = `${baseId}-menu`;\n const activatorId = `${baseId}-activator`;\n\n const isControlled = typeof openProp === 'boolean';\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const open = isControlled ? Boolean(openProp) : internalOpen;\n\n const localRootRef = React.useRef<HTMLDivElement | null>(null);\n const menuRef = React.useRef<HTMLDivElement | null>(null);\n const activatorRef = React.useRef<HTMLElement | null>(null);\n const closeTimeoutRef = React.useRef<number | null>(null);\n\n const mergedRootRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRootRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [ref]\n );\n\n const [activatorWidth, setActivatorWidth] = React.useState<number>();\n\n const updateActivatorWidth = React.useCallback(() => {\n if (!matchActivatorWidth) {\n setActivatorWidth(undefined);\n return;\n }\n const node = activatorRef.current;\n if (!node) {\n return;\n }\n setActivatorWidth(node.getBoundingClientRect().width);\n }, [matchActivatorWidth]);\n\n useIsomorphicLayoutEffect(() => {\n if (!matchActivatorWidth) {\n return;\n }\n updateActivatorWidth();\n if (!activatorRef.current || typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => updateActivatorWidth());\n observer.observe(activatorRef.current);\n return () => observer.disconnect();\n }, [matchActivatorWidth, updateActivatorWidth]);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (disabled || open === nextOpen) {\n return;\n }\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [disabled, isControlled, onOpenChange, open]\n );\n\n React.useEffect(() => {\n if (!disabled || !open) {\n return;\n }\n if (!isControlled) {\n setInternalOpen(false);\n }\n onOpenChange?.(false);\n }, [disabled, open, isControlled, onOpenChange]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (!target) {\n return;\n }\n if (localRootRef.current?.contains(target)) {\n return;\n }\n setOpen(false);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setOpen(false);\n activatorRef.current?.focus();\n }\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [open, setOpen]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n const node = menuRef.current;\n if (!node) {\n return;\n }\n const id = window.requestAnimationFrame(() => {\n node.focus({ preventScroll: true });\n });\n return () => window.cancelAnimationFrame(id);\n }, [open]);\n\n const setActivatorNode = React.useCallback(\n (node: HTMLElement | null) => {\n activatorRef.current = node;\n if (node && matchActivatorWidth) {\n setActivatorWidth(node.getBoundingClientRect().width);\n }\n },\n [matchActivatorWidth]\n );\n\n const handleActivatorClick = React.useCallback<React.MouseEventHandler<HTMLElement>>(\n event => {\n event.preventDefault();\n if (disabled) {\n return;\n }\n setOpen(!open);\n },\n [disabled, open, setOpen]\n );\n\n const handleActivatorKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLElement>>(\n event => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setOpen(!open);\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setOpen(true);\n }\n },\n [open, setOpen]\n );\n\n const clearCloseTimeout = React.useCallback(() => {\n if (closeTimeoutRef.current !== null) {\n if (isBrowser) {\n window.clearTimeout(closeTimeoutRef.current);\n }\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleClose = React.useCallback(() => {\n if (!isBrowser) {\n setOpen(false);\n return;\n }\n clearCloseTimeout();\n closeTimeoutRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimeoutRef.current = null;\n }, 150);\n }, [clearCloseTimeout, setOpen]);\n\n React.useEffect(() => {\n return () => clearCloseTimeout();\n }, [clearCloseTimeout]);\n\n const isMovingWithinMenu = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const nextTarget = event.relatedTarget as Node | null;\n if (!nextTarget || !localRootRef.current) {\n return false;\n }\n return localRootRef.current.contains(nextTarget);\n },\n [localRootRef]\n );\n\n const handleRootMouseEnter = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n rootMouseEnter?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n clearCloseTimeout();\n setOpen(true);\n }\n },\n [clearCloseTimeout, openOnHover, rootMouseEnter, setOpen]\n );\n\n const handleRootMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n rootMouseLeave?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n }\n },\n [isMovingWithinMenu, openOnHover, rootMouseLeave, scheduleClose]\n );\n\n const handleActivatorMouseEnter = React.useCallback(\n (_event: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n return;\n }\n clearCloseTimeout();\n setOpen(true);\n },\n [clearCloseTimeout, disabled, setOpen]\n );\n\n const handleActivatorMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (disabled || !openOnHover) {\n return;\n }\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n },\n [disabled, isMovingWithinMenu, openOnHover, scheduleClose]\n );\n\n const {\n className: contentClass,\n style: contentStyle,\n onClick: contentOnClick,\n onMouseEnter: contentOnMouseEnter,\n onMouseLeave: contentOnMouseLeave,\n role: contentRole,\n tabIndex: contentTabIndex,\n ['aria-labelledby']: ariaLabelledBy,\n ...restContentProps\n } = contentProps ?? {};\n\n const shouldRenderContent = open || keepMounted;\n const verticalPlacement = placement.startsWith('top') ? 'top' : 'bottom';\n\n const activatorElement = activator({\n ref: setActivatorNode,\n id: activatorId,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n 'aria-controls': menuId,\n onClick: handleActivatorClick,\n onKeyDown: handleActivatorKeyDown,\n onMouseEnter: openOnHover ? handleActivatorMouseEnter : undefined,\n onMouseLeave: openOnHover ? handleActivatorMouseLeave : undefined,\n disabled,\n open\n });\n\n return (\n <>\n {scrim && open ? (\n <div\n className={twMerge(overlayBaseClasses, overlayClassName)}\n aria-hidden\n onClick={() => setOpen(false)}\n onMouseDown={event => event.preventDefault()}\n />\n ) : null}\n <div\n {...rest}\n ref={mergedRootRef}\n className={twMerge('relative inline-flex min-w-0', className)}\n data-open={open || undefined}\n onMouseEnter={openOnHover ? handleRootMouseEnter : rootMouseEnter}\n onMouseLeave={openOnHover ? handleRootMouseLeave : rootMouseLeave}\n >\n {activatorElement}\n {shouldRenderContent ? (\n <div\n {...restContentProps}\n ref={menuRef}\n id={menuId}\n role={contentRole ?? 'menu'}\n tabIndex={contentTabIndex ?? -1}\n aria-labelledby={ariaLabelledBy ?? activatorId}\n data-state={open ? 'open' : 'closed'}\n className={twMerge(\n menuBaseClasses,\n placementClasses[placement],\n offsetClasses[verticalPlacement],\n contentClassName,\n contentClass\n )}\n style={{\n ...contentStyle,\n ...(matchActivatorWidth && activatorWidth\n ? { minWidth: activatorWidth, width: activatorWidth }\n : undefined)\n }}\n onMouseEnter={event => {\n contentOnMouseEnter?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n clearCloseTimeout();\n setOpen(true);\n }\n }}\n onMouseLeave={event => {\n contentOnMouseLeave?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n }\n }}\n onClick={event => {\n contentOnClick?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (closeOnContentClick) {\n setOpen(false);\n }\n }}\n >\n {children}\n </div>\n ) : null}\n </div>\n </>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { InputProp } from './types';\n\nexport const resolveIconClassName = (icon?: InputProp['icon']) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalizedName = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalizedName].join(' ');\n }\n\n const [library, iconNameRaw] = icon;\n const baseClasses = iconBaseClasses[library] ?? [library];\n const iconName = iconNameRaw.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n const normalizedName = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n const classes = [...baseClasses, normalizedName];\n return Array.from(new Set(classes)).join(' ');\n};\n","'use client';\n\nimport { twMerge } from 'tailwind-merge';\nimport { InputProp, InputVariant } from './types';\nimport { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { resolveIconClassName } from './states.input';\n\nconst Input: React.FC<InputProp> = ({ variant = 'outline', success, error, warn, icon, className, ...props }) => {\n const classBase =\n 'input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full';\n const variantClasses = {\n outline: 'rounded border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary',\n filled: 'rounded bg-gray-100 border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary',\n underlined: 'border-b-1 border-gray-300 focus:border-red-400 focus:outline-none focus:ring-none'\n } satisfies Record<InputVariant, string>;\n\n const status = error\n ? { tone: 'error' as const, message: error }\n : warn\n ? { tone: 'warn' as const, message: warn }\n : success\n ? { tone: 'success' as const, message: success }\n : undefined;\n\n const statusClasses = {\n error: 'border-red-500 focus:border-red-500 focus:ring-red-400',\n warn: 'border-amber-500 focus:border-amber-500 focus:ring-amber-400',\n success: 'border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400'\n } as const;\n\n const statusMessageClasses = {\n error: 'text-red-600',\n warn: 'text-amber-600',\n success: 'text-emerald-600'\n } as const;\n\n const variantClass = variantClasses[variant] ?? variantClasses.outline;\n const toneClass = status ? statusClasses[status.tone] : undefined;\n const prependIconClass = resolveIconClassName(icon);\n const prependPadding = prependIconClass ? 'pl-10' : undefined;\n\n return (\n <div className='flex flex-col gap-1'>\n <div className='relative flex items-center'>\n {prependIconClass && (\n <i className={twMerge('pointer-events-none absolute left-3 ', prependIconClass)} aria-hidden />\n )}\n <input {...props} className={twMerge(classBase, variantClass, toneClass, prependPadding, className)} />\n {/* {appendIconClass && (\n <i className={twMerge('pointer-events-none absolute right-3 text-gray-500', appendIconClass)} aria-hidden />\n )} */}\n </div>\n {status?.message && (\n <span className={twMerge('text-sm', statusMessageClasses[status.tone])}>{status.message}</span>\n )}\n </div>\n );\n};\n\nexport default Input;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/globals.ts","../src/Containment/Button/states.button.ts","../src/Containment/Button/index.tsx","../src/Containment/Chip/states.chip.ts","../src/Containment/Chip/index.tsx","../src/Containment/List/list.context.ts","../src/Containment/List/Item/index.tsx","../src/Containment/List/index.tsx","../src/Containment/Menu/index.tsx","../src/Form/Input/states.input.ts","../src/Form/Input/index.tsx"],"names":["normalized","React","paletteVariantClasses","resolveVariantClass","resolveIconClassName","React2","jsx","jsxs","twMerge","React3","React4","React5","normalizedName"],"mappings":"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","file":"index.js","sourcesContent":["export const iconBaseClasses = {\n mdi: ['mdi']\n} as const;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport type { GlobalSize, Palette } from '@lindle/linoardo/global.types';\nimport type { ButtonProps, ButtonVariant } from './types.button';\n\nexport const base =\n 'btn-base focus-visible:outline-none focus-visible:ring-2 rounded-md transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed';\n\nconst blackAndWhiteVariantClass =\n 'bg-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst paletteVariantClasses: Record<Palette, Record<ButtonVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary',\n outline: 'border border-primary text-primary bg-white hover:bg-primary hover:text-white focus-visible:ring-primary',\n ghost: 'text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40',\n text: 'bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n neutral: {\n solid: 'bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500',\n outline:\n 'border border-gray-400 text-gray-700 bg-white hover:bg-gray-700 hover:text-white focus-visible:ring-gray-400',\n ghost: 'text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300',\n text: 'bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n info: {\n solid: 'bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400',\n outline: 'border border-sky-500 text-sky-600 bg-white hover:bg-sky-500 hover:text-white focus-visible:ring-sky-400',\n ghost: 'text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300',\n text: 'bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n success: {\n solid: 'bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400',\n outline:\n 'border border-emerald-500 text-emerald-600 bg-white hover:bg-emerald-500 hover:text-white focus-visible:ring-emerald-400',\n ghost: 'text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300',\n text: 'bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n warning: {\n solid: 'bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400',\n outline:\n 'border border-amber-500 text-amber-600 bg-white hover:bg-amber-500 hover:text-white focus-visible:ring-amber-400',\n ghost: 'text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300',\n text: 'bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n danger: {\n solid: 'bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400',\n outline: 'border border-red-500 text-red-600 bg-white hover:bg-red-500 hover:text-white focus-visible:ring-red-400',\n ghost: 'text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300',\n text: 'bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200',\n outline: 'border border-gray-300 text-gray-900 bg-white hover:bg-gray-100 focus-visible:ring-gray-200',\n ghost: 'text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200',\n text: 'bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2',\n bw: blackAndWhiteVariantClass\n }\n};\n\nexport const resolveVariantClass = (variant: ButtonVariant, palette: Palette) => {\n const paletteVariants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return paletteVariants[variant] ?? paletteVariants.solid;\n};\n\nexport const resolveIconClassName = (icon?: ButtonProps['icon']) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n\nexport const sizeClasses = {\n 'x-small': 'px-2.5 py-1 text-xs',\n small: 'px-3 py-1.5 text-sm',\n medium: 'px-4 py-2 text-base',\n large: 'px-6 py-3 text-lg',\n 'x-large': 'px-7 py-3.5 text-xl'\n} satisfies Record<GlobalSize, string>;\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { ButtonProps } from './types.button';\nimport { base, resolveIconClassName, resolveVariantClass, sizeClasses } from './states.button';\n\n/**\n * Containment button supporting variant, size, block layout and loading states.\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n block = false,\n loading = false,\n loadingText,\n icon,\n className,\n children,\n disabled,\n onClick,\n ...rest\n },\n ref\n ) => {\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = sizeClasses[size] ?? sizeClasses.medium;\n const blockClass = block ? 'w-full' : null;\n const isDisabled = disabled || loading;\n const cursor = onClick && !isDisabled ? 'cursor-pointer' : 'cursor-default';\n const resolvedIconClass = resolveIconClassName(icon);\n const shouldRenderIcon = Boolean(resolvedIconClass && !loading);\n const isLoadingTextProvided = loadingText !== undefined && loadingText !== null;\n const content = loading && isLoadingTextProvided ? loadingText : children;\n const hasDecorators = (loading || shouldRenderIcon) && Boolean(content);\n const gapClass = hasDecorators ? 'gap-2' : undefined;\n const loadingIconClass = loading ? twMerge('mdi mdi-loading mdi-spin', 'leading-none') : undefined;\n const iconClassName = shouldRenderIcon ? twMerge('leading-none', resolvedIconClass) : undefined;\n\n return (\n <button\n {...rest}\n ref={ref}\n onClick={onClick}\n disabled={isDisabled}\n className={twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className, 'border-2 border-l')}\n data-loading={loading || undefined}\n aria-busy={loading || undefined}\n >\n {loading && <i className={loadingIconClass} aria-hidden />}\n {iconClassName && <i className={iconClassName} aria-hidden />}\n {content}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { Palette, PropIcon } from '@lindle/linoardo/global.types';\nimport { ChipSize, ChipVariant } from './types.chip';\n\nexport const chipBaseClasses =\n 'inline-flex items-center gap-1.5 border font-medium leading-tight transition-all duration-200 select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nexport const chipSizeClasses: Record<ChipSize, string> = {\n small: 'text-xs px-3 py-1 min-h-[1.5rem]',\n medium: 'text-sm px-4 py-1.5 min-h-[2rem]',\n large: 'text-base px-5 py-2 min-h-[2.5rem]'\n};\n\nexport const closeButtonClasses =\n 'ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2';\n\nconst blackAndWhiteChipVariantClass =\n 'bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white';\n\nconst paletteVariantClasses: Record<Palette, Record<ChipVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white border border-primary hover:bg-primary/90',\n outline: 'bg-transparent text-primary border border-primary hover:bg-primary/10',\n ghost: 'bg-primary/15 text-primary border border-transparent hover:bg-primary/25',\n text: 'bg-transparent text-primary border border-transparent hover:text-primary/80',\n bw: blackAndWhiteChipVariantClass\n },\n neutral: {\n solid: 'bg-gray-900 text-white border border-gray-900 hover:bg-gray-800',\n outline: 'bg-transparent text-gray-900 border border-gray-500 hover:bg-gray-100',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-700',\n bw: blackAndWhiteChipVariantClass\n },\n info: {\n solid: 'bg-sky-500 text-white border border-sky-500 hover:bg-sky-600',\n outline: 'bg-transparent text-sky-600 border border-sky-500 hover:bg-sky-50',\n ghost: 'bg-sky-100 text-sky-700 border border-transparent hover:bg-sky-200',\n text: 'bg-transparent text-sky-600 border border-transparent hover:text-sky-700',\n bw: blackAndWhiteChipVariantClass\n },\n success: {\n solid: 'bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600',\n outline: 'bg-transparent text-emerald-600 border border-emerald-500 hover:bg-emerald-50',\n ghost: 'bg-emerald-100 text-emerald-700 border border-transparent hover:bg-emerald-200',\n text: 'bg-transparent text-emerald-600 border border-transparent hover:text-emerald-700',\n bw: blackAndWhiteChipVariantClass\n },\n warning: {\n solid: 'bg-amber-500 text-white border border-amber-500 hover:bg-amber-600',\n outline: 'bg-transparent text-amber-700 border border-amber-500 hover:bg-amber-50',\n ghost: 'bg-amber-100 text-amber-800 border border-transparent hover:bg-amber-200',\n text: 'bg-transparent text-amber-700 border border-transparent hover:text-amber-800',\n bw: blackAndWhiteChipVariantClass\n },\n danger: {\n solid: 'bg-red-500 text-white border border-red-500 hover:bg-red-600',\n outline: 'bg-transparent text-red-600 border border-red-500 hover:bg-red-50',\n ghost: 'bg-red-100 text-red-700 border border-transparent hover:bg-red-200',\n text: 'bg-transparent text-red-600 border border-transparent hover:text-red-700',\n bw: blackAndWhiteChipVariantClass\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50',\n outline: 'bg-transparent text-gray-900 border border-gray-300 hover:bg-gray-50',\n ghost: 'bg-gray-100 text-gray-900 border border-transparent hover:bg-gray-200',\n text: 'bg-transparent text-gray-900 border border-transparent hover:text-gray-600',\n bw: blackAndWhiteChipVariantClass\n }\n};\n\nexport const resolveVariantClass = (variant: ChipVariant, palette: Palette) => {\n const variants = paletteVariantClasses[palette] ?? paletteVariantClasses.primary;\n return variants[variant] ?? variants.solid;\n};\n\nexport const resolveIconClassName = (icon?: PropIcon) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalized = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalized].join(' ');\n }\n\n const [library, providedName] = icon;\n const normalizedLibrary = library.trim();\n const baseClasses = iconBaseClasses[normalizedLibrary as keyof typeof iconBaseClasses] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n","'use client';\n\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { ChipProps } from './types.chip';\nimport {\n chipBaseClasses,\n chipSizeClasses,\n closeButtonClasses,\n resolveIconClassName,\n resolveVariantClass\n} from './states.chip';\n\nconst Chip = React.forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n pill = true,\n selected = false,\n closable = false,\n closeIcon = 'mdi-close',\n onClose,\n filter = false,\n filterIcon = 'mdi-check-bold',\n prependIcon,\n appendIcon,\n disabled = false,\n className,\n children,\n ...rest\n },\n ref\n ) => {\n const { onClick, onKeyDown, role, tabIndex, ...nativeProps } = rest;\n const interactive = typeof onClick === 'function';\n\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = chipSizeClasses[size] ?? chipSizeClasses.medium;\n const pillClass = pill ? 'rounded-full' : 'rounded-lg';\n const cursorClass = disabled ? 'pointer-events-none opacity-50' : interactive ? 'cursor-pointer' : 'cursor-default';\n const selectedClass = selected ? 'ring-2 ring-current/50 ring-offset-2 ring-offset-white' : undefined;\n\n const resolvedRole = disabled ? role : role ?? (interactive ? 'button' : undefined);\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive ? 0 : undefined);\n const prependIconClassName = resolveIconClassName(prependIcon);\n const appendIconClassName = resolveIconClassName(appendIcon);\n const closeIconClassName = resolveIconClassName(closeIcon);\n const filterIconClassName = filter && selected ? resolveIconClassName(filterIcon) : undefined;\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLSpanElement>) => {\n if (disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n onClick?.(event);\n },\n [disabled, onClick]\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLSpanElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled || !interactive) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n (event.currentTarget as HTMLSpanElement).click();\n }\n },\n [disabled, interactive, onKeyDown]\n );\n\n const handleCloseClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClose?.(event);\n },\n [disabled, onClose]\n );\n\n const handleCloseKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.stopPropagation();\n }\n }, []);\n\n const renderableChildren =\n typeof children === 'string' || typeof children === 'number' ? (\n <span className='truncate'>{children}</span>\n ) : (\n children\n );\n\n const filterAdornment = filter ? (\n <span\n className='flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-current/30 text-[0.55rem]'\n aria-hidden\n >\n {filterIconClassName ? <i className={filterIconClassName} aria-hidden /> : null}\n </span>\n ) : null;\n\n return (\n <span\n {...nativeProps}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-pressed={filter ? selected : undefined}\n data-selected={selected || undefined}\n className={twMerge(chipBaseClasses, sizeClass, pillClass, variantClass, cursorClass, selectedClass, className)}\n onClick={interactive ? handleClick : undefined}\n onKeyDown={interactive ? handleKeyDown : onKeyDown}\n >\n {filterAdornment}\n {prependIconClassName && <i className={twMerge('text-[1em] leading-none', prependIconClassName)} aria-hidden />}\n {renderableChildren}\n {appendIconClassName && <i className={twMerge('text-[1em] leading-none', appendIconClassName)} aria-hidden />}\n {closable && (\n <button\n type='button'\n disabled={disabled}\n aria-label='Remove chip'\n className={twMerge(closeButtonClasses)}\n onClick={handleCloseClick}\n onKeyDown={handleCloseKeyDown}\n >\n {closeIconClassName ? <i className={closeIconClassName} aria-hidden /> : <span aria-hidden>×</span>}\n </button>\n )}\n </span>\n );\n }\n);\n\nChip.displayName = 'Chip';\n\nexport type { ChipProps, ChipSize, ChipVariant } from './types.chip';\nexport default Chip;\n","import * as React from 'react';\nimport type { Palette } from '@lindle/linoardo/global.types';\nimport type { ListDensity, ListLines } from './types.list';\n\nexport interface ListContextValue {\n density: ListDensity;\n lines: ListLines;\n nav: boolean;\n divided: boolean;\n color: Palette;\n}\n\nexport const defaultListContext: ListContextValue = {\n density: 'default',\n lines: 'one',\n nav: false,\n divided: false,\n color: 'primary'\n};\n\nexport const ListContext = React.createContext<ListContextValue>(defaultListContext);\n\nexport const useListContext = () => React.useContext(ListContext);\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport { useListContext } from '../list.context';\nimport type { ListDensity, ListLines } from '../types.list';\n\nconst listItemBaseClasses =\n 'relative flex w-full items-center gap-4 bg-transparent text-left text-sm transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white hover:bg-neutral-200';\n\nconst densityClasses: Record<ListDensity, string> = {\n default: 'px-4 py-3 text-base',\n comfortable: 'px-4 py-2.5 text-sm',\n compact: 'px-3 py-2 text-sm'\n};\n\nconst lineClasses: Record<ListLines, string> = {\n one: 'min-h-[3rem]',\n two: 'min-h-[3.75rem]',\n three: 'min-h-[4.5rem]'\n};\n\nconst accentClasses: Record<Palette, { text: string; bg: string; indicator: string }> = {\n primary: { text: 'text-primary', bg: 'bg-primary/10', indicator: 'bg-primary' },\n neutral: { text: 'text-gray-900', bg: 'bg-gray-100', indicator: 'bg-gray-900' },\n info: { text: 'text-sky-600', bg: 'bg-sky-50', indicator: 'bg-sky-500' },\n success: { text: 'text-emerald-600', bg: 'bg-emerald-50', indicator: 'bg-emerald-500' },\n warning: { text: 'text-amber-700', bg: 'bg-amber-50', indicator: 'bg-amber-500' },\n danger: { text: 'text-red-600', bg: 'bg-red-50', indicator: 'bg-red-500' },\n surface: { text: 'text-gray-900', bg: 'bg-gray-100', indicator: 'bg-gray-900' }\n};\n\nexport interface ListItemProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n component?: React.ElementType;\n href?: string;\n target?: string;\n rel?: string;\n type?: 'button' | 'submit' | 'reset';\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n overline?: React.ReactNode;\n prepend?: React.ReactNode;\n append?: React.ReactNode;\n active?: boolean;\n disabled?: boolean;\n inset?: boolean;\n density?: ListDensity;\n lines?: ListLines;\n}\n\nconst ListItem = React.forwardRef<HTMLElement, ListItemProps>((props, ref) => {\n const {\n component,\n href,\n target,\n rel,\n type,\n title,\n subtitle,\n overline,\n prepend,\n append,\n active = false,\n disabled = false,\n inset = false,\n density: densityOverride,\n lines: linesOverride,\n className,\n children,\n tabIndex,\n role,\n ...rest\n } = props;\n\n const listContext = useListContext();\n const density = densityOverride ?? listContext.density;\n const lines = linesOverride ?? listContext.lines;\n const nav = listContext.nav;\n const accent = accentClasses[listContext.color] ?? accentClasses.primary;\n const shapeClass = listContext.divided ? 'rounded-none' : 'rounded-lg';\n\n const Component = component ?? (href ? 'a' : 'div');\n const interactive = typeof rest.onClick === 'function' || Component === 'a' || Component === 'button';\n\n const resolvedRole = role ?? 'listitem';\n const resolvedTabIndex = disabled ? -1 : tabIndex ?? (interactive && Component === 'div' ? 0 : undefined);\n const resolvedRel = Component === 'a' ? rel : undefined;\n const resolvedTarget = Component === 'a' ? target : undefined;\n const resolvedHref = Component === 'a' ? href : undefined;\n const resolvedType = Component === 'button' ? type ?? 'button' : undefined;\n\n const disabledClass = disabled ? 'pointer-events-none opacity-60' : 'cursor-pointer';\n const navPaddingClass = nav ? 'pl-5' : undefined;\n const insetClass = inset ? 'pl-12' : undefined;\n const activeClasses = active ? accent.bg : undefined;\n\n return (\n <Component\n {...rest}\n ref={ref}\n role={resolvedRole}\n tabIndex={resolvedTabIndex}\n aria-disabled={disabled || undefined}\n aria-current={active ? 'true' : undefined}\n className={twMerge(\n listItemBaseClasses,\n densityClasses[density],\n lineClasses[lines],\n shapeClass,\n navPaddingClass,\n insetClass,\n disabledClass,\n activeClasses,\n className\n )}\n href={resolvedHref}\n target={resolvedTarget}\n rel={resolvedRel}\n type={resolvedType}\n data-active={active || undefined}\n >\n {nav && (\n <span\n aria-hidden\n className={twMerge(\n 'absolute left-1 top-2 bottom-2 w-0.5 rounded-full bg-transparent transition-colors duration-150',\n active ? accent.indicator : undefined\n )}\n />\n )}\n {prepend && (\n <span className='flex h-10 w-10 shrink-0 items-center justify-center text-base text-gray-500'>{prepend}</span>\n )}\n <span className='flex min-w-0 flex-col gap-0.5 text-left'>\n {overline && (\n <span className='text-[0.65rem] font-semibold uppercase tracking-wide text-gray-500'>{overline}</span>\n )}\n {title && (\n <span className={twMerge('truncate font-medium text-gray-900', active ? accent.text : undefined)}>\n {title}\n </span>\n )}\n {subtitle && <span className='text-sm text-gray-500'>{subtitle}</span>}\n {children}\n </span>\n {append && (\n <span className='ml-auto flex items-center gap-2 whitespace-nowrap text-sm text-gray-500'>{append}</span>\n )}\n </Component>\n );\n});\n\nListItem.displayName = 'ListItem';\n\nexport default ListItem;\nexport type { ListDensity, ListLines } from '../types.list';\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport ListItem from './Item';\nimport { ListContext } from './list.context';\nimport type { ListContextValue } from './list.context';\nimport type { ListDensity, ListLines, ListRounded, ListVariant } from './types.list';\n\nconst listBaseClasses = 'flex w-full min-w-0 flex-col text-gray-900 transition-colors duration-150';\n\nconst listVariantClasses: Record<ListVariant, string> = {\n solid: 'bg-white border border-gray-200 shadow-sm shadow-gray-900/5',\n outline: 'bg-transparent border border-gray-300',\n ghost: 'bg-gray-50 border border-transparent',\n text: 'bg-transparent border border-transparent',\n bw: 'bg-white text-black border border-black shadow-none'\n};\n\nconst listRoundedClasses: Record<ListRounded, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n pill: 'rounded-full'\n};\n\nexport interface ListProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: ListVariant;\n density?: ListDensity;\n lines?: ListLines;\n nav?: boolean;\n divided?: boolean;\n rounded?: ListRounded;\n color?: Palette;\n}\n\nconst List = React.forwardRef<HTMLDivElement, ListProps>((props, ref) => {\n const {\n variant = 'solid',\n density = 'default',\n lines = 'one',\n nav = false,\n divided = false,\n rounded = 'lg',\n color = 'primary',\n className,\n role,\n children,\n ...rest\n } = props;\n\n const variantClass = listVariantClasses[variant] ?? listVariantClasses.solid;\n const roundedClass = listRoundedClasses[rounded] ?? listRoundedClasses.lg;\n const dividerClass = divided ? 'divide-y divide-gray-100' : undefined;\n const gapClass = divided ? 'p-0' : 'gap-1 p-1';\n const navClass = nav ? 'py-1' : undefined;\n const accentColor = variant === 'bw' ? 'surface' : color;\n\n const contextValue = React.useMemo<ListContextValue>(\n () => ({\n density,\n lines,\n nav,\n divided,\n color: accentColor\n }),\n [accentColor, density, lines, nav, divided]\n );\n\n return (\n <ListContext.Provider value={contextValue}>\n <div\n {...rest}\n ref={ref}\n role={role ?? 'list'}\n className={twMerge(listBaseClasses, variantClass, roundedClass, dividerClass, gapClass, navClass, className)}\n >\n {children}\n </div>\n </ListContext.Provider>\n );\n});\n\nList.displayName = 'List';\n\nexport { ListItem };\nexport type { ListItemProps } from './Item';\nexport type { ListVariant, ListDensity, ListLines, ListRounded } from './types.list';\nexport default List;\n","'use client';\n\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst isBrowser = typeof window !== 'undefined';\nconst useIsomorphicLayoutEffect = isBrowser ? React.useLayoutEffect : React.useEffect;\n\nexport type MenuPlacement = 'bottom-start' | 'bottom' | 'bottom-end' | 'top-start' | 'top' | 'top-end';\n\nexport interface MenuActivatorRenderProps {\n ref: (node: HTMLElement | null) => void;\n id: string;\n 'aria-haspopup': 'menu';\n 'aria-expanded': boolean;\n 'aria-controls': string;\n onClick: React.MouseEventHandler<HTMLElement>;\n onKeyDown: React.KeyboardEventHandler<HTMLElement>;\n onMouseEnter?: React.MouseEventHandler<HTMLElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLElement>;\n disabled?: boolean;\n open: boolean;\n}\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n activator: (props: MenuActivatorRenderProps) => React.ReactNode;\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: MenuPlacement;\n openOnHover?: boolean;\n closeOnContentClick?: boolean;\n matchActivatorWidth?: boolean;\n keepMounted?: boolean;\n disabled?: boolean;\n scrim?: boolean;\n contentClassName?: string;\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n overlayClassName?: string;\n}\n\nconst placementClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'left-0 top-full origin-top-left',\n bottom: 'left-1/2 top-full -translate-x-1/2 origin-top',\n 'bottom-end': 'right-0 top-full origin-top-right',\n 'top-start': 'left-0 bottom-full origin-bottom-left',\n top: 'left-1/2 bottom-full -translate-x-1/2 origin-bottom',\n 'top-end': 'right-0 bottom-full origin-bottom-right'\n};\n\nconst offsetClasses: Record<'top' | 'bottom', string> = {\n top: 'mb-2',\n bottom: 'mt-2'\n};\n\nconst menuBaseClasses =\n 'absolute z-50 min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 data-[state=closed]:pointer-events-none data-[state=closed]:opacity-0 data-[state=closed]:scale-95 data-[state=open]:opacity-100 data-[state=open]:scale-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nconst overlayBaseClasses = 'fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]';\n\nconst Menu = React.forwardRef<HTMLDivElement, MenuProps>((props, ref) => {\n const {\n activator,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom-start',\n openOnHover = false,\n closeOnContentClick = true,\n matchActivatorWidth = false,\n keepMounted = false,\n disabled = false,\n scrim = false,\n contentClassName,\n contentProps,\n overlayClassName,\n className,\n onMouseEnter: rootMouseEnter,\n onMouseLeave: rootMouseLeave,\n ...rest\n } = props;\n\n const baseId = React.useId();\n const menuId = `${baseId}-menu`;\n const activatorId = `${baseId}-activator`;\n\n const isControlled = typeof openProp === 'boolean';\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const open = isControlled ? Boolean(openProp) : internalOpen;\n\n const localRootRef = React.useRef<HTMLDivElement | null>(null);\n const menuRef = React.useRef<HTMLDivElement | null>(null);\n const activatorRef = React.useRef<HTMLElement | null>(null);\n const closeTimeoutRef = React.useRef<number | null>(null);\n\n const mergedRootRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRootRef.current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n },\n [ref]\n );\n\n const [activatorWidth, setActivatorWidth] = React.useState<number>();\n\n const updateActivatorWidth = React.useCallback(() => {\n if (!matchActivatorWidth) {\n setActivatorWidth(undefined);\n return;\n }\n const node = activatorRef.current;\n if (!node) {\n return;\n }\n setActivatorWidth(node.getBoundingClientRect().width);\n }, [matchActivatorWidth]);\n\n useIsomorphicLayoutEffect(() => {\n if (!matchActivatorWidth) {\n return;\n }\n updateActivatorWidth();\n if (!activatorRef.current || typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => updateActivatorWidth());\n observer.observe(activatorRef.current);\n return () => observer.disconnect();\n }, [matchActivatorWidth, updateActivatorWidth]);\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (disabled || open === nextOpen) {\n return;\n }\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [disabled, isControlled, onOpenChange, open]\n );\n\n React.useEffect(() => {\n if (!disabled || !open) {\n return;\n }\n if (!isControlled) {\n setInternalOpen(false);\n }\n onOpenChange?.(false);\n }, [disabled, open, isControlled, onOpenChange]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (!target) {\n return;\n }\n if (localRootRef.current?.contains(target)) {\n return;\n }\n setOpen(false);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.stopPropagation();\n setOpen(false);\n activatorRef.current?.focus();\n }\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [open, setOpen]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n const node = menuRef.current;\n if (!node) {\n return;\n }\n const id = window.requestAnimationFrame(() => {\n node.focus({ preventScroll: true });\n });\n return () => window.cancelAnimationFrame(id);\n }, [open]);\n\n const setActivatorNode = React.useCallback(\n (node: HTMLElement | null) => {\n activatorRef.current = node;\n if (node && matchActivatorWidth) {\n setActivatorWidth(node.getBoundingClientRect().width);\n }\n },\n [matchActivatorWidth]\n );\n\n const handleActivatorClick = React.useCallback<React.MouseEventHandler<HTMLElement>>(\n event => {\n event.preventDefault();\n if (disabled) {\n return;\n }\n setOpen(!open);\n },\n [disabled, open, setOpen]\n );\n\n const handleActivatorKeyDown = React.useCallback<React.KeyboardEventHandler<HTMLElement>>(\n event => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n setOpen(!open);\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setOpen(true);\n }\n },\n [open, setOpen]\n );\n\n const clearCloseTimeout = React.useCallback(() => {\n if (closeTimeoutRef.current !== null) {\n if (isBrowser) {\n window.clearTimeout(closeTimeoutRef.current);\n }\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const scheduleClose = React.useCallback(() => {\n if (!isBrowser) {\n setOpen(false);\n return;\n }\n clearCloseTimeout();\n closeTimeoutRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimeoutRef.current = null;\n }, 150);\n }, [clearCloseTimeout, setOpen]);\n\n React.useEffect(() => {\n return () => clearCloseTimeout();\n }, [clearCloseTimeout]);\n\n const isMovingWithinMenu = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const nextTarget = event.relatedTarget as Node | null;\n if (!nextTarget || !localRootRef.current) {\n return false;\n }\n return localRootRef.current.contains(nextTarget);\n },\n [localRootRef]\n );\n\n const handleRootMouseEnter = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n rootMouseEnter?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n clearCloseTimeout();\n setOpen(true);\n }\n },\n [clearCloseTimeout, openOnHover, rootMouseEnter, setOpen]\n );\n\n const handleRootMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n rootMouseLeave?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n }\n },\n [isMovingWithinMenu, openOnHover, rootMouseLeave, scheduleClose]\n );\n\n const handleActivatorMouseEnter = React.useCallback(\n (_event: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n return;\n }\n clearCloseTimeout();\n setOpen(true);\n },\n [clearCloseTimeout, disabled, setOpen]\n );\n\n const handleActivatorMouseLeave = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (disabled || !openOnHover) {\n return;\n }\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n },\n [disabled, isMovingWithinMenu, openOnHover, scheduleClose]\n );\n\n const {\n className: contentClass,\n style: contentStyle,\n onClick: contentOnClick,\n onMouseEnter: contentOnMouseEnter,\n onMouseLeave: contentOnMouseLeave,\n role: contentRole,\n tabIndex: contentTabIndex,\n ['aria-labelledby']: ariaLabelledBy,\n ...restContentProps\n } = contentProps ?? {};\n\n const shouldRenderContent = open || keepMounted;\n const verticalPlacement = placement.startsWith('top') ? 'top' : 'bottom';\n\n const activatorElement = activator({\n ref: setActivatorNode,\n id: activatorId,\n 'aria-haspopup': 'menu',\n 'aria-expanded': open,\n 'aria-controls': menuId,\n onClick: handleActivatorClick,\n onKeyDown: handleActivatorKeyDown,\n onMouseEnter: openOnHover ? handleActivatorMouseEnter : undefined,\n onMouseLeave: openOnHover ? handleActivatorMouseLeave : undefined,\n disabled,\n open\n });\n\n return (\n <>\n {scrim && open ? (\n <div\n className={twMerge(overlayBaseClasses, overlayClassName)}\n aria-hidden\n onClick={() => setOpen(false)}\n onMouseDown={event => event.preventDefault()}\n />\n ) : null}\n <div\n {...rest}\n ref={mergedRootRef}\n className={twMerge('relative inline-flex min-w-0', className)}\n data-open={open || undefined}\n onMouseEnter={openOnHover ? handleRootMouseEnter : rootMouseEnter}\n onMouseLeave={openOnHover ? handleRootMouseLeave : rootMouseLeave}\n >\n {activatorElement}\n {shouldRenderContent ? (\n <div\n {...restContentProps}\n ref={menuRef}\n id={menuId}\n role={contentRole ?? 'menu'}\n tabIndex={contentTabIndex ?? -1}\n aria-labelledby={ariaLabelledBy ?? activatorId}\n data-state={open ? 'open' : 'closed'}\n className={twMerge(\n menuBaseClasses,\n placementClasses[placement],\n offsetClasses[verticalPlacement],\n contentClassName,\n contentClass\n )}\n style={{\n ...contentStyle,\n ...(matchActivatorWidth && activatorWidth\n ? { minWidth: activatorWidth, width: activatorWidth }\n : undefined)\n }}\n onMouseEnter={event => {\n contentOnMouseEnter?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n clearCloseTimeout();\n setOpen(true);\n }\n }}\n onMouseLeave={event => {\n contentOnMouseLeave?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (openOnHover) {\n if (isMovingWithinMenu(event)) {\n return;\n }\n scheduleClose();\n }\n }}\n onClick={event => {\n contentOnClick?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (closeOnContentClick) {\n setOpen(false);\n }\n }}\n >\n {children}\n </div>\n ) : null}\n </div>\n </>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n","import { iconBaseClasses } from '@lindle/linoardo/globals';\nimport { InputProp } from './types';\n\nexport const resolveIconClassName = (icon?: InputProp['icon']) => {\n if (!icon) {\n return undefined;\n }\n\n if (typeof icon === 'string') {\n const trimmed = icon.trim();\n if (!trimmed) {\n return undefined;\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n const normalizedName = trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n return ['mdi', normalizedName].join(' ');\n }\n\n const [library, iconNameRaw] = icon;\n const baseClasses = iconBaseClasses[library] ?? [library];\n const iconName = iconNameRaw.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n const normalizedName = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n const classes = [...baseClasses, normalizedName];\n return Array.from(new Set(classes)).join(' ');\n};\n","'use client';\n\nimport { twMerge } from 'tailwind-merge';\nimport { InputProp, InputVariant } from './types';\nimport { resolveIconClassName } from './states.input';\n\nconst Input: React.FC<InputProp> = ({\n variant = 'outline',\n success,\n error,\n warn,\n icon,\n className,\n wrapperClassName,\n ...props\n}) => {\n const classBase =\n 'input-base px-3 py-2 focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full';\n const variantClasses = {\n outline: 'rounded border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary',\n filled: 'rounded bg-gray-100 border border-gray-300 focus:border-primary focus:ring-1 focus:ring-primary',\n underlined: 'border-b-1 border-gray-300 focus:border-red-400 focus:outline-none focus:ring-none'\n } satisfies Record<InputVariant, string>;\n\n const status = error\n ? { tone: 'error' as const, message: error }\n : warn\n ? { tone: 'warn' as const, message: warn }\n : success\n ? { tone: 'success' as const, message: success }\n : undefined;\n\n const statusClasses = {\n error: 'border-red-500 focus:border-red-500 focus:ring-red-400',\n warn: 'border-amber-500 focus:border-amber-500 focus:ring-amber-400',\n success: 'border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400'\n } as const;\n\n const statusMessageClasses = {\n error: 'text-red-600',\n warn: 'text-amber-600',\n success: 'text-emerald-600'\n } as const;\n\n const variantClass = variantClasses[variant] ?? variantClasses.outline;\n const toneClass = status ? statusClasses[status.tone] : undefined;\n const prependIconClass = resolveIconClassName(icon);\n const prependPadding = prependIconClass ? 'pl-10' : undefined;\n\n return (\n <div className={twMerge('flex flex-col gap-1', wrapperClassName)}>\n <div className='relative flex items-center'>\n {prependIconClass && (\n <i className={twMerge('pointer-events-none absolute left-3 ', prependIconClass)} aria-hidden />\n )}\n <input {...props} className={twMerge(classBase, variantClass, toneClass, prependPadding, className)} />\n {/* {appendIconClass && (\n <i className={twMerge('pointer-events-none absolute right-3 text-gray-500', appendIconClass)} aria-hidden />\n )} */}\n </div>\n {status?.message && (\n <span className={twMerge('text-sm', statusMessageClasses[status.tone])}>{status.message}</span>\n )}\n </div>\n );\n};\n\nexport default Input;\n"]}
|
package/dist/styles.css
CHANGED
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
--color-sky-600: oklch(58.8% 0.158 241.966);
|
|
46
46
|
--color-sky-700: oklch(50% 0.134 242.749);
|
|
47
47
|
--color-blue-500: oklch(62.3% 0.214 259.815);
|
|
48
|
+
--color-slate-50: oklch(98.4% 0.003 247.858);
|
|
48
49
|
--color-gray-50: oklch(98.5% 0.002 247.839);
|
|
49
50
|
--color-gray-100: oklch(96.7% 0.003 264.542);
|
|
50
51
|
--color-gray-200: oklch(92.8% 0.006 264.531);
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
--color-black: #000;
|
|
60
61
|
--color-white: #fff;
|
|
61
62
|
--spacing: 0.25rem;
|
|
63
|
+
--container-2xl: 42rem;
|
|
62
64
|
--text-xs: 0.75rem;
|
|
63
65
|
--text-xs--line-height: calc(1 / 0.75);
|
|
64
66
|
--text-sm: 0.875rem;
|
|
@@ -71,6 +73,8 @@
|
|
|
71
73
|
--text-xl--line-height: calc(1.75 / 1.25);
|
|
72
74
|
--text-2xl: 1.5rem;
|
|
73
75
|
--text-2xl--line-height: calc(2 / 1.5);
|
|
76
|
+
--text-3xl: 1.875rem;
|
|
77
|
+
--text-3xl--line-height: calc(2.25 / 1.875);
|
|
74
78
|
--font-weight-medium: 500;
|
|
75
79
|
--font-weight-semibold: 600;
|
|
76
80
|
--tracking-wide: 0.025em;
|
|
@@ -79,6 +83,7 @@
|
|
|
79
83
|
--radius-md: 0.375rem;
|
|
80
84
|
--radius-lg: 0.5rem;
|
|
81
85
|
--radius-xl: 0.75rem;
|
|
86
|
+
--radius-3xl: 1.5rem;
|
|
82
87
|
--blur-md: 12px;
|
|
83
88
|
--default-transition-duration: 150ms;
|
|
84
89
|
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -380,6 +385,9 @@
|
|
|
380
385
|
.min-h-\[4\.5rem\] {
|
|
381
386
|
min-height: 4.5rem;
|
|
382
387
|
}
|
|
388
|
+
.min-h-screen {
|
|
389
|
+
min-height: 100vh;
|
|
390
|
+
}
|
|
383
391
|
.w-0\.5 {
|
|
384
392
|
width: calc(var(--spacing) * 0.5);
|
|
385
393
|
}
|
|
@@ -398,6 +406,9 @@
|
|
|
398
406
|
.w-full {
|
|
399
407
|
width: 100%;
|
|
400
408
|
}
|
|
409
|
+
.max-w-2xl {
|
|
410
|
+
max-width: var(--container-2xl);
|
|
411
|
+
}
|
|
401
412
|
.min-w-0 {
|
|
402
413
|
min-width: calc(var(--spacing) * 0);
|
|
403
414
|
}
|
|
@@ -471,6 +482,30 @@
|
|
|
471
482
|
.gap-4 {
|
|
472
483
|
gap: calc(var(--spacing) * 4);
|
|
473
484
|
}
|
|
485
|
+
.gap-5 {
|
|
486
|
+
gap: calc(var(--spacing) * 5);
|
|
487
|
+
}
|
|
488
|
+
.space-y-1 {
|
|
489
|
+
:where(& > :not(:last-child)) {
|
|
490
|
+
--tw-space-y-reverse: 0;
|
|
491
|
+
margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
|
|
492
|
+
margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
.space-y-3 {
|
|
496
|
+
:where(& > :not(:last-child)) {
|
|
497
|
+
--tw-space-y-reverse: 0;
|
|
498
|
+
margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
|
|
499
|
+
margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
.space-y-6 {
|
|
503
|
+
:where(& > :not(:last-child)) {
|
|
504
|
+
--tw-space-y-reverse: 0;
|
|
505
|
+
margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
|
|
506
|
+
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
|
|
507
|
+
}
|
|
508
|
+
}
|
|
474
509
|
.divide-y {
|
|
475
510
|
:where(& > :not(:last-child)) {
|
|
476
511
|
--tw-divide-y-reverse: 0;
|
|
@@ -493,6 +528,9 @@
|
|
|
493
528
|
.rounded {
|
|
494
529
|
border-radius: 0.25rem;
|
|
495
530
|
}
|
|
531
|
+
.rounded-3xl {
|
|
532
|
+
border-radius: var(--radius-3xl);
|
|
533
|
+
}
|
|
496
534
|
.rounded-full {
|
|
497
535
|
border-radius: calc(infinity * 1px);
|
|
498
536
|
}
|
|
@@ -515,10 +553,18 @@
|
|
|
515
553
|
border-style: var(--tw-border-style);
|
|
516
554
|
border-width: 1px;
|
|
517
555
|
}
|
|
556
|
+
.border-2 {
|
|
557
|
+
border-style: var(--tw-border-style);
|
|
558
|
+
border-width: 2px;
|
|
559
|
+
}
|
|
518
560
|
.border-b-1 {
|
|
519
561
|
border-bottom-style: var(--tw-border-style);
|
|
520
562
|
border-bottom-width: 1px;
|
|
521
563
|
}
|
|
564
|
+
.border-l {
|
|
565
|
+
border-left-style: var(--tw-border-style);
|
|
566
|
+
border-left-width: 1px;
|
|
567
|
+
}
|
|
522
568
|
.border-amber-500 {
|
|
523
569
|
border-color: var(--color-amber-500);
|
|
524
570
|
}
|
|
@@ -648,6 +694,9 @@
|
|
|
648
694
|
.bg-sky-500 {
|
|
649
695
|
background-color: var(--color-sky-500);
|
|
650
696
|
}
|
|
697
|
+
.bg-slate-50 {
|
|
698
|
+
background-color: var(--color-slate-50);
|
|
699
|
+
}
|
|
651
700
|
.bg-transparent {
|
|
652
701
|
background-color: transparent;
|
|
653
702
|
}
|
|
@@ -693,6 +742,12 @@
|
|
|
693
742
|
.p-5 {
|
|
694
743
|
padding: calc(var(--spacing) * 5);
|
|
695
744
|
}
|
|
745
|
+
.p-6 {
|
|
746
|
+
padding: calc(var(--spacing) * 6);
|
|
747
|
+
}
|
|
748
|
+
.p-8 {
|
|
749
|
+
padding: calc(var(--spacing) * 8);
|
|
750
|
+
}
|
|
696
751
|
.p-10 {
|
|
697
752
|
padding: calc(var(--spacing) * 10);
|
|
698
753
|
}
|
|
@@ -757,6 +812,10 @@
|
|
|
757
812
|
font-size: var(--text-2xl);
|
|
758
813
|
line-height: var(--tw-leading, var(--text-2xl--line-height));
|
|
759
814
|
}
|
|
815
|
+
.text-3xl {
|
|
816
|
+
font-size: var(--text-3xl);
|
|
817
|
+
line-height: var(--tw-leading, var(--text-3xl--line-height));
|
|
818
|
+
}
|
|
760
819
|
.text-base {
|
|
761
820
|
font-size: var(--text-base);
|
|
762
821
|
line-height: var(--tw-leading, var(--text-base--line-height));
|
|
@@ -839,6 +898,9 @@
|
|
|
839
898
|
.text-gray-500 {
|
|
840
899
|
color: var(--color-gray-500);
|
|
841
900
|
}
|
|
901
|
+
.text-gray-600 {
|
|
902
|
+
color: var(--color-gray-600);
|
|
903
|
+
}
|
|
842
904
|
.text-gray-700 {
|
|
843
905
|
color: var(--color-gray-700);
|
|
844
906
|
}
|
|
@@ -1016,13 +1078,6 @@
|
|
|
1016
1078
|
}
|
|
1017
1079
|
}
|
|
1018
1080
|
}
|
|
1019
|
-
.hover\:bg-black {
|
|
1020
|
-
&:hover {
|
|
1021
|
-
@media (hover: hover) {
|
|
1022
|
-
background-color: var(--color-black);
|
|
1023
|
-
}
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
1081
|
.hover\:bg-current\/10 {
|
|
1027
1082
|
&:hover {
|
|
1028
1083
|
@media (hover: hover) {
|
|
@@ -1541,6 +1596,11 @@
|
|
|
1541
1596
|
opacity: 100%;
|
|
1542
1597
|
}
|
|
1543
1598
|
}
|
|
1599
|
+
.md\:grid-cols-2 {
|
|
1600
|
+
@media (width >= 48rem) {
|
|
1601
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1544
1604
|
}
|
|
1545
1605
|
@font-face {
|
|
1546
1606
|
font-family: "Material Design Icons";
|
|
@@ -24045,6 +24105,11 @@
|
|
|
24045
24105
|
syntax: "*";
|
|
24046
24106
|
inherits: false;
|
|
24047
24107
|
}
|
|
24108
|
+
@property --tw-space-y-reverse {
|
|
24109
|
+
syntax: "*";
|
|
24110
|
+
inherits: false;
|
|
24111
|
+
initial-value: 0;
|
|
24112
|
+
}
|
|
24048
24113
|
@property --tw-divide-y-reverse {
|
|
24049
24114
|
syntax: "*";
|
|
24050
24115
|
inherits: false;
|
|
@@ -24298,6 +24363,7 @@
|
|
|
24298
24363
|
--tw-rotate-z: initial;
|
|
24299
24364
|
--tw-skew-x: initial;
|
|
24300
24365
|
--tw-skew-y: initial;
|
|
24366
|
+
--tw-space-y-reverse: 0;
|
|
24301
24367
|
--tw-divide-y-reverse: 0;
|
|
24302
24368
|
--tw-border-style: solid;
|
|
24303
24369
|
--tw-gradient-position: initial;
|