@lindle/linoardo 1.0.49 → 1.0.51

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.
Files changed (53) hide show
  1. package/dist/button.cjs +2 -4
  2. package/dist/button.cjs.map +1 -1
  3. package/dist/button.js +1 -1
  4. package/dist/chunk-3J6Y3EQW.js +538 -0
  5. package/dist/chunk-3J6Y3EQW.js.map +1 -0
  6. package/dist/{chunk-TRR7TDVA.js → chunk-4C6XQI62.js} +72 -40
  7. package/dist/chunk-4C6XQI62.js.map +1 -0
  8. package/dist/{chunk-HVGCLUW2.js → chunk-NJN7T34X.js} +4 -6
  9. package/dist/chunk-NJN7T34X.js.map +1 -0
  10. package/dist/{chunk-LRWM4ZWZ.js → chunk-QCRQUSET.js} +4 -4
  11. package/dist/chunk-QCRQUSET.js.map +1 -0
  12. package/dist/{chunk-Z5A2OIDI.js → chunk-SM2VNSPP.js} +4 -7
  13. package/dist/chunk-SM2VNSPP.js.map +1 -0
  14. package/dist/{chunk-LSIAP7ZZ.js → chunk-XLA2NCDF.js} +3 -9
  15. package/dist/chunk-XLA2NCDF.js.map +1 -0
  16. package/dist/expansion-panel.cjs +1 -7
  17. package/dist/expansion-panel.cjs.map +1 -1
  18. package/dist/expansion-panel.js +1 -1
  19. package/dist/index.cjs +643 -561
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +1 -1
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.js +6 -7
  24. package/dist/index.js.map +1 -1
  25. package/dist/profileCard.cjs +3 -5
  26. package/dist/profileCard.cjs.map +1 -1
  27. package/dist/profileCard.js +2 -2
  28. package/dist/progress.cjs +2 -5
  29. package/dist/progress.cjs.map +1 -1
  30. package/dist/progress.js +1 -1
  31. package/dist/select.cjs +60 -37
  32. package/dist/select.cjs.map +1 -1
  33. package/dist/select.d.cts +4 -0
  34. package/dist/select.d.ts +4 -0
  35. package/dist/select.js +1 -2
  36. package/dist/styles.css +254 -187
  37. package/dist/textarea.cjs +484 -423
  38. package/dist/textarea.cjs.map +1 -1
  39. package/dist/textarea.d.cts +27 -23
  40. package/dist/textarea.d.ts +27 -23
  41. package/dist/textarea.js +1 -2
  42. package/dist/timeline.d.cts +1 -1
  43. package/dist/timeline.d.ts +1 -1
  44. package/package.json +7 -1
  45. package/dist/chunk-67TAA2MA.js +0 -470
  46. package/dist/chunk-67TAA2MA.js.map +0 -1
  47. package/dist/chunk-6SKW43XI.js +0 -14
  48. package/dist/chunk-6SKW43XI.js.map +0 -1
  49. package/dist/chunk-HVGCLUW2.js.map +0 -1
  50. package/dist/chunk-LRWM4ZWZ.js.map +0 -1
  51. package/dist/chunk-LSIAP7ZZ.js.map +0 -1
  52. package/dist/chunk-TRR7TDVA.js.map +0 -1
  53. package/dist/chunk-Z5A2OIDI.js.map +0 -1
@@ -1,9 +1,18 @@
1
- import { generateString } from './chunk-6SKW43XI.js';
2
1
  import { iconBaseClasses } from './chunk-IEILIKS2.js';
3
2
  import React from 'react';
4
3
  import { twMerge } from 'tailwind-merge';
5
4
  import { jsxs, jsx } from 'react/jsx-runtime';
6
5
 
6
+ // src/utils/helpers/randomStr.ts
7
+ var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
8
+ function generateString(length = 5) {
9
+ let result = "";
10
+ const charactersLength = characters.length;
11
+ for (let i = 0; i < length; i++) {
12
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
13
+ }
14
+ return result;
15
+ }
7
16
  var baseClass = "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";
8
17
  var variantClasses = {
9
18
  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",
@@ -77,6 +86,7 @@ var Select = React.forwardRef(
77
86
  onChange,
78
87
  onBlur,
79
88
  onFocus,
89
+ addOptionAction,
80
90
  ...props
81
91
  }, ref) => {
82
92
  const selectId = id || name || generateString();
@@ -105,6 +115,13 @@ var Select = React.forwardRef(
105
115
  onFocus?.(event);
106
116
  }
107
117
  };
118
+ const handleAddOptionActionClick = (event) => {
119
+ event.preventDefault();
120
+ if (disabled || !addOptionAction) return;
121
+ addOptionAction.onClick();
122
+ const detailsEl = event.currentTarget.closest("details");
123
+ detailsEl?.removeAttribute("open");
124
+ };
108
125
  return /* @__PURE__ */ jsxs("div", { className: twMerge("flex flex-col gap-1", wrapperClassName), children: [
109
126
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
110
127
  /* @__PURE__ */ jsxs(
@@ -136,46 +153,61 @@ var Select = React.forwardRef(
136
153
  ]
137
154
  }
138
155
  ),
139
- /* @__PURE__ */ jsx("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", children: normalizedOptions.map((option, index) => {
140
- const optionValueStr = String(option.value);
141
- const isSelected = Array.isArray(value) ? value.map(String).includes(optionValueStr) : String(value) === optionValueStr;
142
- const isDefaultSelected = Array.isArray(defaultValue) ? defaultValue.map(String).includes(optionValueStr) : String(defaultValue) === optionValueStr;
143
- const iconClassName = resolveIconClassName(option.icon);
144
- const inputId = `${selectId}-${toIdSafe(optionValueStr)}-${index}`;
145
- return /* @__PURE__ */ jsxs(
146
- "label",
156
+ /* @__PURE__ */ jsxs("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", children: [
157
+ normalizedOptions.map((option, index) => {
158
+ const optionValueStr = String(option.value);
159
+ const isSelected = Array.isArray(value) ? value.map(String).includes(optionValueStr) : String(value) === optionValueStr;
160
+ const isDefaultSelected = Array.isArray(defaultValue) ? defaultValue.map(String).includes(optionValueStr) : String(defaultValue) === optionValueStr;
161
+ const iconClassName = resolveIconClassName(option.icon);
162
+ const inputId = `${selectId}-${toIdSafe(optionValueStr)}-${index}`;
163
+ return /* @__PURE__ */ jsxs(
164
+ "label",
165
+ {
166
+ htmlFor: inputId,
167
+ className: twMerge(
168
+ "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",
169
+ option.disabled && "cursor-not-allowed opacity-50"
170
+ ),
171
+ children: [
172
+ /* @__PURE__ */ jsx(
173
+ "input",
174
+ {
175
+ type: multiple ? "checkbox" : "radio",
176
+ id: inputId,
177
+ name: inputName,
178
+ value: option.value,
179
+ disabled: option.disabled || disabled,
180
+ checked: value !== void 0 ? isSelected : void 0,
181
+ defaultChecked: defaultValue !== void 0 ? isDefaultSelected : void 0,
182
+ onChange: handleOptionChange,
183
+ onBlur,
184
+ ref,
185
+ required: required && !multiple,
186
+ className: "peer sr-only"
187
+ }
188
+ ),
189
+ iconClassName && /* @__PURE__ */ jsx("i", { className: twMerge(iconClassName, "text-lg text-gray-500 peer-checked:text-primary dark:text-gray-400") }),
190
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate peer-checked:font-medium peer-checked:text-primary", children: option.label }),
191
+ /* @__PURE__ */ jsx("i", { className: "mdi mdi-check invisible ml-auto text-primary peer-checked:visible" })
192
+ ]
193
+ },
194
+ `${optionValueStr}-${index}`
195
+ );
196
+ }),
197
+ addOptionAction && /* @__PURE__ */ jsx("div", { className: "mt-1 border-t border-gray-100 pt-1 dark:border-slate-700", children: /* @__PURE__ */ jsxs(
198
+ "button",
147
199
  {
148
- htmlFor: inputId,
149
- className: twMerge(
150
- "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",
151
- option.disabled && "cursor-not-allowed opacity-50"
152
- ),
200
+ type: "button",
201
+ className: "flex w-full cursor-pointer items-center gap-2 px-4 py-2 text-left text-sm font-medium text-primary hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-slate-700",
202
+ onClick: handleAddOptionActionClick,
203
+ disabled,
153
204
  children: [
154
- /* @__PURE__ */ jsx(
155
- "input",
156
- {
157
- type: multiple ? "checkbox" : "radio",
158
- id: inputId,
159
- name: inputName,
160
- value: option.value,
161
- disabled: option.disabled || disabled,
162
- checked: value !== void 0 ? isSelected : void 0,
163
- defaultChecked: defaultValue !== void 0 ? isDefaultSelected : void 0,
164
- onChange: handleOptionChange,
165
- onBlur,
166
- ref,
167
- required: required && !multiple,
168
- className: "peer sr-only"
169
- }
170
- ),
171
- iconClassName && /* @__PURE__ */ jsx("i", { className: twMerge(iconClassName, "text-lg text-gray-500 peer-checked:text-primary dark:text-gray-400") }),
172
- /* @__PURE__ */ jsx("span", { className: "flex-1 truncate peer-checked:font-medium peer-checked:text-primary", children: option.label }),
173
- /* @__PURE__ */ jsx("i", { className: "mdi mdi-check invisible ml-auto text-primary peer-checked:visible" })
205
+ /* @__PURE__ */ jsx("i", { className: "mdi mdi-plus", "aria-hidden": true }),
206
+ /* @__PURE__ */ jsx("span", { children: addOptionAction.label })
174
207
  ]
175
- },
176
- `${optionValueStr}-${index}`
177
- );
178
- }) })
208
+ }
209
+ ) })
210
+ ] })
179
211
  ]
180
212
  }
181
213
  ),
@@ -195,5 +227,5 @@ Select.displayName = "Select";
195
227
  var Select_default = Select;
196
228
 
197
229
  export { Select_default };
198
- //# sourceMappingURL=chunk-TRR7TDVA.js.map
199
- //# sourceMappingURL=chunk-TRR7TDVA.js.map
230
+ //# sourceMappingURL=chunk-4C6XQI62.js.map
231
+ //# sourceMappingURL=chunk-4C6XQI62.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/helpers/randomStr.ts","../src/Form/Select/index.tsx"],"names":["normalizedName"],"mappings":"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","file":"chunk-4C6XQI62.js","sourcesContent":["const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\nexport function generateString(length = 5) {\n let result: string = '';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n}\n","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 addOptionAction?: {\n label: string;\n onClick: () => void;\n };\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} 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 addOptionAction,\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 const handleAddOptionActionClick: React.MouseEventHandler<HTMLButtonElement> = event => {\n event.preventDefault();\n if (disabled || !addOptionAction) return;\n addOptionAction.onClick();\n const detailsEl = event.currentTarget.closest('details');\n detailsEl?.removeAttribute('open');\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 {addOptionAction && (\n <div className='mt-1 border-t border-gray-100 pt-1 dark:border-slate-700'>\n <button\n type='button'\n className='flex w-full cursor-pointer items-center gap-2 px-4 py-2 text-left text-sm font-medium text-primary hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-slate-700'\n onClick={handleAddOptionActionClick}\n disabled={disabled}\n >\n <i className='mdi mdi-plus' aria-hidden />\n <span>{addOptionAction.label}</span>\n </button>\n </div>\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"]}
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
6
6
  // src/Containment/Button/states.button.ts
7
- var base = "btn-base focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900 rounded-lg transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed";
7
+ var base = "btn-base focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900 rounded-lg transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed";
8
8
  var blackAndWhitePaletteClasses = {
9
9
  solid: "bg-black text-white hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white dark:bg-white dark:text-black dark:hover:bg-white/90 dark:focus-visible:ring-white/40 dark:focus-visible:ring-offset-gray-900",
10
10
  outline: "border-2 border-black text-black bg-white hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white dark:border-white dark:text-white dark:bg-transparent dark:hover:bg-white dark:hover:text-black dark:focus-visible:ring-white/40 dark:focus-visible:ring-offset-gray-900",
@@ -101,9 +101,7 @@ var resolveIconClassName = (icon) => {
101
101
  }
102
102
  const [library, providedName] = icon;
103
103
  const normalizedLibrary = library.trim();
104
- const baseClasses = iconBaseClasses[normalizedLibrary] ?? [
105
- normalizedLibrary
106
- ];
104
+ const baseClasses = iconBaseClasses[normalizedLibrary] ?? [normalizedLibrary];
107
105
  const iconName = providedName.trim();
108
106
  if (!iconName) {
109
107
  return baseClasses.join(" ");
@@ -255,5 +253,5 @@ Button.Group = ButtonGroup;
255
253
  var Button_default = Button;
256
254
 
257
255
  export { Button_default };
258
- //# sourceMappingURL=chunk-HVGCLUW2.js.map
259
- //# sourceMappingURL=chunk-HVGCLUW2.js.map
256
+ //# sourceMappingURL=chunk-NJN7T34X.js.map
257
+ //# sourceMappingURL=chunk-NJN7T34X.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Containment/Button/states.button.ts","../src/Containment/Button/index.tsx"],"names":["normalized"],"mappings":";;;;;;AAIO,IAAM,IAAA,GACX,qQAAA;AAEF,IAAM,2BAAA,GAA8B;AAAA,EAClC,KAAA,EACE,iOAAA;AAAA,EACF,OAAA,EACE,gTAAA;AAAA,EACF,KAAA,EACE,oKAAA;AAAA,EACF,IAAA,EAAM,mKAAA;AAAA,EACN,MAAA,EACE,0KAAA;AAAA,EACF,UAAA,EACE,0LAAA;AAAA,EACF,KAAA,EACE;AACJ,CAAA;AAEA,IAAM,qBAAA,GAAwE;AAAA,EAC5E,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,sEAAA;AAAA,IACP,KAAA,EAAO,mFAAA;AAAA,IACP,OAAA,EACE,gNAAA;AAAA,IACF,KAAA,EACE,oJAAA;AAAA,IACF,IAAA,EAAM,qJAAA;AAAA,IACN,MAAA,EACE,0KAAA;AAAA,IACF,UAAA,EACE;AAAA,GACJ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,sEAAA;AAAA,IACP,KAAA,EAAO,mFAAA;AAAA,IACP,OAAA,EACE,uNAAA;AAAA,IACF,KAAA,EACE,8JAAA;AAAA,IACF,IAAA,EAAM,mKAAA;AAAA,IACN,MAAA,EACE,gLAAA;AAAA,IACF,UAAA,EACE;AAAA,GACJ;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,mEAAA;AAAA,IACP,KAAA,EAAO,gFAAA;AAAA,IACP,OAAA,EACE,gNAAA;AAAA,IACF,KAAA,EACE,6JAAA;AAAA,IACF,IAAA,EAAM,iKAAA;AAAA,IACN,MAAA,EACE,gLAAA;AAAA,IACF,UAAA,EACE;AAAA,GACJ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,+EAAA;AAAA,IACP,KAAA,EAAO,4FAAA;AAAA,IACP,OAAA,EACE,4OAAA;AAAA,IACF,KAAA,EACE,yLAAA;AAAA,IACF,IAAA,EAAM,qLAAA;AAAA,IACN,MAAA,EACE,oNAAA;AAAA,IACF,UAAA,EACE;AAAA,GACJ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,yEAAA;AAAA,IACP,KAAA,EAAO,sFAAA;AAAA,IACP,OAAA,EACE,8NAAA;AAAA,IACF,KAAA,EACE,2KAAA;AAAA,IACF,IAAA,EAAM,2KAAA;AAAA,IACN,MAAA,EACE,kMAAA;AAAA,IACF,UAAA,EACE;AAAA,GACJ;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,mEAAA;AAAA,IACP,KAAA,EAAO,gFAAA;AAAA,IACP,OAAA,EACE,gNAAA;AAAA,IACF,KAAA,EACE,6JAAA;AAAA,IACF,IAAA,EAAM,iKAAA;AAAA,IACN,MAAA,EACE,gLAAA;AAAA,IACF,UAAA,EACE;AAAA,GACJ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EACE,4KAAA;AAAA,IACF,KAAA,EACE,yLAAA;AAAA,IACF,OAAA,EACE,6KAAA;AAAA,IACF,KAAA,EACE,8JAAA;AAAA,IACF,IAAA,EAAM,mKAAA;AAAA,IACN,MAAA,EACE,4KAAA;AAAA,IACF,UAAA,EACE;AAAA,GACJ;AAAA,EACA,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,mBAAA,GAAsB,CAAC,OAAA,EAAwB,OAAA,KAAqB;AAC/E,EAAA,MAAM,eAAA,GAAkB,qBAAA,CAAsB,OAAO,CAAA,IAAK,qBAAA,CAAsB,OAAA;AAChF,EAAA,OAAO,eAAA,CAAgB,OAAO,CAAA,IAAK,eAAA,CAAgB,KAAA;AACrD,CAAA;AAEO,IAAM,oBAAA,GAAuB,CAAC,IAAA,KAA+B;AAClE,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AACzB,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,MAAMA,cAAa,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,GAAI,OAAA,GAAU,OAAO,OAAO,CAAA,CAAA;AACxE,IAAA,OAAO,CAAC,KAAA,EAAOA,WAAU,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EACrC;AAEA,EAAA,MAAM,CAAC,OAAA,EAAS,YAAY,CAAA,GAAI,IAAA;AAChC,EAAA,MAAM,iBAAA,GAAoB,QAAQ,IAAA,EAAK;AACvC,EAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,iBAAiD,CAAA,IAAK,CAAC,iBAAiB,CAAA;AAC5G,EAAA,MAAM,QAAA,GAAW,aAAa,IAAA,EAAK;AACnC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,WAAA,CAAY,KAAK,GAAG,CAAA;AAAA,EAC7B;AAEA,EAAA,MAAM,aAAa,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,GAAI,QAAA,GAAW,OAAO,QAAQ,CAAA,CAAA;AAC3E,EAAA,OAAO,KAAA,CAAM,IAAA,iBAAK,IAAI,GAAA,CAAI,CAAC,GAAG,WAAA,EAAa,UAAU,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACnE,CAAA;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,SAAA,EAAW,qBAAA;AAAA,EACX,KAAA,EAAO,qBAAA;AAAA,EACP,MAAA,EAAQ,qBAAA;AAAA,EACR,KAAA,EAAO,mBAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAEO,IAAM,mBAAA,GAAsB;AAAA,EACjC,SAAA,EAAW,2BAAA;AAAA,EACX,KAAA,EAAO,6BAAA;AAAA,EACP,MAAA,EAAQ,6BAAA;AAAA,EACR,KAAA,EAAO,6BAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;AAEO,IAAM,uBAAA,GAA0B;AAAA,EACrC,SAAA,EAAW,SAAA;AAAA,EACX,KAAA,EAAO,WAAA;AAAA,EACP,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAA;ACjKA,IAAM,UAAA,GAAmB,KAAA,CAAA,UAAA;AAAA,EACvB,CACE;AAAA,IACE,OAAA,GAAU,OAAA;AAAA,IACV,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,QAAA;AAAA,IACP,KAAA,GAAQ,KAAA;AAAA,IACR,OAAA,GAAU,KAAA;AAAA,IACV,WAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,YAAY,EAAA,IAAM,QAAA;AACxB,IAAA,MAAM,YAAA,GAAe,mBAAA,CAAoB,OAAA,EAAS,KAAK,CAAA;AACvD,IAAA,MAAM,SAAA,GAAY,QAAA,GAAY,mBAAA,CAAoB,IAAI,CAAA,IAAK,oBAAoB,MAAA,GAAW,WAAA,CAAY,IAAI,CAAA,IAAK,WAAA,CAAY,MAAA;AAC3H,IAAA,MAAM,gBAAgB,QAAA,GAAY,uBAAA,CAAwB,IAAI,CAAA,IAAK,wBAAwB,MAAA,GAAU,MAAA;AACrG,IAAA,MAAM,UAAA,GAAa,QAAQ,QAAA,GAAW,IAAA;AACtC,IAAA,MAAM,iBAAiB,SAAA,KAAc,QAAA;AACrC,IAAA,MAAM,aAAa,QAAA,IAAY,OAAA;AAC/B,IAAA,MAAM,UAAU,OAAA,IAAW,IAAA,KAAS,QAAA,KAAa,CAAC,aAAa,gBAAA,GAAmB,gBAAA;AAClF,IAAA,MAAM,iBAAA,GAAoB,qBAAqB,IAAI,CAAA;AACnD,IAAA,MAAM,gBAAA,GAAmB,OAAA,CAAQ,iBAAA,IAAqB,CAAC,OAAO,CAAA;AAC9D,IAAA,MAAM,qBAAA,GAAwB,WAAA,KAAgB,MAAA,IAAa,WAAA,KAAgB,IAAA;AAC3E,IAAA,MAAM,OAAA,GAAU,QAAA,GAAW,IAAA,GAAO,OAAA,IAAW,wBAAwB,WAAA,GAAc,QAAA;AACnF,IAAA,MAAM,aAAA,GAAA,CAAiB,OAAA,IAAW,gBAAA,KAAqB,OAAA,CAAQ,OAAO,CAAA;AACtE,IAAA,MAAM,QAAA,GAAW,gBAAgB,OAAA,GAAU,MAAA;AAC3C,IAAA,MAAM,mBAAmB,OAAA,GAAU,OAAA,CAAQ,0BAAA,EAA4B,cAAA,EAAgB,aAAa,CAAA,GAAI,MAAA;AACxG,IAAA,MAAM,gBAAgB,gBAAA,GAAmB,OAAA,CAAQ,cAAA,EAAgB,aAAA,EAAe,iBAAiB,CAAA,GAAI,MAAA;AAErG,IAAA,uBACE,IAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,IAAA;AAAA,QACA,GAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA,EAAU,iBAAiB,UAAA,GAAa,MAAA;AAAA,QACxC,eAAA,EAAe,CAAC,cAAA,GAAiB,UAAA,GAAa,MAAA;AAAA,QAC9C,SAAA,EAAW,QAAQ,IAAA,EAAM,MAAA,EAAQ,cAAc,SAAA,EAAW,UAAA,EAAY,UAAU,SAAS,CAAA;AAAA,QACzF,gBAAc,OAAA,IAAW,MAAA;AAAA,QACzB,aAAW,OAAA,IAAW,MAAA;AAAA,QAErB,QAAA,EAAA;AAAA,UAAA,OAAA,oBAAW,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,gBAAA,EAAkB,eAAW,IAAA,EAAC,CAAA;AAAA,UACvD,iCAAiB,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,aAAA,EAAe,eAAW,IAAA,EAAC,CAAA;AAAA,UAC1D;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF,CAAA;AAEA,UAAA,CAAW,WAAA,GAAc,QAAA;AAEzB,IAAM,eAAA,GAAkB,CAAC,OAAA,KAAyE;AAChG,EAAA,IAAI,CAAO,KAAA,CAAA,cAAA,CAAe,OAAO,CAAA,EAAG;AAClC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,cAAc,OAAA,CAAQ,IAAA;AAC5B,EAAA,OAAO,OAAA,CAAQ,IAAA,KAAS,UAAA,IAAc,WAAA,CAAY,gBAAgB,UAAA,CAAW,WAAA;AAC/E,CAAA;AAEA,IAAM,WAAA,GAAoB,KAAA,CAAA,UAAA,CAA6C,CAAC,KAAA,EAAO,GAAA,KAAQ;AACrF,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,GAAQ,KAAA;AAAA,IACR,QAAA,GAAW,KAAA;AAAA,IACX,OAAA,GAAU,KAAA;AAAA,IACV,QAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,IAAA;AAAA,IACX,SAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,SAAA,GAAY,WAAW,4BAAA,GAA+B,iCAAA;AAC5D,EAAA,MAAM,UAAA,GAAa,QAAQ,qBAAA,GAAwB,MAAA;AACnD,EAAA,MAAM,aAAA,GAAgB,QAAA,GAClB,QAAA,GACE,6GAAA,GACA,6GAAA,GACF,MAAA;AAEJ,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA4C;AAChE,IAAA,IAAI,CAAO,KAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG;AAChC,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IAAI,eAAA,CAAgB,KAAK,CAAA,EAAG;AAC1B,MAAA,OAAa,mBAAa,KAAA,EAAO;AAAA,QAC/B,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,OAAA,IAAW,OAAA;AAAA,QAChC,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,KAAA,IAAS,KAAA;AAAA,QAC5B,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,IAAA,IAAQ,IAAA;AAAA,QAC1B,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,KAAA,IAAS,KAAA;AAAA,QAC5B,QAAA,EAAU,KAAA,CAAM,KAAA,CAAM,QAAA,IAAY,QAAA;AAAA,QAClC,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,OAAA,IAAW,OAAA;AAAA,QAChC,QAAA,EAAU,KAAA,CAAM,KAAA,CAAM,QAAA,IAAY;AAAA,OACnC,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,KAAA,CAAM,SAAS,OAAO,KAAA,CAAM,UAAU,QAAA,IAAY,UAAA,IAAc,MAAM,KAAA,EAAO;AAC/E,MAAA,MAAM,iBAAuB,KAAA,CAAA,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,KAAA,CAAM,UAA6B,YAAY,CAAA;AAC/F,MAAA,IAAI,cAAA,KAAmB,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU;AAC3C,QAAA,OAAa,KAAA,CAAA,YAAA,CAAa,KAAA,EAAO,MAAA,EAAW,cAAc,CAAA;AAAA,MAC5D;AAAA,IACF;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAyB,KAAA,CAAA,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,YAAY,CAAA;AAElE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,GAAA;AAAA,MACA,MAAM,IAAA,IAAQ,OAAA;AAAA,MACd,SAAA,EAAW,OAAA,CAAQ,SAAA,EAAW,UAAA,EAAY,eAAe,SAAS,CAAA;AAAA,MAEjE,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAED,WAAA,CAAY,WAAA,GAAc,cAAA;AAE1B,IAAM,MAAA,GAAS,UAAA;AACf,MAAA,CAAO,KAAA,GAAQ,WAAA;AAEf,IAAO,cAAA,GAAQ","file":"chunk-NJN7T34X.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 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900 rounded-lg transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed';\n\nconst blackAndWhitePaletteClasses = {\n solid:\n 'bg-black text-white hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white dark:bg-white dark:text-black dark:hover:bg-white/90 dark:focus-visible:ring-white/40 dark:focus-visible:ring-offset-gray-900',\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 dark:border-white dark:text-white dark:bg-transparent dark:hover:bg-white dark:hover:text-black dark:focus-visible:ring-white/40 dark:focus-visible:ring-offset-gray-900',\n ghost:\n 'text-black bg-neutral-200 hover:bg-neutral-300 focus-visible:ring-black/20 border border-transparent dark:text-white dark:bg-neutral-800 dark:hover:bg-neutral-700',\n text: 'bg-transparent text-black hover:bg-neutral-200 focus-visible:ring-black/20 underline-offset-2 border border-transparent dark:text-white dark:hover:bg-neutral-800',\n filled:\n 'bg-black/10 text-black border border-black/30 hover:bg-black/20 focus-visible:ring-black/20 dark:bg-white/10 dark:text-white dark:border-white/30 dark:hover:bg-white/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 dark:text-white dark:hover:bg-neutral-800',\n sharp:\n 'bg-black text-white rounded-none hover:bg-black/90 focus-visible:ring-black/40 dark:bg-white dark:text-black dark:hover:bg-white/90 dark:focus-visible:ring-white/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 dark:bg-gray-900 dark:text-primary dark:border-primary/60 dark:hover:bg-primary dark:hover:text-white',\n ghost:\n 'text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-primary/40 border border-transparent dark:bg-primary/20 dark:hover:bg-primary/30',\n text: 'bg-transparent text-primary hover:bg-primary/10 focus-visible:ring-primary/30 underline-offset-2 border border-transparent dark:hover:bg-primary/20',\n filled:\n 'bg-primary/15 text-primary border border-primary/30 hover:bg-primary/25 focus-visible:ring-primary/25 dark:bg-primary/20 dark:border-primary/40 dark:hover:bg-primary/30',\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 dark:hover:bg-primary/15'\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 dark:border-gray-600 dark:text-gray-200 dark:bg-gray-900 dark:hover:bg-gray-200 dark:hover:text-gray-900',\n ghost:\n 'text-gray-700 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-300 border border-transparent dark:text-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700',\n text: 'bg-transparent text-gray-700 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2 border border-transparent dark:text-gray-200 dark:hover:bg-gray-800',\n filled:\n 'bg-gray-200 text-gray-900 border border-gray-300 hover:bg-gray-300 focus-visible:ring-gray-300 dark:bg-gray-800 dark:text-gray-100 dark:border-gray-700 dark:hover:bg-gray-700',\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 dark:text-gray-100 dark:hover:bg-gray-800'\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 dark:bg-gray-900 dark:text-sky-400 dark:border-sky-500/70 dark:hover:bg-sky-500 dark:hover:text-white',\n ghost:\n 'text-sky-600 bg-sky-100 hover:bg-sky-200 focus-visible:ring-sky-300 border border-transparent dark:text-sky-300 dark:bg-sky-900/40 dark:hover:bg-sky-900/55',\n text: 'bg-transparent text-sky-600 hover:bg-sky-100 focus-visible:ring-sky-200 underline-offset-2 border border-transparent dark:text-sky-300 dark:hover:bg-sky-900/35',\n filled:\n 'bg-sky-100 text-sky-700 border border-sky-200 hover:bg-sky-200 focus-visible:ring-sky-200 dark:bg-sky-900/35 dark:text-sky-200 dark:border-sky-700/60 dark:hover:bg-sky-900/50',\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 dark:text-sky-300 dark:hover:bg-sky-900/30'\n },\n success: {\n solid: 'bg-emerald-500 text-white hover:bg-emerald-600 focus-visible:ring-emerald-400',\n sharp: '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 dark:bg-gray-900 dark:text-emerald-400 dark:border-emerald-500/70 dark:hover:bg-emerald-500 dark:hover:text-white',\n ghost:\n 'text-emerald-600 bg-emerald-100 hover:bg-emerald-200 focus-visible:ring-emerald-300 border border-transparent dark:text-emerald-300 dark:bg-emerald-900/35 dark:hover:bg-emerald-900/50',\n text: 'bg-transparent text-emerald-600 hover:bg-emerald-100 focus-visible:ring-emerald-200 underline-offset-2 border border-transparent dark:text-emerald-300 dark:hover:bg-emerald-900/30',\n filled:\n 'bg-emerald-100 text-emerald-700 border border-emerald-200 hover:bg-emerald-200 focus-visible:ring-emerald-200 dark:bg-emerald-900/35 dark:text-emerald-200 dark:border-emerald-700/60 dark:hover:bg-emerald-900/50',\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 dark:text-emerald-300 dark:hover:bg-emerald-900/30'\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 dark:bg-gray-900 dark:text-amber-300 dark:border-amber-500/70 dark:hover:bg-amber-500 dark:hover:text-white',\n ghost:\n 'text-amber-600 bg-amber-100 hover:bg-amber-200 focus-visible:ring-amber-300 border border-transparent dark:text-amber-300 dark:bg-amber-900/35 dark:hover:bg-amber-900/50',\n text: 'bg-transparent text-amber-600 hover:bg-amber-100 focus-visible:ring-amber-200 underline-offset-2 border border-transparent dark:text-amber-300 dark:hover:bg-amber-900/30',\n filled:\n 'bg-amber-100 text-amber-800 border border-amber-200 hover:bg-amber-200 focus-visible:ring-amber-200 dark:bg-amber-900/35 dark:text-amber-200 dark:border-amber-700/60 dark:hover:bg-amber-900/50',\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 dark:text-amber-300 dark:hover:bg-amber-900/30'\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 dark:bg-gray-900 dark:text-red-400 dark:border-red-500/70 dark:hover:bg-red-500 dark:hover:text-white',\n ghost:\n 'text-red-600 bg-red-100 hover:bg-red-200 focus-visible:ring-red-300 border border-transparent dark:text-red-300 dark:bg-red-900/35 dark:hover:bg-red-900/50',\n text: 'bg-transparent text-red-600 hover:bg-red-100 focus-visible:ring-red-200 underline-offset-2 border border-transparent dark:text-red-300 dark:hover:bg-red-900/30',\n filled:\n 'bg-red-100 text-red-700 border border-red-200 hover:bg-red-200 focus-visible:ring-red-200 dark:bg-red-900/35 dark:text-red-200 dark:border-red-700/60 dark:hover:bg-red-900/50',\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 dark:text-red-300 dark:hover:bg-red-900/30'\n },\n surface: {\n solid:\n 'bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200 dark:bg-gray-900 dark:text-gray-100 dark:border-gray-700 dark:hover:bg-gray-800',\n sharp:\n 'rounded-none bg-white text-gray-900 border border-gray-200 hover:bg-gray-50 focus-visible:ring-gray-200 dark:bg-gray-900 dark:text-gray-100 dark:border-gray-700 dark:hover:bg-gray-800',\n outline:\n 'border border-gray-300 text-gray-900 bg-white hover:bg-gray-100 focus-visible:ring-gray-200 dark:border-gray-600 dark:text-gray-100 dark:bg-gray-900 dark:hover:bg-gray-800',\n ghost:\n 'text-gray-900 bg-gray-100 hover:bg-gray-200 focus-visible:ring-gray-200 border border-transparent dark:text-gray-100 dark:bg-gray-800 dark:hover:bg-gray-700',\n text: 'bg-transparent text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-200 underline-offset-2 border border-transparent dark:text-gray-100 dark:hover:bg-gray-800',\n filled:\n 'bg-gray-50 text-gray-900 border border-gray-200 hover:bg-white focus-visible:ring-gray-200 dark:bg-gray-800 dark:text-gray-100 dark:border-gray-700 dark:hover:bg-gray-700',\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 dark:text-gray-100 dark:hover:bg-gray-800'\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] ?? [normalizedLibrary];\n const iconName = providedName.trim();\n if (!iconName) {\n return baseClasses.join(' ');\n }\n\n const normalized = iconName.startsWith('mdi-') ? iconName : `mdi-${iconName}`;\n return Array.from(new Set([...baseClasses, normalized])).join(' ');\n};\n\nexport const sizeClasses = {\n 'x-small': 'px-2.5 py-1 text-xs',\n small: 'px-3 py-1.5 text-sm',\n medium: 'px-4 py-2 text-base',\n large: 'px-6 py-3 text-lg',\n 'x-large': 'px-7 py-3.5 text-xl'\n} satisfies Record<GlobalSize, string>;\n\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 { ButtonGroupProps, 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 ButtonBaseComponent = {\n <T extends React.ElementType = 'button'>(props: ButtonProps<T> & { ref?: PolymorphicRef<T> }): React.ReactElement | null;\n displayName?: string;\n};\ntype ButtonComponent = ButtonBaseComponent & {\n Group: React.ForwardRefExoticComponent<ButtonGroupProps & React.RefAttributes<HTMLDivElement>>;\n};\n\n/**\n * Containment button supporting variant, size, block layout and loading states.\n */\nconst ButtonBase = 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 ButtonBaseComponent;\n\nButtonBase.displayName = 'Button';\n\nconst isButtonElement = (element: React.ReactNode): element is React.ReactElement<ButtonProps> => {\n if (!React.isValidElement(element)) {\n return false;\n }\n\n const elementType = element.type as { displayName?: string };\n return element.type === ButtonBase || elementType.displayName === ButtonBase.displayName;\n};\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>((props, ref) => {\n const {\n variant,\n color,\n size,\n block = false,\n disabled = false,\n loading = false,\n iconOnly,\n vertical = false,\n attached = true,\n className,\n role,\n children,\n ...rest\n } = props;\n\n const groupBase = vertical ? 'inline-flex w-fit flex-col' : 'inline-flex w-fit items-stretch';\n const blockClass = block ? 'w-full [&>*]:flex-1' : undefined;\n const attachedClass = attached\n ? vertical\n ? '[&>*:not(:first-child)]:-mt-px [&>*:not(:first-child)]:rounded-t-none [&>*:not(:last-child)]:rounded-b-none'\n : '[&>*:not(:first-child)]:-ml-px [&>*:not(:first-child)]:rounded-l-none [&>*:not(:last-child)]:rounded-r-none'\n : undefined;\n\n const enhanceChild = (child: React.ReactNode): React.ReactNode => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n if (isButtonElement(child)) {\n return React.cloneElement(child, {\n variant: child.props.variant ?? variant,\n color: child.props.color ?? color,\n size: child.props.size ?? size,\n block: child.props.block ?? block,\n disabled: child.props.disabled ?? disabled,\n loading: child.props.loading ?? loading,\n iconOnly: child.props.iconOnly ?? iconOnly\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 ?? 'group'}\n className={twMerge(groupBase, blockClass, attachedClass, className)}\n >\n {resolvedChildren}\n </div>\n );\n});\n\nButtonGroup.displayName = 'Button.Group';\n\nconst Button = ButtonBase as ButtonComponent;\nButton.Group = ButtonGroup;\n\nexport default Button;\n"]}
@@ -1,4 +1,4 @@
1
- import { Button_default } from './chunk-HVGCLUW2.js';
1
+ import { Button_default } from './chunk-NJN7T34X.js';
2
2
  import { twMerge } from 'tailwind-merge';
3
3
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
4
4
 
@@ -39,7 +39,7 @@ var avatarRadiusMap = {
39
39
  sharp: "rounded-none"
40
40
  };
41
41
  var isDarkVariant = (variant) => variant === "filled";
42
- var SocialIcons = ({ socials, dark }) => {
42
+ var SocialIcons = ({ socials }) => {
43
43
  if (!socials) return null;
44
44
  if (Array.isArray(socials) && socials.length === 0) return null;
45
45
  const isSocialLinkArray = Array.isArray(socials) && socials.length > 0 && "href" in socials[0];
@@ -149,5 +149,5 @@ ProfileCard.displayName = "ProfileCard";
149
149
  var ProfileCard_default = ProfileCard;
150
150
 
151
151
  export { ProfileCard_default };
152
- //# sourceMappingURL=chunk-LRWM4ZWZ.js.map
153
- //# sourceMappingURL=chunk-LRWM4ZWZ.js.map
152
+ //# sourceMappingURL=chunk-QCRQUSET.js.map
153
+ //# sourceMappingURL=chunk-QCRQUSET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Blocks/ProfileCard/index.tsx"],"names":[],"mappings":"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","file":"chunk-QCRQUSET.js","sourcesContent":["import Button from '@lindle/linoardo/Containment/Button';\nimport type { GlobalElevation, GlobalVariant } from '@lindle/linoardo/global.types';\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport type SocialLink = {\n icon: string;\n href: string;\n label?: string;\n};\n\nexport type Badge = {\n label: string;\n};\n\nexport type Avatar = {\n src: string;\n alt?: string;\n};\n\nexport type ProfileCardLayout = 'classic' | 'split' | 'spotlight';\n\nexport type ProfileCardProps = React.HTMLAttributes<HTMLElement> & {\n name: string;\n role?: string;\n description?: React.ReactNode;\n avatar: Avatar;\n socials?: SocialLink[] | React.ReactNode;\n badges?: Badge[];\n layout?: ProfileCardLayout;\n variant?: GlobalVariant;\n elevation?: GlobalElevation;\n interactive?: boolean;\n};\n\nconst variantMap: Record<GlobalVariant, string> = {\n solid: 'bg-white text-gray-900 border border-gray-200',\n outline: 'bg-white text-gray-900 border border-gray-300',\n text: 'bg-transparent text-gray-900',\n ghost: 'bg-slate-50 text-gray-900 border border-slate-100',\n filled: 'bg-slate-900 text-white',\n underlined: 'bg-white text-gray-900 border-b-4 border-primary/70',\n sharp: 'bg-white text-gray-900 border border-gray-200 rounded-none'\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\nconst cardRadiusMap: Record<GlobalVariant, string> = {\n solid: 'rounded-2xl',\n outline: 'rounded-2xl',\n text: 'rounded-2xl',\n ghost: 'rounded-2xl',\n filled: 'rounded-3xl',\n underlined: 'rounded-t-2xl',\n sharp: 'rounded-none'\n};\n\nconst avatarRadiusMap: Record<GlobalVariant, string> = {\n solid: 'rounded-2xl',\n outline: 'rounded-2xl',\n text: 'rounded-2xl',\n ghost: 'rounded-2xl',\n filled: 'rounded-3xl',\n underlined: 'rounded-2xl',\n sharp: 'rounded-none'\n};\n\nconst isDarkVariant = (variant: GlobalVariant) => variant === 'filled';\n\nconst SocialIcons: React.FC<{ socials?: SocialLink[] | React.ReactNode; dark?: boolean }> = ({ socials }) => {\n if (!socials) return null;\n if (Array.isArray(socials) && socials.length === 0) return null;\n\n const isSocialLinkArray = Array.isArray(socials) && socials.length > 0 && 'href' in (socials[0] as any);\n\n if (isSocialLinkArray) {\n return (\n <div className='flex flex-wrap gap-2'>\n {(socials as SocialLink[]).map(link => (\n <Button key={link.href} iconOnly icon={link.icon} variant='outline' size='x-small' {...({ href: link.href, as: 'a' } as any)} />\n ))}\n </div>\n );\n }\n\n return <div className='flex flex-wrap gap-2'>{socials as React.ReactNode}</div>;\n};\n\nconst Badges: React.FC<{ badges?: Badge[]; dark?: boolean }> = ({ badges = [], dark }) => {\n if (badges.length === 0) return null;\n\n const badgeBase = twMerge(\n 'inline-flex items-center rounded-full px-3 py-1 mb-2 text-xs font-semibold',\n dark ? 'bg-white/10 text-white border border-white/20' : 'bg-primary/10 text-primary border border-primary/15'\n );\n\n return (\n <div className='flex flex-wrap gap-2'>\n {badges.map(badge => (\n <span key={badge.label} className={badgeBase}>\n {badge.label}\n </span>\n ))}\n </div>\n );\n};\n\nconst AvatarFrame: React.FC<{\n avatar: Avatar;\n size?: 'md' | 'lg';\n ring?: boolean;\n radius: string;\n}> = ({ avatar, size = 'md', ring, radius }) => {\n const dimension = size === 'lg' ? 'h-28 w-28' : 'h-20 w-20';\n const ringClass = ring ? 'ring-4 ring-white/80 ring-offset-4 ring-offset-transparent' : '';\n return (\n <div className={twMerge('overflow-hidden bg-linear-to-br from-primary/10 to-primary/30', radius, dimension, ringClass)}>\n <img src={avatar.src} alt={avatar.alt ?? ''} className={twMerge('h-full w-full object-cover', radius)} loading='lazy' />\n </div>\n );\n};\n\nconst ProfileCard: React.FC<ProfileCardProps> = ({\n name,\n role,\n description,\n avatar,\n socials,\n badges,\n layout = 'classic',\n variant = 'solid',\n elevation = 0,\n interactive = false,\n className,\n ...rest\n}) => {\n const baseVariant = variantMap[variant] ?? variantMap.solid;\n const cardRadius = cardRadiusMap[variant] ?? 'rounded-2xl';\n const avatarRadius = avatarRadiusMap[variant] ?? 'rounded-2xl';\n const dark = isDarkVariant(variant);\n const muted = dark ? 'text-white/70' : 'text-gray-600';\n const accent = dark ? 'text-white' : 'text-gray-900';\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\n const content = (\n <>\n <div className='space-y-2'>\n <div className='flex items-center gap-3'>\n <AvatarFrame avatar={avatar} radius={avatarRadius} />\n <div>\n <h3 className={twMerge('text-xl font-semibold', accent)}>{name}</h3>\n {role && <p className={twMerge('text-sm font-medium', muted)}>{role}</p>}\n </div>\n </div>\n {description && <p className={twMerge('text-sm leading-relaxed', muted)}>{description}</p>}\n <Badges badges={badges} dark={dark} />\n </div>\n <SocialIcons socials={socials} dark={dark} />\n </>\n );\n\n const spotlightContent = (\n <div className='relative overflow-hidden'>\n <div className='absolute inset-0 bg-linear-to-br from-primary/10 via-transparent to-primary/20 blur-3xl' />\n <div className='relative flex flex-col gap-6 md:flex-row md:items-center'>\n <AvatarFrame avatar={avatar} size='lg' ring radius={avatarRadius} />\n <div className='space-y-3'>\n <h3 className={twMerge('text-2xl font-semibold', accent)}>{name}</h3>\n {role && <p className={twMerge('text-sm font-medium uppercase tracking-wide', muted)}>{role}</p>}\n {description && <p className={twMerge('text-sm leading-relaxed', muted)}>{description}</p>}\n <Badges badges={badges} dark={dark} />\n <SocialIcons socials={socials} dark={dark} />\n </div>\n </div>\n </div>\n );\n\n const splitContent = (\n <div className='grid gap-6 md:grid-cols-[auto,1fr] md:items-center'>\n <AvatarFrame avatar={avatar} size='lg' ring radius={avatarRadius} />\n <div className='space-y-3'>\n <div>\n <h3 className={twMerge('text-2xl font-semibold', accent)}>{name}</h3>\n {role && <p className={twMerge('text-sm font-medium', muted)}>{role}</p>}\n </div>\n {description && <p className={twMerge('text-sm leading-relaxed', muted)}>{description}</p>}\n <Badges badges={badges} dark={dark} />\n <SocialIcons socials={socials} dark={dark} />\n </div>\n </div>\n );\n\n const layoutMap: Record<ProfileCardLayout, React.ReactNode> = {\n classic: content,\n split: splitContent,\n spotlight: spotlightContent\n };\n\n return (\n <article\n {...rest}\n tabIndex={tabIndexValue}\n className={twMerge(\n 'profile-card relative overflow-hidden p-6 transition-colors',\n baseVariant,\n cardRadius,\n elevationClass,\n interactiveClass,\n className\n )}\n >\n {layoutMap[layout] ?? layoutMap.classic}\n </article>\n );\n};\n\nProfileCard.displayName = 'ProfileCard';\n\nexport default ProfileCard;\n"]}
@@ -119,10 +119,7 @@ var LineProgress = ({
119
119
  /* @__PURE__ */ jsx(
120
120
  "div",
121
121
  {
122
- className: twMerge(
123
- "h-full rounded-full transition-[width] duration-300 ease-out",
124
- status === "active" ? "animate-pulse" : void 0
125
- ),
122
+ className: twMerge("h-full rounded-full transition-[width] duration-300 ease-out", status === "active" ? "animate-pulse" : void 0),
126
123
  style: barStyle
127
124
  }
128
125
  ),
@@ -261,7 +258,7 @@ var Progress = (props) => {
261
258
  const percent = clampPercent(toNumber(rawPercent));
262
259
  const successPercent = clampPercent(toNumber(success?.percent));
263
260
  const status = providedStatus ?? (percent >= 100 ? "success" : "normal");
264
- const resolvedClassName = twMerge("min-w-[200px]", className);
261
+ const resolvedClassName = twMerge("min-w-50", className);
265
262
  if (type === "circle" || type === "dashboard") {
266
263
  return /* @__PURE__ */ jsx(
267
264
  CircleProgress,
@@ -308,5 +305,5 @@ var Progress = (props) => {
308
305
  var Progress_default = Progress;
309
306
 
310
307
  export { Progress_default };
311
- //# sourceMappingURL=chunk-Z5A2OIDI.js.map
312
- //# sourceMappingURL=chunk-Z5A2OIDI.js.map
308
+ //# sourceMappingURL=chunk-SM2VNSPP.js.map
309
+ //# sourceMappingURL=chunk-SM2VNSPP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Feedback/Progress/index.tsx"],"names":[],"mappings":"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","file":"chunk-SM2VNSPP.js","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { ProgressProps, ProgressStatus } from './types.progress';\n\nconst clampPercent = (value?: number) => {\n if (value === undefined || value === null || Number.isNaN(value)) {\n return 0;\n }\n return Math.min(100, Math.max(0, value));\n};\n\nconst statusIconMap: Record<Exclude<ProgressStatus, 'normal' | 'active'>, string> = {\n success: 'mdi mdi-check',\n exception: 'mdi mdi-alert'\n};\n\nconst strokeColorByStatus: Record<ProgressStatus, string> = {\n normal: 'rgb(99 102 241)',\n active: 'rgb(99 102 241)',\n success: 'rgb(16 185 129)',\n exception: 'rgb(239 68 68)'\n};\n\nconst trailColorDefault = 'rgb(229 231 235)';\n\nconst resolveStroke = (\n status: ProgressStatus,\n strokeColor?: ProgressProps['strokeColor'],\n gradientId?: string\n): { color: string; gradient?: { id: string; from: string; to: string }; cssGradient?: string } => {\n if (!strokeColor) {\n return { color: strokeColorByStatus[status] };\n }\n if (typeof strokeColor === 'string') {\n return { color: strokeColor };\n }\n const id = gradientId ?? `progress-gradient-${Math.random().toString(16).slice(2)}`;\n return {\n color: `url(#${id})`,\n gradient: { id, from: strokeColor.from, to: strokeColor.to },\n cssGradient: `linear-gradient(90deg, ${strokeColor.from}, ${strokeColor.to})`\n };\n};\n\nconst resolveRotation = (gapPosition: NonNullable<ProgressProps['gapPosition']>) => {\n switch (gapPosition) {\n case 'bottom':\n return 90;\n case 'left':\n return 180;\n case 'right':\n return 0;\n case 'top':\n default:\n return -90;\n }\n};\n\nconst buildGradientId = (strokeColor?: ProgressProps['strokeColor']) => {\n if (strokeColor && typeof strokeColor !== 'string') {\n const from = strokeColor.from.replace(/\\W+/g, '');\n const to = strokeColor.to.replace(/\\W+/g, '');\n return `progress-gradient-${from}-${to}`;\n }\n return undefined;\n};\n\nconst InfoNode: React.FC<{\n status: ProgressStatus;\n percent: number;\n successPercent: number;\n format?: ProgressProps['format'];\n}> = ({ status, percent, successPercent, format }) => {\n const iconClass = status === 'success' || status === 'exception' ? statusIconMap[status] : undefined;\n\n const content =\n typeof format === 'function' ? format(percent, successPercent) : iconClass ? <i className={iconClass} aria-hidden /> : `${Math.round(percent)}%`;\n\n return <span className='text-sm font-medium text-gray-700 dark:text-gray-200'>{content}</span>;\n};\n\nconst renderSteps = (\n percent: number,\n steps: number,\n status: ProgressStatus,\n strokeStyle: { backgroundColor?: string; backgroundImage?: string },\n trailColor?: string,\n height?: number\n) => {\n const filled = Math.round((percent / 100) * steps);\n const stepStyle: React.CSSProperties = height ? { height } : {};\n\n return (\n <div className='flex w-full items-center gap-1' style={stepStyle}>\n {Array.from({ length: steps }).map((_, idx) => {\n const isFilled = idx < filled;\n const resolvedStyle: React.CSSProperties = {\n ...(isFilled ? strokeStyle : { backgroundColor: trailColor ?? trailColorDefault }),\n height\n };\n return (\n <span\n key={idx}\n className={twMerge(\n 'flex-1 rounded-full',\n isFilled ? undefined : 'bg-gray-200 dark:bg-gray-800',\n status === 'active' && isFilled ? 'animate-pulse' : undefined\n )}\n style={resolvedStyle}\n />\n );\n })}\n </div>\n );\n};\n\nconst LineProgress: React.FC<ProgressProps & { percent: number; status: ProgressStatus; successPercent: number }> = ({\n percent,\n status,\n successPercent,\n format,\n showInfo = true,\n strokeWidth,\n trailColor,\n strokeColor,\n success,\n size = 'default',\n steps,\n className,\n style,\n ...rest\n}) => {\n const height = strokeWidth ?? (size === 'small' ? 6 : size === 'large' ? 12 : 8);\n const gradientId = buildGradientId(strokeColor);\n const { color, gradient, cssGradient } = resolveStroke(status, strokeColor, gradientId);\n const stepStrokeStyle = gradient ? { backgroundImage: cssGradient } : { backgroundColor: color };\n const lineStyle: React.CSSProperties = {\n height,\n backgroundColor: trailColor ?? trailColorDefault\n };\n const barStyle: React.CSSProperties = {\n width: `${percent}%`,\n height,\n backgroundColor: color,\n background: gradient ? cssGradient : color\n };\n\n const successWidth = successPercent ? Math.min(successPercent, percent) : 0;\n const successColor = success?.strokeColor ?? 'rgb(16 185 129)';\n\n return (\n <div className={twMerge('flex w-full items-center gap-3', className)} style={style} {...rest}>\n <div className='relative w-full overflow-hidden rounded-full' style={lineStyle}>\n {typeof steps === 'number' && steps > 1 ? (\n renderSteps(percent, steps, status, stepStrokeStyle, trailColor, height)\n ) : (\n <>\n <div\n className={twMerge('h-full rounded-full transition-[width] duration-300 ease-out', status === 'active' ? 'animate-pulse' : undefined)}\n style={barStyle}\n />\n {successWidth > 0 ? (\n <div\n className='absolute inset-y-0 left-0 rounded-full transition-[width] duration-300 ease-out'\n style={{ width: `${successWidth}%`, height, backgroundColor: successColor }}\n />\n ) : null}\n </>\n )}\n </div>\n {showInfo ? <InfoNode status={status} percent={percent} successPercent={successPercent} format={format} /> : null}\n </div>\n );\n};\n\nconst CircleProgress: React.FC<ProgressProps & { percent: number; status: ProgressStatus; successPercent: number }> = ({\n percent,\n status,\n successPercent,\n format,\n showInfo = true,\n strokeWidth,\n trailColor,\n strokeColor,\n success,\n width = 120,\n type,\n gapDegree,\n gapPosition = 'top',\n className,\n style,\n ...rest\n}) => {\n const stroke = strokeWidth ?? 10;\n const radius = (width - stroke) / 2;\n const circumference = 2 * Math.PI * radius;\n const gap = type === 'dashboard' ? (gapDegree ?? 75) : (gapDegree ?? 0);\n const perimeter = circumference - (gap / 360) * circumference;\n const dashOffsetBase = ((gap / 360) * circumference) / 2;\n const dashArray = `${perimeter} ${circumference}`;\n const gradientId = buildGradientId(strokeColor);\n const { color, gradient } = resolveStroke(status, strokeColor, gradientId);\n const rotation = resolveRotation(gapPosition);\n const successColor = success?.strokeColor ?? 'rgb(16 185 129)';\n\n const progressDashOffset = ((100 - percent) / 100) * perimeter + dashOffsetBase;\n const successDashOffset = ((100 - successPercent) / 100) * perimeter + dashOffsetBase;\n\n return (\n <div className={twMerge('inline-flex flex-col items-center justify-center', className)} style={style} {...rest}>\n <div className='relative flex items-center justify-center' style={{ width, height: width }}>\n <svg\n width={width}\n height={width}\n viewBox={`0 0 ${width} ${width}`}\n className='absolute inset-0 overflow-visible'\n style={{ transform: `rotate(${rotation}deg)` }}\n >\n {gradient ? (\n <defs>\n <linearGradient id={gradient.id} x1='0%' y1='0%' x2='100%' y2='0%'>\n <stop offset='0%' stopColor={gradient.from} />\n <stop offset='100%' stopColor={gradient.to} />\n </linearGradient>\n </defs>\n ) : null}\n <circle\n cx={width / 2}\n cy={width / 2}\n r={radius}\n strokeWidth={stroke}\n stroke={trailColor ?? trailColorDefault}\n fill='none'\n strokeDasharray={dashArray}\n strokeDashoffset={dashOffsetBase}\n strokeLinecap='round'\n />\n <circle\n cx={width / 2}\n cy={width / 2}\n r={radius}\n strokeWidth={stroke}\n stroke={color}\n fill='none'\n strokeDasharray={dashArray}\n strokeDashoffset={progressDashOffset}\n strokeLinecap='round'\n className={twMerge(status === 'active' ? 'animate-[spin_3s_linear_infinite]' : undefined)}\n />\n {successPercent > 0 ? (\n <circle\n cx={width / 2}\n cy={width / 2}\n r={radius}\n strokeWidth={stroke}\n stroke={successColor}\n fill='none'\n strokeDasharray={dashArray}\n strokeDashoffset={successDashOffset}\n strokeLinecap='round'\n />\n ) : null}\n </svg>\n {showInfo ? (\n <div className='absolute inset-0 flex items-center justify-center'>\n <div className='text-sm font-semibold text-gray-800 dark:text-gray-100'>\n <InfoNode status={status} percent={percent} successPercent={successPercent} format={format} />\n </div>\n </div>\n ) : null}\n </div>\n </div>\n );\n};\n\nconst Progress: React.FC<ProgressProps> = props => {\n const toNumber = (value?: number | string) => {\n if (typeof value === 'string') {\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return value;\n };\n\n const {\n percent: rawPercent = 0,\n success,\n status: providedStatus,\n type = 'line',\n showInfo = true,\n format,\n strokeWidth,\n trailColor,\n strokeColor,\n width,\n size,\n steps,\n gapDegree,\n gapPosition,\n className,\n style,\n ...restProps\n } = props;\n\n const percent = clampPercent(toNumber(rawPercent));\n const successPercent = clampPercent(toNumber(success?.percent));\n const status: ProgressStatus = providedStatus ?? (percent >= 100 ? 'success' : 'normal');\n const resolvedClassName = twMerge('min-w-50', className);\n\n if (type === 'circle' || type === 'dashboard') {\n return (\n <CircleProgress\n {...restProps}\n type={type}\n percent={percent}\n successPercent={successPercent}\n success={success}\n status={status}\n showInfo={showInfo}\n className={resolvedClassName}\n format={format}\n strokeWidth={strokeWidth}\n trailColor={trailColor}\n strokeColor={strokeColor}\n width={width}\n gapDegree={gapDegree}\n gapPosition={gapPosition}\n style={style}\n />\n );\n }\n\n return (\n <LineProgress\n percent={percent}\n successPercent={successPercent}\n success={success}\n status={status}\n showInfo={showInfo}\n className={resolvedClassName}\n format={format}\n strokeWidth={strokeWidth}\n trailColor={trailColor}\n strokeColor={strokeColor}\n size={size}\n steps={steps}\n style={style}\n {...restProps}\n />\n );\n};\n\nexport type { ProgressProps, ProgressStatus, ProgressType } from './types.progress';\nexport default Progress;\n"]}
@@ -64,13 +64,7 @@ var ExpansionPanelInner = (props, forwardedRef) => {
64
64
  {
65
65
  ...rest,
66
66
  ref: forwardedRef,
67
- className: twMerge(
68
- "expansion-panel flex w-full flex-col text-gray-900 dark:text-gray-100",
69
- variantClass,
70
- shapeClass,
71
- layoutClass,
72
- className
73
- ),
67
+ className: twMerge("expansion-panel flex w-full flex-col text-gray-900 dark:text-gray-100", variantClass, shapeClass, layoutClass, className),
74
68
  children: enhancedChildren
75
69
  }
76
70
  );
@@ -83,5 +77,5 @@ ExpansionPanel.displayName = "ExpansionPanel";
83
77
  var ExpansionPanel_default = ExpansionPanel;
84
78
 
85
79
  export { ExpansionPanel_default };
86
- //# sourceMappingURL=chunk-LSIAP7ZZ.js.map
87
- //# sourceMappingURL=chunk-LSIAP7ZZ.js.map
80
+ //# sourceMappingURL=chunk-XLA2NCDF.js.map
81
+ //# sourceMappingURL=chunk-XLA2NCDF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Containment/ExpansionPanel/index.tsx"],"names":[],"mappings":"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","file":"chunk-XLA2NCDF.js","sourcesContent":["import { forwardRef } from 'react';\nimport type { ForwardRefExoticComponent, RefAttributes } from 'react';\nimport type { ForwardedRef } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nimport { injectExpansionPanelContext } from './context';\nimport type { ExpansionPanelProps, ExpansionPanelValue, ExpansionPanelVariant, ExpansionPanelRounded } from './types.expansion-panel';\nimport ExpansionPanelItem from './ExpansionPanelItem';\n\nconst variantContainerClasses: Record<ExpansionPanelVariant, string> = {\n elevated: '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 outlined: 'bg-white border border-gray-200 dark:bg-gray-900 dark:border-gray-800',\n tonal: 'bg-gray-50 border border-gray-100 dark:bg-gray-900/70 dark:border-gray-800',\n plain: 'bg-transparent border border-transparent'\n};\n\nconst roundedClasses: Record<ExpansionPanelRounded, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl'\n};\n\nconst uniqueValues = (values: ExpansionPanelValue[]) => Array.from(new Set(values));\n\nconst normalizeValues = (value: ExpansionPanelValue | ExpansionPanelValue[] | null | undefined, allowMultiple: boolean): ExpansionPanelValue[] => {\n if (value === undefined || value === null) {\n return [];\n }\n\n const normalized = Array.isArray(value) ? value : [value];\n if (allowMultiple) {\n return uniqueValues(normalized);\n }\n\n return normalized.length ? [normalized[0]] : [];\n};\n\n/**\n * Accordion-style container that provides contextual styling and initial expanded state.\n */\nconst ExpansionPanelInner = (props: ExpansionPanelProps, forwardedRef: ForwardedRef<HTMLDivElement>) => {\n const {\n variant = 'elevated',\n rounded = 'lg',\n density = 'default',\n color = 'primary',\n divider = true,\n multiple = false,\n className,\n children,\n value,\n defaultValue,\n onChange,\n ...rest\n } = props;\n\n const allowMultiple = multiple ?? false;\n const isControlled = value !== undefined;\n const resolvedValue = value !== undefined ? value : defaultValue;\n const expandedValues = normalizeValues(resolvedValue, allowMultiple);\n\n const providerValue = {\n expandedValues,\n density,\n color,\n divider,\n rounded,\n variant,\n controlled: isControlled\n };\n\n const variantClass = divider ? variantContainerClasses[variant] : 'bg-transparent border border-transparent shadow-none';\n const shapeClass = roundedClasses[rounded] ?? roundedClasses.lg;\n const layoutClass = divider ? 'divide-y divide-gray-100 dark:divide-gray-800 overflow-hidden' : 'gap-4';\n\n const enhancedChildren = injectExpansionPanelContext(children, providerValue);\n\n return (\n <div\n {...rest}\n ref={forwardedRef}\n className={twMerge('expansion-panel flex w-full flex-col text-gray-900 dark:text-gray-100', variantClass, shapeClass, layoutClass, className)}\n >\n {enhancedChildren}\n </div>\n );\n};\n\ntype ExpansionPanelComponent = ForwardRefExoticComponent<ExpansionPanelProps & RefAttributes<HTMLDivElement>> & {\n Item: typeof ExpansionPanelItem;\n};\n\nconst ExpansionPanelBase = forwardRef<HTMLDivElement, ExpansionPanelProps>(ExpansionPanelInner);\n\nconst ExpansionPanel = Object.assign(ExpansionPanelBase, {\n Item: ExpansionPanelItem\n}) as ExpansionPanelComponent;\n\nExpansionPanel.displayName = 'ExpansionPanel';\n\nexport { ExpansionPanelItem };\nexport type {\n ExpansionPanelItemProps,\n ExpansionPanelProps,\n ExpansionPanelValue,\n ExpansionPanelVariant,\n ExpansionPanelDensity,\n ExpansionPanelRounded\n} from './types.expansion-panel';\nexport default ExpansionPanel;\n"]}
@@ -281,13 +281,7 @@ var ExpansionPanelInner = (props, forwardedRef) => {
281
281
  {
282
282
  ...rest,
283
283
  ref: forwardedRef,
284
- className: tailwindMerge.twMerge(
285
- "expansion-panel flex w-full flex-col text-gray-900 dark:text-gray-100",
286
- variantClass,
287
- shapeClass,
288
- layoutClass,
289
- className
290
- ),
284
+ className: tailwindMerge.twMerge("expansion-panel flex w-full flex-col text-gray-900 dark:text-gray-100", variantClass, shapeClass, layoutClass, className),
291
285
  children: enhancedChildren
292
286
  }
293
287
  );