@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.
Files changed (178) hide show
  1. package/dist/{ExpansionPanelItem-C9KW1yBc.d.cts → ExpansionPanelItem-By0ziOVw.d.cts} +1 -1
  2. package/dist/{ExpansionPanelItem-Pi3BM-4v.d.ts → ExpansionPanelItem-CFfWX7ia.d.ts} +1 -1
  3. package/dist/alert.cjs +3 -3
  4. package/dist/alert.cjs.map +1 -1
  5. package/dist/alert.js +1 -1
  6. package/dist/badge.cjs +10 -10
  7. package/dist/badge.cjs.map +1 -1
  8. package/dist/badge.d.cts +1 -1
  9. package/dist/badge.d.ts +1 -1
  10. package/dist/badge.js +1 -1
  11. package/dist/block.cjs +0 -1
  12. package/dist/block.cjs.map +1 -1
  13. package/dist/block.d.cts +1 -1
  14. package/dist/block.d.ts +1 -1
  15. package/dist/block.js +1 -1
  16. package/dist/button.cjs +111 -55
  17. package/dist/button.cjs.map +1 -1
  18. package/dist/button.d.cts +16 -5
  19. package/dist/button.d.ts +16 -5
  20. package/dist/button.js +1 -1
  21. package/dist/card.cjs +0 -1
  22. package/dist/card.cjs.map +1 -1
  23. package/dist/card.d.cts +1 -1
  24. package/dist/card.d.ts +1 -1
  25. package/dist/card.js +1 -1
  26. package/dist/chip.cjs +47 -55
  27. package/dist/chip.cjs.map +1 -1
  28. package/dist/chip.d.cts +1 -1
  29. package/dist/chip.d.ts +1 -1
  30. package/dist/chip.js +2 -2
  31. package/dist/{chunk-5GT6L4BE.js → chunk-4NKKWBMP.js} +2 -3
  32. package/dist/chunk-4NKKWBMP.js.map +1 -0
  33. package/dist/{chunk-VPF7M2PB.js → chunk-7TQUULYB.js} +23 -26
  34. package/dist/chunk-7TQUULYB.js.map +1 -0
  35. package/dist/{chunk-U4P2VJCV.js → chunk-7YZBEH2K.js} +2 -3
  36. package/dist/chunk-7YZBEH2K.js.map +1 -0
  37. package/dist/{chunk-NJU7XT54.js → chunk-DMI64Z53.js} +4 -4
  38. package/dist/chunk-DMI64Z53.js.map +1 -0
  39. package/dist/{chunk-NADLY6LM.js → chunk-DUEQOGNR.js} +3 -4
  40. package/dist/chunk-DUEQOGNR.js.map +1 -0
  41. package/dist/{chunk-5LWU5T2C.js → chunk-GKZFVQW6.js} +16 -16
  42. package/dist/chunk-GKZFVQW6.js.map +1 -0
  43. package/dist/{chunk-ZTP2JSQ6.js → chunk-H4742H2N.js} +53 -27
  44. package/dist/chunk-H4742H2N.js.map +1 -0
  45. package/dist/{chunk-PSMGRUU5.js → chunk-HGECC2JH.js} +48 -56
  46. package/dist/chunk-HGECC2JH.js.map +1 -0
  47. package/dist/{chunk-DIWGVTWO.js → chunk-HVGCLUW2.js} +113 -57
  48. package/dist/chunk-HVGCLUW2.js.map +1 -0
  49. package/dist/{chunk-GMDNSU26.js → chunk-KK33I72F.js} +5 -5
  50. package/dist/{chunk-GMDNSU26.js.map → chunk-KK33I72F.js.map} +1 -1
  51. package/dist/{chunk-HT5XBHWN.js → chunk-KVXZEMAH.js} +4 -4
  52. package/dist/{chunk-HT5XBHWN.js.map → chunk-KVXZEMAH.js.map} +1 -1
  53. package/dist/{chunk-5MVIF5GP.js → chunk-LRWM4ZWZ.js} +4 -7
  54. package/dist/chunk-LRWM4ZWZ.js.map +1 -0
  55. package/dist/{chunk-XA74HBMH.js → chunk-LSIAP7ZZ.js} +8 -8
  56. package/dist/chunk-LSIAP7ZZ.js.map +1 -0
  57. package/dist/{chunk-HEXJCQRO.js → chunk-LWCRKQEV.js} +10 -10
  58. package/dist/chunk-LWCRKQEV.js.map +1 -0
  59. package/dist/{chunk-FEGFA3FN.js → chunk-LZYVTGJD.js} +3 -3
  60. package/dist/{chunk-FEGFA3FN.js.map → chunk-LZYVTGJD.js.map} +1 -1
  61. package/dist/{chunk-U2AL7XFY.js → chunk-O3VFEMJ7.js} +4 -4
  62. package/dist/chunk-O3VFEMJ7.js.map +1 -0
  63. package/dist/{chunk-HIRPMCQJ.js → chunk-OQYPWJDA.js} +12 -12
  64. package/dist/{chunk-HIRPMCQJ.js.map → chunk-OQYPWJDA.js.map} +1 -1
  65. package/dist/{chunk-AUVYU7M5.js → chunk-Q7VTD6NY.js} +20 -20
  66. package/dist/chunk-Q7VTD6NY.js.map +1 -0
  67. package/dist/{chunk-F3PI7A6V.js → chunk-TRR7TDVA.js} +3 -4
  68. package/dist/chunk-TRR7TDVA.js.map +1 -0
  69. package/dist/chunk-UGG35FPX.js +141 -0
  70. package/dist/chunk-UGG35FPX.js.map +1 -0
  71. package/dist/{chunk-HAXGOTZO.js → chunk-UK6RSS4J.js} +3 -3
  72. package/dist/chunk-UK6RSS4J.js.map +1 -0
  73. package/dist/{chunk-KQOR3C7E.js → chunk-ZLBGPLM3.js} +5 -5
  74. package/dist/chunk-ZLBGPLM3.js.map +1 -0
  75. package/dist/dialog.cjs +2 -2
  76. package/dist/dialog.cjs.map +1 -1
  77. package/dist/dialog.js +1 -1
  78. package/dist/expansion-panel/item.cjs +18 -18
  79. package/dist/expansion-panel/item.cjs.map +1 -1
  80. package/dist/expansion-panel/item.d.cts +2 -2
  81. package/dist/expansion-panel/item.d.ts +2 -2
  82. package/dist/expansion-panel/item.js +1 -1
  83. package/dist/expansion-panel.cjs +23 -23
  84. package/dist/expansion-panel.cjs.map +1 -1
  85. package/dist/expansion-panel.d.cts +3 -3
  86. package/dist/expansion-panel.d.ts +3 -3
  87. package/dist/expansion-panel.js +2 -2
  88. package/dist/{global.types-gx9A7mUe.d.cts → global.types-CjO3VRWu.d.cts} +1 -1
  89. package/dist/{global.types-gx9A7mUe.d.ts → global.types-CjO3VRWu.d.ts} +1 -1
  90. package/dist/hero.cjs +21 -24
  91. package/dist/hero.cjs.map +1 -1
  92. package/dist/hero.d.cts +1 -1
  93. package/dist/hero.d.ts +1 -1
  94. package/dist/hero.js +1 -1
  95. package/dist/icon.cjs +8 -8
  96. package/dist/icon.cjs.map +1 -1
  97. package/dist/icon.d.cts +1 -1
  98. package/dist/icon.d.ts +1 -1
  99. package/dist/icon.js +1 -1
  100. package/dist/{index-CNwl6vmH.d.ts → index-BgLrabTA.d.ts} +1 -1
  101. package/dist/{index-BDrBOeFI.d.cts → index-C19gZTrO.d.cts} +1 -1
  102. package/dist/index.cjs +475 -489
  103. package/dist/index.cjs.map +1 -1
  104. package/dist/index.d.cts +4 -4
  105. package/dist/index.d.ts +4 -4
  106. package/dist/index.js +68 -68
  107. package/dist/index.js.map +1 -1
  108. package/dist/input.cjs +62 -145
  109. package/dist/input.cjs.map +1 -1
  110. package/dist/input.d.cts +6 -6
  111. package/dist/input.d.ts +6 -6
  112. package/dist/input.js +1 -2
  113. package/dist/list/item.d.cts +2 -2
  114. package/dist/list/item.d.ts +2 -2
  115. package/dist/list.cjs +1 -2
  116. package/dist/list.cjs.map +1 -1
  117. package/dist/list.d.cts +3 -3
  118. package/dist/list.d.ts +3 -3
  119. package/dist/list.js +1 -1
  120. package/dist/masonry.cjs +1 -1
  121. package/dist/masonry.cjs.map +1 -1
  122. package/dist/masonry.js +1 -1
  123. package/dist/menu.cjs +51 -25
  124. package/dist/menu.cjs.map +1 -1
  125. package/dist/menu.js +1 -1
  126. package/dist/notification.d.cts +1 -1
  127. package/dist/notification.d.ts +1 -1
  128. package/dist/profileCard.cjs +112 -59
  129. package/dist/profileCard.cjs.map +1 -1
  130. package/dist/profileCard.d.cts +1 -1
  131. package/dist/profileCard.d.ts +1 -1
  132. package/dist/profileCard.js +2 -2
  133. package/dist/select.cjs +1 -2
  134. package/dist/select.cjs.map +1 -1
  135. package/dist/select.d.cts +2 -2
  136. package/dist/select.d.ts +2 -2
  137. package/dist/select.js +1 -1
  138. package/dist/slider.cjs +3 -3
  139. package/dist/slider.cjs.map +1 -1
  140. package/dist/slider.d.cts +1 -1
  141. package/dist/slider.d.ts +1 -1
  142. package/dist/slider.js +1 -1
  143. package/dist/styles.css +1156 -148
  144. package/dist/switch.cjs +14 -14
  145. package/dist/switch.cjs.map +1 -1
  146. package/dist/switch.d.cts +1 -1
  147. package/dist/switch.d.ts +1 -1
  148. package/dist/switch.js +1 -1
  149. package/dist/timeline.cjs.map +1 -1
  150. package/dist/timeline.d.cts +2 -2
  151. package/dist/timeline.d.ts +2 -2
  152. package/dist/timeline.js +2 -2
  153. package/dist/tooltip.cjs +2 -2
  154. package/dist/tooltip.cjs.map +1 -1
  155. package/dist/tooltip.js +1 -1
  156. package/dist/{types-DaTHYIPO.d.ts → types-B4puM-zr.d.cts} +3 -4
  157. package/dist/{types-CJ0zqPXF.d.cts → types-BDisBwnf.d.ts} +3 -4
  158. package/package.json +1 -1
  159. package/readme.md +21 -1
  160. package/dist/chunk-5GT6L4BE.js.map +0 -1
  161. package/dist/chunk-5LWU5T2C.js.map +0 -1
  162. package/dist/chunk-5MVIF5GP.js.map +0 -1
  163. package/dist/chunk-AUVYU7M5.js.map +0 -1
  164. package/dist/chunk-DIWGVTWO.js.map +0 -1
  165. package/dist/chunk-F3PI7A6V.js.map +0 -1
  166. package/dist/chunk-HAXGOTZO.js.map +0 -1
  167. package/dist/chunk-HEXJCQRO.js.map +0 -1
  168. package/dist/chunk-KQOR3C7E.js.map +0 -1
  169. package/dist/chunk-NADLY6LM.js.map +0 -1
  170. package/dist/chunk-NJU7XT54.js.map +0 -1
  171. package/dist/chunk-OBGYXMZ3.js +0 -218
  172. package/dist/chunk-OBGYXMZ3.js.map +0 -1
  173. package/dist/chunk-PSMGRUU5.js.map +0 -1
  174. package/dist/chunk-U2AL7XFY.js.map +0 -1
  175. package/dist/chunk-U4P2VJCV.js.map +0 -1
  176. package/dist/chunk-VPF7M2PB.js.map +0 -1
  177. package/dist/chunk-XA74HBMH.js.map +0 -1
  178. package/dist/chunk-ZTP2JSQ6.js.map +0 -1
@@ -0,0 +1,141 @@
1
+ import React from 'react';
2
+ import { twMerge } from 'tailwind-merge';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ // src/Form/Input/index.tsx
6
+ var Input = React.forwardRef(
7
+ ({ variant = "outline", size = "medium", rounded = "md", success, error, warn, className, wrapperClassName, label, prepend, append, ...props }, ref) => {
8
+ const { placeholder, onFocus, onBlur, ...inputProps } = props;
9
+ const reactId = React.useId();
10
+ const hasLabel = Boolean(label);
11
+ const hasProvidedPlaceholder = typeof placeholder === "string" && placeholder.trim().length > 0;
12
+ const hidePlaceholderUntilFocus = hasLabel && hasProvidedPlaceholder;
13
+ const [isFocused, setIsFocused] = React.useState(false);
14
+ const classBase = "input-base transition-colors duration-200 w-full has-[input:disabled]:opacity-50 has-[input:disabled]:cursor-not-allowed";
15
+ const inputBase = "peer block w-full min-w-0 border-0 bg-transparent p-0 text-gray-900 dark:text-gray-100 placeholder:text-gray-500 dark:placeholder:text-gray-400 focus:outline-none focus:ring-0";
16
+ const variantClasses = {
17
+ solid: "rounded border border-gray-400 bg-white shadow-sm focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-within:border-primary/70 dark:focus-within:ring-primary/40",
18
+ sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-within:border-primary/70 dark:focus-within:ring-primary/40",
19
+ outline: "rounded border-2 border-black bg-white focus-within:border-black focus-within:ring-2 focus-within:ring-black/30 dark:border-black dark:bg-transparent dark:focus-within:border-black dark:focus-within:ring-black/40",
20
+ text: "rounded-none border-0 border-b border-transparent px-0 bg-transparent focus-within:border-primary focus-within:ring-0 focus-within:ring-transparent dark:border-b-gray-600 dark:focus-within:border-primary/70",
21
+ ghost: "rounded border border-transparent bg-gray-50 text-gray-900 focus-within:bg-white focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/15 dark:bg-slate-800 dark:text-gray-100 dark:focus-within:bg-slate-700 dark:focus-within:border-primary/60 dark:focus-within:ring-primary/25",
22
+ filled: "rounded border border-gray-200 bg-gray-100 focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-within:border-primary/60 dark:focus-within:ring-primary/30",
23
+ underlined: "rounded-none border-0 border-b border-gray-300 px-0 bg-transparent focus-within:border-primary focus-within:ring-0 focus-within:ring-transparent dark:border-b-gray-600 dark:focus-within:border-primary/70"
24
+ };
25
+ const roundedClasses = {
26
+ sm: "rounded-sm",
27
+ md: "rounded-md",
28
+ lg: "rounded-lg",
29
+ xl: "rounded-xl",
30
+ "2xl": "rounded-2xl",
31
+ "3xl": "rounded-3xl"
32
+ };
33
+ const sizeClasses = {
34
+ "x-small": {
35
+ paddingY: "py-2",
36
+ paddingX: "px-2",
37
+ text: "text-xs"
38
+ },
39
+ small: {
40
+ paddingY: "py-2.5",
41
+ paddingX: "px-2.5",
42
+ text: "text-sm"
43
+ },
44
+ medium: {
45
+ paddingY: "py-3",
46
+ paddingX: "px-3",
47
+ text: "text-base"
48
+ },
49
+ large: {
50
+ paddingY: "py-3.5",
51
+ paddingX: "px-3.5",
52
+ text: "text-lg"
53
+ },
54
+ "x-large": {
55
+ paddingY: "py-4",
56
+ paddingX: "px-4",
57
+ text: "text-xl"
58
+ }
59
+ };
60
+ const status = error ? { tone: "error", message: error } : warn ? { tone: "warn", message: warn } : success ? { tone: "success", message: success } : void 0;
61
+ const statusClasses = {
62
+ error: "border-red-500 focus:border-red-500 focus:ring-red-400",
63
+ warn: "border-amber-500 focus:border-amber-500 focus:ring-amber-400",
64
+ success: "border-emerald-500 focus:border-emerald-500 focus:ring-emerald-400"
65
+ };
66
+ const statusMessageClasses = {
67
+ error: "text-red-600 dark:text-red-300",
68
+ warn: "text-amber-600 dark:text-amber-300",
69
+ success: "text-emerald-600 dark:text-emerald-300"
70
+ };
71
+ const variantClass = variantClasses[variant] ?? variantClasses.outline;
72
+ const toneClass = status ? statusClasses[status.tone] : void 0;
73
+ const hasPrepend = typeof prepend === "string" ? prepend.trim().length > 0 : Boolean(prepend);
74
+ const hasAppend = typeof append === "string" ? append.trim().length > 0 : Boolean(append);
75
+ const sizeConfig = sizeClasses[size] ?? sizeClasses.medium;
76
+ const sizeClass = [sizeConfig.paddingY, sizeConfig.paddingX, sizeConfig.text].join(" ");
77
+ const roundedClass = variant === "sharp" || variant === "text" || variant === "underlined" ? "rounded-none" : roundedClasses[rounded];
78
+ const inputName = inputProps.name || reactId;
79
+ const basePlaceholder = placeholder ?? (hasLabel ? " " : void 0);
80
+ const placeholderValue = hidePlaceholderUntilFocus ? isFocused ? placeholder : " " : basePlaceholder;
81
+ const placeholderClass = hidePlaceholderUntilFocus ? "placeholder-transparent focus:placeholder-gray-500 focus:dark:placeholder-gray-400" : void 0;
82
+ const renderPrepend = hasPrepend ? typeof prepend === "string" ? /* @__PURE__ */ jsx("span", { className: twMerge("text-gray-500 dark:text-gray-400", sizeConfig.text), children: prepend }) : prepend : null;
83
+ const renderAppend = hasAppend ? typeof append === "string" ? /* @__PURE__ */ jsx("span", { className: twMerge("text-gray-500 dark:text-gray-400", sizeConfig.text), children: append }) : append : null;
84
+ const labelBgDefault = "bg-white px-1 dark:bg-slate-900";
85
+ const handleFocus = (event) => {
86
+ if (hidePlaceholderUntilFocus) setIsFocused(true);
87
+ onFocus?.(event);
88
+ };
89
+ const handleBlur = (event) => {
90
+ if (hidePlaceholderUntilFocus) setIsFocused(false);
91
+ onBlur?.(event);
92
+ };
93
+ return /* @__PURE__ */ jsxs("div", { className: twMerge("flex flex-col gap-1", wrapperClassName), children: [
94
+ /* @__PURE__ */ jsxs("div", { className: twMerge("flex w-full items-center gap-2", classBase, variantClass, roundedClass, toneClass, sizeClass, className), children: [
95
+ hasPrepend && /* @__PURE__ */ jsx("span", { className: "shrink-0 flex items-center", children: renderPrepend }),
96
+ /* @__PURE__ */ jsxs("div", { className: "relative min-w-0 flex-1", children: [
97
+ /* @__PURE__ */ jsx(
98
+ "input",
99
+ {
100
+ ...inputProps,
101
+ ref,
102
+ id: inputName,
103
+ name: inputName,
104
+ placeholder: placeholderValue,
105
+ onFocus: handleFocus,
106
+ onBlur: handleBlur,
107
+ className: twMerge(inputBase, placeholderClass)
108
+ }
109
+ ),
110
+ label && /* @__PURE__ */ jsx(
111
+ "label",
112
+ {
113
+ htmlFor: inputName,
114
+ className: twMerge(
115
+ "absolute left-0 z-10 transition-all duration-150 pointer-events-none text-gray-700 dark:text-gray-200",
116
+ // Floated state: keep label above the border for readability
117
+ "-top-2 -translate-y-full text-xs",
118
+ labelBgDefault,
119
+ // focus state keeps the same elevated position
120
+ "peer-focus:left-0 peer-focus:-top-5 peer-focus:-translate-y-full peer-focus:text-xs peer-focus:text-gray-600 dark:peer-focus:text-gray-300",
121
+ // when input is empty (placeholder shown) -> center label inside input
122
+ "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",
123
+ // explicit filled state so label remains visible for any variant/value combination
124
+ "peer-[&:not(:placeholder-shown)]:left-0 peer-[&:not(:placeholder-shown)]:-top-2 peer-[&:not(:placeholder-shown)]:-translate-y-full peer-[&:not(:placeholder-shown)]:text-xs peer-[&:not(:placeholder-shown)]:text-gray-700 dark:peer-[&:not(:placeholder-shown)]:text-gray-200"
125
+ ),
126
+ children: label
127
+ }
128
+ )
129
+ ] }),
130
+ hasAppend && /* @__PURE__ */ jsx("span", { className: "shrink-0 flex items-center", children: renderAppend })
131
+ ] }),
132
+ status?.message && /* @__PURE__ */ jsx("span", { className: twMerge("text-sm", statusMessageClasses[status.tone]), children: status.message })
133
+ ] });
134
+ }
135
+ );
136
+ Input.displayName = "Input";
137
+ var Input_default = Input;
138
+
139
+ export { Input_default };
140
+ //# sourceMappingURL=chunk-UGG35FPX.js.map
141
+ //# sourceMappingURL=chunk-UGG35FPX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Form/Input/index.tsx"],"names":[],"mappings":"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","file":"chunk-UGG35FPX.js","sourcesContent":["import React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { InputProp, InputVariant, InputSize, InputRounded } from './types';\n\n/**\n * Text input with multiple visual variants and inline prepend/append adornments.\n * Label is purely CSS-driven (peer + placeholder-shown + focus), no hooks used.\n */\n\nconst Input = React.forwardRef<HTMLInputElement, InputProp>(\n (\n { variant = 'outline', size = 'medium', rounded = 'md', success, error, warn, className, wrapperClassName, label, prepend, append, ...props },\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 = 'input-base transition-colors duration-200 w-full has-[input:disabled]:opacity-50 has-[input:disabled]:cursor-not-allowed';\n const inputBase =\n 'peer block w-full min-w-0 border-0 bg-transparent p-0 text-gray-900 dark:text-gray-100 placeholder:text-gray-500 dark:placeholder:text-gray-400 focus:outline-none focus:ring-0';\n const variantClasses = {\n solid:\n 'rounded border border-gray-400 bg-white shadow-sm focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-within:border-primary/70 dark:focus-within:ring-primary/40',\n sharp:\n 'rounded-none border border-gray-400 bg-white shadow-sm focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-within:border-primary/70 dark:focus-within:ring-primary/40',\n outline:\n 'rounded border-2 border-black bg-white focus-within:border-black focus-within:ring-2 focus-within:ring-black/30 dark:border-black dark:bg-transparent dark:focus-within:border-black dark:focus-within:ring-black/40',\n text: 'rounded-none border-0 border-b border-transparent px-0 bg-transparent focus-within:border-primary focus-within:ring-0 focus-within:ring-transparent dark:border-b-gray-600 dark:focus-within:border-primary/70',\n ghost:\n 'rounded border border-transparent bg-gray-50 text-gray-900 focus-within:bg-white focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/15 dark:bg-slate-800 dark:text-gray-100 dark:focus-within:bg-slate-700 dark:focus-within:border-primary/60 dark:focus-within:ring-primary/25',\n filled:\n 'rounded border border-gray-200 bg-gray-100 focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-within:border-primary/60 dark:focus-within:ring-primary/30',\n underlined:\n 'rounded-none border-0 border-b border-gray-300 px-0 bg-transparent focus-within:border-primary focus-within:ring-0 focus-within:ring-transparent dark:border-b-gray-600 dark:focus-within:border-primary/70'\n } satisfies Record<InputVariant, string>;\n const roundedClasses = {\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n '3xl': 'rounded-3xl'\n } satisfies Record<InputRounded, string>;\n const sizeClasses = {\n 'x-small': {\n paddingY: 'py-2',\n paddingX: 'px-2',\n text: 'text-xs'\n },\n small: {\n paddingY: 'py-2.5',\n paddingX: 'px-2.5',\n text: 'text-sm'\n },\n medium: {\n paddingY: 'py-3',\n paddingX: 'px-3',\n text: 'text-base'\n },\n large: {\n paddingY: 'py-3.5',\n paddingX: 'px-3.5',\n text: 'text-lg'\n },\n 'x-large': {\n paddingY: 'py-4',\n paddingX: 'px-4',\n text: 'text-xl'\n }\n } satisfies Record<\n InputSize,\n {\n paddingY: string;\n paddingX: 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 const hasPrepend = typeof prepend === 'string' ? prepend.trim().length > 0 : Boolean(prepend);\n const hasAppend = typeof append === 'string' ? append.trim().length > 0 : Boolean(append);\n const sizeConfig = sizeClasses[size] ?? sizeClasses.medium;\n const sizeClass = [sizeConfig.paddingY, sizeConfig.paddingX, sizeConfig.text].join(' ');\n const roundedClass = variant === 'sharp' || variant === 'text' || variant === 'underlined' ? 'rounded-none' : roundedClasses[rounded];\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 ? (isFocused ? placeholder : ' ') : basePlaceholder;\n const placeholderClass = hidePlaceholderUntilFocus\n ? 'placeholder-transparent focus:placeholder-gray-500 focus:dark:placeholder-gray-400'\n : undefined;\n\n const renderPrepend = hasPrepend ? (\n typeof prepend === 'string' ? (\n <span className={twMerge('text-gray-500 dark:text-gray-400', sizeConfig.text)}>{prepend}</span>\n ) : (\n prepend\n )\n ) : null;\n const renderAppend = hasAppend ? (\n typeof append === 'string' ? (\n <span className={twMerge('text-gray-500 dark:text-gray-400', sizeConfig.text)}>{append}</span>\n ) : (\n append\n )\n ) : null;\n\n // Background for floated label — keep transparent for outline/text/underlined variants\n const labelBgDefault = 'bg-white px-1 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={twMerge('flex w-full items-center gap-2', classBase, variantClass, roundedClass, toneClass, sizeClass, className)}>\n {hasPrepend && <span className='shrink-0 flex items-center'>{renderPrepend}</span>}\n\n <div className='relative min-w-0 flex-1'>\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(inputBase, placeholderClass)}\n />\n\n {label && (\n <label\n htmlFor={inputName}\n className={twMerge(\n 'absolute left-0 z-10 transition-all duration-150 pointer-events-none text-gray-700 dark:text-gray-200',\n // Floated state: keep label above the border for readability\n '-top-2 -translate-y-full text-xs',\n labelBgDefault,\n // focus state keeps the same elevated position\n 'peer-focus:left-0 peer-focus:-top-5 peer-focus:-translate-y-full peer-focus:text-xs peer-focus:text-gray-600 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 // explicit filled state so label remains visible for any variant/value combination\n 'peer-[&:not(:placeholder-shown)]:left-0 peer-[&:not(:placeholder-shown)]:-top-2 peer-[&:not(:placeholder-shown)]:-translate-y-full peer-[&:not(:placeholder-shown)]:text-xs peer-[&:not(:placeholder-shown)]:text-gray-700 dark:peer-[&:not(:placeholder-shown)]:text-gray-200'\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {hasAppend && <span className='shrink-0 flex items-center'>{renderAppend}</span>}\n </div>\n {status?.message && <span className={twMerge('text-sm', statusMessageClasses[status.tone])}>{status.message}</span>}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport default Input;\n"]}
@@ -3,7 +3,7 @@ import { twMerge } from 'tailwind-merge';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  // src/Containment/Masonry/index.tsx
6
- var masonryBaseClass = "masonry-grid w-full";
6
+ var masonryBaseClass = "masonry-grid w-full text-gray-900 dark:text-gray-100";
7
7
  var itemBaseClass = "masonry-item block break-inside-avoid";
8
8
  var MasonryBase = (props, ref) => {
9
9
  const {
@@ -90,5 +90,5 @@ function resolveItemContent(item, index, renderItem) {
90
90
  }
91
91
 
92
92
  export { Masonry_default };
93
- //# sourceMappingURL=chunk-HAXGOTZO.js.map
94
- //# sourceMappingURL=chunk-HAXGOTZO.js.map
93
+ //# sourceMappingURL=chunk-UK6RSS4J.js.map
94
+ //# sourceMappingURL=chunk-UK6RSS4J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Containment/Masonry/index.tsx"],"names":[],"mappings":"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","file":"chunk-UK6RSS4J.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 text-gray-900 dark:text-gray-100';\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"]}
@@ -3,14 +3,14 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
 
4
4
  // src/Info/Alert/index.tsx
5
5
  var Alert = ({ className, children, ...rest }) => {
6
- const classBase = "text-center p-4 bg-neutral-200 rounded-md ";
7
- return /* @__PURE__ */ jsxs("div", { ...rest, className: twMerge("grid grid-cols-7 bg-neutral-200", className), children: [
8
- /* @__PURE__ */ jsx("div", { className: "col-span-1 pt-4 pl-4", children: /* @__PURE__ */ jsx("i", { className: "mdi mdi-google text-2xl" }) }),
6
+ const classBase = "text-center p-4 bg-neutral-200 text-gray-900 rounded-md dark:bg-neutral-800 dark:text-gray-100";
7
+ return /* @__PURE__ */ jsxs("div", { ...rest, className: twMerge("grid grid-cols-7 bg-neutral-200 dark:bg-neutral-800", className), children: [
8
+ /* @__PURE__ */ jsx("div", { className: "col-span-1 pt-4 pl-4", children: /* @__PURE__ */ jsx("i", { className: "mdi mdi-google text-2xl text-gray-700 dark:text-gray-200" }) }),
9
9
  /* @__PURE__ */ jsx("div", { className: twMerge("col-span-6", classBase), children })
10
10
  ] });
11
11
  };
12
12
  var Alert_default = Alert;
13
13
 
14
14
  export { Alert_default };
15
- //# sourceMappingURL=chunk-KQOR3C7E.js.map
16
- //# sourceMappingURL=chunk-KQOR3C7E.js.map
15
+ //# sourceMappingURL=chunk-ZLBGPLM3.js.map
16
+ //# sourceMappingURL=chunk-ZLBGPLM3.js.map
@@ -0,0 +1 @@
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,gGAAA;AAElB,EAAA,uBACE,IAAA,CAAC,SAAK,GAAG,IAAA,EAAM,WAAW,OAAA,CAAQ,qDAAA,EAAuD,SAAS,CAAA,EAChG,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,sBAAA,EACb,8BAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4DAA2D,CAAA,EAC1E,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-ZLBGPLM3.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 text-gray-900 rounded-md dark:bg-neutral-800 dark:text-gray-100';\n\n return (\n <div {...rest} className={twMerge('grid grid-cols-7 bg-neutral-200 dark:bg-neutral-800', className)}>\n <div className='col-span-1 pt-4 pl-4'>\n <i className='mdi mdi-google text-2xl text-gray-700 dark:text-gray-200'></i>\n </div>\n <div className={twMerge('col-span-6', classBase)}>{children}</div>\n </div>\n );\n};\nexport default Alert;\n"]}
package/dist/dialog.cjs CHANGED
@@ -27,9 +27,9 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
27
 
28
28
  // src/Containment/Dialog/index.tsx
29
29
  var containerBaseClasses = "fixed inset-0 z-[70] flex items-center justify-center p-4 sm:p-8 data-[state=closed]:pointer-events-none";
30
- var overlayBaseClasses = "absolute inset-0 bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100";
30
+ var overlayBaseClasses = "absolute inset-0 bg-gray-900/55 dark:bg-black/70 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100";
31
31
  var panelWrapperClasses = "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";
32
- var panelBaseClasses = "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";
32
+ var panelBaseClasses = "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 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:bg-gray-900 dark:text-gray-100 dark:shadow-black/40 dark:ring-white/10 dark:focus-visible:ring-offset-gray-900";
33
33
  var resolveSizeValue = (value) => {
34
34
  if (value === void 0) {
35
35
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Containment/Dialog/index.tsx"],"names":["React","jsx","twMerge","jsxs","createPortal","Fragment"],"mappings":"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","file":"dialog.cjs","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"]}
1
+ {"version":3,"sources":["../src/Containment/Dialog/index.tsx"],"names":["React","jsx","twMerge","jsxs","createPortal","Fragment"],"mappings":"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","file":"dialog.cjs","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 dark:bg-black/70 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 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:bg-gray-900 dark:text-gray-100 dark:shadow-black/40 dark:ring-white/10 dark:focus-visible:ring-offset-gray-900';\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/dialog.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Dialog_default as default } from './chunk-NJU7XT54.js';
1
+ export { Dialog_default as default } from './chunk-DMI64Z53.js';
2
2
  //# sourceMappingURL=dialog.js.map
3
3
  //# sourceMappingURL=dialog.js.map
@@ -25,20 +25,20 @@ var roundedClasses = {
25
25
  xl: "rounded-xl"
26
26
  };
27
27
  var itemVariantClasses = {
28
- elevated: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5",
29
- outlined: "bg-white border border-gray-200",
30
- tonal: "bg-gray-50 border border-gray-100",
28
+ elevated: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5 dark:bg-gray-900 dark:border-gray-800 dark:shadow-black/20",
29
+ outlined: "bg-white border border-gray-200 dark:bg-gray-900 dark:border-gray-800",
30
+ tonal: "bg-gray-50 border border-gray-100 dark:bg-gray-900/70 dark:border-gray-800",
31
31
  plain: "bg-transparent border border-transparent"
32
32
  };
33
33
  var accentClasses = {
34
- primary: { text: "text-primary", bg: "bg-primary/5", border: "border-primary/30" },
35
- neutral: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
36
- info: { text: "text-sky-600", bg: "bg-sky-50", border: "border-sky-200" },
37
- success: { text: "text-emerald-600", bg: "bg-emerald-50", border: "border-emerald-200" },
38
- warning: { text: "text-amber-600", bg: "bg-amber-50", border: "border-amber-200" },
39
- danger: { text: "text-red-600", bg: "bg-red-50", border: "border-red-200" },
40
- surface: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
41
- bw: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" }
34
+ primary: { text: "text-primary", bg: "bg-primary/5 dark:bg-primary/15", border: "border-primary/30 dark:border-primary/40" },
35
+ neutral: { text: "text-gray-900 dark:text-gray-100", bg: "bg-gray-100 dark:bg-gray-800", border: "border-gray-200 dark:border-gray-700" },
36
+ info: { text: "text-sky-600 dark:text-sky-300", bg: "bg-sky-50 dark:bg-sky-900/30", border: "border-sky-200 dark:border-sky-700/60" },
37
+ success: { text: "text-emerald-600 dark:text-emerald-300", bg: "bg-emerald-50 dark:bg-emerald-900/30", border: "border-emerald-200 dark:border-emerald-700/60" },
38
+ warning: { text: "text-amber-600 dark:text-amber-300", bg: "bg-amber-50 dark:bg-amber-900/30", border: "border-amber-200 dark:border-amber-700/60" },
39
+ danger: { text: "text-red-600 dark:text-red-300", bg: "bg-red-50 dark:bg-red-900/30", border: "border-red-200 dark:border-red-700/60" },
40
+ surface: { text: "text-gray-900 dark:text-gray-100", bg: "bg-gray-100 dark:bg-gray-800", border: "border-gray-200 dark:border-gray-700" },
41
+ bw: { text: "text-gray-900 dark:text-gray-100", bg: "bg-gray-100 dark:bg-gray-800", border: "border-gray-200 dark:border-gray-700" }
42
42
  };
43
43
  var uniqueIdCounter = 0;
44
44
  var generateId = (prefix) => `${prefix}-${++uniqueIdCounter}`;
@@ -95,7 +95,7 @@ var ExpansionPanelItemInner = (props) => {
95
95
  const toggleIconNode = hideToggleIcon ? null : isExpanded && collapseIcon ? collapseIcon : expandIcon ?? defaultToggleIcon;
96
96
  const shouldRotateDefaultIcon = !expandIcon && !collapseIcon && !hideToggleIcon;
97
97
  const toggleWrapperClass = tailwindMerge.twMerge(
98
- "expansion-panel-item__icon ml-3 flex h-6 w-6 items-center justify-center text-gray-500 transition-transform duration-200",
98
+ "expansion-panel-item__icon ml-3 flex h-6 w-6 items-center justify-center text-gray-500 dark:text-gray-400 transition-transform duration-200",
99
99
  shouldRotateDefaultIcon && isExpanded ? "rotate-180" : void 0
100
100
  );
101
101
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -136,12 +136,12 @@ var ExpansionPanelItemInner = (props) => {
136
136
  "aria-disabled": disabled || void 0,
137
137
  "data-state": isExpanded ? "open" : "closed",
138
138
  children: [
139
- prepend && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: prepend }),
139
+ prepend && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500 dark:text-gray-400", children: prepend }),
140
140
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 text-left", children: [
141
- title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: tailwindMerge.twMerge("truncate font-medium text-gray-900", titleClass), children: title }),
142
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-gray-500", children: subtitle })
141
+ title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: tailwindMerge.twMerge("truncate font-medium text-gray-900 dark:text-gray-100", titleClass), children: title }),
142
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-gray-500 dark:text-gray-400", children: subtitle })
143
143
  ] }),
144
- append && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto flex items-center gap-2 text-sm text-gray-500", children: append }),
144
+ append && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400", children: append }),
145
145
  !hideToggleIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: toggleWrapperClass, children: toggleIconNode })
146
146
  ]
147
147
  }
@@ -149,13 +149,13 @@ var ExpansionPanelItemInner = (props) => {
149
149
  hasContent && /* @__PURE__ */ jsxRuntime.jsx(
150
150
  "div",
151
151
  {
152
- className: "expansion-panel-item__content overflow-hidden border-t border-gray-100",
152
+ className: "expansion-panel-item__content overflow-hidden border-t border-gray-100 dark:border-gray-800",
153
153
  "data-state": isExpanded ? "open" : "closed",
154
154
  children: /* @__PURE__ */ jsxRuntime.jsx(
155
155
  "div",
156
156
  {
157
157
  className: tailwindMerge.twMerge(
158
- "expansion-panel-item__body min-h-0 px-4 pt-0 text-sm text-gray-600",
158
+ "expansion-panel-item__body min-h-0 px-4 pt-0 text-sm text-gray-600 dark:text-gray-300",
159
159
  activeBorderClass,
160
160
  contentClassName
161
161
  ),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Containment/ExpansionPanel/context.ts","../../src/Containment/ExpansionPanel/ExpansionPanelItem.tsx"],"names":["twMerge","jsx","jsxs","forwardRef"],"mappings":"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","file":"item.cjs","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
+ {"version":3,"sources":["../../src/Containment/ExpansionPanel/context.ts","../../src/Containment/ExpansionPanel/ExpansionPanelItem.tsx"],"names":["twMerge","jsx","jsxs","forwardRef"],"mappings":"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","file":"item.cjs","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 dark:bg-gray-900 dark:border-gray-800 dark:shadow-black/20',\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 accentClasses: Record<Palette, { text: string; bg: string; border: string }> = {\n primary: { text: 'text-primary', bg: 'bg-primary/5 dark:bg-primary/15', border: 'border-primary/30 dark:border-primary/40' },\n neutral: { text: 'text-gray-900 dark:text-gray-100', bg: 'bg-gray-100 dark:bg-gray-800', border: 'border-gray-200 dark:border-gray-700' },\n info: { text: 'text-sky-600 dark:text-sky-300', bg: 'bg-sky-50 dark:bg-sky-900/30', border: 'border-sky-200 dark:border-sky-700/60' },\n success: { text: 'text-emerald-600 dark:text-emerald-300', bg: 'bg-emerald-50 dark:bg-emerald-900/30', border: 'border-emerald-200 dark:border-emerald-700/60' },\n warning: { text: 'text-amber-600 dark:text-amber-300', bg: 'bg-amber-50 dark:bg-amber-900/30', border: 'border-amber-200 dark:border-amber-700/60' },\n danger: { text: 'text-red-600 dark:text-red-300', bg: 'bg-red-50 dark:bg-red-900/30', border: 'border-red-200 dark:border-red-700/60' },\n surface: { text: 'text-gray-900 dark:text-gray-100', bg: 'bg-gray-100 dark:bg-gray-800', border: 'border-gray-200 dark:border-gray-700' },\n bw: { text: 'text-gray-900 dark:text-gray-100', bg: 'bg-gray-100 dark:bg-gray-800', border: 'border-gray-200 dark:border-gray-700' }\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 dark:text-gray-400 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 dark:text-gray-400'>\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 dark:text-gray-100', titleClass)}>\n {title}\n </span>\n )}\n {subtitle && <span className='text-sm text-gray-500 dark:text-gray-400'>{subtitle}</span>}\n </span>\n {append && (\n <span className='ml-auto flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400'>{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 dark:border-gray-800'\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 dark:text-gray-300',\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,3 +1,3 @@
1
1
  import 'react';
2
- export { a as default } from '../ExpansionPanelItem-C9KW1yBc.cjs';
3
- import '../global.types-gx9A7mUe.cjs';
2
+ export { a as default } from '../ExpansionPanelItem-By0ziOVw.cjs';
3
+ import '../global.types-CjO3VRWu.cjs';
@@ -1,3 +1,3 @@
1
1
  import 'react';
2
- export { a as default } from '../ExpansionPanelItem-Pi3BM-4v.js';
3
- import '../global.types-gx9A7mUe.js';
2
+ export { a as default } from '../ExpansionPanelItem-CFfWX7ia.js';
3
+ import '../global.types-CjO3VRWu.js';
@@ -1,3 +1,3 @@
1
- export { ExpansionPanelItem_default as default } from '../chunk-AUVYU7M5.js';
1
+ export { ExpansionPanelItem_default as default } from '../chunk-Q7VTD6NY.js';
2
2
  //# sourceMappingURL=item.js.map
3
3
  //# sourceMappingURL=item.js.map
@@ -73,20 +73,20 @@ var roundedClasses = {
73
73
  xl: "rounded-xl"
74
74
  };
75
75
  var itemVariantClasses = {
76
- elevated: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5",
77
- outlined: "bg-white border border-gray-200",
78
- tonal: "bg-gray-50 border border-gray-100",
76
+ elevated: "bg-white border border-gray-200 shadow-sm shadow-gray-900/5 dark:bg-gray-900 dark:border-gray-800 dark:shadow-black/20",
77
+ outlined: "bg-white border border-gray-200 dark:bg-gray-900 dark:border-gray-800",
78
+ tonal: "bg-gray-50 border border-gray-100 dark:bg-gray-900/70 dark:border-gray-800",
79
79
  plain: "bg-transparent border border-transparent"
80
80
  };
81
81
  var accentClasses = {
82
- primary: { text: "text-primary", bg: "bg-primary/5", border: "border-primary/30" },
83
- neutral: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
84
- info: { text: "text-sky-600", bg: "bg-sky-50", border: "border-sky-200" },
85
- success: { text: "text-emerald-600", bg: "bg-emerald-50", border: "border-emerald-200" },
86
- warning: { text: "text-amber-600", bg: "bg-amber-50", border: "border-amber-200" },
87
- danger: { text: "text-red-600", bg: "bg-red-50", border: "border-red-200" },
88
- surface: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" },
89
- bw: { text: "text-gray-900", bg: "bg-gray-100", border: "border-gray-200" }
82
+ primary: { text: "text-primary", bg: "bg-primary/5 dark:bg-primary/15", border: "border-primary/30 dark:border-primary/40" },
83
+ neutral: { text: "text-gray-900 dark:text-gray-100", bg: "bg-gray-100 dark:bg-gray-800", border: "border-gray-200 dark:border-gray-700" },
84
+ info: { text: "text-sky-600 dark:text-sky-300", bg: "bg-sky-50 dark:bg-sky-900/30", border: "border-sky-200 dark:border-sky-700/60" },
85
+ success: { text: "text-emerald-600 dark:text-emerald-300", bg: "bg-emerald-50 dark:bg-emerald-900/30", border: "border-emerald-200 dark:border-emerald-700/60" },
86
+ warning: { text: "text-amber-600 dark:text-amber-300", bg: "bg-amber-50 dark:bg-amber-900/30", border: "border-amber-200 dark:border-amber-700/60" },
87
+ danger: { text: "text-red-600 dark:text-red-300", bg: "bg-red-50 dark:bg-red-900/30", border: "border-red-200 dark:border-red-700/60" },
88
+ surface: { text: "text-gray-900 dark:text-gray-100", bg: "bg-gray-100 dark:bg-gray-800", border: "border-gray-200 dark:border-gray-700" },
89
+ bw: { text: "text-gray-900 dark:text-gray-100", bg: "bg-gray-100 dark:bg-gray-800", border: "border-gray-200 dark:border-gray-700" }
90
90
  };
91
91
  var uniqueIdCounter = 0;
92
92
  var generateId = (prefix) => `${prefix}-${++uniqueIdCounter}`;
@@ -143,7 +143,7 @@ var ExpansionPanelItemInner = (props) => {
143
143
  const toggleIconNode = hideToggleIcon ? null : isExpanded && collapseIcon ? collapseIcon : expandIcon ?? defaultToggleIcon;
144
144
  const shouldRotateDefaultIcon = !expandIcon && !collapseIcon && !hideToggleIcon;
145
145
  const toggleWrapperClass = tailwindMerge.twMerge(
146
- "expansion-panel-item__icon ml-3 flex h-6 w-6 items-center justify-center text-gray-500 transition-transform duration-200",
146
+ "expansion-panel-item__icon ml-3 flex h-6 w-6 items-center justify-center text-gray-500 dark:text-gray-400 transition-transform duration-200",
147
147
  shouldRotateDefaultIcon && isExpanded ? "rotate-180" : void 0
148
148
  );
149
149
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -184,12 +184,12 @@ var ExpansionPanelItemInner = (props) => {
184
184
  "aria-disabled": disabled || void 0,
185
185
  "data-state": isExpanded ? "open" : "closed",
186
186
  children: [
187
- prepend && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500", children: prepend }),
187
+ prepend && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-10 w-10 items-center justify-center text-gray-500 dark:text-gray-400", children: prepend }),
188
188
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 text-left", children: [
189
- title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: tailwindMerge.twMerge("truncate font-medium text-gray-900", titleClass), children: title }),
190
- subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-gray-500", children: subtitle })
189
+ title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: tailwindMerge.twMerge("truncate font-medium text-gray-900 dark:text-gray-100", titleClass), children: title }),
190
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-gray-500 dark:text-gray-400", children: subtitle })
191
191
  ] }),
192
- append && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto flex items-center gap-2 text-sm text-gray-500", children: append }),
192
+ append && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400", children: append }),
193
193
  !hideToggleIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: toggleWrapperClass, children: toggleIconNode })
194
194
  ]
195
195
  }
@@ -197,13 +197,13 @@ var ExpansionPanelItemInner = (props) => {
197
197
  hasContent && /* @__PURE__ */ jsxRuntime.jsx(
198
198
  "div",
199
199
  {
200
- className: "expansion-panel-item__content overflow-hidden border-t border-gray-100",
200
+ className: "expansion-panel-item__content overflow-hidden border-t border-gray-100 dark:border-gray-800",
201
201
  "data-state": isExpanded ? "open" : "closed",
202
202
  children: /* @__PURE__ */ jsxRuntime.jsx(
203
203
  "div",
204
204
  {
205
205
  className: tailwindMerge.twMerge(
206
- "expansion-panel-item__body min-h-0 px-4 pt-0 text-sm text-gray-600",
206
+ "expansion-panel-item__body min-h-0 px-4 pt-0 text-sm text-gray-600 dark:text-gray-300",
207
207
  activeBorderClass,
208
208
  contentClassName
209
209
  ),
@@ -221,9 +221,9 @@ ExpansionPanelItem.displayName = "ExpansionPanelItem";
221
221
  markExpansionPanelItem(ExpansionPanelItem);
222
222
  var ExpansionPanelItem_default = ExpansionPanelItem;
223
223
  var variantContainerClasses = {
224
- elevated: "bg-white border border-gray-200 shadow-lg shadow-gray-900/10",
225
- outlined: "bg-white border border-gray-200",
226
- tonal: "bg-gray-50 border border-gray-100",
224
+ 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",
225
+ outlined: "bg-white border border-gray-200 dark:bg-gray-900 dark:border-gray-800",
226
+ tonal: "bg-gray-50 border border-gray-100 dark:bg-gray-900/70 dark:border-gray-800",
227
227
  plain: "bg-transparent border border-transparent"
228
228
  };
229
229
  var roundedClasses2 = {
@@ -274,7 +274,7 @@ var ExpansionPanelInner = (props, forwardedRef) => {
274
274
  };
275
275
  const variantClass = divider ? variantContainerClasses[variant] : "bg-transparent border border-transparent shadow-none";
276
276
  const shapeClass = roundedClasses2[rounded] ?? roundedClasses2.lg;
277
- const layoutClass = divider ? "divide-y divide-gray-100 overflow-hidden" : "gap-4";
277
+ const layoutClass = divider ? "divide-y divide-gray-100 dark:divide-gray-800 overflow-hidden" : "gap-4";
278
278
  const enhancedChildren = injectExpansionPanelContext(children, providerValue);
279
279
  return /* @__PURE__ */ jsxRuntime.jsx(
280
280
  "div",
@@ -282,7 +282,7 @@ var ExpansionPanelInner = (props, forwardedRef) => {
282
282
  ...rest,
283
283
  ref: forwardedRef,
284
284
  className: tailwindMerge.twMerge(
285
- "expansion-panel flex w-full flex-col text-gray-900",
285
+ "expansion-panel flex w-full flex-col text-gray-900 dark:text-gray-100",
286
286
  variantClass,
287
287
  shapeClass,
288
288
  layoutClass,