@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 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 hover:bg-black hover:text-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-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 = ({ variant = "outline", success, error, warn, icon, className, ...props }) => {
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) })
@@ -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>&times;</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":"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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 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>&times;</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 ContainmentVariant = 'solid' | 'outline' | 'text' | 'ghost' | 'bw';
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?: ContainmentVariant;
15
+ variant?: ButtonVariant;
15
16
  color?: Palette;
16
- size?: ContainmentSize;
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 = ContainmentVariant;
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 = ContainmentVariant;
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: StatusMessage;
462
- error?: EmptyStatus;
463
- warn?: EmptyStatus;
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 ContainmentVariant = 'solid' | 'outline' | 'text' | 'ghost' | 'bw';
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?: ContainmentVariant;
15
+ variant?: ButtonVariant;
15
16
  color?: Palette;
16
- size?: ContainmentSize;
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 = ContainmentVariant;
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 = ContainmentVariant;
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: StatusMessage;
462
- error?: EmptyStatus;
463
- warn?: EmptyStatus;
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 hover:bg-black hover:text-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-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 = ({ variant = "outline", success, error, warn, icon, className, ...props }) => {
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>&times;</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>&times;</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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lindle/linoardo",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "",