@mieweb/ui 0.7.3-dev.1 → 0.7.3-dev.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -24
- package/agent/README.md +20 -0
- package/agent/init-agent.mjs +61 -0
- package/agent/mieweb-ui.instructions.md +169 -0
- package/dist/ag-grid.cjs +11 -0
- package/dist/ag-grid.cjs.map +1 -1
- package/dist/ag-grid.d.cts +4 -0
- package/dist/ag-grid.d.ts +4 -0
- package/dist/ag-grid.js +11 -0
- package/dist/ag-grid.js.map +1 -1
- package/dist/{chunk-OAHORW4N.cjs → chunk-3KY5W3ZN.cjs} +126 -97
- package/dist/chunk-3KY5W3ZN.cjs.map +1 -0
- package/dist/{chunk-KRGKPUJH.js → chunk-3X4GPM35.js} +7 -7
- package/dist/{chunk-KRGKPUJH.js.map → chunk-3X4GPM35.js.map} +1 -1
- package/dist/{chunk-3D4ITDLO.js → chunk-6H7NO5XX.js} +3 -3
- package/dist/{chunk-3D4ITDLO.js.map → chunk-6H7NO5XX.js.map} +1 -1
- package/dist/chunk-6NZXWKUE.js +3 -0
- package/dist/chunk-6NZXWKUE.js.map +1 -0
- package/dist/{chunk-QUUBTNMH.js → chunk-CLT4ASY7.js} +45 -15
- package/dist/chunk-CLT4ASY7.js.map +1 -0
- package/dist/{chunk-SYIFEJSF.cjs → chunk-DIL553SJ.cjs} +13 -13
- package/dist/{chunk-SYIFEJSF.cjs.map → chunk-DIL553SJ.cjs.map} +1 -1
- package/dist/{chunk-KFLDXJEE.js → chunk-DMIQS5KK.js} +46 -15
- package/dist/chunk-DMIQS5KK.js.map +1 -0
- package/dist/chunk-F7CQ5RO7.cjs +269 -0
- package/dist/chunk-F7CQ5RO7.cjs.map +1 -0
- package/dist/chunk-FXTNCCD2.js +243 -0
- package/dist/chunk-FXTNCCD2.js.map +1 -0
- package/dist/{chunk-5IDYOJHO.cjs → chunk-G6GJXVQC.cjs} +45 -15
- package/dist/chunk-G6GJXVQC.cjs.map +1 -0
- package/dist/{chunk-AFGADE3B.js → chunk-GP5CRU2I.js} +105 -26
- package/dist/chunk-GP5CRU2I.js.map +1 -0
- package/dist/{chunk-HIDV32ZX.js → chunk-GV3DE6KR.js} +3 -3
- package/dist/{chunk-HIDV32ZX.js.map → chunk-GV3DE6KR.js.map} +1 -1
- package/dist/{chunk-CVZYOMEW.js → chunk-I2AHT7JM.js} +78 -3
- package/dist/chunk-I2AHT7JM.js.map +1 -0
- package/dist/chunk-I44YNYI6.cjs +4 -0
- package/dist/chunk-I44YNYI6.cjs.map +1 -0
- package/dist/{chunk-FTRGZOVJ.js → chunk-ICMR3TYV.js} +3 -3
- package/dist/{chunk-FTRGZOVJ.js.map → chunk-ICMR3TYV.js.map} +1 -1
- package/dist/{chunk-MJFF4AXH.cjs → chunk-JU62BLDY.cjs} +78 -3
- package/dist/chunk-JU62BLDY.cjs.map +1 -0
- package/dist/{chunk-URHXR5SC.cjs → chunk-LFSP53TY.cjs} +7 -7
- package/dist/{chunk-URHXR5SC.cjs.map → chunk-LFSP53TY.cjs.map} +1 -1
- package/dist/{chunk-RBS3GHDZ.cjs → chunk-N7JVAXHD.cjs} +4 -4
- package/dist/{chunk-RBS3GHDZ.cjs.map → chunk-N7JVAXHD.cjs.map} +1 -1
- package/dist/{chunk-WUNWHOLA.cjs → chunk-NHR33YWI.cjs} +104 -25
- package/dist/chunk-NHR33YWI.cjs.map +1 -0
- package/dist/{chunk-FKLUSYFP.cjs → chunk-PCWIN32O.cjs} +4 -4
- package/dist/{chunk-FKLUSYFP.cjs.map → chunk-PCWIN32O.cjs.map} +1 -1
- package/dist/{chunk-S3MKIDYG.cjs → chunk-SMGNJGFT.cjs} +46 -15
- package/dist/chunk-SMGNJGFT.cjs.map +1 -0
- package/dist/{chunk-DLBV42JD.js → chunk-U35KWHXP.js} +86 -7
- package/dist/chunk-U35KWHXP.js.map +1 -0
- package/dist/{chunk-LC7YHZXM.js → chunk-UGJFT2QF.js} +5 -5
- package/dist/{chunk-LC7YHZXM.js.map → chunk-UGJFT2QF.js.map} +1 -1
- package/dist/{chunk-EGWWTIWS.js → chunk-UHVNVZ7L.js} +124 -95
- package/dist/chunk-UHVNVZ7L.js.map +1 -0
- package/dist/{chunk-6J7UGYT5.cjs → chunk-UZJDXFQE.cjs} +4 -4
- package/dist/{chunk-6J7UGYT5.cjs.map → chunk-UZJDXFQE.cjs.map} +1 -1
- package/dist/{chunk-ZBI52NP2.cjs → chunk-VAKZEVDE.cjs} +86 -7
- package/dist/chunk-VAKZEVDE.cjs.map +1 -0
- package/dist/{chunk-P6L74SKG.js → chunk-WUPT5SUN.js} +3 -3
- package/dist/{chunk-P6L74SKG.js.map → chunk-WUPT5SUN.js.map} +1 -1
- package/dist/{chunk-NQ2D2V6O.cjs → chunk-WWIBIUWT.cjs} +36 -36
- package/dist/{chunk-NQ2D2V6O.cjs.map → chunk-WWIBIUWT.cjs.map} +1 -1
- package/dist/components/Autocomplete/index.cjs +4 -3
- package/dist/components/Autocomplete/index.js +3 -2
- package/dist/components/Checkbox/index.cjs +5 -4
- package/dist/components/Checkbox/index.d.cts +9 -1
- package/dist/components/Checkbox/index.d.ts +9 -1
- package/dist/components/Checkbox/index.js +2 -1
- package/dist/components/DateInput/index.cjs +4 -3
- package/dist/components/DateInput/index.js +3 -2
- package/dist/components/Dropdown/index.cjs +9 -8
- package/dist/components/Dropdown/index.js +3 -2
- package/dist/components/Input/index.cjs +16 -3
- package/dist/components/Input/index.d.cts +25 -2
- package/dist/components/Input/index.d.ts +25 -2
- package/dist/components/Input/index.js +2 -1
- package/dist/components/MediaEditor/index.cjs +10 -9
- package/dist/components/MediaEditor/index.js +5 -4
- package/dist/components/PhoneInput/index.cjs +5 -4
- package/dist/components/PhoneInput/index.js +3 -2
- package/dist/components/Radio/index.cjs +5 -4
- package/dist/components/Radio/index.d.cts +9 -1
- package/dist/components/Radio/index.d.ts +9 -1
- package/dist/components/Radio/index.js +2 -1
- package/dist/components/RichTextEditor/index.cjs +7 -6
- package/dist/components/RichTextEditor/index.js +4 -3
- package/dist/components/Select/index.cjs +3 -3
- package/dist/components/Select/index.d.cts +11 -2
- package/dist/components/Select/index.d.ts +11 -2
- package/dist/components/Select/index.js +1 -1
- package/dist/components/SuperChat/index.cjs +7 -6
- package/dist/components/SuperChat/index.cjs.map +1 -1
- package/dist/components/SuperChat/index.js +3 -2
- package/dist/components/SuperChat/index.js.map +1 -1
- package/dist/components/Textarea/index.cjs +3 -3
- package/dist/components/Textarea/index.d.cts +11 -1
- package/dist/components/Textarea/index.d.ts +11 -1
- package/dist/components/Textarea/index.js +1 -1
- package/dist/esheet.cjs +10 -9
- package/dist/esheet.cjs.map +1 -1
- package/dist/esheet.js +7 -6
- package/dist/esheet.js.map +1 -1
- package/dist/index.cjs +566 -378
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -3
- package/dist/index.d.ts +26 -3
- package/dist/index.js +285 -109
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/package.json +5 -1
- package/dist/chunk-5IDYOJHO.cjs.map +0 -1
- package/dist/chunk-6ECKH4DJ.cjs +0 -147
- package/dist/chunk-6ECKH4DJ.cjs.map +0 -1
- package/dist/chunk-AFGADE3B.js.map +0 -1
- package/dist/chunk-CVZYOMEW.js.map +0 -1
- package/dist/chunk-DLBV42JD.js.map +0 -1
- package/dist/chunk-EGWWTIWS.js.map +0 -1
- package/dist/chunk-KFLDXJEE.js.map +0 -1
- package/dist/chunk-MJFF4AXH.cjs.map +0 -1
- package/dist/chunk-OAHORW4N.cjs.map +0 -1
- package/dist/chunk-QUUBTNMH.js.map +0 -1
- package/dist/chunk-S3MKIDYG.cjs.map +0 -1
- package/dist/chunk-WUNWHOLA.cjs.map +0 -1
- package/dist/chunk-YXCE2HSK.js +0 -124
- package/dist/chunk-YXCE2HSK.js.map +0 -1
- package/dist/chunk-ZBI52NP2.cjs.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { floatingGroupLabelVariants, floatingGroupVariants } from './chunk-FXTNCCD2.js';
|
|
1
2
|
import { cn } from './chunk-TQONQSJO.js';
|
|
2
3
|
import * as React from 'react';
|
|
3
4
|
import { cva } from 'class-variance-authority';
|
|
@@ -145,6 +146,7 @@ var Checkbox = React.forwardRef(
|
|
|
145
146
|
Checkbox.displayName = "Checkbox";
|
|
146
147
|
function CheckboxGroup({
|
|
147
148
|
label,
|
|
149
|
+
labelVariant = "stacked",
|
|
148
150
|
description,
|
|
149
151
|
error,
|
|
150
152
|
orientation = "vertical",
|
|
@@ -154,6 +156,19 @@ function CheckboxGroup({
|
|
|
154
156
|
const groupId = React.useId();
|
|
155
157
|
const descriptionId = `${groupId}-description`;
|
|
156
158
|
const errorId = `${groupId}-error`;
|
|
159
|
+
const isFloating = labelVariant === "floating" && !!label;
|
|
160
|
+
const itemsElement = /* @__PURE__ */ jsx(
|
|
161
|
+
"div",
|
|
162
|
+
{
|
|
163
|
+
role: "group",
|
|
164
|
+
"data-slot": "checkbox-group-items",
|
|
165
|
+
className: cn(
|
|
166
|
+
"flex gap-4",
|
|
167
|
+
orientation === "vertical" && "flex-col gap-2"
|
|
168
|
+
),
|
|
169
|
+
children
|
|
170
|
+
}
|
|
171
|
+
);
|
|
157
172
|
return /* @__PURE__ */ jsxs(
|
|
158
173
|
"fieldset",
|
|
159
174
|
{
|
|
@@ -165,31 +180,47 @@ function CheckboxGroup({
|
|
|
165
180
|
"legend",
|
|
166
181
|
{
|
|
167
182
|
"data-slot": "checkbox-group-legend",
|
|
168
|
-
className:
|
|
183
|
+
className: cn(
|
|
184
|
+
// Legends are excluded from the fieldset's flex layout; explicit
|
|
185
|
+
// margin matches the stacked Input label's 6px gap.
|
|
186
|
+
"text-foreground mb-1.5 text-sm font-medium",
|
|
187
|
+
isFloating && "sr-only"
|
|
188
|
+
),
|
|
169
189
|
children: label
|
|
170
190
|
}
|
|
171
191
|
),
|
|
192
|
+
isFloating ? /* @__PURE__ */ jsxs(
|
|
193
|
+
"div",
|
|
194
|
+
{
|
|
195
|
+
"data-slot": "checkbox-group-field",
|
|
196
|
+
className: floatingGroupVariants({ hasError: !!error }),
|
|
197
|
+
children: [
|
|
198
|
+
/* @__PURE__ */ jsx(
|
|
199
|
+
"span",
|
|
200
|
+
{
|
|
201
|
+
"aria-hidden": "true",
|
|
202
|
+
"data-slot": "checkbox-group-floating-label",
|
|
203
|
+
className: floatingGroupLabelVariants({ hasError: !!error }),
|
|
204
|
+
children: label
|
|
205
|
+
}
|
|
206
|
+
),
|
|
207
|
+
itemsElement
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
) : null,
|
|
172
211
|
description && /* @__PURE__ */ jsx(
|
|
173
212
|
"p",
|
|
174
213
|
{
|
|
175
214
|
id: descriptionId,
|
|
176
215
|
"data-slot": "checkbox-group-description",
|
|
177
|
-
className: "text-muted-foreground mb-3 text-xs",
|
|
178
|
-
children: description
|
|
179
|
-
}
|
|
180
|
-
),
|
|
181
|
-
/* @__PURE__ */ jsx(
|
|
182
|
-
"div",
|
|
183
|
-
{
|
|
184
|
-
role: "group",
|
|
185
|
-
"data-slot": "checkbox-group-items",
|
|
186
216
|
className: cn(
|
|
187
|
-
"
|
|
188
|
-
|
|
217
|
+
"text-muted-foreground text-xs",
|
|
218
|
+
isFloating ? "mt-1" : "mb-3"
|
|
189
219
|
),
|
|
190
|
-
children
|
|
220
|
+
children: description
|
|
191
221
|
}
|
|
192
222
|
),
|
|
223
|
+
!isFloating && itemsElement,
|
|
193
224
|
error && /* @__PURE__ */ jsx(
|
|
194
225
|
"p",
|
|
195
226
|
{
|
|
@@ -257,5 +288,5 @@ function MinusIcon({ size, className }) {
|
|
|
257
288
|
}
|
|
258
289
|
|
|
259
290
|
export { Checkbox, CheckboxGroup, checkboxVariants };
|
|
260
|
-
//# sourceMappingURL=chunk-
|
|
261
|
-
//# sourceMappingURL=chunk-
|
|
291
|
+
//# sourceMappingURL=chunk-DMIQS5KK.js.map
|
|
292
|
+
//# sourceMappingURL=chunk-DMIQS5KK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":";;;;;;AAQA,IAAM,gBAAA,GAAmB,GAAA;AAAA,EACvB;AAAA,IACE,0BAAA;AAAA,IACA,+BAAA;AAAA,IACA,eAAA;AAAA,IACA,6BAAA;AAAA,IACA,gBAAA;AAAA,IACA,qGAAA;AAAA,IACA,iDAAA;AAAA,IACA,mDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AA4BA,IAAM,QAAA,GAAiB,KAAA,CAAA,UAAA;AAAA,EACrB,CACE;AAAA,IACE,SAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,KAAA;AAAA,IACA,aAAA,GAAgB,OAAA;AAAA,IAChB,EAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,WAAA,GAAoB,aAAyB,IAAI,CAAA;AACvD,IAAA,MAAM,cAAoB,KAAA,CAAA,KAAA,EAAM;AAChC,IAAA,MAAM,aAAa,EAAA,IAAM,WAAA;AACzB,IAAA,MAAM,aAAA,GAAgB,GAAG,UAAU,CAAA,YAAA,CAAA;AACnC,IAAA,MAAM,OAAA,GAAU,GAAG,UAAU,CAAA,MAAA,CAAA;AAG7B,IAAM,gBAAU,MAAM;AACpB,MAAA,MAAM,WAAW,WAAA,CAAY,OAAA;AAC7B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,aAAA,GAAgB,aAAA;AAAA,MAC3B;AAAA,IACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAGlB,IAAM,KAAA,CAAA,mBAAA,CAAoB,GAAA,EAAK,MAAM,WAAA,CAAY,OAAQ,CAAA;AAEzD,IAAA,MAAM,eAAA,mBACJ,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,oBAAA;AAAA,QACV,SAAA,EAAU,kDAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACL,WAAA,EAAU,UAAA;AAAA,cACV,EAAA,EAAI,UAAA;AAAA,cACJ,IAAA,EAAK,UAAA;AAAA,cACL,QAAA;AAAA,cACA,kBAAA,EACE,CAAC,WAAA,GAAc,aAAA,GAAgB,MAAM,KAAA,GAAQ,OAAA,GAAU,IAAI,CAAA,CACxD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAAA,cAElB,cAAA,EAAc,CAAC,CAAC,KAAA;AAAA,cAChB,SAAA,EAAW,GAAG,MAAA,EAAQ,gBAAA,CAAiB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,cAC1D,GAAG;AAAA;AAAA,WACN;AAAA,0BAEA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BAEA,GAAA;AAAA,YAAC,SAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,KACF;AAGF,IAAA,MAAM,YAAA,GAAe,KAAA,oBACnB,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,UAAA;AAAA,UACT,WAAA,EAAU,gBAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACT,gEAAA;AAAA,YACA,QAAA,IAAY;AAAA,WACd;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MACC,WAAA,oBACC,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,aAAA;AAAA,UACJ,WAAA,EAAU,sBAAA;AAAA,UACV,SAAA,EAAU,sCAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA;AAGF,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,kBAAA,EAAmB,WAAU,qBAAA,EAC1C,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAA,EAAU,cAAA;AAAA,UACV,SAAA,EAAW,EAAA;AAAA,YACT,YAAA;AAAA,YACA,cAAc,aAAA,GAAgB,cAAA;AAAA,YAC9B,kBAAkB,MAAA,IAAU;AAAA,WAC9B;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,eAAA;AAAA,YACA;AAAA;AAAA;AAAA,OACH;AAAA,MACC,KAAA,oBACC,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,OAAA;AAAA,UACJ,WAAA,EAAU,gBAAA;AAAA,UACV,SAAA,EAAU,wDAAA;AAAA,UACV,IAAA,EAAK,OAAA;AAAA,UAEJ,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAyCvB,SAAS,aAAA,CAAc;AAAA,EACrB,KAAA;AAAA,EACA,YAAA,GAAe,SAAA;AAAA,EACf,WAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,QAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,UAAgB,KAAA,CAAA,KAAA,EAAM;AAC5B,EAAA,MAAM,aAAA,GAAgB,GAAG,OAAO,CAAA,YAAA,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,GAAG,OAAO,CAAA,MAAA,CAAA;AAE1B,EAAA,MAAM,UAAA,GAAa,YAAA,KAAiB,UAAA,IAAc,CAAC,CAAC,KAAA;AAEpD,EAAA,MAAM,YAAA,mBACJ,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,sBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,YAAA;AAAA,QACA,gBAAgB,UAAA,IAAc;AAAA,OAChC;AAAA,MAEC;AAAA;AAAA,GACH;AAGF,EAAA,uBACE,IAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA;AAAA,MACxC,kBAAA,EACE,CAAC,WAAA,GAAc,aAAA,GAAgB,MAAM,KAAA,GAAQ,OAAA,GAAU,IAAI,CAAA,CACxD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAAA,MAGjB,QAAA,EAAA;AAAA,QAAA,KAAA,oBACC,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAU,uBAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA;AAAA;AAAA,cAGT,4CAAA;AAAA,cACA,UAAA,IAAc;AAAA,aAChB;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAED,UAAA,mBACC,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAU,sBAAA;AAAA,YACV,WAAW,qBAAA,CAAsB,EAAE,UAAU,CAAC,CAAC,OAAO,CAAA;AAAA,YAEtD,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAY,MAAA;AAAA,kBACZ,WAAA,EAAU,+BAAA;AAAA,kBACV,WAAW,0BAAA,CAA2B,EAAE,UAAU,CAAC,CAAC,OAAO,CAAA;AAAA,kBAE1D,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,cACC;AAAA;AAAA;AAAA,SACH,GACE,IAAA;AAAA,QACH,WAAA,oBACC,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,aAAA;AAAA,YACJ,WAAA,EAAU,4BAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,+BAAA;AAAA,cACA,aAAa,MAAA,GAAS;AAAA,aACxB;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QAED,CAAC,UAAA,IAAc,YAAA;AAAA,QACf,KAAA,oBACC,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,OAAA;AAAA,YACJ,WAAA,EAAU,sBAAA;AAAA,YACV,SAAA,EAAU,+BAAA;AAAA,YACV,IAAA,EAAK,OAAA;AAAA,YAEJ,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAW5B,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,SAAA,EAAU,EAAmB;AACtD,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,EAAA,EAAI,EAAA;AAAA,IACJ,EAAA,EAAI,EAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AACA,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,IAAQ,IAAI,CAAA;AAErC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,KAAA,EAAO,QAAA;AAAA,MACP,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iBAAA,EAAkB;AAAA;AAAA,GAC5B;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,SAAA,EAAU,EAAmB;AACtD,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,EAAA,EAAI,EAAA;AAAA,IACJ,EAAA,EAAI,EAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AACA,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,IAAA,IAAQ,IAAI,CAAA;AAErC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,KAAA,EAAO,QAAA;AAAA,MACP,MAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,UAAA,EAAW;AAAA;AAAA,GACrB;AAEJ","file":"chunk-DMIQS5KK.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport {\n floatingGroupVariants,\n floatingGroupLabelVariants,\n} from '../Input/Input';\n\nconst checkboxVariants = cva(\n [\n 'shrink-0 appearance-none',\n 'border-2 border-input rounded',\n 'bg-background',\n 'transition-all duration-150',\n 'cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'checked:bg-primary-800 checked:border-primary-500',\n 'indeterminate:bg-primary-800 indeterminate:border-primary-500',\n ],\n {\n variants: {\n size: {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport interface CheckboxProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n VariantProps<typeof checkboxVariants> {\n /** Label for the checkbox */\n label?: string;\n /** Description text below the label */\n description?: string;\n /** Indeterminate state (neither checked nor unchecked) */\n indeterminate?: boolean;\n /** Error message */\n error?: string;\n /** Position of the label */\n labelPosition?: 'left' | 'right';\n}\n\n/**\n * An accessible checkbox component with support for indeterminate state.\n *\n * @example\n * ```tsx\n * <Checkbox label=\"Accept terms and conditions\" />\n * <Checkbox label=\"Newsletter\" description=\"Receive updates about new features\" />\n * <Checkbox indeterminate label=\"Select all\" />\n * ```\n */\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n size,\n label,\n description,\n indeterminate = false,\n error,\n labelPosition = 'right',\n id,\n disabled,\n ...props\n },\n ref\n ) => {\n const internalRef = React.useRef<HTMLInputElement>(null);\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n const descriptionId = `${checkboxId}-description`;\n const errorId = `${checkboxId}-error`;\n\n // Handle indeterminate state\n React.useEffect(() => {\n const checkbox = internalRef.current;\n if (checkbox) {\n checkbox.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n // Combine refs\n React.useImperativeHandle(ref, () => internalRef.current!);\n\n const checkboxElement = (\n <span\n data-slot=\"checkbox-indicator\"\n className=\"relative inline-flex items-center justify-center\"\n >\n <input\n ref={internalRef}\n data-slot=\"checkbox\"\n id={checkboxId}\n type=\"checkbox\"\n disabled={disabled}\n aria-describedby={\n [description ? descriptionId : null, error ? errorId : null]\n .filter(Boolean)\n .join(' ') || undefined\n }\n aria-invalid={!!error}\n className={cn('peer', checkboxVariants({ size }), className)}\n {...props}\n />\n {/* Custom check icon overlay */}\n <CheckIcon\n size={size}\n className=\"pointer-events-none absolute text-white opacity-0 transition-opacity peer-checked:opacity-100\"\n />\n {/* Custom indeterminate icon overlay */}\n <MinusIcon\n size={size}\n className=\"pointer-events-none absolute text-white opacity-0 transition-opacity peer-indeterminate:opacity-100\"\n />\n </span>\n );\n\n const labelElement = label && (\n <div className=\"flex flex-col\">\n <label\n htmlFor={checkboxId}\n data-slot=\"checkbox-label\"\n className={cn(\n 'text-foreground cursor-pointer text-sm font-medium select-none',\n disabled && 'cursor-not-allowed opacity-50'\n )}\n >\n {label}\n </label>\n {description && (\n <p\n id={descriptionId}\n data-slot=\"checkbox-description\"\n className=\"text-muted-foreground mt-0.5 text-xs\"\n >\n {description}\n </p>\n )}\n </div>\n );\n\n return (\n <div data-slot=\"checkbox-wrapper\" className=\"flex flex-col gap-1\">\n <div\n data-slot=\"checkbox-row\"\n className={cn(\n 'flex gap-2',\n description ? 'items-start' : 'items-center',\n labelPosition === 'left' && 'flex-row-reverse'\n )}\n >\n {checkboxElement}\n {labelElement}\n </div>\n {error && (\n <p\n id={errorId}\n data-slot=\"checkbox-error\"\n className=\"text-destructive-700 dark:text-destructive-400 text-sm\"\n role=\"alert\"\n >\n {error}\n </p>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n\n// ============================================================================\n// Checkbox Group\n// ============================================================================\n\nexport interface CheckboxGroupProps {\n /** Group label */\n label?: string;\n /**\n * How the group label is rendered.\n * - `stacked` (default): label above the options.\n * - `floating`: renders the group as a bordered field matching floating\n * inputs, with the label fixed in the floated position so mixed forms\n * stay vertically aligned.\n */\n labelVariant?: 'stacked' | 'floating';\n /** Description for the group */\n description?: string;\n /** Error message for the group */\n error?: string;\n /** Orientation of checkboxes */\n orientation?: 'horizontal' | 'vertical';\n /** Children checkboxes */\n children: React.ReactNode;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * A container for grouping related checkboxes.\n *\n * @example\n * ```tsx\n * <CheckboxGroup label=\"Interests\" orientation=\"vertical\">\n * <Checkbox label=\"Sports\" />\n * <Checkbox label=\"Music\" />\n * <Checkbox label=\"Travel\" />\n * </CheckboxGroup>\n * ```\n */\nfunction CheckboxGroup({\n label,\n labelVariant = 'stacked',\n description,\n error,\n orientation = 'vertical',\n children,\n className,\n}: CheckboxGroupProps) {\n const groupId = React.useId();\n const descriptionId = `${groupId}-description`;\n const errorId = `${groupId}-error`;\n\n const isFloating = labelVariant === 'floating' && !!label;\n\n const itemsElement = (\n <div\n role=\"group\"\n data-slot=\"checkbox-group-items\"\n className={cn(\n 'flex gap-4',\n orientation === 'vertical' && 'flex-col gap-2'\n )}\n >\n {children}\n </div>\n );\n\n return (\n <fieldset\n data-slot=\"checkbox-group\"\n className={cn('flex flex-col', className)}\n aria-describedby={\n [description ? descriptionId : null, error ? errorId : null]\n .filter(Boolean)\n .join(' ') || undefined\n }\n >\n {label && (\n <legend\n data-slot=\"checkbox-group-legend\"\n className={cn(\n // Legends are excluded from the fieldset's flex layout; explicit\n // margin matches the stacked Input label's 6px gap.\n 'text-foreground mb-1.5 text-sm font-medium',\n isFloating && 'sr-only'\n )}\n >\n {label}\n </legend>\n )}\n {isFloating ? (\n <div\n data-slot=\"checkbox-group-field\"\n className={floatingGroupVariants({ hasError: !!error })}\n >\n <span\n aria-hidden=\"true\"\n data-slot=\"checkbox-group-floating-label\"\n className={floatingGroupLabelVariants({ hasError: !!error })}\n >\n {label}\n </span>\n {itemsElement}\n </div>\n ) : null}\n {description && (\n <p\n id={descriptionId}\n data-slot=\"checkbox-group-description\"\n className={cn(\n 'text-muted-foreground text-xs',\n isFloating ? 'mt-1' : 'mb-3'\n )}\n >\n {description}\n </p>\n )}\n {!isFloating && itemsElement}\n {error && (\n <p\n id={errorId}\n data-slot=\"checkbox-group-error\"\n className=\"text-destructive mt-2 text-sm\"\n role=\"alert\"\n >\n {error}\n </p>\n )}\n </fieldset>\n );\n}\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n\n// ============================================================================\n// Check Icon\n// ============================================================================\n\ninterface CheckIconProps {\n size?: 'sm' | 'md' | 'lg' | null;\n className?: string;\n}\n\nfunction CheckIcon({ size, className }: CheckIconProps) {\n const sizeMap = {\n sm: 10,\n md: 12,\n lg: 14,\n };\n const iconSize = sizeMap[size || 'md'];\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={iconSize}\n height={iconSize}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nfunction MinusIcon({ size, className }: CheckIconProps) {\n const sizeMap = {\n sm: 10,\n md: 12,\n lg: 14,\n };\n const iconSize = sizeMap[size || 'md'];\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={iconSize}\n height={iconSize}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n );\n}\n\nexport { Checkbox, CheckboxGroup, checkboxVariants };\n"]}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
function _interopNamespace(e) {
|
|
9
|
+
if (e && e.__esModule) return e;
|
|
10
|
+
var n = Object.create(null);
|
|
11
|
+
if (e) {
|
|
12
|
+
Object.keys(e).forEach(function (k) {
|
|
13
|
+
if (k !== 'default') {
|
|
14
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return e[k]; }
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
n.default = e;
|
|
23
|
+
return Object.freeze(n);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
27
|
+
|
|
28
|
+
var inputVariants = classVarianceAuthority.cva(
|
|
29
|
+
[
|
|
30
|
+
"w-full px-3 py-2",
|
|
31
|
+
"border border-input rounded-lg",
|
|
32
|
+
"bg-background text-foreground",
|
|
33
|
+
"placeholder:text-muted-foreground",
|
|
34
|
+
"transition-colors duration-200",
|
|
35
|
+
"focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent",
|
|
36
|
+
"disabled:cursor-not-allowed disabled:opacity-50"
|
|
37
|
+
],
|
|
38
|
+
{
|
|
39
|
+
variants: {
|
|
40
|
+
size: {
|
|
41
|
+
sm: "h-8 text-sm",
|
|
42
|
+
md: "h-10 text-base",
|
|
43
|
+
lg: "h-12 text-lg"
|
|
44
|
+
},
|
|
45
|
+
hasError: {
|
|
46
|
+
true: "border-destructive focus:ring-destructive",
|
|
47
|
+
false: ""
|
|
48
|
+
},
|
|
49
|
+
labelVariant: {
|
|
50
|
+
stacked: "",
|
|
51
|
+
floating: "peer placeholder:text-transparent"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
compoundVariants: [
|
|
55
|
+
// Floating labels need extra height and asymmetric padding so both
|
|
56
|
+
// the floated label and the entered text fit inside the field.
|
|
57
|
+
{ labelVariant: "floating", size: "sm", className: "h-11 pt-4 pb-1" },
|
|
58
|
+
{ labelVariant: "floating", size: "md", className: "h-14 pt-5 pb-1.5" },
|
|
59
|
+
{ labelVariant: "floating", size: "lg", className: "h-16 pt-6 pb-2" }
|
|
60
|
+
],
|
|
61
|
+
defaultVariants: {
|
|
62
|
+
size: "md",
|
|
63
|
+
hasError: false,
|
|
64
|
+
labelVariant: "stacked"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
);
|
|
68
|
+
var floatingGroupVariants = classVarianceAuthority.cva(
|
|
69
|
+
["relative rounded-lg border border-input bg-background px-3"],
|
|
70
|
+
{
|
|
71
|
+
variants: {
|
|
72
|
+
size: {
|
|
73
|
+
sm: "min-h-11 pt-4 pb-1",
|
|
74
|
+
md: "min-h-14 pt-5 pb-1.5",
|
|
75
|
+
lg: "min-h-16 pt-6 pb-2"
|
|
76
|
+
},
|
|
77
|
+
hasError: {
|
|
78
|
+
true: "border-destructive",
|
|
79
|
+
false: ""
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
defaultVariants: {
|
|
83
|
+
size: "md",
|
|
84
|
+
hasError: false
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
var floatingGroupLabelVariants = classVarianceAuthority.cva(
|
|
89
|
+
["absolute start-3 pointer-events-none select-none"],
|
|
90
|
+
{
|
|
91
|
+
variants: {
|
|
92
|
+
size: {
|
|
93
|
+
sm: "top-0.5 text-[0.65rem]",
|
|
94
|
+
md: "top-1 text-xs",
|
|
95
|
+
lg: "top-1.5 text-sm"
|
|
96
|
+
},
|
|
97
|
+
hasError: {
|
|
98
|
+
true: "text-destructive",
|
|
99
|
+
false: "text-muted-foreground"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
defaultVariants: {
|
|
103
|
+
size: "md",
|
|
104
|
+
hasError: false
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
var floatingLabelVariants = classVarianceAuthority.cva(
|
|
109
|
+
[
|
|
110
|
+
"absolute start-3 pointer-events-none select-none",
|
|
111
|
+
"transition-all duration-200 ease-out",
|
|
112
|
+
// Rest state: vertically centered, placeholder-sized (input is empty and unfocused).
|
|
113
|
+
"top-1/2 -translate-y-1/2",
|
|
114
|
+
// Floated state: focused, has a value, or was autofilled → shrink and move to the top,
|
|
115
|
+
// staying inside the field.
|
|
116
|
+
"peer-focus:translate-y-0 peer-[:not(:placeholder-shown)]:translate-y-0 peer-autofill:translate-y-0"
|
|
117
|
+
],
|
|
118
|
+
{
|
|
119
|
+
variants: {
|
|
120
|
+
size: {
|
|
121
|
+
sm: [
|
|
122
|
+
"text-sm",
|
|
123
|
+
"peer-focus:top-0.5 peer-[:not(:placeholder-shown)]:top-0.5 peer-autofill:top-0.5",
|
|
124
|
+
"peer-focus:text-[0.65rem] peer-[:not(:placeholder-shown)]:text-[0.65rem] peer-autofill:text-[0.65rem]"
|
|
125
|
+
],
|
|
126
|
+
md: [
|
|
127
|
+
"text-base",
|
|
128
|
+
"peer-focus:top-1 peer-[:not(:placeholder-shown)]:top-1 peer-autofill:top-1",
|
|
129
|
+
"peer-focus:text-xs peer-[:not(:placeholder-shown)]:text-xs peer-autofill:text-xs"
|
|
130
|
+
],
|
|
131
|
+
lg: [
|
|
132
|
+
"text-lg",
|
|
133
|
+
"peer-focus:top-1.5 peer-[:not(:placeholder-shown)]:top-1.5 peer-autofill:top-1.5",
|
|
134
|
+
"peer-focus:text-sm peer-[:not(:placeholder-shown)]:text-sm peer-autofill:text-sm"
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
hasError: {
|
|
138
|
+
true: "text-destructive",
|
|
139
|
+
false: "text-muted-foreground"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
defaultVariants: {
|
|
143
|
+
size: "md",
|
|
144
|
+
hasError: false
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
var Input = React__namespace.forwardRef(
|
|
149
|
+
({
|
|
150
|
+
className,
|
|
151
|
+
size,
|
|
152
|
+
hasError,
|
|
153
|
+
error,
|
|
154
|
+
helperText,
|
|
155
|
+
label,
|
|
156
|
+
labelVariant = "stacked",
|
|
157
|
+
hideLabel,
|
|
158
|
+
required,
|
|
159
|
+
disabled,
|
|
160
|
+
id,
|
|
161
|
+
placeholder,
|
|
162
|
+
"aria-describedby": ariaDescribedBy,
|
|
163
|
+
...props
|
|
164
|
+
}, ref) => {
|
|
165
|
+
const generatedId = React__namespace.useId();
|
|
166
|
+
const inputId = id || generatedId;
|
|
167
|
+
const errorId = `${inputId}-error`;
|
|
168
|
+
const helperId = `${inputId}-helper`;
|
|
169
|
+
const describedByIds = [
|
|
170
|
+
error ? errorId : null,
|
|
171
|
+
helperText && !error ? helperId : null,
|
|
172
|
+
ariaDescribedBy
|
|
173
|
+
].filter(Boolean).join(" ");
|
|
174
|
+
const isFloating = labelVariant === "floating" && !!label && !hideLabel;
|
|
175
|
+
const requiredMark = required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive ms-1", "aria-hidden": "true", children: "*" });
|
|
176
|
+
const inputElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
177
|
+
"input",
|
|
178
|
+
{
|
|
179
|
+
"data-slot": "input",
|
|
180
|
+
id: inputId,
|
|
181
|
+
ref,
|
|
182
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
183
|
+
inputVariants({
|
|
184
|
+
size,
|
|
185
|
+
hasError: hasError || !!error,
|
|
186
|
+
labelVariant: isFloating ? "floating" : "stacked"
|
|
187
|
+
}),
|
|
188
|
+
className
|
|
189
|
+
),
|
|
190
|
+
"aria-invalid": hasError || !!error,
|
|
191
|
+
"aria-describedby": describedByIds || void 0,
|
|
192
|
+
required,
|
|
193
|
+
disabled,
|
|
194
|
+
placeholder: isFloating ? " " : placeholder,
|
|
195
|
+
...props
|
|
196
|
+
}
|
|
197
|
+
);
|
|
198
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
199
|
+
"div",
|
|
200
|
+
{
|
|
201
|
+
"data-slot": "input-wrapper",
|
|
202
|
+
className: chunkS5RVSXDV_cjs.cn("flex flex-col gap-1.5", disabled && "opacity-50"),
|
|
203
|
+
children: [
|
|
204
|
+
label && !isFloating && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
205
|
+
"label",
|
|
206
|
+
{
|
|
207
|
+
"data-slot": "input-label",
|
|
208
|
+
htmlFor: inputId,
|
|
209
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
210
|
+
"text-foreground text-sm font-medium",
|
|
211
|
+
hideLabel && "sr-only"
|
|
212
|
+
),
|
|
213
|
+
children: [
|
|
214
|
+
label,
|
|
215
|
+
requiredMark
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
),
|
|
219
|
+
isFloating ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
220
|
+
inputElement,
|
|
221
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
222
|
+
"label",
|
|
223
|
+
{
|
|
224
|
+
"data-slot": "input-label",
|
|
225
|
+
htmlFor: inputId,
|
|
226
|
+
className: floatingLabelVariants({
|
|
227
|
+
size,
|
|
228
|
+
hasError: hasError || !!error
|
|
229
|
+
}),
|
|
230
|
+
children: [
|
|
231
|
+
label,
|
|
232
|
+
requiredMark
|
|
233
|
+
]
|
|
234
|
+
}
|
|
235
|
+
)
|
|
236
|
+
] }) : inputElement,
|
|
237
|
+
error && /* @__PURE__ */ jsxRuntime.jsx(
|
|
238
|
+
"p",
|
|
239
|
+
{
|
|
240
|
+
id: errorId,
|
|
241
|
+
"data-slot": "input-error",
|
|
242
|
+
className: "text-destructive-700 dark:text-destructive-400 text-sm",
|
|
243
|
+
role: "alert",
|
|
244
|
+
children: error
|
|
245
|
+
}
|
|
246
|
+
),
|
|
247
|
+
helperText && !error && /* @__PURE__ */ jsxRuntime.jsx(
|
|
248
|
+
"p",
|
|
249
|
+
{
|
|
250
|
+
id: helperId,
|
|
251
|
+
"data-slot": "input-helper",
|
|
252
|
+
className: "text-muted-foreground text-sm",
|
|
253
|
+
children: helperText
|
|
254
|
+
}
|
|
255
|
+
)
|
|
256
|
+
]
|
|
257
|
+
}
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
);
|
|
261
|
+
Input.displayName = "Input";
|
|
262
|
+
|
|
263
|
+
exports.Input = Input;
|
|
264
|
+
exports.floatingGroupLabelVariants = floatingGroupLabelVariants;
|
|
265
|
+
exports.floatingGroupVariants = floatingGroupVariants;
|
|
266
|
+
exports.floatingLabelVariants = floatingLabelVariants;
|
|
267
|
+
exports.inputVariants = inputVariants;
|
|
268
|
+
//# sourceMappingURL=chunk-F7CQ5RO7.cjs.map
|
|
269
|
+
//# sourceMappingURL=chunk-F7CQ5RO7.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Input/Input.tsx"],"names":["cva","React","jsx","cn","jsxs"],"mappings":"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","file":"chunk-F7CQ5RO7.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst inputVariants = cva(\n [\n 'w-full px-3 py-2',\n 'border border-input rounded-lg',\n 'bg-background text-foreground',\n 'placeholder:text-muted-foreground',\n 'transition-colors duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n ],\n {\n variants: {\n size: {\n sm: 'h-8 text-sm',\n md: 'h-10 text-base',\n lg: 'h-12 text-lg',\n },\n hasError: {\n true: 'border-destructive focus:ring-destructive',\n false: '',\n },\n labelVariant: {\n stacked: '',\n floating: 'peer placeholder:text-transparent',\n },\n },\n compoundVariants: [\n // Floating labels need extra height and asymmetric padding so both\n // the floated label and the entered text fit inside the field.\n { labelVariant: 'floating', size: 'sm', className: 'h-11 pt-4 pb-1' },\n { labelVariant: 'floating', size: 'md', className: 'h-14 pt-5 pb-1.5' },\n { labelVariant: 'floating', size: 'lg', className: 'h-16 pt-6 pb-2' },\n ],\n defaultVariants: {\n size: 'md',\n hasError: false,\n labelVariant: 'stacked',\n },\n }\n);\n\n// Bordered field box for group controls (RadioGroup / CheckboxGroup) rendered\n// with labelVariant=\"floating\". Mirrors the floating input's box metrics so\n// mixed forms stay vertically aligned.\nconst floatingGroupVariants = cva(\n ['relative rounded-lg border border-input bg-background px-3'],\n {\n variants: {\n size: {\n sm: 'min-h-11 pt-4 pb-1',\n md: 'min-h-14 pt-5 pb-1.5',\n lg: 'min-h-16 pt-6 pb-2',\n },\n hasError: {\n true: 'border-destructive',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n hasError: false,\n },\n }\n);\n\n// Group label fixed in the floated position (groups have no empty state to\n// float from, so the label never animates). Metrics match the floated state\n// of floatingLabelVariants.\nconst floatingGroupLabelVariants = cva(\n ['absolute start-3 pointer-events-none select-none'],\n {\n variants: {\n size: {\n sm: 'top-0.5 text-[0.65rem]',\n md: 'top-1 text-xs',\n lg: 'top-1.5 text-sm',\n },\n hasError: {\n true: 'text-destructive',\n false: 'text-muted-foreground',\n },\n },\n defaultVariants: {\n size: 'md',\n hasError: false,\n },\n }\n);\n\nconst floatingLabelVariants = cva(\n [\n 'absolute start-3 pointer-events-none select-none',\n 'transition-all duration-200 ease-out',\n // Rest state: vertically centered, placeholder-sized (input is empty and unfocused).\n 'top-1/2 -translate-y-1/2',\n // Floated state: focused, has a value, or was autofilled → shrink and move to the top,\n // staying inside the field.\n 'peer-focus:translate-y-0 peer-[:not(:placeholder-shown)]:translate-y-0 peer-autofill:translate-y-0',\n ],\n {\n variants: {\n size: {\n sm: [\n 'text-sm',\n 'peer-focus:top-0.5 peer-[:not(:placeholder-shown)]:top-0.5 peer-autofill:top-0.5',\n 'peer-focus:text-[0.65rem] peer-[:not(:placeholder-shown)]:text-[0.65rem] peer-autofill:text-[0.65rem]',\n ],\n md: [\n 'text-base',\n 'peer-focus:top-1 peer-[:not(:placeholder-shown)]:top-1 peer-autofill:top-1',\n 'peer-focus:text-xs peer-[:not(:placeholder-shown)]:text-xs peer-autofill:text-xs',\n ],\n lg: [\n 'text-lg',\n 'peer-focus:top-1.5 peer-[:not(:placeholder-shown)]:top-1.5 peer-autofill:top-1.5',\n 'peer-focus:text-sm peer-[:not(:placeholder-shown)]:text-sm peer-autofill:text-sm',\n ],\n },\n hasError: {\n true: 'text-destructive',\n false: 'text-muted-foreground',\n },\n },\n defaultVariants: {\n size: 'md',\n hasError: false,\n },\n }\n);\n\nexport interface InputProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n Omit<VariantProps<typeof inputVariants>, 'labelVariant'> {\n /** Error message to display below the input */\n error?: string;\n /** Helper text to display below the input */\n helperText?: string;\n /** Label for the input */\n label?: string;\n /**\n * How the label is rendered.\n * - `stacked` (default): label above the input.\n * - `floating`: label rests inside the input like a placeholder and floats\n * to the top of the field (staying inside it) when focused or filled.\n * Ignores `placeholder`; when `hideLabel` is set, falls back to a\n * visually-hidden stacked label.\n */\n labelVariant?: 'stacked' | 'floating';\n /** Whether the label should be visually hidden (still accessible) */\n hideLabel?: boolean;\n /** Whether the input is required */\n required?: boolean;\n}\n\n/**\n * A styled input component with support for labels, errors, and helper text.\n *\n * @example\n * ```tsx\n * <Input label=\"Email\" type=\"email\" placeholder=\"you@example.com\" />\n * <Input label=\"Password\" type=\"password\" error=\"Password is required\" hasError />\n * <Input label=\"Account number\" labelVariant=\"floating\" />\n * ```\n */\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n size,\n hasError,\n error,\n helperText,\n label,\n labelVariant = 'stacked',\n hideLabel,\n required,\n disabled,\n id,\n placeholder,\n 'aria-describedby': ariaDescribedBy,\n ...props\n },\n ref\n ) => {\n const generatedId = React.useId();\n const inputId = id || generatedId;\n const errorId = `${inputId}-error`;\n const helperId = `${inputId}-helper`;\n\n const describedByIds = [\n error ? errorId : null,\n helperText && !error ? helperId : null,\n ariaDescribedBy,\n ]\n .filter(Boolean)\n .join(' ');\n\n const isFloating = labelVariant === 'floating' && !!label && !hideLabel;\n\n const requiredMark = required && (\n <span className=\"text-destructive ms-1\" aria-hidden=\"true\">\n *\n </span>\n );\n\n const inputElement = (\n <input\n data-slot=\"input\"\n id={inputId}\n ref={ref}\n className={cn(\n inputVariants({\n size,\n hasError: hasError || !!error,\n labelVariant: isFloating ? 'floating' : 'stacked',\n }),\n className\n )}\n aria-invalid={hasError || !!error}\n aria-describedby={describedByIds || undefined}\n required={required}\n disabled={disabled}\n // A single-space placeholder keeps :placeholder-shown reliable so the\n // label can float via CSS alone; a user placeholder would clash with\n // the resting label.\n placeholder={isFloating ? ' ' : placeholder}\n {...props}\n />\n );\n\n return (\n <div\n data-slot=\"input-wrapper\"\n className={cn('flex flex-col gap-1.5', disabled && 'opacity-50')}\n >\n {label && !isFloating && (\n <label\n data-slot=\"input-label\"\n htmlFor={inputId}\n className={cn(\n 'text-foreground text-sm font-medium',\n hideLabel && 'sr-only'\n )}\n >\n {label}\n {requiredMark}\n </label>\n )}\n {isFloating ? (\n <div className=\"relative\">\n {inputElement}\n <label\n data-slot=\"input-label\"\n htmlFor={inputId}\n className={floatingLabelVariants({\n size,\n hasError: hasError || !!error,\n })}\n >\n {label}\n {requiredMark}\n </label>\n </div>\n ) : (\n inputElement\n )}\n {error && (\n <p\n id={errorId}\n data-slot=\"input-error\"\n className=\"text-destructive-700 dark:text-destructive-400 text-sm\"\n role=\"alert\"\n >\n {error}\n </p>\n )}\n {helperText && !error && (\n <p\n id={helperId}\n data-slot=\"input-helper\"\n className=\"text-muted-foreground text-sm\"\n >\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n\nexport {\n Input,\n inputVariants,\n floatingLabelVariants,\n floatingGroupVariants,\n floatingGroupLabelVariants,\n};\n"]}
|