@lindle/linoardo 1.0.46 → 1.0.48
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/{ExpansionPanelItem-C9KW1yBc.d.cts → ExpansionPanelItem-By0ziOVw.d.cts} +1 -1
- package/dist/{ExpansionPanelItem-Pi3BM-4v.d.ts → ExpansionPanelItem-CFfWX7ia.d.ts} +1 -1
- package/dist/alert.cjs +3 -3
- package/dist/alert.cjs.map +1 -1
- package/dist/alert.js +1 -1
- package/dist/badge.cjs +10 -10
- package/dist/badge.cjs.map +1 -1
- package/dist/badge.d.cts +1 -1
- package/dist/badge.d.ts +1 -1
- package/dist/badge.js +1 -1
- package/dist/block.cjs +0 -1
- package/dist/block.cjs.map +1 -1
- package/dist/block.d.cts +1 -1
- package/dist/block.d.ts +1 -1
- package/dist/block.js +1 -1
- package/dist/button.cjs +111 -55
- package/dist/button.cjs.map +1 -1
- package/dist/button.d.cts +16 -5
- package/dist/button.d.ts +16 -5
- package/dist/button.js +1 -1
- package/dist/card.cjs +0 -1
- package/dist/card.cjs.map +1 -1
- package/dist/card.d.cts +1 -1
- package/dist/card.d.ts +1 -1
- package/dist/card.js +1 -1
- package/dist/chip.cjs +47 -55
- package/dist/chip.cjs.map +1 -1
- package/dist/chip.d.cts +1 -1
- package/dist/chip.d.ts +1 -1
- package/dist/chip.js +2 -2
- package/dist/{chunk-5GT6L4BE.js → chunk-4NKKWBMP.js} +2 -3
- package/dist/chunk-4NKKWBMP.js.map +1 -0
- package/dist/{chunk-VPF7M2PB.js → chunk-7TQUULYB.js} +23 -26
- package/dist/chunk-7TQUULYB.js.map +1 -0
- package/dist/{chunk-U4P2VJCV.js → chunk-7YZBEH2K.js} +2 -3
- package/dist/chunk-7YZBEH2K.js.map +1 -0
- package/dist/{chunk-NJU7XT54.js → chunk-DMI64Z53.js} +4 -4
- package/dist/chunk-DMI64Z53.js.map +1 -0
- package/dist/{chunk-NADLY6LM.js → chunk-DUEQOGNR.js} +3 -4
- package/dist/chunk-DUEQOGNR.js.map +1 -0
- package/dist/{chunk-5LWU5T2C.js → chunk-GKZFVQW6.js} +16 -16
- package/dist/chunk-GKZFVQW6.js.map +1 -0
- package/dist/{chunk-ZTP2JSQ6.js → chunk-H4742H2N.js} +53 -27
- package/dist/chunk-H4742H2N.js.map +1 -0
- package/dist/{chunk-PSMGRUU5.js → chunk-HGECC2JH.js} +48 -56
- package/dist/chunk-HGECC2JH.js.map +1 -0
- package/dist/{chunk-DIWGVTWO.js → chunk-HVGCLUW2.js} +113 -57
- package/dist/chunk-HVGCLUW2.js.map +1 -0
- package/dist/{chunk-GMDNSU26.js → chunk-KK33I72F.js} +5 -5
- package/dist/{chunk-GMDNSU26.js.map → chunk-KK33I72F.js.map} +1 -1
- package/dist/{chunk-HT5XBHWN.js → chunk-KVXZEMAH.js} +4 -4
- package/dist/{chunk-HT5XBHWN.js.map → chunk-KVXZEMAH.js.map} +1 -1
- package/dist/{chunk-5MVIF5GP.js → chunk-LRWM4ZWZ.js} +4 -7
- package/dist/chunk-LRWM4ZWZ.js.map +1 -0
- package/dist/{chunk-XA74HBMH.js → chunk-LSIAP7ZZ.js} +8 -8
- package/dist/chunk-LSIAP7ZZ.js.map +1 -0
- package/dist/{chunk-HEXJCQRO.js → chunk-LWCRKQEV.js} +10 -10
- package/dist/chunk-LWCRKQEV.js.map +1 -0
- package/dist/{chunk-FEGFA3FN.js → chunk-LZYVTGJD.js} +3 -3
- package/dist/{chunk-FEGFA3FN.js.map → chunk-LZYVTGJD.js.map} +1 -1
- package/dist/{chunk-U2AL7XFY.js → chunk-O3VFEMJ7.js} +4 -4
- package/dist/chunk-O3VFEMJ7.js.map +1 -0
- package/dist/{chunk-HIRPMCQJ.js → chunk-OQYPWJDA.js} +12 -12
- package/dist/{chunk-HIRPMCQJ.js.map → chunk-OQYPWJDA.js.map} +1 -1
- package/dist/{chunk-AUVYU7M5.js → chunk-Q7VTD6NY.js} +20 -20
- package/dist/chunk-Q7VTD6NY.js.map +1 -0
- package/dist/{chunk-F3PI7A6V.js → chunk-TRR7TDVA.js} +3 -4
- package/dist/chunk-TRR7TDVA.js.map +1 -0
- package/dist/chunk-UGG35FPX.js +141 -0
- package/dist/chunk-UGG35FPX.js.map +1 -0
- package/dist/{chunk-HAXGOTZO.js → chunk-UK6RSS4J.js} +3 -3
- package/dist/chunk-UK6RSS4J.js.map +1 -0
- package/dist/{chunk-KQOR3C7E.js → chunk-ZLBGPLM3.js} +5 -5
- package/dist/chunk-ZLBGPLM3.js.map +1 -0
- package/dist/dialog.cjs +2 -2
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.js +1 -1
- package/dist/expansion-panel/item.cjs +18 -18
- package/dist/expansion-panel/item.cjs.map +1 -1
- package/dist/expansion-panel/item.d.cts +2 -2
- package/dist/expansion-panel/item.d.ts +2 -2
- package/dist/expansion-panel/item.js +1 -1
- package/dist/expansion-panel.cjs +23 -23
- package/dist/expansion-panel.cjs.map +1 -1
- package/dist/expansion-panel.d.cts +3 -3
- package/dist/expansion-panel.d.ts +3 -3
- package/dist/expansion-panel.js +2 -2
- package/dist/{global.types-gx9A7mUe.d.cts → global.types-CjO3VRWu.d.cts} +1 -1
- package/dist/{global.types-gx9A7mUe.d.ts → global.types-CjO3VRWu.d.ts} +1 -1
- package/dist/hero.cjs +21 -24
- package/dist/hero.cjs.map +1 -1
- package/dist/hero.d.cts +1 -1
- package/dist/hero.d.ts +1 -1
- package/dist/hero.js +1 -1
- package/dist/icon.cjs +8 -8
- package/dist/icon.cjs.map +1 -1
- package/dist/icon.d.cts +1 -1
- package/dist/icon.d.ts +1 -1
- package/dist/icon.js +1 -1
- package/dist/{index-CNwl6vmH.d.ts → index-BgLrabTA.d.ts} +1 -1
- package/dist/{index-BDrBOeFI.d.cts → index-C19gZTrO.d.cts} +1 -1
- package/dist/index.cjs +475 -489
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +68 -68
- package/dist/index.js.map +1 -1
- package/dist/input.cjs +62 -145
- package/dist/input.cjs.map +1 -1
- package/dist/input.d.cts +6 -6
- package/dist/input.d.ts +6 -6
- package/dist/input.js +1 -2
- package/dist/list/item.d.cts +2 -2
- package/dist/list/item.d.ts +2 -2
- package/dist/list.cjs +1 -2
- package/dist/list.cjs.map +1 -1
- package/dist/list.d.cts +3 -3
- package/dist/list.d.ts +3 -3
- package/dist/list.js +1 -1
- package/dist/masonry.cjs +1 -1
- package/dist/masonry.cjs.map +1 -1
- package/dist/masonry.js +1 -1
- package/dist/menu.cjs +51 -25
- package/dist/menu.cjs.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/notification.d.cts +1 -1
- package/dist/notification.d.ts +1 -1
- package/dist/profileCard.cjs +112 -59
- package/dist/profileCard.cjs.map +1 -1
- package/dist/profileCard.d.cts +1 -1
- package/dist/profileCard.d.ts +1 -1
- package/dist/profileCard.js +2 -2
- package/dist/select.cjs +1 -2
- package/dist/select.cjs.map +1 -1
- package/dist/select.d.cts +2 -2
- package/dist/select.d.ts +2 -2
- package/dist/select.js +1 -1
- package/dist/slider.cjs +3 -3
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.d.cts +1 -1
- package/dist/slider.d.ts +1 -1
- package/dist/slider.js +1 -1
- package/dist/styles.css +1156 -148
- package/dist/switch.cjs +14 -14
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.d.cts +1 -1
- package/dist/switch.d.ts +1 -1
- package/dist/switch.js +1 -1
- package/dist/timeline.cjs.map +1 -1
- package/dist/timeline.d.cts +2 -2
- package/dist/timeline.d.ts +2 -2
- package/dist/timeline.js +2 -2
- package/dist/tooltip.cjs +2 -2
- package/dist/tooltip.cjs.map +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{types-DaTHYIPO.d.ts → types-B4puM-zr.d.cts} +3 -4
- package/dist/{types-CJ0zqPXF.d.cts → types-BDisBwnf.d.ts} +3 -4
- package/package.json +1 -1
- package/readme.md +21 -1
- package/dist/chunk-5GT6L4BE.js.map +0 -1
- package/dist/chunk-5LWU5T2C.js.map +0 -1
- package/dist/chunk-5MVIF5GP.js.map +0 -1
- package/dist/chunk-AUVYU7M5.js.map +0 -1
- package/dist/chunk-DIWGVTWO.js.map +0 -1
- package/dist/chunk-F3PI7A6V.js.map +0 -1
- package/dist/chunk-HAXGOTZO.js.map +0 -1
- package/dist/chunk-HEXJCQRO.js.map +0 -1
- package/dist/chunk-KQOR3C7E.js.map +0 -1
- package/dist/chunk-NADLY6LM.js.map +0 -1
- package/dist/chunk-NJU7XT54.js.map +0 -1
- package/dist/chunk-OBGYXMZ3.js +0 -218
- package/dist/chunk-OBGYXMZ3.js.map +0 -1
- package/dist/chunk-PSMGRUU5.js.map +0 -1
- package/dist/chunk-U2AL7XFY.js.map +0 -1
- package/dist/chunk-U4P2VJCV.js.map +0 -1
- package/dist/chunk-VPF7M2PB.js.map +0 -1
- package/dist/chunk-XA74HBMH.js.map +0 -1
- package/dist/chunk-ZTP2JSQ6.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Containment/ExpansionPanel/context.ts","../src/Containment/ExpansionPanel/ExpansionPanelItem.tsx"],"names":[],"mappings":"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","file":"chunk-AUVYU7M5.js","sourcesContent":["import { cloneElement, isValidElement } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\n\nimport type { ExpansionPanelContextValue } from './types.expansion-panel';\n\nexport const EXPANSION_PANEL_CONTEXT_PROP = '__expansionPanelContext' as const;\nconst EXPANSION_PANEL_ITEM_MARKER = '__isExpansionPanelItem';\n\ntype MarkerTarget = Record<string | number | symbol, unknown> & {\n type?: unknown;\n};\n\ntype ElementProps = Record<string | number | symbol, unknown> & {\n children?: ReactNode;\n};\n\nconst hasMarker = (type: unknown): boolean => {\n if (!type || (typeof type !== 'function' && typeof type !== 'object')) {\n return false;\n }\n\n if ((type as MarkerTarget)[EXPANSION_PANEL_ITEM_MARKER]) {\n return true;\n }\n\n const innerType = (type as MarkerTarget).type;\n if (innerType && innerType !== type) {\n return hasMarker(innerType);\n }\n\n return false;\n};\n\nconst traverseNode = (\n node: ReactNode,\n value: ExpansionPanelContextValue\n): { node: ReactNode; changed: boolean } => {\n if (Array.isArray(node)) {\n let changed = false;\n const nextArray = node.map(child => {\n const result = traverseNode(child, value);\n if (result.changed) {\n changed = true;\n }\n return result.node;\n });\n return { node: changed ? nextArray : node, changed };\n }\n\n if (\n node === null ||\n node === undefined ||\n typeof node === 'boolean' ||\n typeof node === 'string' ||\n typeof node === 'number'\n ) {\n return { node, changed: false };\n }\n\n if (!isValidElement<ElementProps>(node)) {\n return { node, changed: false };\n }\n\n const element = node as ReactElement<ElementProps>;\n\n const { node: mappedChildren, changed: childrenChanged } = traverseNode(\n element.props.children,\n value\n );\n const shouldInject = hasMarker(element.type);\n\n if (!shouldInject && !childrenChanged) {\n return { node, changed: false };\n }\n\n const injectedProps = shouldInject\n ? ({ [EXPANSION_PANEL_CONTEXT_PROP]: value } as Partial<ElementProps>)\n : undefined;\n const cloned =\n mappedChildren === undefined\n ? cloneElement(element, injectedProps)\n : cloneElement(element, injectedProps, mappedChildren);\n\n return { node: cloned, changed: true };\n};\n\nexport const injectExpansionPanelContext = (\n children: ReactNode,\n value: ExpansionPanelContextValue\n): ReactNode => traverseNode(children, value).node;\n\nexport const markExpansionPanelItem = (component: unknown) => {\n if (typeof component !== 'function' && (typeof component !== 'object' || component === null)) {\n return;\n }\n\n (component as MarkerTarget)[EXPANSION_PANEL_ITEM_MARKER] = true;\n};\n","import { forwardRef } from 'react';\nimport type { Ref } from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { markExpansionPanelItem } from './context';\nimport type {\n ExpansionPanelDensity,\n ExpansionPanelItemProps,\n ExpansionPanelContextValue\n} from './types.expansion-panel';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nconst densityClasses: Record<ExpansionPanelDensity, string> = {\n comfortable: 'py-5',\n default: 'py-4',\n compact: 'py-3'\n};\n\nconst roundedClasses = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl'\n};\n\nconst itemVariantClasses = {\n elevated: 'bg-white border border-gray-200 shadow-sm shadow-gray-900/5',\n outlined: 'bg-white border border-gray-200',\n tonal: 'bg-gray-50 border border-gray-100',\n plain: 'bg-transparent border border-transparent'\n};\n\nconst accentClasses: Record<Palette, { text: string; bg: string; border: string }> = {\n primary: { text: 'text-primary', bg: 'bg-primary/5', border: 'border-primary/30' },\n neutral: { text: 'text-gray-900', bg: 'bg-gray-100', border: 'border-gray-200' },\n info: { text: 'text-sky-600', bg: 'bg-sky-50', border: 'border-sky-200' },\n success: { text: 'text-emerald-600', bg: 'bg-emerald-50', border: 'border-emerald-200' },\n warning: { text: 'text-amber-600', bg: 'bg-amber-50', border: 'border-amber-200' },\n danger: { text: 'text-red-600', bg: 'bg-red-50', border: 'border-red-200' },\n surface: { text: 'text-gray-900', bg: 'bg-gray-100', border: 'border-gray-200' },\n bw: { text: 'text-gray-900', bg: 'bg-gray-100', border: 'border-gray-200' }\n};\n\nlet uniqueIdCounter = 0;\nconst generateId = (prefix: string) => `${prefix}-${++uniqueIdCounter}`;\n\ntype ForwardedRef = Ref<HTMLDivElement>;\n\ninterface ExpansionPanelItemInnerProps extends ExpansionPanelItemProps {\n forwardedRef?: ForwardedRef;\n}\n\n/**\n * Single expandable section used inside `ExpansionPanel`, rendered with a CSS-only toggle.\n */\nconst ExpansionPanelItemInner = (props: ExpansionPanelItemInnerProps) => {\n const {\n value,\n title,\n subtitle,\n text,\n prepend,\n append,\n expandIcon,\n collapseIcon,\n hideToggleIcon = false,\n headerClassName,\n contentClassName,\n className,\n disabled = false,\n children,\n color: colorOverride,\n forwardedRef,\n __expansionPanelContext,\n ...rest\n } = props;\n\n const context: ExpansionPanelContextValue | null = __expansionPanelContext ?? null;\n const safeValue =\n typeof value === 'string' || typeof value === 'number' ? String(value) : null;\n const idBase = safeValue ?? generateId('expansion-panel');\n const inputId = `expansion-panel-toggle-${idBase}`;\n const density = context?.density ?? 'default';\n const color = colorOverride ?? context?.color ?? 'primary';\n const divider = context?.divider ?? true;\n const variant = context?.variant ?? 'elevated';\n const rounded = context?.rounded ?? 'lg';\n const isControlled = context?.controlled ?? false;\n const accent = accentClasses[color] ?? accentClasses.primary;\n const isExpanded =\n value !== null && value !== undefined\n ? context?.expandedValues.includes(value) ?? false\n : false;\n\n const rootSurface = divider ? 'bg-transparent border-0 shadow-none' : itemVariantClasses[variant];\n const shapeClass = divider ? undefined : roundedClasses[rounded] ?? roundedClasses.lg;\n const densityPadding = densityClasses[density] ?? densityClasses.default;\n const disabledClass = disabled ? 'cursor-not-allowed opacity-60' : 'cursor-pointer';\n const titleClass = isExpanded ? accent.text : undefined;\n const activeBorderClass = twMerge(\n 'border-l-2 border-transparent',\n isExpanded ? accent.border : undefined\n );\n const defaultToggleIcon = (\n <i\n className='mdi mdi-chevron-down text-lg leading-none transition-transform duration-200'\n aria-hidden\n />\n );\n\n const hasContent = Boolean(children ?? text);\n const toggleIconNode = hideToggleIcon\n ? null\n : isExpanded && collapseIcon\n ? collapseIcon\n : expandIcon ?? defaultToggleIcon;\n\n const shouldRotateDefaultIcon = !expandIcon && !collapseIcon && !hideToggleIcon;\n const toggleWrapperClass = twMerge(\n 'expansion-panel-item__icon ml-3 flex h-6 w-6 items-center justify-center text-gray-500 transition-transform duration-200',\n shouldRotateDefaultIcon && isExpanded ? 'rotate-180' : undefined\n );\n\n return (\n <div\n {...rest}\n ref={forwardedRef}\n className={twMerge(\n 'expansion-panel-item group flex flex-col overflow-hidden transition-colors duration-200',\n rootSurface,\n shapeClass,\n className\n )}\n data-state={isExpanded ? 'open' : 'closed'}\n data-disabled={disabled || undefined}\n >\n <input\n id={inputId}\n type='checkbox'\n className='expansion-panel-item__toggle'\n {...(isControlled ? { checked: isExpanded, readOnly: true } : { defaultChecked: isExpanded })}\n disabled={disabled}\n />\n <label\n htmlFor={inputId}\n className={twMerge(\n 'expansion-panel-item__header flex w-full list-none items-center gap-4 px-4 text-left',\n densityPadding,\n disabledClass,\n isExpanded ? accent.bg : undefined,\n headerClassName\n )}\n aria-disabled={disabled || undefined}\n data-state={isExpanded ? 'open' : 'closed'}\n >\n {prepend && (\n <span className='flex h-10 w-10 items-center justify-center text-gray-500'>\n {prepend}\n </span>\n )}\n <span className='flex min-w-0 flex-1 flex-col gap-0.5 text-left'>\n {title && (\n <span className={twMerge('truncate font-medium text-gray-900', titleClass)}>\n {title}\n </span>\n )}\n {subtitle && <span className='text-sm text-gray-500'>{subtitle}</span>}\n </span>\n {append && (\n <span className='ml-auto flex items-center gap-2 text-sm text-gray-500'>{append}</span>\n )}\n {!hideToggleIcon && <span className={toggleWrapperClass}>{toggleIconNode}</span>}\n </label>\n {hasContent && (\n <div\n className='expansion-panel-item__content overflow-hidden border-t border-gray-100'\n data-state={isExpanded ? 'open' : 'closed'}\n >\n <div\n className={twMerge(\n 'expansion-panel-item__body min-h-0 px-4 pt-0 text-sm text-gray-600',\n activeBorderClass,\n contentClassName\n )}\n >\n {children ?? text}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nconst ExpansionPanelItem = forwardRef<HTMLDivElement, ExpansionPanelItemProps>((props, ref) => (\n <ExpansionPanelItemInner {...props} forwardedRef={ref} />\n));\n\nExpansionPanelItem.displayName = 'ExpansionPanelItem';\nmarkExpansionPanelItem(ExpansionPanelItem);\n\nexport default ExpansionPanelItem;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Containment/Button/states.button.ts","../src/Containment/Button/index.tsx"],"names":["normalized"],"mappings":"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","file":"chunk-DIWGVTWO.js","sourcesContent":["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-lg transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed';\n\nconst blackAndWhitePaletteClasses = {\n solid: 'bg-black text-white hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white',\n outline:\n 'border-2 border-black text-black bg-white hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white',\n ghost:\n 'text-black bg-neutral-200 hover:bg-neutral-300 focus-visible:ring-black/20 border border-transparent',\n text:\n 'bg-transparent text-black hover:bg-neutral-200 focus-visible:ring-black/20 underline-offset-2 border border-transparent',\n filled:\n 'bg-black/10 text-black border border-black/30 hover:bg-black/20 focus-visible:ring-black/20',\n underlined:\n 'bg-transparent text-black border border-transparent underline decoration-2 underline-offset-4 hover:bg-neutral-200 focus-visible:ring-black/20',\n rounded:\n 'rounded-full border-2 border-black bg-white text-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white',\n sharp: 'bg-black text-white rounded-none hover:bg-black/90 focus-visible:ring-black/40'\n} satisfies Record<ButtonVariant, string>;\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 sharp: 'rounded-none bg-primary text-white hover:bg-primary/90 focus-visible:ring-primary',\n outline:\n 'border border-primary text-primary bg-white hover:bg-primary hover:text-white focus-visible:ring-primary',\n ghost:\n 'text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40 border border-transparent',\n text: 'bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2 border border-transparent',\n filled:\n 'bg-primary/15 text-primary border border-primary/30 hover:bg-primary/25 focus-visible:ring-primary/25',\n underlined:\n 'bg-transparent text-primary border border-transparent underline decoration-2 underline-offset-4 hover:bg-primary/5 focus-visible:ring-primary/25',\n rounded:\n 'rounded-full border border-primary/60 bg-primary/10 text-primary hover:bg-primary/20 focus-visible:ring-primary/25'\n },\n neutral: {\n solid: 'bg-gray-600 text-white hover:bg-gray-700 focus-visible:ring-gray-500',\n sharp: 'rounded-none 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:\n 'text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300 border border-transparent',\n text: 'bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2 border border-transparent',\n filled:\n 'bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300 focus-visible:ring-gray-300',\n underlined:\n 'bg-transparent text-gray-900 border border-transparent underline decoration-2 underline-offset-4 hover:bg-gray-100 focus-visible:ring-gray-300',\n rounded:\n 'rounded-full border border-gray-400 bg-white text-gray-800 hover:bg-gray-100 focus-visible:ring-gray-300'\n },\n info: {\n solid: 'bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400',\n sharp: 'rounded-none bg-sky-500 text-white hover:bg-sky-600 focus-visible:ring-sky-400',\n outline:\n 'border border-sky-500 text-sky-600 bg-white hover:bg-sky-500 hover:text-white focus-visible:ring-sky-400',\n ghost:\n 'text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300 border border-transparent',\n text: 'bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2 border border-transparent',\n filled:\n 'bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200 focus-visible:ring-sky-200',\n underlined:\n 'bg-transparent text-sky-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-sky-50 focus-visible:ring-sky-200',\n rounded:\n 'rounded-full border border-sky-500/70 bg-sky-50 text-sky-700 hover:bg-sky-100 focus-visible:ring-sky-200'\n },\n success: {\n solid: 'bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400',\n sharp:\n 'rounded-none 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:\n 'text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300 border border-transparent',\n text: 'bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2 border border-transparent',\n filled:\n 'bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200 focus-visible:ring-emerald-200',\n underlined:\n 'bg-transparent text-emerald-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-emerald-50 focus-visible:ring-emerald-200',\n rounded:\n 'rounded-full border border-emerald-500/70 bg-emerald-50 text-emerald-700 hover:bg-emerald-100 focus-visible:ring-emerald-200'\n },\n warning: {\n solid: 'bg-amber-500 text-white hover:bg-amber-600 focus-visible:ring-amber-400',\n sharp: 'rounded-none 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:\n 'text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300 border border-transparent',\n text: 'bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2 border border-transparent',\n filled:\n 'bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200 focus-visible:ring-amber-200',\n underlined:\n 'bg-transparent text-amber-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-amber-50 focus-visible:ring-amber-200',\n rounded:\n 'rounded-full border border-amber-500/70 bg-amber-50 text-amber-700 hover:bg-amber-100 focus-visible:ring-amber-200'\n },\n danger: {\n solid: 'bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400',\n sharp: 'rounded-none bg-red-500 text-white hover:bg-red-600 focus-visible:ring-red-400',\n outline:\n 'border border-red-500 text-red-600 bg-white hover:bg-red-500 hover:text-white focus-visible:ring-red-400',\n ghost:\n 'text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300 border border-transparent',\n text: 'bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2 border border-transparent',\n filled:\n 'bg-red-100 text-red-700 border border-red-200 hover:bg-red-200 focus-visible:ring-red-200',\n underlined:\n 'bg-transparent text-red-600 border border-transparent underline decoration-2 underline-offset-4 hover:bg-red-50 focus-visible:ring-red-200',\n rounded:\n 'rounded-full border border-red-500/70 bg-red-50 text-red-700 hover:bg-red-100 focus-visible:ring-red-200'\n },\n surface: {\n solid:\n 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200',\n sharp:\n 'rounded-none bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200',\n outline:\n 'border border-gray-300 text-gray-900 bg-white hover:bg-gray-100 focus-visible:ring-gray-200',\n ghost:\n 'text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200 border border-transparent',\n text: 'bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2 border border-transparent',\n filled:\n 'bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white focus-visible:ring-gray-200',\n underlined:\n 'bg-transparent text-gray-900 border border-transparent underline decoration-2 underline-offset-4 hover:bg-gray-100 focus-visible:ring-gray-200',\n rounded:\n 'rounded-full border border-gray-300 bg-white text-gray-900 hover:bg-gray-50 focus-visible:ring-gray-200'\n },\n bw: blackAndWhitePaletteClasses\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] ?? [\n normalizedLibrary\n ];\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\nexport const iconOnlySizeClasses = {\n 'x-small': 'p-0 text-xs aspect-square',\n small: 'p-2.5 text-sm aspect-square',\n medium: 'p-3 text-base aspect-square',\n large: 'p-3.5 text-lg aspect-square',\n 'x-large': 'p-4 text-xl aspect-square'\n} satisfies Record<GlobalSize, string>;\n\nexport const iconOnlyIconSizeClasses = {\n 'x-small': 'text-sm',\n small: 'text-base',\n medium: 'text-lg',\n large: 'text-xl',\n 'x-large': 'text-2xl'\n} satisfies Record<GlobalSize, string>;\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { ButtonProps } from './types.button';\nimport { base, iconOnlyIconSizeClasses, iconOnlySizeClasses, resolveIconClassName, resolveVariantClass, sizeClasses } from './states.button';\n\ntype PolymorphicRef<T extends React.ElementType> = React.ComponentPropsWithRef<T>['ref'];\ntype ButtonComponent = {\n <T extends React.ElementType = 'button'>(props: ButtonProps<T> & { ref?: PolymorphicRef<T> }): React.ReactElement | null;\n displayName?: string;\n};\n\n/**\n * Containment button supporting variant, size, block layout and loading states.\n */\nconst Button = React.forwardRef(\n <T extends React.ElementType = 'button'>(\n {\n variant = 'solid',\n color = 'primary',\n size = 'medium',\n block = false,\n loading = false,\n loadingText,\n icon,\n iconOnly = false,\n className,\n children,\n disabled,\n onClick,\n type,\n as,\n ...rest\n }: ButtonProps<T>,\n ref: React.ForwardedRef<unknown>\n ) => {\n const Component = as ?? 'button';\n const variantClass = resolveVariantClass(variant, color);\n const sizeClass = iconOnly ? (iconOnlySizeClasses[size] ?? iconOnlySizeClasses.medium) : (sizeClasses[size] ?? sizeClasses.medium);\n const iconSizeClass = iconOnly ? (iconOnlyIconSizeClasses[size] ?? iconOnlyIconSizeClasses.medium) : undefined;\n const blockClass = block ? 'w-full' : null;\n const isNativeButton = Component === 'button';\n const isDisabled = disabled || loading;\n const cursor = (onClick || type === 'submit') && !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 = iconOnly ? null : 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', iconSizeClass) : undefined;\n const iconClassName = shouldRenderIcon ? twMerge('leading-none', iconSizeClass, resolvedIconClass) : undefined;\n\n return (\n <Component\n {...rest}\n type={type}\n ref={ref as PolymorphicRef<T>}\n onClick={onClick}\n disabled={isNativeButton ? isDisabled : undefined}\n aria-disabled={!isNativeButton ? isDisabled : undefined}\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 </Component>\n );\n }\n) as ButtonComponent;\n\nButton.displayName = 'Button';\n\nexport default Button;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Form/Select/index.tsx"],"names":["normalizedName"],"mappings":"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","file":"chunk-F3PI7A6V.js","sourcesContent":["import React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { iconBaseClasses } from '@lindle/linoardo/globals';\nimport type { GlobalSize, PropIcon } from '@lindle/linoardo/global.types';\nimport type { InputVariant } from '../Input/types';\nimport { generateString } from '../../utils/helpers/randomStr';\n\nexport interface SelectOptionObject {\n value: string | number;\n label: string;\n disabled?: boolean;\n icon?: PropIcon;\n}\n\nexport type SelectOption = SelectOptionObject | string;\n\nexport interface SelectProps extends Omit<React.DetailsHTMLAttributes<HTMLDetailsElement>, 'onBlur' | 'onChange' | 'value' | 'defaultValue'> {\n options: SelectOption[];\n label?: string;\n placeholder?: string;\n variant?: InputVariant;\n size?: GlobalSize;\n wrapperClassName?: string;\n error?: boolean;\n helperText?: string;\n value?: string | number | readonly string[];\n defaultValue?: string | number | readonly string[];\n name?: string;\n multiple?: boolean;\n disabled?: boolean;\n required?: boolean;\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onFocus?: React.FocusEventHandler<HTMLDetailsElement>;\n}\n\nconst baseClass =\n 'select-base w-full appearance-none focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed bg-white text-gray-900 placeholder:text-gray-500 dark:bg-slate-900 dark:text-gray-100 dark:placeholder:text-gray-400';\n\nconst variantClasses = {\n solid:\n 'rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40',\n sharp:\n 'rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40',\n outline:\n 'rounded border-2 border-black bg-white focus-visible:border-black focus-visible:ring-2 focus-visible:ring-black/30 dark:border-black dark:bg-transparent dark:focus-visible:border-black dark:focus-visible:ring-black/40',\n text: 'rounded-none border-0 border-b border-transparent pl-0 pr-10 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70',\n ghost:\n 'rounded border border-transparent bg-gray-50 text-gray-900 focus-visible:bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/15 dark:bg-slate-800 dark:text-gray-100 dark:focus-visible:bg-slate-700 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/25',\n filled:\n 'rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/30',\n underlined:\n 'rounded-none border-0 border-b border-gray-300 pl-0 pr-10 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-300 dark:focus-visible:border-primary/70',\n rounded:\n 'rounded-full pl-4 pr-10 border border-gray-300 bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 shadow-sm dark:border-gray-600 dark:bg-slate-900 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/30 dark:shadow-black/20'\n} satisfies Record<InputVariant, string>;\n\nconst sizeClasses = {\n 'x-small': { padding: 'pl-2 pr-8 py-2', text: 'text-xs' },\n small: { padding: 'pl-2.5 pr-9 py-2.5', text: 'text-sm' },\n medium: { padding: 'pl-3 pr-10 py-3', text: 'text-base' },\n large: { padding: 'pl-3.5 pr-11 py-3.5', text: 'text-lg' },\n 'x-large': { padding: 'pl-4 pr-12 py-4', text: 'text-xl' }\n} satisfies Record<GlobalSize, { padding: string; text: string }>;\n\nconst normalizeOption = (option: SelectOption): SelectOptionObject => {\n if (typeof option === 'string') {\n return { label: option, value: option };\n }\n return option;\n};\n\nconst toIdSafe = (value: string) => {\n const sanitized = value.replace(/\\s+/g, '-').replace(/[^A-Za-z0-9_-]/g, '');\n return sanitized || 'opt';\n};\n\nconst 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 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\n const normalizedName = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n const classes = [...baseClasses, normalizedName];\n return Array.from(new Set(classes)).join(' ');\n};\n\n/**\n * Custom styled Select component using <details> and radio/checkbox inputs.\n * Supports icons and custom styling while remaining a Server Component (no hooks).\n */\nconst Select = React.forwardRef<HTMLInputElement, SelectProps>(\n (\n {\n options,\n label,\n placeholder,\n variant = 'outline',\n size = 'medium',\n className,\n wrapperClassName,\n id,\n name,\n multiple,\n value,\n defaultValue,\n error,\n helperText,\n disabled,\n required,\n onChange,\n onBlur,\n onFocus,\n ...props\n },\n ref\n ) => {\n const selectId = id || name || generateString();\n const inputName = name || selectId;\n const variantClass = variantClasses[variant] ?? variantClasses.outline;\n const sizeConfig = sizeClasses[size] ?? sizeClasses.medium;\n const sizeClass = `${sizeConfig.padding} ${sizeConfig.text}`;\n const normalizedOptions = options.map(normalizeOption);\n const selectedValueList =\n value !== undefined\n ? (Array.isArray(value) ? value : [value]).map(String)\n : defaultValue !== undefined\n ? (Array.isArray(defaultValue) ? defaultValue : [defaultValue]).map(String)\n : [];\n const selectedLabels = normalizedOptions.filter(option => selectedValueList.includes(String(option.value))).map(option => option.label);\n const hasSelection = selectedLabels.length > 0;\n const summaryText = hasSelection ? (multiple ? selectedLabels.join(', ') : selectedLabels[0]) : placeholder || '\\u00A0';\n const handleOptionChange: React.ChangeEventHandler<HTMLInputElement> = event => {\n onChange?.(event);\n if (multiple) return;\n const detailsEl = event.currentTarget.closest('details');\n detailsEl?.removeAttribute('open');\n };\n const handleDetailsBlur: React.FocusEventHandler<HTMLDetailsElement> = event => {\n const nextFocus = event.relatedTarget as Node | null;\n if (nextFocus && event.currentTarget.contains(nextFocus)) return;\n event.currentTarget.removeAttribute('open');\n };\n const handleDetailsFocus: React.FocusEventHandler<HTMLDetailsElement> = event => {\n if (normalizedOptions.length === 0) {\n onFocus?.(event);\n }\n };\n\n return (\n <div className={twMerge('flex flex-col gap-1', wrapperClassName)}>\n <div className='relative'>\n <details\n className='group w-full'\n {...props}\n onBlur={onBlur ? undefined : handleDetailsBlur}\n onFocus={onFocus ? handleDetailsFocus : undefined}\n open={undefined}\n >\n <summary\n className={twMerge(\n baseClass,\n variantClass,\n sizeClass,\n 'list-none cursor-pointer flex items-center justify-between pr-10 relative [&::-webkit-details-marker]:hidden',\n error && 'border-red-500 focus-visible:border-red-500 focus-visible:ring-red-500',\n disabled && 'pointer-events-none opacity-50 cursor-not-allowed',\n className\n )}\n style={{ minHeight: '2.75rem' }}\n onClick={e => disabled && e.preventDefault()}\n >\n <span className={twMerge('truncate', !hasSelection && 'text-gray-500 dark:text-gray-400')}>{summaryText}</span>\n <span className='pointer-events-none absolute inset-y-0 right-3 flex items-center text-gray-500 dark:text-gray-300'>\n <i className='mdi mdi-chevron-down text-base leading-none transition-transform duration-200 group-open:rotate-180' aria-hidden />\n </span>\n </summary>\n\n <div className='absolute z-50 mt-1 max-h-60 w-full overflow-auto rounded-lg border border-gray-200 bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:bg-slate-800 dark:border-slate-700'>\n {normalizedOptions.map((option, index) => {\n const optionValueStr = String(option.value);\n const isSelected = Array.isArray(value) ? value.map(String).includes(optionValueStr) : String(value) === optionValueStr;\n const isDefaultSelected = Array.isArray(defaultValue)\n ? defaultValue.map(String).includes(optionValueStr)\n : String(defaultValue) === optionValueStr;\n const iconClassName = resolveIconClassName(option.icon);\n const inputId = `${selectId}-${toIdSafe(optionValueStr)}-${index}`;\n\n return (\n <label\n key={`${optionValueStr}-${index}`}\n htmlFor={inputId}\n className={twMerge(\n 'relative flex cursor-pointer select-none items-center gap-2 px-4 py-2 text-sm text-gray-900 hover:bg-gray-50 dark:text-gray-100 dark:hover:bg-slate-700',\n option.disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n <input\n type={multiple ? 'checkbox' : 'radio'}\n id={inputId}\n name={inputName}\n value={option.value}\n disabled={option.disabled || disabled}\n checked={value !== undefined ? isSelected : undefined}\n defaultChecked={defaultValue !== undefined ? isDefaultSelected : undefined}\n onChange={handleOptionChange}\n onBlur={onBlur}\n ref={ref}\n required={required && !multiple}\n className='peer sr-only'\n />\n {iconClassName && <i className={twMerge(iconClassName, 'text-lg text-gray-500 peer-checked:text-primary dark:text-gray-400')} />}\n <span className='flex-1 truncate peer-checked:font-medium peer-checked:text-primary'>{option.label}</span>\n <i className='mdi mdi-check invisible ml-auto text-primary peer-checked:visible' />\n </label>\n );\n })}\n </div>\n </details>\n\n {label && (\n <label\n className={twMerge('absolute left-3 -top-1.5 text-xs bg-white px-1 text-gray-500 transition-all dark:bg-slate-900 dark:text-gray-400')}\n >\n {label}\n </label>\n )}\n </div>\n {helperText && <p className={twMerge('mt-1 text-xs text-gray-500', error && 'text-red-500')}>{helperText}</p>}\n </div>\n );\n }\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Containment/Masonry/index.tsx"],"names":[],"mappings":"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","file":"chunk-HAXGOTZO.js","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { MasonryComponent, MasonryProps, MasonryRenderItem } from './types.masonry';\n\nconst masonryBaseClass = 'masonry-grid w-full';\nconst itemBaseClass = 'masonry-item block break-inside-avoid';\n\nconst MasonryBase = <T,>(props: MasonryProps<T>, ref: React.ForwardedRef<HTMLDivElement>) => {\n const {\n items,\n renderItem,\n getKey,\n column = 2,\n columnWidth,\n maxColumn,\n gutter = 16,\n className,\n itemClassName,\n itemStyle,\n children,\n style,\n role = 'list',\n ...rest\n } = props;\n\n const resolvedGutter = toCssLength(gutter);\n const columnCount = resolveColumnCount(column, maxColumn, Boolean(columnWidth));\n\n const layoutStyle: React.CSSProperties = {\n columnGap: resolvedGutter,\n columnCount,\n columnWidth: columnWidth ? toCssLength(columnWidth) : undefined,\n columnFill: 'balance',\n ...style\n };\n\n const wrapItem = (content: React.ReactNode, key: React.Key) => (\n <div\n key={key}\n className={twMerge(itemBaseClass, itemClassName)}\n style={{ breakInside: 'avoid', marginBottom: resolvedGutter, width: '100%', ...itemStyle }}\n >\n {content}\n </div>\n );\n\n const renderedItems =\n items && items.length\n ? items.map((item, index) => {\n const content = resolveItemContent(item, index, renderItem);\n return wrapItem(content, resolveItemKey(item, index, getKey));\n })\n : React.Children.map(children, (child, index) => wrapItem(child, resolveChildKey(child, index))) ?? null;\n\n return (\n <div {...rest} ref={ref} role={role} className={twMerge(masonryBaseClass, className)} style={layoutStyle}>\n {renderedItems}\n </div>\n );\n};\n\nconst Masonry = React.forwardRef(MasonryBase) as MasonryComponent;\n\nMasonry.displayName = 'Masonry';\n\nexport type { MasonryProps, MasonryRenderItem } from './types.masonry';\nexport default Masonry;\n\nfunction toCssLength(value?: number | string) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction normalizeColumns(value?: number) {\n if (value === undefined) return undefined;\n if (!Number.isFinite(value)) return undefined;\n return Math.max(1, Math.floor(value));\n}\n\nfunction resolveColumnCount(column?: number, maxColumn?: number, hasColumnWidth?: boolean) {\n const normalizedMax = normalizeColumns(maxColumn);\n if (hasColumnWidth) {\n return normalizedMax;\n }\n\n const normalizedColumn = normalizeColumns(column);\n\n if (normalizedColumn && normalizedMax) {\n return Math.min(normalizedColumn, normalizedMax);\n }\n\n return normalizedColumn ?? normalizedMax;\n}\n\nfunction resolveItemKey<T>(item: T, index: number, getKey?: (item: T, index: number) => React.Key) {\n if (getKey) return getKey(item, index);\n if (React.isValidElement(item) && item.key != null) {\n return item.key;\n }\n return index;\n}\n\nfunction resolveChildKey(child: React.ReactNode, index: number) {\n if (React.isValidElement(child) && child.key != null) {\n return child.key;\n }\n return index;\n}\n\nfunction resolveItemContent<T>(item: T, index: number, renderItem?: MasonryRenderItem<T>) {\n if (renderItem) {\n return renderItem(item, index);\n }\n return item as React.ReactNode;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Miscellaneous/Icon/index.tsx"],"names":[],"mappings":";;;;AAaA,IAAM,WAAA,GAA0C;AAAA,EAC9C,SAAA,EAAW,SAAA;AAAA,EACX,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ,WAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAEA,IAAM,YAAA,GAAwC;AAAA,EAC5C,OAAA,EAAS,cAAA;AAAA,EACT,OAAA,EAAS,eAAA;AAAA,EACT,IAAA,EAAM,cAAA;AAAA,EACN,OAAA,EAAS,kBAAA;AAAA,EACT,OAAA,EAAS,gBAAA;AAAA,EACT,MAAA,EAAQ,cAAA;AAAA,EACR,OAAA,EAAS,eAAA;AAAA,EACT,EAAA,EAAI;AACN,CAAA;AAKA,IAAM,IAAA,GAA4B,CAAC,EAAE,SAAA,EAAW,MAAM,IAAA,EAAM,KAAA,EAAO,GAAG,IAAA,EAAK,KAAM;AAC/E,EAAA,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAkB;AAC1C,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,EAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AACzB,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,OAAO,QAAQ,UAAA,CAAW,MAAM,CAAA,GAAI,OAAA,GAAU,OAAO,OAAO,CAAA,CAAA;AAAA,EAC9D,CAAA;AAEA,EAAA,IAAI,SAAA,GAAoB,EAAA;AACxB,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,SAAA,GAAY,iBAAiB,IAAI,CAAA;AAAA,EACnC,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC9B,IAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAI,IAAA;AACtB,IAAA,IAAI,UAAU,KAAA,EAAO;AACnB,MAAA,SAAA,GAAY,iBAAiB,IAAI,CAAA;AAAA,IACnC;AAAA,EACF;AACA,EAAA,MAAM,SAAA,GAAY,KAAA;AAClB,EAAA,MAAM,YAAY,IAAA,GAAO,WAAA,CAAY,IAAI,CAAA,IAAK,YAAY,MAAA,GAAS,MAAA;AACnE,EAAA,MAAM,aAAa,KAAA,GAAQ,YAAA,CAAa,KAAK,CAAA,IAAK,aAAa,OAAA,GAAU,MAAA;AAEzE,EAAA,uBACE,GAAA,CAAC,GAAA,EAAA,EAAG,GAAG,IAAA,EAAM,SAAA,EAAW,OAAA,CAAQ,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,UAAA,EAAY,SAAS,CAAA,EAAG,CAAA;AAE7F,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"chunk-HEXJCQRO.js","sourcesContent":["import { GlobalSize, Palette } from '@lindle/linoardo/global.types';\nimport { twMerge } from 'tailwind-merge';\n\ntype IconGroup = 'mdi';\n\ntype IconSet = [IconGroup, string];\n\ntype IconProps = {\n icon: string | IconSet;\n size?: GlobalSize;\n color?: Palette;\n} & React.HTMLAttributes<HTMLElement>;\n\nconst sizeClasses: Record<GlobalSize, string> = {\n 'x-small': 'text-xs',\n small: 'text-sm',\n medium: 'text-base',\n large: 'text-lg',\n 'x-large': 'text-2xl'\n};\n\nconst colorClasses: Record<Palette, string> = {\n primary: 'text-primary',\n neutral: 'text-gray-700',\n info: 'text-sky-600',\n success: 'text-emerald-600',\n warning: 'text-amber-600',\n danger: 'text-red-600',\n surface: 'text-gray-900',\n bw: 'text-black'\n};\n\n/**\n * Renders an icon from configured sets (currently MDI) via class-based glyphs.\n */\nconst Icon: React.FC<IconProps> = ({ className, icon, size, color, ...rest }) => {\n const normalizeMdiName = (value: string) => {\n const trimmed = value.trim();\n if (!trimmed) {\n return '';\n }\n\n if (trimmed.includes(' ')) {\n return trimmed;\n }\n\n return trimmed.startsWith('mdi-') ? trimmed : `mdi-${trimmed}`;\n };\n\n let iconValue: string = '';\n if (typeof icon === 'string') {\n iconValue = normalizeMdiName(icon);\n } else if (Array.isArray(icon)) {\n const [group, name] = icon;\n if (group === 'mdi') {\n iconValue = normalizeMdiName(name);\n }\n }\n const classBase = 'mdi';\n const sizeClass = size ? sizeClasses[size] ?? sizeClasses.medium : undefined;\n const colorClass = color ? colorClasses[color] ?? colorClasses.primary : undefined;\n\n return (\n <i {...rest} className={twMerge(classBase, iconValue, sizeClass, colorClass, className)}></i>\n );\n};\n\nexport default Icon;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Info/Alert/index.tsx"],"names":[],"mappings":";;;;AASA,IAAM,QAA8B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,MAAK,KAAM;AACxE,EAAA,MAAM,SAAA,GAAY,6CAAA;AAElB,EAAA,uBACE,IAAA,CAAC,SAAK,GAAG,IAAA,EAAM,WAAW,OAAA,CAAQ,iCAAA,EAAmC,SAAS,CAAA,EAC5E,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,sBAAA,EACb,8BAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAA0B,CAAA,EACzC,CAAA;AAAA,wBACC,KAAA,EAAA,EAAI,SAAA,EAAW,QAAQ,YAAA,EAAc,SAAS,GAAI,QAAA,EAAS;AAAA,GAAA,EAC9D,CAAA;AAEJ,CAAA;AACA,IAAO,aAAA,GAAQ","file":"chunk-KQOR3C7E.js","sourcesContent":["import { twMerge } from 'tailwind-merge';\n\nexport type AlertProps = {\n children?: React.ReactNode;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Informational banner layout with icon column and message body.\n */\nconst Alert: React.FC<AlertProps> = ({ className, children, ...rest }) => {\n const classBase = 'text-center p-4 bg-neutral-200 rounded-md ';\n\n return (\n <div {...rest} className={twMerge('grid grid-cols-7 bg-neutral-200', className)}>\n <div className='col-span-1 pt-4 pl-4'>\n <i className='mdi mdi-google text-2xl'></i>\n </div>\n <div className={twMerge('col-span-6', classBase)}>{children}</div>\n </div>\n );\n};\nexport default Alert;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Containment/List/index.tsx"],"names":[],"mappings":"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","file":"chunk-NADLY6LM.js","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette } from '@lindle/linoardo/global.types';\n\nimport ListItem from './Item';\nimport type { ListItemProps } from './Item';\nimport type { ListDensity, ListLines, ListRounded, ListVariant } from './types.list';\n\nconst listBaseClasses =\n 'flex w-full min-w-0 flex-col text-gray-900 transition-colors duration-150 dark:text-gray-100';\n\nconst listVariantClasses: Record<ListVariant, string> = {\n solid:\n 'bg-white border border-gray-200 shadow-sm shadow-gray-900/5 dark:bg-gray-900 dark:border-gray-800 dark:shadow-black/20',\n sharp:\n 'bg-white border border-gray-200 shadow-sm shadow-gray-900/5 rounded-none dark:bg-gray-900 dark:border-gray-800 dark:shadow-black/20',\n outline: 'bg-transparent border border-gray-300 dark:border-gray-700',\n ghost: 'bg-gray-50 border border-transparent dark:bg-gray-900/60',\n text: 'bg-transparent border border-transparent',\n filled:\n 'bg-gray-50 border border-gray-200 shadow-inner shadow-gray-900/5 dark:bg-gray-900/70 dark:border-gray-800 dark:shadow-black/30',\n underlined:\n 'bg-transparent border border-transparent border-b border-gray-200 rounded-none dark:border-gray-800',\n rounded:\n 'bg-white border border-gray-200 shadow-lg shadow-gray-900/10 dark:bg-gray-900 dark:border-gray-800 dark:shadow-black/30'\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 isListItemElement = (element: React.ReactNode): element is React.ReactElement<ListItemProps> => {\n if (!React.isValidElement(element)) {\n return false;\n }\n\n const elementType = element.type as { displayName?: string };\n return element.type === ListItem || elementType.displayName === ListItem.displayName;\n};\n\n/**\n * List container that normalizes spacing, rounding and density for nested `ListItem` children.\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 isSharpVariant = variant === 'sharp';\n const variantClass = listVariantClasses[variant] ?? listVariantClasses.solid;\n const roundedClass = isSharpVariant ? 'rounded-none' : (listRoundedClasses[rounded] ?? listRoundedClasses.lg);\n const dividerClass = divided ? 'divide-y divide-gray-100 dark:divide-gray-800' : undefined;\n const gapClass = divided ? 'p-0' : 'gap-1 p-1';\n const navClass = nav ? 'py-1' : undefined;\n const accentColor = color;\n\n const enhanceChild = (child: React.ReactNode): React.ReactNode => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n if (isListItemElement(child)) {\n return React.cloneElement(child, {\n density: child.props.density ?? density,\n lines: child.props.lines ?? lines,\n nav: child.props.nav ?? nav,\n divided: child.props.divided ?? divided,\n color: child.props.color ?? accentColor,\n sharp: child.props.sharp ?? isSharpVariant\n });\n }\n\n if (child.props && typeof child.props === 'object' && 'children' in child.props) {\n const nestedChildren = React.Children.map(child.props.children as React.ReactNode, enhanceChild);\n if (nestedChildren !== child.props.children) {\n return React.cloneElement(child, undefined, nestedChildren);\n }\n }\n\n return child;\n };\n\n const resolvedChildren = React.Children.map(children, enhanceChild);\n\n return (\n <div\n {...rest}\n ref={ref}\n role={role ?? 'list'}\n className={twMerge(listBaseClasses, variantClass, roundedClass, dividerClass, gapClass, navClass, className)}\n >\n {resolvedChildren}\n </div>\n );\n});\n\nList.displayName = 'List';\n\ntype ListComponent = React.ForwardRefExoticComponent<ListProps & React.RefAttributes<HTMLDivElement>> & {\n Item: typeof ListItem;\n};\n\nconst ListWithItem = List as ListComponent;\nListWithItem.Item = ListItem;\n\nexport { ListItem };\nexport type { ListItemProps } from './Item';\nexport type { ListVariant, ListDensity, ListLines, ListRounded } from './types.list';\nexport default ListWithItem;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Containment/Dialog/index.tsx"],"names":[],"mappings":"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","file":"chunk-NJU7XT54.js","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { twMerge } from 'tailwind-merge';\n\nconst containerBaseClasses =\n 'fixed inset-0 z-[70] flex items-center justify-center p-4 sm:p-8 data-[state=closed]:pointer-events-none';\nconst overlayBaseClasses =\n 'absolute inset-0 bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100';\nconst panelWrapperClasses =\n 'relative z-10 flex w-full max-h-[95vh] justify-center transition-transform transition-opacity duration-200 data-[state=closed]:translate-y-4 data-[state=closed]:opacity-0 data-[state=open]:translate-y-0 data-[state=open]:opacity-100';\nconst panelBaseClasses =\n 'pointer-events-auto w-full max-h-[90vh] overflow-auto rounded-2xl bg-white p-6 text-gray-900 shadow-2xl shadow-black/20 ring-1 ring-black/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40';\n\nconst resolveSizeValue = (value?: string | number) => {\n if (value === undefined) {\n return undefined;\n }\n return typeof value === 'number' ? `${value}px` : value;\n};\n\nexport interface DialogProps extends React.HTMLAttributes<HTMLDivElement> {\n activator?: React.ReactNode;\n open?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n fullscreen?: boolean;\n maxWidth?: string | number;\n width?: string | number;\n onClose?: () => void;\n containerClassName?: string;\n overlayClassName?: string;\n overlayProps?: React.HTMLAttributes<HTMLDivElement>;\n portal?: boolean;\n portalContainer?: Element | null;\n}\n\n/**\n * Layered dialog container supporting scrim, fullscreen mode and controlled open state.\n */\nconst Dialog = React.forwardRef<HTMLDivElement, DialogProps>((props, forwardedRef) => {\n const {\n activator,\n children,\n open = false,\n keepMounted = false,\n scrim = true,\n fullscreen = false,\n maxWidth = '32rem',\n width,\n onClose,\n containerClassName,\n overlayClassName,\n overlayProps,\n portal = true,\n portalContainer,\n className,\n style,\n role: roleProp = 'dialog',\n tabIndex = -1,\n id,\n ['aria-modal']: ariaModalProp,\n ...rest\n } = props;\n\n const state = open ? 'open' : 'closed';\n const shouldRenderDialog = keepMounted || open;\n const resolvedPortalContainer =\n portalContainer ?? (typeof document !== 'undefined' ? document.body : null);\n\n const resolvedStyle: React.CSSProperties = { ...style };\n if (fullscreen) {\n if (resolvedStyle.maxWidth === undefined) {\n resolvedStyle.maxWidth = 'none';\n }\n if (resolvedStyle.width === undefined) {\n resolvedStyle.width = '100%';\n }\n if (resolvedStyle.height === undefined) {\n resolvedStyle.height = '100%';\n }\n if (resolvedStyle.maxHeight === undefined) {\n resolvedStyle.maxHeight = '100%';\n }\n } else {\n if (resolvedStyle.maxWidth === undefined) {\n resolvedStyle.maxWidth = resolveSizeValue(maxWidth);\n }\n if (width !== undefined && resolvedStyle.width === undefined) {\n resolvedStyle.width = resolveSizeValue(width);\n }\n }\n\n const ariaModal =\n ariaModalProp ?? (roleProp === 'dialog' || roleProp === 'alertdialog' ? true : undefined);\n\n const {\n className: overlayExtraClassName,\n onClick: overlayOnClick,\n ...restOverlayProps\n } = overlayProps ?? {};\n\n const overlayNode =\n shouldRenderDialog && scrim ? (\n <div\n {...restOverlayProps}\n className={twMerge(overlayBaseClasses, overlayClassName, overlayExtraClassName)}\n onClick={event => {\n overlayOnClick?.(event);\n if (!event.defaultPrevented) {\n onClose?.();\n }\n }}\n data-state={state}\n aria-hidden\n />\n ) : null;\n\n const dialogNode = shouldRenderDialog ? (\n <div\n className={twMerge(containerBaseClasses, containerClassName)}\n data-state={state}\n aria-hidden={!open}\n >\n {overlayNode}\n <div\n className={twMerge(panelWrapperClasses, fullscreen ? 'h-full items-stretch' : 'mx-auto')}\n data-state={state}\n >\n <div\n {...rest}\n ref={forwardedRef}\n id={id}\n role={roleProp}\n tabIndex={tabIndex}\n aria-modal={ariaModal}\n className={twMerge(\n panelBaseClasses,\n fullscreen ? 'h-full w-full max-w-none rounded-none' : undefined,\n className\n )}\n style={resolvedStyle}\n data-state={state}\n >\n {children}\n </div>\n </div>\n </div>\n ) : null;\n\n const outputNode =\n portal && resolvedPortalContainer && dialogNode\n ? createPortal(dialogNode, resolvedPortalContainer)\n : dialogNode;\n\n return (\n <>\n {activator ? <div className='inline-flex'>{activator}</div> : null}\n {outputNode}\n </>\n );\n});\n\nDialog.displayName = 'Dialog';\n\nexport default Dialog;\n"]}
|
package/dist/chunk-OBGYXMZ3.js
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import { iconBaseClasses } from './chunk-IEILIKS2.js';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { twMerge } from 'tailwind-merge';
|
|
4
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
|
-
|
|
6
|
-
// src/Form/Input/states.input.ts
|
|
7
|
-
var resolveIconClassName = (icon) => {
|
|
8
|
-
if (!icon) {
|
|
9
|
-
return void 0;
|
|
10
|
-
}
|
|
11
|
-
if (typeof icon === "string") {
|
|
12
|
-
const trimmed = icon.trim();
|
|
13
|
-
if (!trimmed) {
|
|
14
|
-
return void 0;
|
|
15
|
-
}
|
|
16
|
-
if (trimmed.includes(" ")) {
|
|
17
|
-
return trimmed;
|
|
18
|
-
}
|
|
19
|
-
const normalizedName2 = trimmed.startsWith("mdi-") ? trimmed : `mdi-${trimmed}`;
|
|
20
|
-
return ["mdi", normalizedName2].join(" ");
|
|
21
|
-
}
|
|
22
|
-
const [library, iconNameRaw] = icon;
|
|
23
|
-
const baseClasses = iconBaseClasses[library] ?? [library];
|
|
24
|
-
const iconName = iconNameRaw.trim();
|
|
25
|
-
if (!iconName) {
|
|
26
|
-
return baseClasses.join(" ");
|
|
27
|
-
}
|
|
28
|
-
const normalizedName = iconName.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
|
|
29
|
-
const classes = [...baseClasses, normalizedName];
|
|
30
|
-
return Array.from(new Set(classes)).join(" ");
|
|
31
|
-
};
|
|
32
|
-
var Input = React.forwardRef(
|
|
33
|
-
({
|
|
34
|
-
variant = "outline",
|
|
35
|
-
size = "medium",
|
|
36
|
-
success,
|
|
37
|
-
error,
|
|
38
|
-
warn,
|
|
39
|
-
icon,
|
|
40
|
-
className,
|
|
41
|
-
wrapperClassName,
|
|
42
|
-
label,
|
|
43
|
-
prefix,
|
|
44
|
-
suffix,
|
|
45
|
-
...props
|
|
46
|
-
}, ref) => {
|
|
47
|
-
const { placeholder, onFocus, onBlur, ...inputProps } = props;
|
|
48
|
-
const reactId = React.useId();
|
|
49
|
-
const hasLabel = Boolean(label);
|
|
50
|
-
const hasProvidedPlaceholder = typeof placeholder === "string" && placeholder.trim().length > 0;
|
|
51
|
-
const hidePlaceholderUntilFocus = hasLabel && hasProvidedPlaceholder;
|
|
52
|
-
const [isFocused, setIsFocused] = React.useState(false);
|
|
53
|
-
const classBase = "input-base focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full text-gray-900 dark:text-gray-100 placeholder:text-gray-500 dark:placeholder:text-gray-400";
|
|
54
|
-
const variantClasses = {
|
|
55
|
-
solid: "rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
56
|
-
sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
57
|
-
outline: "rounded border-2 border-black bg-white focus-visible:border-black focus-visible:ring-2 focus-visible:ring-black/30 dark:border-black dark:bg-transparent dark:focus-visible:border-black dark:focus-visible:ring-black/40",
|
|
58
|
-
text: "rounded-none border-0 border-b border-transparent px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
59
|
-
ghost: "rounded border border-transparent bg-gray-50 text-gray-900 focus-visible:bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/15 dark:bg-slate-800 dark:text-gray-100 dark:focus-visible:bg-slate-700 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/25",
|
|
60
|
-
filled: "rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/30",
|
|
61
|
-
underlined: "rounded-none border-0 border-b border-gray-300 px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
62
|
-
rounded: "rounded-full px-4 border border-gray-300 bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 shadow-sm dark:border-gray-600 dark:bg-slate-900 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/30 dark:shadow-black/20"
|
|
63
|
-
};
|
|
64
|
-
const sizeClasses = {
|
|
65
|
-
"x-small": {
|
|
66
|
-
paddingY: "py-2",
|
|
67
|
-
paddingLeft: "pl-2",
|
|
68
|
-
paddingRight: "pr-2",
|
|
69
|
-
paddingLeftLeading: "pl-8",
|
|
70
|
-
paddingLeftLeadingDouble: "pl-12",
|
|
71
|
-
paddingRightTrailing: "pr-8",
|
|
72
|
-
text: "text-xs"
|
|
73
|
-
},
|
|
74
|
-
small: {
|
|
75
|
-
paddingY: "py-2.5",
|
|
76
|
-
paddingLeft: "pl-2.5",
|
|
77
|
-
paddingRight: "pr-2.5",
|
|
78
|
-
paddingLeftLeading: "pl-9",
|
|
79
|
-
paddingLeftLeadingDouble: "pl-12",
|
|
80
|
-
paddingRightTrailing: "pr-9",
|
|
81
|
-
text: "text-sm"
|
|
82
|
-
},
|
|
83
|
-
medium: {
|
|
84
|
-
paddingY: "py-3",
|
|
85
|
-
paddingLeft: "pl-3",
|
|
86
|
-
paddingRight: "pr-3",
|
|
87
|
-
paddingLeftLeading: "pl-10",
|
|
88
|
-
paddingLeftLeadingDouble: "pl-14",
|
|
89
|
-
paddingRightTrailing: "pr-10",
|
|
90
|
-
text: "text-base"
|
|
91
|
-
},
|
|
92
|
-
large: {
|
|
93
|
-
paddingY: "py-3.5",
|
|
94
|
-
paddingLeft: "pl-3.5",
|
|
95
|
-
paddingRight: "pr-3.5",
|
|
96
|
-
paddingLeftLeading: "pl-11",
|
|
97
|
-
paddingLeftLeadingDouble: "pl-14",
|
|
98
|
-
paddingRightTrailing: "pr-11",
|
|
99
|
-
text: "text-lg"
|
|
100
|
-
},
|
|
101
|
-
"x-large": {
|
|
102
|
-
paddingY: "py-4",
|
|
103
|
-
paddingLeft: "pl-4",
|
|
104
|
-
paddingRight: "pr-4",
|
|
105
|
-
paddingLeftLeading: "pl-12",
|
|
106
|
-
paddingLeftLeadingDouble: "pl-16",
|
|
107
|
-
paddingRightTrailing: "pr-12",
|
|
108
|
-
text: "text-xl"
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
const status = error ? { tone: "error", message: error } : warn ? { tone: "warn", message: warn } : success ? { tone: "success", message: success } : void 0;
|
|
112
|
-
const statusClasses = {
|
|
113
|
-
error: "border-red-500 focus:border-red-500 focus:ring-red-400",
|
|
114
|
-
warn: "border-amber-500 focus:border-amber-500 focus:ring-amber-400",
|
|
115
|
-
success: "border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400"
|
|
116
|
-
};
|
|
117
|
-
const statusMessageClasses = {
|
|
118
|
-
error: "text-red-600 dark:text-red-300",
|
|
119
|
-
warn: "text-amber-600 dark:text-amber-300",
|
|
120
|
-
success: "text-emerald-600 dark:text-emerald-300"
|
|
121
|
-
};
|
|
122
|
-
const variantClass = variantClasses[variant] ?? variantClasses.outline;
|
|
123
|
-
const toneClass = status ? statusClasses[status.tone] : void 0;
|
|
124
|
-
let prependIconClass = resolveIconClassName(icon);
|
|
125
|
-
const hasPrefix = typeof prefix === "string" ? prefix.trim().length > 0 : Boolean(prefix);
|
|
126
|
-
const hasSuffix = typeof suffix === "string" ? suffix.trim().length > 0 : Boolean(suffix);
|
|
127
|
-
const hasLeadingIcon = Boolean(prependIconClass);
|
|
128
|
-
const hasLeadingAdornment = hasLeadingIcon || hasPrefix;
|
|
129
|
-
const hasTrailingAdornment = hasSuffix;
|
|
130
|
-
const sizeConfig = sizeClasses[size] ?? sizeClasses.medium;
|
|
131
|
-
const leftPaddingClass = hasPrefix ? sizeConfig.paddingLeftLeadingDouble : hasLeadingAdornment ? sizeConfig.paddingLeftLeading : sizeConfig.paddingLeft;
|
|
132
|
-
const rightPaddingClass = hasTrailingAdornment ? sizeConfig.paddingRightTrailing : sizeConfig.paddingRight;
|
|
133
|
-
const sizeClass = [sizeConfig.paddingY, leftPaddingClass, rightPaddingClass, sizeConfig.text].join(" ");
|
|
134
|
-
const inputName = inputProps.name || reactId;
|
|
135
|
-
const basePlaceholder = placeholder ?? (hasLabel ? " " : void 0);
|
|
136
|
-
const placeholderValue = hidePlaceholderUntilFocus ? isFocused ? placeholder : " " : basePlaceholder;
|
|
137
|
-
const placeholderClass = hidePlaceholderUntilFocus ? "placeholder-transparent focus:placeholder-gray-500 focus:dark:placeholder-gray-400" : void 0;
|
|
138
|
-
const labelLeftClass = hasLeadingAdornment ? "left-10" : "left-3";
|
|
139
|
-
const labelFocusLeftClass = hasLeadingAdornment ? "peer-focus:left-10" : "peer-focus:left-3";
|
|
140
|
-
const renderPrefix = hasPrefix ? typeof prefix === "string" ? /* @__PURE__ */ jsx("span", { className: twMerge("text-gray-500 dark:text-gray-400", sizeConfig.text), children: prefix }) : prefix : null;
|
|
141
|
-
const renderSuffix = hasSuffix ? typeof suffix === "string" ? /* @__PURE__ */ jsx("span", { className: twMerge("text-gray-500 dark:text-gray-400", sizeConfig.text), children: suffix }) : suffix : null;
|
|
142
|
-
const labelBgDefault = ["outline", "text", "underlined"].includes(variant) ? "bg-transparent" : "bg-white/90 dark:bg-slate-900";
|
|
143
|
-
const handleFocus = (event) => {
|
|
144
|
-
if (hidePlaceholderUntilFocus) setIsFocused(true);
|
|
145
|
-
onFocus?.(event);
|
|
146
|
-
};
|
|
147
|
-
const handleBlur = (event) => {
|
|
148
|
-
if (hidePlaceholderUntilFocus) setIsFocused(false);
|
|
149
|
-
onBlur?.(event);
|
|
150
|
-
};
|
|
151
|
-
return /* @__PURE__ */ jsxs("div", { className: twMerge("flex flex-col gap-1", wrapperClassName), children: [
|
|
152
|
-
/* @__PURE__ */ jsxs("div", { className: "relative flex items-center", children: [
|
|
153
|
-
hasLeadingAdornment && /* @__PURE__ */ jsxs("span", { className: "absolute left-3 inset-y-0 flex items-center gap-2", children: [
|
|
154
|
-
prependIconClass && /* @__PURE__ */ jsx(
|
|
155
|
-
"i",
|
|
156
|
-
{
|
|
157
|
-
className: twMerge(
|
|
158
|
-
"text-gray-500 dark:text-gray-400",
|
|
159
|
-
status?.tone && statusMessageClasses[status?.tone] || "",
|
|
160
|
-
prependIconClass
|
|
161
|
-
),
|
|
162
|
-
"aria-hidden": true
|
|
163
|
-
}
|
|
164
|
-
),
|
|
165
|
-
renderPrefix
|
|
166
|
-
] }),
|
|
167
|
-
/* @__PURE__ */ jsx(
|
|
168
|
-
"input",
|
|
169
|
-
{
|
|
170
|
-
...inputProps,
|
|
171
|
-
ref,
|
|
172
|
-
id: inputName,
|
|
173
|
-
name: inputName,
|
|
174
|
-
placeholder: placeholderValue,
|
|
175
|
-
onFocus: handleFocus,
|
|
176
|
-
onBlur: handleBlur,
|
|
177
|
-
className: twMerge(
|
|
178
|
-
"peer",
|
|
179
|
-
classBase,
|
|
180
|
-
variantClass,
|
|
181
|
-
toneClass,
|
|
182
|
-
sizeClass,
|
|
183
|
-
placeholderClass,
|
|
184
|
-
className
|
|
185
|
-
)
|
|
186
|
-
}
|
|
187
|
-
),
|
|
188
|
-
label && /* @__PURE__ */ jsx(
|
|
189
|
-
"label",
|
|
190
|
-
{
|
|
191
|
-
htmlFor: inputName,
|
|
192
|
-
className: twMerge(
|
|
193
|
-
"absolute transition-all duration-150 pointer-events-none text-gray-700 rounded dark:text-gray-200",
|
|
194
|
-
labelLeftClass,
|
|
195
|
-
// Floated state: center label's vertical middle on the top border line
|
|
196
|
-
"-top-1.5 -translate-y-2/3 text-xs px-1",
|
|
197
|
-
labelBgDefault,
|
|
198
|
-
// focus state mirrors floated state (keeps center on border)
|
|
199
|
-
labelFocusLeftClass,
|
|
200
|
-
"peer-focus:top-0 peer-focus:-translate-y-1/2 peer-focus:text-xs peer-focus:px-1 peer-focus:bg-white peer-focus:text-gray-600 dark:peer-focus:bg-slate-900 dark:peer-focus:text-gray-300",
|
|
201
|
-
// when input is empty (placeholder shown) -> center label inside input
|
|
202
|
-
"peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:text-sm peer-placeholder-shown:bg-transparent peer-placeholder-shown:text-gray-500 dark:peer-placeholder-shown:text-gray-400"
|
|
203
|
-
),
|
|
204
|
-
children: label
|
|
205
|
-
}
|
|
206
|
-
),
|
|
207
|
-
hasTrailingAdornment && /* @__PURE__ */ jsx("span", { className: "absolute right-3 inset-y-0 flex items-center", children: renderSuffix })
|
|
208
|
-
] }),
|
|
209
|
-
status?.message && /* @__PURE__ */ jsx("span", { className: twMerge("text-sm", statusMessageClasses[status.tone]), children: status.message })
|
|
210
|
-
] });
|
|
211
|
-
}
|
|
212
|
-
);
|
|
213
|
-
Input.displayName = "Input";
|
|
214
|
-
var Input_default = Input;
|
|
215
|
-
|
|
216
|
-
export { Input_default };
|
|
217
|
-
//# sourceMappingURL=chunk-OBGYXMZ3.js.map
|
|
218
|
-
//# sourceMappingURL=chunk-OBGYXMZ3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Form/Input/states.input.ts","../src/Form/Input/index.tsx"],"names":["normalizedName"],"mappings":"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","file":"chunk-OBGYXMZ3.js","sourcesContent":["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","import React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { InputProp, InputVariant, InputSize } from './types';\nimport { resolveIconClassName } from './states.input';\n\n/**\n * Text input with multiple visual variants and inline status or icon adornments.\n * Label is purely CSS-driven (peer + placeholder-shown + focus), no hooks used.\n */\nconst Input = React.forwardRef<HTMLInputElement, InputProp>(\n (\n {\n variant = 'outline',\n size = 'medium',\n success,\n error,\n warn,\n icon,\n className,\n wrapperClassName,\n label,\n prefix,\n suffix,\n ...props\n },\n ref\n ) => {\n const { placeholder, onFocus, onBlur, ...inputProps } = props;\n const reactId = React.useId();\n const hasLabel = Boolean(label);\n const hasProvidedPlaceholder = typeof placeholder === 'string' && placeholder.trim().length > 0;\n const hidePlaceholderUntilFocus = hasLabel && hasProvidedPlaceholder;\n const [isFocused, setIsFocused] = React.useState(false);\n const classBase =\n 'input-base focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed w-full text-gray-900 dark:text-gray-100 placeholder:text-gray-500 dark:placeholder:text-gray-400';\n const variantClasses = {\n solid:\n 'rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40',\n sharp:\n 'rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40',\n outline:\n 'rounded border-2 border-black bg-white focus-visible:border-black focus-visible:ring-2 focus-visible:ring-black/30 dark:border-black dark:bg-transparent dark:focus-visible:border-black dark:focus-visible:ring-black/40',\n text: 'rounded-none border-0 border-b border-transparent px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70',\n ghost:\n 'rounded border border-transparent bg-gray-50 text-gray-900 focus-visible:bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/15 dark:bg-slate-800 dark:text-gray-100 dark:focus-visible:bg-slate-700 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/25',\n filled:\n 'rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/30',\n underlined:\n 'rounded-none border-0 border-b border-gray-300 px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70',\n rounded:\n 'rounded-full px-4 border border-gray-300 bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 shadow-sm dark:border-gray-600 dark:bg-slate-900 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/30 dark:shadow-black/20'\n } satisfies Record<InputVariant, string>;\n const sizeClasses = {\n 'x-small': {\n paddingY: 'py-2',\n paddingLeft: 'pl-2',\n paddingRight: 'pr-2',\n paddingLeftLeading: 'pl-8',\n paddingLeftLeadingDouble: 'pl-12',\n paddingRightTrailing: 'pr-8',\n text: 'text-xs'\n },\n small: {\n paddingY: 'py-2.5',\n paddingLeft: 'pl-2.5',\n paddingRight: 'pr-2.5',\n paddingLeftLeading: 'pl-9',\n paddingLeftLeadingDouble: 'pl-12',\n paddingRightTrailing: 'pr-9',\n text: 'text-sm'\n },\n medium: {\n paddingY: 'py-3',\n paddingLeft: 'pl-3',\n paddingRight: 'pr-3',\n paddingLeftLeading: 'pl-10',\n paddingLeftLeadingDouble: 'pl-14',\n paddingRightTrailing: 'pr-10',\n text: 'text-base'\n },\n large: {\n paddingY: 'py-3.5',\n paddingLeft: 'pl-3.5',\n paddingRight: 'pr-3.5',\n paddingLeftLeading: 'pl-11',\n paddingLeftLeadingDouble: 'pl-14',\n paddingRightTrailing: 'pr-11',\n text: 'text-lg'\n },\n 'x-large': {\n paddingY: 'py-4',\n paddingLeft: 'pl-4',\n paddingRight: 'pr-4',\n paddingLeftLeading: 'pl-12',\n paddingLeftLeadingDouble: 'pl-16',\n paddingRightTrailing: 'pr-12',\n text: 'text-xl'\n }\n } satisfies Record<\n InputSize,\n {\n paddingY: string;\n paddingLeft: string;\n paddingRight: string;\n paddingLeftLeading: string;\n paddingLeftLeadingDouble: string;\n paddingRightTrailing: string;\n text: string;\n }\n >;\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 dark:text-red-300',\n warn: 'text-amber-600 dark:text-amber-300',\n success: 'text-emerald-600 dark:text-emerald-300'\n } as const;\n\n const variantClass = variantClasses[variant] ?? variantClasses.outline;\n const toneClass = status ? statusClasses[status.tone] : undefined;\n let prependIconClass = resolveIconClassName(icon);\n const hasPrefix = typeof prefix === 'string' ? prefix.trim().length > 0 : Boolean(prefix);\n const hasSuffix = typeof suffix === 'string' ? suffix.trim().length > 0 : Boolean(suffix);\n const hasLeadingIcon = Boolean(prependIconClass);\n const hasLeadingAdornment = hasLeadingIcon || hasPrefix;\n const hasTrailingAdornment = hasSuffix;\n const sizeConfig = sizeClasses[size] ?? sizeClasses.medium;\n const leftPaddingClass =\n hasPrefix\n ? sizeConfig.paddingLeftLeadingDouble\n : hasLeadingAdornment\n ? sizeConfig.paddingLeftLeading\n : sizeConfig.paddingLeft;\n const rightPaddingClass = hasTrailingAdornment\n ? sizeConfig.paddingRightTrailing\n : sizeConfig.paddingRight;\n const sizeClass = [sizeConfig.paddingY, leftPaddingClass, rightPaddingClass, sizeConfig.text].join(' ');\n\n // useId keeps SSR/CSR ids consistent while still providing a fallback name\n const inputName = inputProps.name || reactId;\n\n // Ensure placeholder is present when label exists so :placeholder-shown works.\n // Label stays primary; placeholder only appears on focus when the field is empty.\n const basePlaceholder = placeholder ?? (hasLabel ? ' ' : undefined);\n const placeholderValue = hidePlaceholderUntilFocus\n ? isFocused\n ? placeholder\n : ' '\n : basePlaceholder;\n const placeholderClass = hidePlaceholderUntilFocus\n ? 'placeholder-transparent focus:placeholder-gray-500 focus:dark:placeholder-gray-400'\n : undefined;\n\n // Label left offset depends on leading adornments\n const labelLeftClass = hasLeadingAdornment ? 'left-10' : 'left-3';\n const labelFocusLeftClass = hasLeadingAdornment ? 'peer-focus:left-10' : 'peer-focus:left-3';\n\n const renderPrefix = hasPrefix\n ? typeof prefix === 'string'\n ? (\n <span className={twMerge('text-gray-500 dark:text-gray-400', sizeConfig.text)}>\n {prefix}\n </span>\n )\n : (\n prefix\n )\n : null;\n const renderSuffix = hasSuffix\n ? typeof suffix === 'string'\n ? (\n <span className={twMerge('text-gray-500 dark:text-gray-400', sizeConfig.text)}>\n {suffix}\n </span>\n )\n : (\n suffix\n )\n : null;\n\n // Background for floated label — keep transparent for outline/text/underlined variants\n const labelBgDefault = ['outline', 'text', 'underlined'].includes(variant)\n ? 'bg-transparent'\n : 'bg-white/90 dark:bg-slate-900';\n\n const handleFocus: React.FocusEventHandler<HTMLInputElement> = event => {\n if (hidePlaceholderUntilFocus) setIsFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur: React.FocusEventHandler<HTMLInputElement> = event => {\n if (hidePlaceholderUntilFocus) setIsFocused(false);\n onBlur?.(event);\n };\n\n return (\n <div className={twMerge('flex flex-col gap-1', wrapperClassName)}>\n <div className='relative flex items-center'>\n {hasLeadingAdornment && (\n <span className='absolute left-3 inset-y-0 flex items-center gap-2'>\n {prependIconClass && (\n <i\n className={twMerge(\n 'text-gray-500 dark:text-gray-400',\n (status?.tone && statusMessageClasses[status?.tone]) || '',\n prependIconClass\n )}\n aria-hidden\n />\n )}\n {renderPrefix}\n </span>\n )}\n\n {/* input is peer so label can react with peer-* utilities */}\n <input\n {...inputProps}\n ref={ref}\n id={inputName}\n name={inputName}\n placeholder={placeholderValue}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={twMerge(\n 'peer',\n classBase,\n variantClass,\n toneClass,\n sizeClass,\n placeholderClass,\n className\n )}\n />\n\n {label && (\n <label\n htmlFor={inputName}\n className={twMerge(\n 'absolute transition-all duration-150 pointer-events-none text-gray-700 rounded dark:text-gray-200',\n labelLeftClass,\n // Floated state: center label's vertical middle on the top border line\n '-top-1.5 -translate-y-2/3 text-xs px-1',\n labelBgDefault,\n // focus state mirrors floated state (keeps center on border)\n labelFocusLeftClass,\n 'peer-focus:top-0 peer-focus:-translate-y-1/2 peer-focus:text-xs peer-focus:px-1 peer-focus:bg-white peer-focus:text-gray-600 dark:peer-focus:bg-slate-900 dark:peer-focus:text-gray-300',\n // when input is empty (placeholder shown) -> center label inside input\n 'peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:text-sm peer-placeholder-shown:bg-transparent peer-placeholder-shown:text-gray-500 dark:peer-placeholder-shown:text-gray-400'\n )}\n >\n {label}\n </label>\n )}\n\n {hasTrailingAdornment && (\n <span className='absolute right-3 inset-y-0 flex items-center'>\n {renderSuffix}\n </span>\n )}\n\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])}>\n {status.message}\n </span>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Containment/Chip/states.chip.ts"],"names":["normalized"],"mappings":"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","file":"chunk-PSMGRUU5.js","sourcesContent":["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 blackAndWhitePaletteClasses = {\n solid: 'bg-black text-white border border-black hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white',\n outline:\n 'bg-white text-black border-2 border-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white',\n ghost:\n 'bg-neutral-200 text-black border border-transparent hover:bg-neutral-300 focus-visible:ring-black/20',\n text:\n 'bg-transparent text-black border border-transparent hover:bg-neutral-200 focus-visible:ring-black/20',\n filled:\n 'bg-black/10 text-black border border-black/30 hover:bg-black/20 focus-visible:ring-black/20',\n underlined:\n 'bg-transparent text-black border-0 border-b-2 border-black px-0 rounded-none hover:text-black/80 focus-visible:ring-black/20',\n rounded:\n 'rounded-full bg-white text-black border-2 border-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white',\n sharp:\n 'rounded-none bg-black text-white border border-black hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white'\n} satisfies Record<ChipVariant, string>;\n\nconst paletteVariantClasses: Record<Palette, Record<ChipVariant, string>> = {\n primary: {\n solid: 'bg-primary text-white border border-primary hover:bg-primary/90',\n sharp: 'rounded-none 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 filled: 'bg-primary/10 text-primary border border-primary/30 hover:bg-primary/20',\n underlined: 'bg-transparent text-primary border-0 border-b-2 border-primary px-0 rounded-none hover:text-primary/80',\n rounded: 'bg-white text-primary border border-primary/40 shadow-sm hover:bg-primary/5'\n },\n neutral: {\n solid: 'bg-gray-900 text-white border border-gray-900 hover:bg-gray-800',\n sharp: 'rounded-none 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 filled: 'bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300',\n underlined: 'bg-transparent text-gray-900 border-0 border-b-2 border-gray-500 px-0 rounded-none hover:text-gray-700',\n rounded: 'bg-white text-gray-900 border border-gray-300 shadow-sm hover:bg-gray-100'\n },\n info: {\n solid: 'bg-sky-500 text-white border border-sky-500 hover:bg-sky-600',\n sharp: 'rounded-none 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 filled: 'bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200',\n underlined: 'bg-transparent text-sky-600 border-0 border-b-2 border-sky-500 px-0 rounded-none hover:text-sky-700',\n rounded: 'bg-white text-sky-700 border border-sky-200 shadow-sm hover:bg-sky-50'\n },\n success: {\n solid: 'bg-emerald-500 text-white border border-emerald-500 hover:bg-emerald-600',\n sharp: 'rounded-none 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 filled: 'bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200',\n underlined:\n 'bg-transparent text-emerald-600 border-0 border-b-2 border-emerald-500 px-0 rounded-none hover:text-emerald-700',\n rounded: 'bg-white text-emerald-700 border border-emerald-200 shadow-sm hover:bg-emerald-50'\n },\n warning: {\n solid: 'bg-amber-500 text-white border border-amber-500 hover:bg-amber-600',\n sharp: 'rounded-none 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 filled: 'bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200',\n underlined:\n 'bg-transparent text-amber-700 border-0 border-b-2 border-amber-500 px-0 rounded-none hover:text-amber-800',\n rounded: 'bg-white text-amber-700 border border-amber-200 shadow-sm hover:bg-amber-50'\n },\n danger: {\n solid: 'bg-red-500 text-white border border-red-500 hover:bg-red-600',\n sharp: 'rounded-none 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 filled: 'bg-red-100 text-red-700 border border-red-200 hover:bg-red-200',\n underlined: 'bg-transparent text-red-600 border-0 border-b-2 border-red-500 px-0 rounded-none hover:text-red-700',\n rounded: 'bg-white text-red-600 border border-red-200 shadow-sm hover:bg-red-50'\n },\n surface: {\n solid: 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50',\n sharp: 'rounded-none 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 filled: 'bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white',\n underlined: 'bg-transparent text-gray-900 border-0 border-b-2 border-gray-400 px-0 rounded-none hover:text-gray-600',\n rounded: 'bg-white text-gray-900 border border-gray-200 shadow-sm hover:bg-gray-50'\n },\n bw: blackAndWhitePaletteClasses\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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Containment/ToolTip/index.tsx"],"names":[],"mappings":"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","file":"chunk-U2AL7XFY.js","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst tooltipBaseClasses =\n 'absolute z-[60] max-w-xs rounded-lg border border-white/10 bg-gray-900 px-3 py-2 text-xs font-medium text-white shadow-lg shadow-black/30 ring-1 ring-black/40 transition-all duration-150';\nconst wrapperBaseClasses = 'relative inline-flex max-w-full align-middle';\nconst arrowBaseClasses =\n 'pointer-events-none absolute h-2 w-2 rotate-45 border border-white/10 bg-gray-900 shadow-lg shadow-black/20';\n\nconst resolveSizeValue = (value?: string | number) => {\n if (value === undefined) {\n return undefined;\n }\n return typeof value === 'number' ? `${value}px` : value;\n};\n\nexport type ToolTipPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'right'\n | 'right-start'\n | 'right-end';\n\nconst placementClasses: Record<ToolTipPlacement, string> = {\n top: 'bottom-full left-1/2 -translate-x-1/2 -translate-y-2 origin-bottom',\n 'top-start': 'bottom-full left-0 -translate-y-2 origin-bottom-left',\n 'top-end': 'bottom-full right-0 -translate-y-2 origin-bottom-right',\n bottom: 'top-full left-1/2 -translate-x-1/2 translate-y-2 origin-top',\n 'bottom-start': 'top-full left-0 translate-y-2 origin-top-left',\n 'bottom-end': 'top-full right-0 translate-y-2 origin-top-right',\n left: 'right-full top-1/2 -translate-y-1/2 -translate-x-2 origin-right',\n 'left-start': 'right-full top-0 -translate-x-2 origin-top-right',\n 'left-end': 'right-full bottom-0 -translate-x-2 origin-bottom-right',\n right: 'left-full top-1/2 -translate-y-1/2 translate-x-2 origin-left',\n 'right-start': 'left-full top-0 translate-x-2 origin-top-left',\n 'right-end': 'left-full bottom-0 translate-x-2 origin-bottom-left'\n};\n\nconst arrowPlacementClasses: Record<ToolTipPlacement, string> = {\n top: 'left-1/2 top-full -translate-x-1/2 -translate-y-1/2',\n 'top-start': 'left-4 top-full -translate-y-1/2',\n 'top-end': 'right-4 top-full -translate-y-1/2',\n bottom: 'left-1/2 bottom-full -translate-x-1/2 translate-y-1/2',\n 'bottom-start': 'left-4 bottom-full translate-y-1/2',\n 'bottom-end': 'right-4 bottom-full translate-y-1/2',\n left: 'left-full top-1/2 -translate-y-1/2 -translate-x-1/2',\n 'left-start': 'left-full top-4 -translate-x-1/2',\n 'left-end': 'left-full bottom-4 -translate-x-1/2',\n right: 'right-full top-1/2 -translate-y-1/2 translate-x-1/2',\n 'right-start': 'right-full top-4 translate-x-1/2',\n 'right-end': 'right-full bottom-4 translate-x-1/2'\n};\n\nexport interface ToolTipProps extends React.HTMLAttributes<HTMLDivElement> {\n activator: React.ReactNode;\n placement?: ToolTipPlacement;\n arrow?: boolean;\n disabled?: boolean;\n persistent?: boolean;\n showOnHover?: boolean;\n showOnFocus?: boolean;\n interactive?: boolean;\n keepMounted?: boolean;\n maxWidth?: string | number;\n wrapperClassName?: string;\n}\n\n/**\n * Tooltip wrapper that reveals contextual content around an activator on hover or focus.\n */\nconst ToolTip = React.forwardRef<HTMLDivElement, ToolTipProps>((props, forwardedRef) => {\n const {\n activator,\n children,\n placement = 'top',\n arrow = false,\n disabled = false,\n persistent = false,\n showOnHover = true,\n showOnFocus = true,\n interactive = false,\n keepMounted = false,\n maxWidth = '18rem',\n wrapperClassName,\n className,\n style,\n id,\n ...rest\n } = props;\n\n const hasRenderableContent = children !== undefined && children !== null;\n const shouldEnableTriggers = !disabled && (persistent || showOnHover || showOnFocus);\n const shouldRenderTooltip = hasRenderableContent && (shouldEnableTriggers || keepMounted);\n\n const resolvedStyle: React.CSSProperties = { ...style };\n if (resolvedStyle.maxWidth === undefined) {\n resolvedStyle.maxWidth = resolveSizeValue(maxWidth);\n }\n\n const baseVisibility = persistent ? 'opacity-100 scale-100' : 'opacity-0 scale-95';\n const hoverClasses =\n !persistent && showOnHover\n ? ' group-hover/tooltip:opacity-100 group-hover/tooltip:scale-100'\n : '';\n const focusClasses =\n !persistent && showOnFocus\n ? ' group-focus-within/tooltip:opacity-100 group-focus-within/tooltip:scale-100'\n : '';\n const visibilityClasses = `${baseVisibility}${hoverClasses}${focusClasses}`;\n\n const pointerClasses = (() => {\n if (persistent) {\n return 'pointer-events-auto';\n }\n if (!interactive) {\n return 'pointer-events-none';\n }\n const classes = ['pointer-events-none'];\n if (showOnHover) {\n classes.push('group-hover/tooltip:pointer-events-auto');\n }\n if (showOnFocus) {\n classes.push('group-focus-within/tooltip:pointer-events-auto');\n }\n return classes.join(' ');\n })();\n\n return (\n <span\n className={twMerge(wrapperBaseClasses, 'group/tooltip', wrapperClassName)}\n data-disabled={disabled || undefined}\n >\n <span className='inline-flex max-w-full'>{activator}</span>\n {shouldRenderTooltip ? (\n <div\n {...rest}\n ref={forwardedRef}\n role='tooltip'\n id={id}\n aria-hidden={persistent || disabled ? undefined : true}\n className={twMerge(\n tooltipBaseClasses,\n placementClasses[placement],\n visibilityClasses,\n pointerClasses,\n className\n )}\n style={resolvedStyle}\n >\n {children}\n {arrow && (\n <span\n className={twMerge(arrowBaseClasses, arrowPlacementClasses[placement])}\n aria-hidden\n data-arrow\n />\n )}\n </div>\n ) : null}\n </span>\n );\n});\n\nToolTip.displayName = 'ToolTip';\n\nexport default ToolTip;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Blocks/Card/index.tsx"],"names":["Card"],"mappings":"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","file":"chunk-U4P2VJCV.js","sourcesContent":["import { Children, cloneElement, forwardRef, isValidElement } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { GlobalElevation, GlobalVariant } from '@lindle/linoardo/global.types';\nimport { twMerge } from 'tailwind-merge';\nimport type { CardMediaProps, CardOverflow, CardProps, CardSectionProps, CardTextProps } from './types.card';\n\nconst paddingClasses: Record<Exclude<CardProps['padding'], undefined>, string> = {\n none: 'p-0',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6'\n};\n\nconst overflowClasses: Record<Exclude<CardProps['overflow'], undefined>, string> = {\n hidden: 'overflow-hidden',\n visible: 'overflow-visible'\n};\n\nconst cardBase = 'card-base relative w-full bg-white text-gray-900 transition-colors dark:bg-slate-900 dark:text-slate-100';\n\nconst variantClasses: Record<GlobalVariant, string> = {\n solid: 'rounded-2xl border border-gray-200 bg-white dark:border-slate-800 dark:bg-slate-900',\n outline: 'rounded-2xl border-2 border-black bg-white dark:border-black dark:bg-slate-900',\n ghost: 'rounded-2xl border border-transparent bg-gray-50 dark:border-transparent dark:bg-slate-800',\n text: 'rounded-2xl border border-transparent bg-transparent dark:border-transparent dark:bg-transparent',\n filled: 'rounded-2xl border border-gray-200 bg-gray-50 dark:border-slate-800 dark:bg-slate-800',\n underlined: ' border border-transparent border-b border-b-gray-200 dark:border-transparent dark:border-b-slate-700 dark:bg-transparent',\n rounded: 'rounded-3xl border border-gray-200 bg-white dark:border-slate-800 dark:bg-slate-900',\n sharp: 'rounded-none border border-gray-200 bg-white dark:border-slate-800 dark:bg-slate-900'\n};\n\nconst elevationClasses: Record<GlobalElevation, string> = {\n 0: 'shadow-none',\n 1: 'shadow-sm',\n 2: 'shadow',\n 3: 'shadow-md',\n 4: 'shadow-lg',\n 5: 'shadow-xl',\n 6: 'shadow-2xl'\n};\n\n/**\n * Card container with optional padding, variants and interactive focus/hover styles.\n */\nconst CardRoot = forwardRef<HTMLDivElement, CardProps & { elevation?: GlobalElevation }>(function Card(\n { className, children, variant = 'solid', padding = 'md', overflow = 'hidden', interactive = false, dividers = true, elevation = 0, ...rest },\n ref\n) {\n const variantClass = variantClasses[variant as GlobalVariant] ?? variantClasses.solid;\n const paddingClass = paddingClasses[padding] ?? paddingClasses.md;\n const overflowClass = overflowClasses[overflow] ?? overflowClasses.hidden;\n const elevationClass = elevationClasses[elevation] ?? elevationClasses[0];\n const interactiveClass = interactive\n ? 'transition-all duration-200 hover:-translate-y-0.5 hover:shadow-xl hover:z-10 focus-within:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-slate-900'\n : undefined;\n const tabIndexValue = interactive && rest.tabIndex === undefined ? 0 : rest.tabIndex;\n const content = applyDividers(children, dividers);\n\n return (\n <div\n {...rest}\n ref={ref}\n tabIndex={tabIndexValue}\n className={twMerge(cardBase, variantClass, paddingClass, overflowClass, elevationClass, interactiveClass, className)}\n >\n {content}\n </div>\n );\n});\n\n/**\n * Section for placing the card title, subtitle or actions at the top of the card.\n */\nconst CardHeader: React.FC<CardSectionProps> = ({ className, dividers = true, ...rest }) => (\n <div\n {...rest}\n className={twMerge(\n 'card-header mb-2 flex flex-col gap-1 pb-3',\n dividers ? 'border-b border-gray-100 dark:border-slate-800' : undefined,\n className\n )}\n />\n);\n\n/**\n * Primary content area of the card.\n */\nconst CardBody: React.FC<CardSectionProps> = ({ className, ...rest }) => (\n <div {...rest} className={twMerge('card-body flex flex-col gap-3', className)} />\n);\n\n/**\n * Footer area for actions or supplemental information.\n */\nconst CardFooter: React.FC<CardSectionProps> = ({ className, dividers = true, ...rest }) => (\n <div\n {...rest}\n className={twMerge(\n 'card-footer mt-3 flex flex-wrap items-center gap-3 pt-3',\n dividers ? 'border-t border-gray-100 dark:border-slate-800' : undefined,\n className\n )}\n />\n);\n\n/**\n * Stylized heading for the card.\n */\nconst CardTitle: React.FC<CardSectionProps> = ({ className, ...rest }) => (\n <h3 {...rest} className={twMerge('card-title text-lg font-semibold text-gray-900 dark:text-slate-50', className)} />\n);\n\n/**\n * Subtitle text for secondary information under the title.\n */\nconst CardSubtitle: React.FC<CardSectionProps> = ({ className, ...rest }) => (\n <p {...rest} className={twMerge('card-subtitle text-sm font-medium text-gray-600 dark:text-slate-300', className)} />\n);\n\n/**\n * Body text with default card typography.\n */\nconst CardText: React.FC<CardTextProps> = ({ className, ...rest }) => (\n <p {...rest} className={twMerge('card-text text-sm text-gray-700 dark:text-slate-200', className)} />\n);\n\n/**\n * Media region for images, retaining card spacing and optional rounded corners.\n */\nconst CardMedia: React.FC<CardMediaProps> = ({ className, rounded = false, ...rest }) => (\n <img\n {...rest}\n className={twMerge(\n 'card-media w-full object-cover',\n rounded ? 'rounded-xl' : 'rounded-none',\n rest.height || rest.style ? 'block' : 'block max-h-60',\n className\n )}\n loading={rest.loading ?? 'lazy'}\n />\n);\n\n/**\n * Container for action buttons inside the card.\n */\nconst CardActions: React.FC<CardSectionProps> = ({ className, ...rest }) => (\n <div {...rest} className={twMerge('card-actions flex flex-wrap gap-2', className)} />\n);\n\nexport type { CardOverflow, CardProps, CardSectionProps, CardMediaProps, CardTextProps };\n\nconst Card = Object.assign(CardRoot, {\n Header: CardHeader,\n Body: CardBody,\n Footer: CardFooter,\n Title: CardTitle,\n Subtitle: CardSubtitle,\n Text: CardText,\n Media: CardMedia,\n Actions: CardActions\n});\n\nexport default Card;\n\nfunction applyDividers(children: ReactNode, dividers: boolean): ReactNode {\n return Children.map(children, child => {\n if (!isValidElement(child)) return child;\n\n if (isDividerSection(child)) {\n return cloneElement<CardSectionProps>(child, { dividers: child.props.dividers ?? dividers });\n }\n\n if (hasNestedChildren(child)) {\n return cloneElement<{ children?: ReactNode }>(child, {\n children: applyDividers(child.props.children, dividers)\n });\n }\n\n return child;\n });\n}\n\nfunction isDividerSection(element: ReactElement): element is ReactElement<CardSectionProps> {\n return element.type === CardHeader || element.type === CardFooter;\n}\n\nfunction hasNestedChildren(element: ReactElement): element is ReactElement<{ children?: ReactNode }> {\n const props = element.props as Record<string, unknown>;\n return 'children' in props;\n}\n"]}
|