@page-speed/forms 0.3.7 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/inputs.js CHANGED
@@ -21,8 +21,8 @@ function TextInput({
21
21
  const handleBlur = () => {
22
22
  onBlur?.();
23
23
  };
24
- const baseClassName = "text-input";
25
- const errorClassName = error ? "text-input--error" : "";
24
+ const baseClassName = "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";
25
+ const errorClassName = error ? "border-red-500 ring-1 ring-red-500" : "";
26
26
  const combinedClassName = `${baseClassName} ${errorClassName} ${className}`.trim();
27
27
  return /* @__PURE__ */ React7.createElement(
28
28
  "input",
@@ -68,8 +68,8 @@ function TextArea({
68
68
  const handleBlur = () => {
69
69
  onBlur?.();
70
70
  };
71
- const baseClassName = "textarea";
72
- const errorClassName = error ? "textarea--error" : "";
71
+ const baseClassName = "flex min-h-20 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";
72
+ const errorClassName = error ? "border-red-500 ring-1 ring-red-500" : "";
73
73
  const combinedClassName = `${baseClassName} ${errorClassName} ${className}`.trim();
74
74
  return /* @__PURE__ */ React7.createElement(
75
75
  "textarea",
@@ -122,12 +122,7 @@ function Checkbox({
122
122
  const handleBlur = () => {
123
123
  onBlur?.();
124
124
  };
125
- const baseClassName = "checkbox";
126
- const errorClassName = error ? "checkbox--error" : "";
127
- const checkedClassName = value ? "checkbox--checked" : "";
128
- const disabledClassName = disabled ? "checkbox--disabled" : "";
129
- const combinedClassName = `${baseClassName} ${errorClassName} ${checkedClassName} ${disabledClassName} ${className}`.trim();
130
- const checkbox = /* @__PURE__ */ React7.createElement(
125
+ const checkbox = /* @__PURE__ */ React7.createElement("div", { className: "relative inline-flex" }, /* @__PURE__ */ React7.createElement(
131
126
  "input",
132
127
  {
133
128
  ref: inputRef,
@@ -139,22 +134,29 @@ function Checkbox({
139
134
  onBlur: handleBlur,
140
135
  disabled,
141
136
  required,
142
- className: "checkbox-input",
137
+ className: `peer relative flex size-4 shrink-0 appearance-none items-center justify-center rounded-lg border border-input bg-transparent outline-none transition-colors focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 ${error ? "border-destructive ring-3 ring-destructive/20" : ""} ${value ? "bg-primary border-primary" : ""} ${className}`,
143
138
  "aria-invalid": error || props["aria-invalid"],
144
139
  "aria-describedby": description ? `${checkboxId}-description` : props["aria-describedby"],
145
140
  "aria-required": required || props["aria-required"],
146
141
  ...props
147
142
  }
148
- );
143
+ ), value && /* @__PURE__ */ React7.createElement("span", { className: "pointer-events-none absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center text-primary-foreground" }, /* @__PURE__ */ React7.createElement("svg", { className: "size-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3" }, /* @__PURE__ */ React7.createElement("polyline", { points: "20 6 9 17 4 12" }))), indeterminate && !value && /* @__PURE__ */ React7.createElement("span", { className: "pointer-events-none absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center text-primary" }, /* @__PURE__ */ React7.createElement("svg", { className: "size-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3" }, /* @__PURE__ */ React7.createElement("line", { x1: "5", y1: "12", x2: "19", y2: "12" }))));
149
144
  if (label) {
150
- return /* @__PURE__ */ React7.createElement("label", { className: `checkbox-field ${combinedClassName}`, htmlFor: checkboxId }, /* @__PURE__ */ React7.createElement("div", { className: "checkbox-field-content" }, checkbox, /* @__PURE__ */ React7.createElement("div", { className: "checkbox-field-text" }, /* @__PURE__ */ React7.createElement("span", { className: "checkbox-label" }, label), description && /* @__PURE__ */ React7.createElement(
151
- "span",
145
+ return /* @__PURE__ */ React7.createElement(
146
+ "label",
152
147
  {
153
- className: "checkbox-description",
154
- id: `${checkboxId}-description`
148
+ className: `flex w-fit gap-2 items-center ${disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}`,
149
+ htmlFor: checkboxId
155
150
  },
156
- description
157
- ))));
151
+ /* @__PURE__ */ React7.createElement("div", { className: "flex w-full flex-row items-center gap-2" }, checkbox, /* @__PURE__ */ React7.createElement("div", { className: "flex flex-1 flex-col gap-0.5" }, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center gap-2 text-sm font-medium" }, label), description && /* @__PURE__ */ React7.createElement(
152
+ "p",
153
+ {
154
+ className: "text-muted-foreground text-sm",
155
+ id: `${checkboxId}-description`
156
+ },
157
+ description
158
+ )))
159
+ );
158
160
  }
159
161
  return checkbox;
160
162
  }
@@ -205,15 +207,13 @@ function CheckboxGroup({
205
207
  const handleBlur = () => {
206
208
  onBlur?.();
207
209
  };
208
- const baseClassName = "checkbox-group";
209
- const errorClassName = error ? "checkbox-group--error" : "";
210
- const layoutClassName = `checkbox-group--${layout}`;
211
- const combinedClassName = `${baseClassName} ${errorClassName} ${layoutClassName} ${className}`.trim();
210
+ const layoutClass = layout === "inline" ? "flex flex-row flex-wrap gap-4" : layout === "grid" ? `grid gap-3` : "flex flex-col gap-3";
211
+ const containerClass = `w-full ${layoutClass} ${className}`.trim();
212
212
  const maxReached = Boolean(maxSelections && value.length >= maxSelections);
213
213
  return /* @__PURE__ */ React7.createElement(
214
214
  "div",
215
215
  {
216
- className: combinedClassName,
216
+ className: containerClass,
217
217
  role: "group",
218
218
  "aria-invalid": error || props["aria-invalid"],
219
219
  "aria-describedby": props["aria-describedby"],
@@ -223,25 +223,32 @@ function CheckboxGroup({
223
223
  gridTemplateColumns: `repeat(${gridColumns}, 1fr)`
224
224
  } : void 0
225
225
  },
226
- label && /* @__PURE__ */ React7.createElement("div", { className: "checkbox-group-label" }, label),
227
- description && /* @__PURE__ */ React7.createElement("div", { className: "checkbox-group-description" }, description),
228
- /* @__PURE__ */ React7.createElement("div", { className: "checkbox-options" }, showSelectAll && enabledOptions.length > 0 && /* @__PURE__ */ React7.createElement("label", { className: "checkbox-option checkbox-option--select-all" }, /* @__PURE__ */ React7.createElement(
229
- "input",
226
+ label && /* @__PURE__ */ React7.createElement("div", { className: "text-sm font-medium" }, label),
227
+ description && /* @__PURE__ */ React7.createElement("div", { className: "text-muted-foreground text-sm" }, description),
228
+ showSelectAll && enabledOptions.length > 0 && /* @__PURE__ */ React7.createElement(
229
+ "label",
230
230
  {
231
- type: "checkbox",
232
- checked: allSelected,
233
- ref: (input) => {
234
- if (input) {
235
- input.indeterminate = someSelected;
236
- }
237
- },
238
- onChange: (e) => handleSelectAll(e.target.checked),
239
- onBlur: handleBlur,
240
- disabled,
241
- className: "checkbox-input",
242
- "aria-label": selectAllLabel
243
- }
244
- ), /* @__PURE__ */ React7.createElement("div", { className: "checkbox-content" }, /* @__PURE__ */ React7.createElement("span", { className: "checkbox-label" }, selectAllLabel))), options.map((option) => {
231
+ className: `flex w-fit gap-2 items-center ${disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}`
232
+ },
233
+ /* @__PURE__ */ React7.createElement("div", { className: "flex w-full flex-row items-center gap-2" }, /* @__PURE__ */ React7.createElement("div", { className: "relative inline-flex" }, /* @__PURE__ */ React7.createElement(
234
+ "input",
235
+ {
236
+ type: "checkbox",
237
+ checked: allSelected,
238
+ ref: (input) => {
239
+ if (input) {
240
+ input.indeterminate = someSelected;
241
+ }
242
+ },
243
+ onChange: (e) => handleSelectAll(e.target.checked),
244
+ onBlur: handleBlur,
245
+ disabled,
246
+ className: "peer relative flex size-4 shrink-0 appearance-none items-center justify-center rounded-lg border border-input bg-transparent outline-none transition-colors focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50",
247
+ "aria-label": selectAllLabel
248
+ }
249
+ ), allSelected && /* @__PURE__ */ React7.createElement("span", { className: "pointer-events-none absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center text-primary-foreground" }, /* @__PURE__ */ React7.createElement("svg", { className: "size-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3" }, /* @__PURE__ */ React7.createElement("polyline", { points: "20 6 9 17 4 12" }))), someSelected && !allSelected && /* @__PURE__ */ React7.createElement("span", { className: "pointer-events-none absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center text-primary" }, /* @__PURE__ */ React7.createElement("svg", { className: "size-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3" }, /* @__PURE__ */ React7.createElement("line", { x1: "5", y1: "12", x2: "19", y2: "12" })))), /* @__PURE__ */ React7.createElement("span", { className: "text-sm font-medium" }, selectAllLabel))
250
+ ),
251
+ options.map((option) => {
245
252
  const isChecked = value.includes(option.value);
246
253
  const isDisabled = disabled || option.disabled || maxReached && !isChecked;
247
254
  const checkboxId = `${name}-${option.value}`;
@@ -249,10 +256,10 @@ function CheckboxGroup({
249
256
  "label",
250
257
  {
251
258
  key: option.value,
252
- className: `checkbox-option ${isDisabled ? "checkbox-option--disabled" : ""}`,
259
+ className: `flex w-fit gap-2 items-center ${isDisabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}`,
253
260
  htmlFor: checkboxId
254
261
  },
255
- /* @__PURE__ */ React7.createElement(
262
+ /* @__PURE__ */ React7.createElement("div", { className: "flex w-full flex-row items-center gap-2" }, /* @__PURE__ */ React7.createElement("div", { className: "relative inline-flex" }, /* @__PURE__ */ React7.createElement(
256
263
  "input",
257
264
  {
258
265
  type: "checkbox",
@@ -264,21 +271,20 @@ function CheckboxGroup({
264
271
  onBlur: handleBlur,
265
272
  disabled: isDisabled,
266
273
  required: required && minSelections ? value.length < minSelections : false,
267
- className: "checkbox-input",
274
+ className: `peer relative flex size-4 shrink-0 appearance-none items-center justify-center rounded-lg border border-input bg-transparent outline-none transition-colors focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 ${error ? "border-destructive ring-3 ring-destructive/20" : ""} ${isChecked ? "bg-primary border-primary" : ""}`,
268
275
  "aria-describedby": option.description ? `${checkboxId}-description` : props["aria-describedby"]
269
276
  }
270
- ),
271
- /* @__PURE__ */ React7.createElement("div", { className: "checkbox-content" }, renderOption ? renderOption(option) : /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("span", { className: "checkbox-label" }, option.label), option.description && /* @__PURE__ */ React7.createElement(
272
- "span",
277
+ ), isChecked && /* @__PURE__ */ React7.createElement("span", { className: "pointer-events-none absolute top-1/2 left-1/2 flex -translate-x-1/2 -translate-y-1/2 items-center justify-center text-primary-foreground" }, /* @__PURE__ */ React7.createElement("svg", { className: "size-3", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3" }, /* @__PURE__ */ React7.createElement("polyline", { points: "20 6 9 17 4 12" })))), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-1 flex-col gap-0.5" }, renderOption ? renderOption(option) : /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center gap-2 text-sm font-medium" }, option.label), option.description && /* @__PURE__ */ React7.createElement(
278
+ "p",
273
279
  {
274
- className: "checkbox-description",
280
+ className: "text-muted-foreground text-sm",
275
281
  id: `${checkboxId}-description`
276
282
  },
277
283
  option.description
278
- )))
284
+ ))))
279
285
  );
280
- })),
281
- (minSelections || maxSelections) && /* @__PURE__ */ React7.createElement("div", { className: "checkbox-group-feedback", "aria-live": "polite" }, minSelections && value.length < minSelections && /* @__PURE__ */ React7.createElement("span", { className: "checkbox-group-feedback-min" }, "Select at least ", minSelections, " option", minSelections !== 1 ? "s" : ""), maxSelections && /* @__PURE__ */ React7.createElement("span", { className: "checkbox-group-feedback-max" }, value.length, "/", maxSelections, " selected"))
286
+ }),
287
+ (minSelections || maxSelections) && /* @__PURE__ */ React7.createElement("div", { className: "text-sm text-muted-foreground mt-2", "aria-live": "polite" }, minSelections && value.length < minSelections && /* @__PURE__ */ React7.createElement("span", { className: "text-destructive" }, "Select at least ", minSelections, " option", minSelections !== 1 ? "s" : ""), maxSelections && /* @__PURE__ */ React7.createElement("span", null, value.length, "/", maxSelections, " selected"))
282
288
  );
283
289
  }
284
290
  CheckboxGroup.displayName = "CheckboxGroup";
@@ -327,22 +333,20 @@ function Radio({
327
333
  const handleBlur = () => {
328
334
  onBlur?.();
329
335
  };
330
- const baseClassName = "radio-group";
331
- const errorClassName = error ? "radio-group--error" : "";
332
- const layoutClassName = `radio-group--${layout}`;
333
- const combinedClassName = `${baseClassName} ${errorClassName} ${layoutClassName} ${className}`.trim();
336
+ const layoutClass = layout === "inline" ? "flex flex-row flex-wrap gap-4" : "grid w-full gap-2";
337
+ const containerClass = `${layoutClass} ${className}`.trim();
334
338
  return /* @__PURE__ */ React7.createElement(
335
339
  "div",
336
340
  {
337
- className: combinedClassName,
341
+ className: containerClass,
338
342
  role: "radiogroup",
339
343
  "aria-invalid": error || props["aria-invalid"],
340
344
  "aria-describedby": props["aria-describedby"],
341
345
  "aria-required": required || props["aria-required"],
342
346
  "aria-label": typeof label === "string" ? label : props["aria-label"]
343
347
  },
344
- label && /* @__PURE__ */ React7.createElement("div", { className: "radio-group-label" }, label),
345
- /* @__PURE__ */ React7.createElement("div", { className: "radio-options" }, options.map((option, index) => {
348
+ label && /* @__PURE__ */ React7.createElement("div", { className: "text-sm font-medium mb-2" }, label),
349
+ options.map((option, index) => {
346
350
  const isChecked = value === option.value;
347
351
  const isDisabled = disabled || option.disabled;
348
352
  const radioId = `${name}-${option.value}`;
@@ -350,19 +354,19 @@ function Radio({
350
354
  "label",
351
355
  {
352
356
  key: option.value,
353
- className: `radio-option ${isChecked ? "radio-option--checked" : ""} ${isDisabled ? "radio-option--disabled" : ""}`,
357
+ className: `flex w-fit gap-2 items-center ${isDisabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}`,
354
358
  htmlFor: radioId,
355
359
  onKeyDown: (e) => handleKeyDown(e, index),
356
- tabIndex: 0
360
+ tabIndex: isDisabled ? -1 : 0
357
361
  },
358
- /* @__PURE__ */ React7.createElement("div", { className: "radio-option-content" }, /* @__PURE__ */ React7.createElement("div", { className: "radio-option-text" }, /* @__PURE__ */ React7.createElement("span", { className: "radio-label" }, option.label), option.description && /* @__PURE__ */ React7.createElement(
359
- "span",
362
+ /* @__PURE__ */ React7.createElement("div", { className: "flex w-full flex-row items-center gap-2" }, /* @__PURE__ */ React7.createElement("div", { className: "flex flex-1 flex-col gap-0.5" }, option.description ? /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center gap-2 text-sm font-medium" }, option.label), /* @__PURE__ */ React7.createElement(
363
+ "p",
360
364
  {
361
- className: "radio-description",
365
+ className: "text-muted-foreground text-sm",
362
366
  id: `${radioId}-description`
363
367
  },
364
368
  option.description
365
- )), /* @__PURE__ */ React7.createElement(
369
+ )) : /* @__PURE__ */ React7.createElement("span", { className: "text-sm font-medium" }, option.label)), /* @__PURE__ */ React7.createElement("div", { className: "relative" }, /* @__PURE__ */ React7.createElement(
366
370
  "input",
367
371
  {
368
372
  type: "radio",
@@ -374,12 +378,12 @@ function Radio({
374
378
  onBlur: handleBlur,
375
379
  disabled: isDisabled,
376
380
  required,
377
- className: "radio-input",
381
+ className: `peer relative flex aspect-square size-4 shrink-0 appearance-none rounded-full border border-input outline-none transition-colors focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 ${error ? "border-destructive" : ""} ${isChecked ? "border-primary bg-primary" : "bg-transparent"}`,
378
382
  "aria-describedby": option.description ? `${radioId}-description` : props["aria-describedby"]
379
383
  }
380
- ))
384
+ ), isChecked && /* @__PURE__ */ React7.createElement("span", { className: "pointer-events-none absolute top-1/2 left-1/2 flex size-4 -translate-x-1/2 -translate-y-1/2 items-center justify-center text-primary-foreground" }, /* @__PURE__ */ React7.createElement("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24" }, /* @__PURE__ */ React7.createElement("circle", { cx: "12", cy: "12", r: "10" })))))
381
385
  );
382
- }))
386
+ })
383
387
  );
384
388
  }
385
389
  Radio.displayName = "Radio";
@@ -544,11 +548,7 @@ function Select({
544
548
  };
545
549
  }
546
550
  }, [isOpen]);
547
- const baseClassName = "select";
548
- const errorClassName = error ? "select--error" : "";
549
- const disabledClassName = disabled ? "select--disabled" : "";
550
- const openClassName = isOpen ? "select--open" : "";
551
- const combinedClassName = `${baseClassName} ${errorClassName} ${disabledClassName} ${openClassName} ${className}`.trim();
551
+ const combinedClassName = `relative w-full ${className}`.trim();
552
552
  return /* @__PURE__ */ React7.createElement(
553
553
  "div",
554
554
  {
@@ -576,7 +576,7 @@ function Select({
576
576
  /* @__PURE__ */ React7.createElement(
577
577
  "div",
578
578
  {
579
- className: "select-trigger",
579
+ className: `flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm cursor-pointer transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring ${disabled ? "cursor-not-allowed opacity-50 pointer-events-none" : ""} ${error ? "border-red-500 ring-1 ring-red-500" : ""}`,
580
580
  onClick: handleToggle,
581
581
  role: "combobox",
582
582
  "aria-expanded": isOpen,
@@ -587,39 +587,39 @@ function Select({
587
587
  "aria-disabled": disabled,
588
588
  tabIndex: disabled ? -1 : 0
589
589
  },
590
- /* @__PURE__ */ React7.createElement("span", { className: "select-value" }, selectedOption ? renderOption ? renderOption(selectedOption) : selectedOption.label : /* @__PURE__ */ React7.createElement("span", { className: "select-placeholder" }, placeholder)),
591
- /* @__PURE__ */ React7.createElement("div", { className: "select-icons" }, loading && /* @__PURE__ */ React7.createElement("span", { className: "select-loading" }, "\u23F3"), clearable && value && !disabled && !loading && /* @__PURE__ */ React7.createElement(
590
+ /* @__PURE__ */ React7.createElement("span", { className: "flex items-center flex-1 overflow-hidden text-ellipsis" }, selectedOption ? renderOption ? renderOption(selectedOption) : selectedOption.label : /* @__PURE__ */ React7.createElement("span", { className: "text-muted-foreground" }, placeholder)),
591
+ /* @__PURE__ */ React7.createElement("div", { className: "flex items-center gap-1 ml-2" }, loading && /* @__PURE__ */ React7.createElement("span", { className: "text-xs" }, "\u23F3"), clearable && value && !disabled && !loading && /* @__PURE__ */ React7.createElement(
592
592
  "button",
593
593
  {
594
594
  type: "button",
595
- className: "select-clear",
595
+ className: "flex items-center justify-center h-4 w-4 rounded-sm border-none bg-transparent text-muted-foreground cursor-pointer text-xs p-0 transition-opacity hover:opacity-70",
596
596
  onClick: handleClear,
597
597
  "aria-label": "Clear selection",
598
598
  tabIndex: -1
599
599
  },
600
600
  "\u2715"
601
- ), /* @__PURE__ */ React7.createElement("span", { className: "select-arrow", "aria-hidden": "true" }, isOpen ? "\u25B2" : "\u25BC"))
601
+ ), /* @__PURE__ */ React7.createElement("span", { className: "text-muted-foreground text-xs leading-none", "aria-hidden": "true" }, isOpen ? "\u25B2" : "\u25BC"))
602
602
  ),
603
- isOpen && /* @__PURE__ */ React7.createElement("div", { id: dropdownId, className: "select-dropdown", role: "listbox" }, searchable && /* @__PURE__ */ React7.createElement("div", { className: "select-search" }, /* @__PURE__ */ React7.createElement(
603
+ isOpen && /* @__PURE__ */ React7.createElement("div", { id: dropdownId, className: "absolute z-50 top-full mt-1 min-w-full overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md", role: "listbox" }, searchable && /* @__PURE__ */ React7.createElement("div", { className: "p-2 border-b border-border" }, /* @__PURE__ */ React7.createElement(
604
604
  "input",
605
605
  {
606
606
  ref: searchInputRef,
607
607
  type: "text",
608
- className: "select-search-input",
608
+ className: "w-full border border-input rounded px-2 py-1 text-sm bg-transparent outline-none focus:ring-1 focus:ring-ring",
609
609
  placeholder: "Search...",
610
610
  value: searchQuery,
611
611
  onChange: handleSearchChange,
612
612
  onClick: (e) => e.stopPropagation(),
613
613
  "aria-label": "Search options"
614
614
  }
615
- )), /* @__PURE__ */ React7.createElement("div", { className: "select-options" }, filteredOptions.length === 0 ? /* @__PURE__ */ React7.createElement("div", { className: "select-no-options" }, "No options found") : optionGroups.length > 0 ? (
615
+ )), /* @__PURE__ */ React7.createElement("div", { className: "max-h-64 overflow-y-auto p-1" }, filteredOptions.length === 0 ? /* @__PURE__ */ React7.createElement("div", { className: "py-2 px-3 text-center text-sm text-muted-foreground" }, "No options found") : optionGroups.length > 0 ? (
616
616
  // Render grouped options
617
617
  optionGroups.map((group, groupIndex) => {
618
618
  const groupOptions = group.options.filter(
619
619
  (opt) => filteredOptions.includes(opt)
620
620
  );
621
621
  if (groupOptions.length === 0) return null;
622
- return /* @__PURE__ */ React7.createElement("div", { key: groupIndex, className: "select-optgroup" }, /* @__PURE__ */ React7.createElement("div", { className: "select-optgroup-label" }, group.label), groupOptions.map((option) => {
622
+ return /* @__PURE__ */ React7.createElement("div", { key: groupIndex, className: "py-1" }, /* @__PURE__ */ React7.createElement("div", { className: "py-1.5 px-2 text-xs font-semibold text-muted-foreground" }, group.label), groupOptions.map((option) => {
623
623
  const globalIndex = filteredOptions.indexOf(option);
624
624
  const isSelected = value === option.value;
625
625
  const isFocused = globalIndex === focusedIndex;
@@ -628,7 +628,7 @@ function Select({
628
628
  "div",
629
629
  {
630
630
  key: option.value,
631
- className: `select-option ${isSelected ? "select-option--selected" : ""} ${isFocused ? "select-option--focused" : ""} ${isDisabled ? "select-option--disabled" : ""}`,
631
+ className: `relative flex w-full cursor-pointer items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground ${isFocused ? "bg-accent text-accent-foreground" : ""} ${isSelected ? "font-medium bg-accent" : ""} ${isDisabled ? "pointer-events-none opacity-50" : ""}`,
632
632
  onClick: () => !isDisabled && handleSelect(option.value),
633
633
  role: "option",
634
634
  "aria-selected": isSelected,
@@ -648,7 +648,7 @@ function Select({
648
648
  "div",
649
649
  {
650
650
  key: option.value,
651
- className: `select-option ${isSelected ? "select-option--selected" : ""} ${isFocused ? "select-option--focused" : ""} ${isDisabled ? "select-option--disabled" : ""}`,
651
+ className: `relative flex w-full cursor-pointer items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground ${isFocused ? "bg-accent text-accent-foreground" : ""} ${isSelected ? "font-medium bg-accent" : ""} ${isDisabled ? "pointer-events-none opacity-50" : ""}`,
652
652
  onClick: () => !isDisabled && handleSelect(option.value),
653
653
  role: "option",
654
654
  "aria-selected": isSelected,
@@ -928,11 +928,7 @@ function FileInput({
928
928
  }
929
929
  };
930
930
  }, [value, imageToCrop]);
931
- const baseClassName = "file-input";
932
- const errorClassName = error ? "file-input--error" : "";
933
- const dragClassName = dragActive ? "file-input--drag-active" : "";
934
- const disabledClassName = disabled ? "file-input--disabled" : "";
935
- const combinedClassName = `${baseClassName} ${errorClassName} ${dragClassName} ${disabledClassName} ${className}`.trim();
931
+ const combinedClassName = `${className}`.trim();
936
932
  return /* @__PURE__ */ React7.createElement("div", { className: combinedClassName }, /* @__PURE__ */ React7.createElement(
937
933
  "input",
938
934
  {
@@ -945,7 +941,6 @@ function FileInput({
945
941
  multiple,
946
942
  disabled,
947
943
  required: required && value.length === 0,
948
- className: "file-input__native",
949
944
  "aria-invalid": error || props["aria-invalid"],
950
945
  "aria-describedby": props["aria-describedby"],
951
946
  "aria-required": required || props["aria-required"],
@@ -954,7 +949,7 @@ function FileInput({
954
949
  ), /* @__PURE__ */ React7.createElement(
955
950
  "div",
956
951
  {
957
- className: "file-input__dropzone",
952
+ className: `flex min-h-32 w-full cursor-pointer items-center justify-center rounded-md border-2 border-dashed border-input bg-transparent p-6 transition-colors hover:bg-accent/50 hover:border-ring ${dragActive ? "bg-accent border-ring" : ""} ${disabled ? "cursor-not-allowed opacity-50" : ""} ${error ? "border-red-500" : ""}`,
958
953
  onDragEnter: handleDrag,
959
954
  onDragLeave: handleDrag,
960
955
  onDragOver: handleDrag,
@@ -966,10 +961,10 @@ function FileInput({
966
961
  "aria-label": placeholder,
967
962
  "aria-disabled": disabled
968
963
  },
969
- /* @__PURE__ */ React7.createElement("div", { className: "file-input__dropzone-content" }, /* @__PURE__ */ React7.createElement(
964
+ /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col items-center gap-2 text-center" }, /* @__PURE__ */ React7.createElement(
970
965
  "svg",
971
966
  {
972
- className: "file-input__icon",
967
+ className: "text-muted-foreground",
973
968
  width: "48",
974
969
  height: "48",
975
970
  viewBox: "0 0 24 24",
@@ -983,30 +978,36 @@ function FileInput({
983
978
  /* @__PURE__ */ React7.createElement("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
984
979
  /* @__PURE__ */ React7.createElement("polyline", { points: "17 8 12 3 7 8" }),
985
980
  /* @__PURE__ */ React7.createElement("line", { x1: "12", y1: "3", x2: "12", y2: "15" })
986
- ), /* @__PURE__ */ React7.createElement("p", { className: "file-input__placeholder" }, value.length > 0 ? `${value.length} file(s) selected` : placeholder), accept && /* @__PURE__ */ React7.createElement("p", { className: "file-input__hint" }, "Accepted: ", accept), maxSize && /* @__PURE__ */ React7.createElement("p", { className: "file-input__hint" }, "Max size: ", formatFileSize(maxSize)))
987
- ), value.length > 0 && /* @__PURE__ */ React7.createElement("ul", { className: "file-input__list", role: "list" }, value.map((file, index) => {
981
+ ), /* @__PURE__ */ React7.createElement("p", { className: "text-sm font-medium" }, value.length > 0 ? `${value.length} file(s) selected` : placeholder), accept && /* @__PURE__ */ React7.createElement("p", { className: "text-xs text-muted-foreground" }, "Accepted: ", accept), maxSize && /* @__PURE__ */ React7.createElement("p", { className: "text-xs text-muted-foreground" }, "Max size: ", formatFileSize(maxSize)))
982
+ ), value.length > 0 && /* @__PURE__ */ React7.createElement("ul", { className: "flex flex-col gap-2 mt-4", role: "list" }, value.map((file, index) => {
988
983
  const previewUrl = showPreview ? getPreviewUrl(file) : null;
989
- return /* @__PURE__ */ React7.createElement("li", { key: `${file.name}-${index}`, className: "file-input__item" }, previewUrl && /* @__PURE__ */ React7.createElement(
984
+ return /* @__PURE__ */ React7.createElement("li", { key: `${file.name}-${index}`, className: "flex items-center gap-3 p-3 rounded-md border border-border bg-card hover:bg-accent/50 transition-colors" }, previewUrl && /* @__PURE__ */ React7.createElement(
990
985
  "img",
991
986
  {
992
987
  src: previewUrl,
993
988
  alt: file.name,
994
- className: "file-input__preview",
989
+ className: "w-12 h-12 rounded object-cover",
995
990
  width: "48",
996
991
  height: "48"
997
992
  }
998
- ), /* @__PURE__ */ React7.createElement("div", { className: "file-input__details" }, /* @__PURE__ */ React7.createElement("span", { className: "file-input__filename" }, file.name), /* @__PURE__ */ React7.createElement("span", { className: "file-input__filesize" }, formatFileSize(file.size)), showProgress && uploadProgress[file.name] !== void 0 && /* @__PURE__ */ React7.createElement("div", { className: "file-input__progress" }, /* @__PURE__ */ React7.createElement(
993
+ ), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col flex-1 min-w-0" }, /* @__PURE__ */ React7.createElement("span", { className: "text-sm font-medium truncate" }, file.name), /* @__PURE__ */ React7.createElement("span", { className: "text-xs text-muted-foreground" }, formatFileSize(file.size)), showProgress && uploadProgress[file.name] !== void 0 && /* @__PURE__ */ React7.createElement("div", { className: "flex items-center gap-2 mt-1" }, /* @__PURE__ */ React7.createElement(
999
994
  "div",
1000
995
  {
1001
- className: "file-input__progress-bar",
1002
- style: { width: `${uploadProgress[file.name]}%` },
996
+ className: "h-1.5 bg-muted rounded-full overflow-hidden flex-1",
1003
997
  role: "progressbar",
1004
998
  "aria-valuenow": uploadProgress[file.name],
1005
999
  "aria-valuemin": 0,
1006
1000
  "aria-valuemax": 100,
1007
1001
  "aria-label": `Upload progress: ${uploadProgress[file.name]}%`
1008
- }
1009
- ), /* @__PURE__ */ React7.createElement("span", { className: "file-input__progress-text" }, uploadProgress[file.name], "%"))), enableCropping && file.type.startsWith("image/") && /* @__PURE__ */ React7.createElement(
1002
+ },
1003
+ /* @__PURE__ */ React7.createElement(
1004
+ "div",
1005
+ {
1006
+ className: "h-full bg-primary transition-all",
1007
+ style: { width: `${uploadProgress[file.name]}%` }
1008
+ }
1009
+ )
1010
+ ), /* @__PURE__ */ React7.createElement("span", { className: "text-xs text-muted-foreground" }, uploadProgress[file.name], "%"))), enableCropping && file.type.startsWith("image/") && /* @__PURE__ */ React7.createElement(
1010
1011
  "button",
1011
1012
  {
1012
1013
  type: "button",
@@ -1015,7 +1016,7 @@ function FileInput({
1015
1016
  handleCrop(file);
1016
1017
  },
1017
1018
  disabled,
1018
- className: "file-input__crop",
1019
+ className: "flex items-center justify-center h-8 w-8 rounded border-none bg-transparent hover:bg-accent text-muted-foreground hover:text-foreground transition-colors",
1019
1020
  "aria-label": `Crop ${file.name}`
1020
1021
  },
1021
1022
  /* @__PURE__ */ React7.createElement(
@@ -1043,7 +1044,7 @@ function FileInput({
1043
1044
  handleRemove(index);
1044
1045
  },
1045
1046
  disabled,
1046
- className: "file-input__remove",
1047
+ className: "flex items-center justify-center h-8 w-8 rounded border-none bg-transparent hover:bg-accent text-muted-foreground hover:text-foreground transition-colors",
1047
1048
  "aria-label": `Remove ${file.name}`
1048
1049
  },
1049
1050
  /* @__PURE__ */ React7.createElement(
@@ -1063,26 +1064,26 @@ function FileInput({
1063
1064
  /* @__PURE__ */ React7.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1064
1065
  )
1065
1066
  ));
1066
- })), cropperOpen && imageToCrop && /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-modal" }, /* @__PURE__ */ React7.createElement(
1067
+ })), cropperOpen && imageToCrop && /* @__PURE__ */ React7.createElement("div", { className: "fixed inset-0 z-50 flex items-center justify-center" }, /* @__PURE__ */ React7.createElement(
1067
1068
  "div",
1068
1069
  {
1069
- className: "file-input-cropper-overlay",
1070
+ className: "absolute inset-0 bg-black/50",
1070
1071
  onClick: handleCropCancel,
1071
1072
  "aria-label": "Close cropper"
1072
1073
  }
1073
- ), /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-container" }, /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-header" }, /* @__PURE__ */ React7.createElement("h3", { className: "file-input-cropper-title" }, "Crop Image"), /* @__PURE__ */ React7.createElement(
1074
+ ), /* @__PURE__ */ React7.createElement("div", { className: "relative bg-popover border border-border rounded-lg shadow-lg max-w-3xl w-full mx-4" }, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center justify-between p-4 border-b border-border" }, /* @__PURE__ */ React7.createElement("h3", { className: "text-lg font-semibold" }, "Crop Image"), /* @__PURE__ */ React7.createElement(
1074
1075
  "button",
1075
1076
  {
1076
1077
  type: "button",
1077
- className: "file-input-cropper-close",
1078
+ className: "flex items-center justify-center h-8 w-8 rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors",
1078
1079
  onClick: handleCropCancel,
1079
1080
  "aria-label": "Close"
1080
1081
  },
1081
1082
  "\u2715"
1082
- )), /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-content" }, /* @__PURE__ */ React7.createElement(
1083
+ )), /* @__PURE__ */ React7.createElement("div", { className: "p-4" }, /* @__PURE__ */ React7.createElement(
1083
1084
  "div",
1084
1085
  {
1085
- className: "file-input-cropper-image-container",
1086
+ className: "relative w-full h-96 bg-muted rounded-md overflow-hidden",
1086
1087
  onMouseDown: (e) => {
1087
1088
  e.preventDefault();
1088
1089
  const startX = e.clientX - crop.x;
@@ -1106,7 +1107,7 @@ function FileInput({
1106
1107
  {
1107
1108
  src: imageToCrop.url,
1108
1109
  alt: "Crop preview",
1109
- className: "file-input-cropper-image",
1110
+ className: "absolute inset-0 w-full h-full object-contain",
1110
1111
  style: {
1111
1112
  transform: `translate(${crop.x}px, ${crop.y}px) scale(${zoom})`
1112
1113
  },
@@ -1136,15 +1137,15 @@ function FileInput({
1136
1137
  /* @__PURE__ */ React7.createElement(
1137
1138
  "div",
1138
1139
  {
1139
- className: "file-input-cropper-overlay-box",
1140
+ className: "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 border-2 border-primary rounded pointer-events-none",
1140
1141
  style: {
1141
1142
  width: cropAspectRatio ? `${Math.min(80, 80 * cropAspectRatio)}%` : "80%",
1142
1143
  aspectRatio: cropAspectRatio ? String(cropAspectRatio) : void 0
1143
1144
  }
1144
1145
  },
1145
- /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-grid" }, /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-grid-line" }), /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-grid-line" }))
1146
+ /* @__PURE__ */ React7.createElement("div", { className: "absolute inset-0 grid grid-cols-3 grid-rows-3" }, /* @__PURE__ */ React7.createElement("div", { className: "border-r border-b border-primary/30" }), /* @__PURE__ */ React7.createElement("div", { className: "border-r border-b border-primary/30" }), /* @__PURE__ */ React7.createElement("div", { className: "border-b border-primary/30" }), /* @__PURE__ */ React7.createElement("div", { className: "border-r border-b border-primary/30" }), /* @__PURE__ */ React7.createElement("div", { className: "border-r border-b border-primary/30" }), /* @__PURE__ */ React7.createElement("div", { className: "border-b border-primary/30" }), /* @__PURE__ */ React7.createElement("div", { className: "border-r border-primary/30" }), /* @__PURE__ */ React7.createElement("div", { className: "border-r border-primary/30" }), /* @__PURE__ */ React7.createElement("div", null))
1146
1147
  )
1147
- ), /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-controls" }, /* @__PURE__ */ React7.createElement("label", { htmlFor: "zoom-slider", className: "file-input-cropper-label" }, "Zoom: ", zoom.toFixed(1), "x"), /* @__PURE__ */ React7.createElement(
1148
+ ), /* @__PURE__ */ React7.createElement("div", { className: "flex items-center gap-3 mt-4" }, /* @__PURE__ */ React7.createElement("label", { htmlFor: "zoom-slider", className: "text-sm font-medium whitespace-nowrap" }, "Zoom: ", zoom.toFixed(1), "x"), /* @__PURE__ */ React7.createElement(
1148
1149
  "input",
1149
1150
  {
1150
1151
  id: "zoom-slider",
@@ -1154,14 +1155,14 @@ function FileInput({
1154
1155
  step: "0.1",
1155
1156
  value: zoom,
1156
1157
  onChange: (e) => onZoomChange(parseFloat(e.target.value)),
1157
- className: "file-input-cropper-slider",
1158
+ className: "flex-1 h-2 bg-muted rounded-lg appearance-none cursor-pointer",
1158
1159
  "aria-label": "Zoom level"
1159
1160
  }
1160
- ))), /* @__PURE__ */ React7.createElement("div", { className: "file-input-cropper-footer" }, /* @__PURE__ */ React7.createElement(
1161
+ ))), /* @__PURE__ */ React7.createElement("div", { className: "flex items-center justify-end gap-2 p-4 border-t border-border" }, /* @__PURE__ */ React7.createElement(
1161
1162
  "button",
1162
1163
  {
1163
1164
  type: "button",
1164
- className: "file-input-cropper-button file-input-cropper-button--cancel",
1165
+ className: "inline-flex items-center justify-center h-9 rounded-md px-4 text-sm font-medium border border-input bg-transparent hover:bg-accent hover:text-accent-foreground transition-colors",
1165
1166
  onClick: handleCropCancel
1166
1167
  },
1167
1168
  "Cancel"
@@ -1169,7 +1170,7 @@ function FileInput({
1169
1170
  "button",
1170
1171
  {
1171
1172
  type: "button",
1172
- className: "file-input-cropper-button file-input-cropper-button--save",
1173
+ className: "inline-flex items-center justify-center h-9 rounded-md px-4 text-sm font-medium bg-primary text-primary-foreground hover:bg-primary/90 transition-colors",
1173
1174
  onClick: handleCropSave
1174
1175
  },
1175
1176
  "Save"
@@ -1317,27 +1318,27 @@ function DatePicker({
1317
1318
  const handleNextMonth = () => {
1318
1319
  setSelectedMonth(new Date(year, month + 1, 1));
1319
1320
  };
1320
- return /* @__PURE__ */ React7.createElement("div", { className: "datepicker-calendar", role: "grid", "aria-label": "Calendar" }, /* @__PURE__ */ React7.createElement("div", { className: "datepicker-calendar-header" }, /* @__PURE__ */ React7.createElement(
1321
+ return /* @__PURE__ */ React7.createElement("div", { role: "grid", "aria-label": "Calendar" }, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center justify-between pb-2 border-b border-border" }, /* @__PURE__ */ React7.createElement(
1321
1322
  "button",
1322
1323
  {
1323
1324
  type: "button",
1324
- className: "datepicker-calendar-nav",
1325
+ className: "flex items-center justify-center h-8 w-8 rounded border-none bg-transparent hover:bg-accent cursor-pointer",
1325
1326
  onClick: handlePrevMonth,
1326
1327
  "aria-label": "Previous month"
1327
1328
  },
1328
1329
  "\u2190"
1329
- ), /* @__PURE__ */ React7.createElement("div", { className: "datepicker-calendar-month" }, `${monthNames[month]} ${year}`), /* @__PURE__ */ React7.createElement(
1330
+ ), /* @__PURE__ */ React7.createElement("div", { className: "font-medium text-sm" }, `${monthNames[month]} ${year}`), /* @__PURE__ */ React7.createElement(
1330
1331
  "button",
1331
1332
  {
1332
1333
  type: "button",
1333
- className: "datepicker-calendar-nav",
1334
+ className: "flex items-center justify-center h-8 w-8 rounded border-none bg-transparent hover:bg-accent cursor-pointer",
1334
1335
  onClick: handleNextMonth,
1335
1336
  "aria-label": "Next month"
1336
1337
  },
1337
1338
  "\u2192"
1338
- )), /* @__PURE__ */ React7.createElement("div", { className: "datepicker-calendar-weekdays" }, ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((day) => /* @__PURE__ */ React7.createElement("div", { key: day, className: "datepicker-calendar-weekday" }, day))), /* @__PURE__ */ React7.createElement("div", { className: "datepicker-calendar-days" }, days.map((date, index) => {
1339
+ )), /* @__PURE__ */ React7.createElement("div", { className: "grid grid-cols-7 gap-1 mt-2" }, ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((day) => /* @__PURE__ */ React7.createElement("div", { key: day, className: "flex items-center justify-center h-8 w-full text-xs text-muted-foreground font-medium" }, day))), /* @__PURE__ */ React7.createElement("div", { className: "grid grid-cols-7 gap-1" }, days.map((date, index) => {
1339
1340
  if (!date) {
1340
- return /* @__PURE__ */ React7.createElement("div", { key: `empty-${index}`, className: "datepicker-calendar-day datepicker-calendar-day--empty" });
1341
+ return /* @__PURE__ */ React7.createElement("div", { key: `empty-${index}` });
1341
1342
  }
1342
1343
  const isSelected = value && date.toDateString() === value.toDateString();
1343
1344
  const isToday = date.toDateString() === (/* @__PURE__ */ new Date()).toDateString();
@@ -1347,7 +1348,7 @@ function DatePicker({
1347
1348
  {
1348
1349
  key: date.toISOString(),
1349
1350
  type: "button",
1350
- className: `datepicker-calendar-day ${isSelected ? "datepicker-calendar-day--selected" : ""} ${isToday ? "datepicker-calendar-day--today" : ""} ${disabled2 ? "datepicker-calendar-day--disabled" : ""}`,
1351
+ className: `flex items-center justify-center h-8 w-full rounded border-none bg-transparent cursor-pointer text-sm transition-colors hover:bg-accent hover:text-accent-foreground ${isSelected ? "bg-primary text-primary-foreground font-semibold" : ""} ${isToday ? "border border-primary" : ""} ${disabled2 ? "cursor-not-allowed opacity-50 pointer-events-none" : ""}`,
1351
1352
  onClick: () => !disabled2 && handleDateSelect(date),
1352
1353
  disabled: disabled2,
1353
1354
  "aria-label": formatDate(date, format)
@@ -1356,11 +1357,7 @@ function DatePicker({
1356
1357
  );
1357
1358
  })));
1358
1359
  };
1359
- const baseClassName = "datepicker";
1360
- const errorClassName = error ? "datepicker--error" : "";
1361
- const disabledClassName = disabled ? "datepicker--disabled" : "";
1362
- const openClassName = isOpen ? "datepicker--open" : "";
1363
- const combinedClassName = `${baseClassName} ${errorClassName} ${disabledClassName} ${openClassName} ${className}`.trim();
1360
+ const combinedClassName = `relative ${className}`.trim();
1364
1361
  return /* @__PURE__ */ React7.createElement("div", { ref: containerRef, className: combinedClassName }, /* @__PURE__ */ React7.createElement(
1365
1362
  "input",
1366
1363
  {
@@ -1368,7 +1365,7 @@ function DatePicker({
1368
1365
  name,
1369
1366
  value: value ? value.toISOString() : ""
1370
1367
  }
1371
- ), /* @__PURE__ */ React7.createElement("div", { className: "datepicker-input-wrapper" }, showIcon && /* @__PURE__ */ React7.createElement("span", { className: "datepicker-icon", "aria-hidden": "true" }, /* @__PURE__ */ React7.createElement(
1368
+ ), /* @__PURE__ */ React7.createElement("div", { className: "relative" }, showIcon && /* @__PURE__ */ React7.createElement("span", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none", "aria-hidden": "true" }, /* @__PURE__ */ React7.createElement(
1372
1369
  "svg",
1373
1370
  {
1374
1371
  xmlns: "http://www.w3.org/2000/svg",
@@ -1387,7 +1384,7 @@ function DatePicker({
1387
1384
  {
1388
1385
  ref: inputRef,
1389
1386
  type: "text",
1390
- className: "datepicker-input",
1387
+ className: `flex h-9 w-full rounded-md border border-input bg-transparent ${showIcon ? "pl-10" : "pl-3"} ${clearable && value ? "pr-10" : "pr-3"} py-1 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm ${error ? "border-red-500 ring-1 ring-red-500" : ""}`,
1391
1388
  value: inputValue,
1392
1389
  onChange: handleInputChange,
1393
1390
  onClick: handleToggle,
@@ -1404,13 +1401,13 @@ function DatePicker({
1404
1401
  "button",
1405
1402
  {
1406
1403
  type: "button",
1407
- className: "datepicker-clear",
1404
+ className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors",
1408
1405
  onClick: handleClear,
1409
1406
  "aria-label": "Clear date",
1410
1407
  tabIndex: -1
1411
1408
  },
1412
1409
  "\u2715"
1413
- )), isOpen && !disabled && /* @__PURE__ */ React7.createElement("div", { className: "datepicker-dropdown" }, renderCalendar()));
1410
+ )), isOpen && !disabled && /* @__PURE__ */ React7.createElement("div", { className: "absolute z-50 top-full mt-1 min-w-full rounded-md border border-border bg-popover text-popover-foreground shadow-md p-3" }, renderCalendar()));
1414
1411
  }
1415
1412
  DatePicker.displayName = "DatePicker";
1416
1413
  function parseTimeString(timeStr, use24Hour) {
@@ -1543,11 +1540,7 @@ function TimePicker({
1543
1540
  }
1544
1541
  return mins;
1545
1542
  }, [minuteStep]);
1546
- const baseClassName = "timepicker";
1547
- const errorClassName = error ? "timepicker--error" : "";
1548
- const disabledClassName = disabled ? "timepicker--disabled" : "";
1549
- const openClassName = isOpen ? "timepicker--open" : "";
1550
- const combinedClassName = `${baseClassName} ${errorClassName} ${disabledClassName} ${openClassName} ${className}`.trim();
1543
+ const combinedClassName = `relative ${className}`.trim();
1551
1544
  const displayValue = formatTimeValue(timeValue, use24Hour);
1552
1545
  return /* @__PURE__ */ React7.createElement("div", { ref: containerRef, className: combinedClassName }, /* @__PURE__ */ React7.createElement(
1553
1546
  "input",
@@ -1556,7 +1549,7 @@ function TimePicker({
1556
1549
  name,
1557
1550
  value
1558
1551
  }
1559
- ), /* @__PURE__ */ React7.createElement("div", { className: "timepicker-input-wrapper" }, showIcon && /* @__PURE__ */ React7.createElement("span", { className: "timepicker-icon", "aria-hidden": "true" }, /* @__PURE__ */ React7.createElement(
1552
+ ), /* @__PURE__ */ React7.createElement("div", { className: "relative" }, showIcon && /* @__PURE__ */ React7.createElement("span", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none", "aria-hidden": "true" }, /* @__PURE__ */ React7.createElement(
1560
1553
  "svg",
1561
1554
  {
1562
1555
  xmlns: "http://www.w3.org/2000/svg",
@@ -1576,7 +1569,7 @@ function TimePicker({
1576
1569
  {
1577
1570
  ref: inputRef,
1578
1571
  type: "text",
1579
- className: "timepicker-input",
1572
+ className: `flex h-9 w-full rounded-md border border-input bg-transparent ${showIcon ? "pl-10" : "pl-3"} ${clearable && value ? "pr-10" : "pr-3"} py-1 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm ${error ? "border-red-500 ring-1 ring-red-500" : ""}`,
1580
1573
  value: displayValue,
1581
1574
  onClick: handleToggle,
1582
1575
  onBlur,
@@ -1592,13 +1585,13 @@ function TimePicker({
1592
1585
  "button",
1593
1586
  {
1594
1587
  type: "button",
1595
- className: "timepicker-clear",
1588
+ className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors",
1596
1589
  onClick: handleClear,
1597
1590
  "aria-label": "Clear time",
1598
1591
  tabIndex: -1
1599
1592
  },
1600
1593
  "\u2715"
1601
- )), isOpen && !disabled && /* @__PURE__ */ React7.createElement("div", { className: "timepicker-dropdown" }, /* @__PURE__ */ React7.createElement("div", { className: "timepicker-selectors" }, /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column" }, /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column-label" }, use24Hour ? "Hour" : "Hour"), /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column-options" }, hours.map((hour) => {
1594
+ )), isOpen && !disabled && /* @__PURE__ */ React7.createElement("div", { className: "absolute z-50 top-full mt-1 min-w-full rounded-md border border-border bg-popover text-popover-foreground shadow-md p-3" }, /* @__PURE__ */ React7.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col flex-1" }, /* @__PURE__ */ React7.createElement("div", { className: "text-xs font-medium text-muted-foreground mb-2 text-center" }, use24Hour ? "Hour" : "Hour"), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col gap-1 max-h-48 overflow-y-auto" }, hours.map((hour) => {
1602
1595
  const displayHour = use24Hour ? hour : hour;
1603
1596
  const isSelected = use24Hour ? timeValue?.hour === (hour === 0 ? 12 : hour > 12 ? hour - 12 : hour) && timeValue?.period === (hour >= 12 ? "PM" : "AM") : timeValue?.hour === hour;
1604
1597
  return /* @__PURE__ */ React7.createElement(
@@ -1606,7 +1599,7 @@ function TimePicker({
1606
1599
  {
1607
1600
  key: hour,
1608
1601
  type: "button",
1609
- className: `timepicker-option ${isSelected ? "timepicker-option--selected" : ""}`,
1602
+ className: `flex items-center justify-center h-8 w-full rounded border-none bg-transparent cursor-pointer text-sm transition-colors hover:bg-accent hover:text-accent-foreground ${isSelected ? "bg-primary text-primary-foreground font-semibold" : ""}`,
1610
1603
  onClick: () => {
1611
1604
  if (use24Hour) {
1612
1605
  const hour12 = hour === 0 ? 12 : hour > 12 ? hour - 12 : hour;
@@ -1626,24 +1619,24 @@ function TimePicker({
1626
1619
  },
1627
1620
  String(displayHour).padStart(2, "0")
1628
1621
  );
1629
- }))), /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column" }, /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column-label" }, "Minute"), /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column-options" }, minutes.map((minute) => {
1622
+ }))), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col flex-1" }, /* @__PURE__ */ React7.createElement("div", { className: "text-xs font-medium text-muted-foreground mb-2 text-center" }, "Minute"), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col gap-1 max-h-48 overflow-y-auto" }, minutes.map((minute) => {
1630
1623
  const isSelected = timeValue?.minute === minute;
1631
1624
  return /* @__PURE__ */ React7.createElement(
1632
1625
  "button",
1633
1626
  {
1634
1627
  key: minute,
1635
1628
  type: "button",
1636
- className: `timepicker-option ${isSelected ? "timepicker-option--selected" : ""}`,
1629
+ className: `flex items-center justify-center h-8 w-full rounded border-none bg-transparent cursor-pointer text-sm transition-colors hover:bg-accent hover:text-accent-foreground ${isSelected ? "bg-primary text-primary-foreground font-semibold" : ""}`,
1637
1630
  onClick: () => handleMinuteChange(minute),
1638
1631
  "aria-label": `${String(minute).padStart(2, "0")} minutes`
1639
1632
  },
1640
1633
  String(minute).padStart(2, "0")
1641
1634
  );
1642
- }))), !use24Hour && /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column timepicker-column--period" }, /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column-label" }, "Period"), /* @__PURE__ */ React7.createElement("div", { className: "timepicker-column-options" }, /* @__PURE__ */ React7.createElement(
1635
+ }))), !use24Hour && /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col w-20" }, /* @__PURE__ */ React7.createElement("div", { className: "text-xs font-medium text-muted-foreground mb-2 text-center" }, "Period"), /* @__PURE__ */ React7.createElement("div", { className: "flex flex-col gap-1" }, /* @__PURE__ */ React7.createElement(
1643
1636
  "button",
1644
1637
  {
1645
1638
  type: "button",
1646
- className: `timepicker-option ${timeValue?.period === "AM" ? "timepicker-option--selected" : ""}`,
1639
+ className: `flex items-center justify-center h-8 w-full rounded border-none bg-transparent cursor-pointer text-sm transition-colors hover:bg-accent hover:text-accent-foreground ${timeValue?.period === "AM" ? "bg-primary text-primary-foreground font-semibold" : ""}`,
1647
1640
  onClick: () => handlePeriodChange("AM")
1648
1641
  },
1649
1642
  "AM"
@@ -1651,7 +1644,7 @@ function TimePicker({
1651
1644
  "button",
1652
1645
  {
1653
1646
  type: "button",
1654
- className: `timepicker-option ${timeValue?.period === "PM" ? "timepicker-option--selected" : ""}`,
1647
+ className: `flex items-center justify-center h-8 w-full rounded border-none bg-transparent cursor-pointer text-sm transition-colors hover:bg-accent hover:text-accent-foreground ${timeValue?.period === "PM" ? "bg-primary text-primary-foreground font-semibold" : ""}`,
1655
1648
  onClick: () => handlePeriodChange("PM")
1656
1649
  },
1657
1650
  "PM"
@@ -1790,27 +1783,27 @@ function DateRangePicker({
1790
1783
  const handleNextMonth = () => {
1791
1784
  setSelectedMonth(new Date(year, month + 1, 1));
1792
1785
  };
1793
- return /* @__PURE__ */ React7.createElement("div", { className: "daterangepicker-calendar", role: "grid", "aria-label": "Calendar" }, /* @__PURE__ */ React7.createElement("div", { className: "daterangepicker-calendar-header" }, /* @__PURE__ */ React7.createElement(
1786
+ return /* @__PURE__ */ React7.createElement("div", { role: "grid", "aria-label": "Calendar" }, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center justify-between pb-2 border-b border-border" }, /* @__PURE__ */ React7.createElement(
1794
1787
  "button",
1795
1788
  {
1796
1789
  type: "button",
1797
- className: "daterangepicker-calendar-nav",
1790
+ className: "flex items-center justify-center h-8 w-8 rounded border-none bg-transparent hover:bg-accent cursor-pointer",
1798
1791
  onClick: handlePrevMonth,
1799
1792
  "aria-label": "Previous month"
1800
1793
  },
1801
1794
  "\u2190"
1802
- ), /* @__PURE__ */ React7.createElement("div", { className: "daterangepicker-calendar-month" }, `${monthNames[month]} ${year}`), /* @__PURE__ */ React7.createElement(
1795
+ ), /* @__PURE__ */ React7.createElement("div", { className: "font-medium text-sm" }, `${monthNames[month]} ${year}`), /* @__PURE__ */ React7.createElement(
1803
1796
  "button",
1804
1797
  {
1805
1798
  type: "button",
1806
- className: "daterangepicker-calendar-nav",
1799
+ className: "flex items-center justify-center h-8 w-8 rounded border-none bg-transparent hover:bg-accent cursor-pointer",
1807
1800
  onClick: handleNextMonth,
1808
1801
  "aria-label": "Next month"
1809
1802
  },
1810
1803
  "\u2192"
1811
- )), /* @__PURE__ */ React7.createElement("div", { className: "daterangepicker-calendar-weekdays" }, ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((day) => /* @__PURE__ */ React7.createElement("div", { key: day, className: "daterangepicker-calendar-weekday" }, day))), /* @__PURE__ */ React7.createElement("div", { className: "daterangepicker-calendar-days" }, days.map((date, index) => {
1804
+ )), /* @__PURE__ */ React7.createElement("div", { className: "grid grid-cols-7 gap-1 mt-2" }, ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map((day) => /* @__PURE__ */ React7.createElement("div", { key: day, className: "flex items-center justify-center h-8 w-full text-xs text-muted-foreground font-medium" }, day))), /* @__PURE__ */ React7.createElement("div", { className: "grid grid-cols-7 gap-1" }, days.map((date, index) => {
1812
1805
  if (!date) {
1813
- return /* @__PURE__ */ React7.createElement("div", { key: `empty-${index}`, className: "daterangepicker-calendar-day daterangepicker-calendar-day--empty" });
1806
+ return /* @__PURE__ */ React7.createElement("div", { key: `empty-${index}` });
1814
1807
  }
1815
1808
  const isStart = rangeStart && date.toDateString() === rangeStart.toDateString();
1816
1809
  const isEnd = rangeEnd && date.toDateString() === rangeEnd.toDateString();
@@ -1823,7 +1816,7 @@ function DateRangePicker({
1823
1816
  {
1824
1817
  key: date.toISOString(),
1825
1818
  type: "button",
1826
- className: `daterangepicker-calendar-day ${isStart || isEnd ? "daterangepicker-calendar-day--selected" : ""} ${isInRange || isInHoverRange ? "daterangepicker-calendar-day--in-range" : ""} ${isToday ? "daterangepicker-calendar-day--today" : ""} ${disabled2 ? "daterangepicker-calendar-day--disabled" : ""}`,
1819
+ className: `flex items-center justify-center h-8 w-full rounded border-none bg-transparent cursor-pointer text-sm transition-colors hover:bg-accent hover:text-accent-foreground ${isStart || isEnd ? "bg-primary text-primary-foreground font-semibold" : ""} ${isInRange || isInHoverRange ? "bg-accent/50" : ""} ${isToday ? "border border-primary" : ""} ${disabled2 ? "cursor-not-allowed opacity-50 pointer-events-none" : ""}`,
1827
1820
  onClick: () => !disabled2 && handleDateSelect(date),
1828
1821
  onMouseEnter: () => setHoverDate(date),
1829
1822
  onMouseLeave: () => setHoverDate(null),
@@ -1834,11 +1827,7 @@ function DateRangePicker({
1834
1827
  );
1835
1828
  })));
1836
1829
  };
1837
- const baseClassName = "daterangepicker";
1838
- const errorClassName = error ? "daterangepicker--error" : "";
1839
- const disabledClassName = disabled ? "daterangepicker--disabled" : "";
1840
- const openClassName = isOpen ? "daterangepicker--open" : "";
1841
- const combinedClassName = `${baseClassName} ${errorClassName} ${disabledClassName} ${openClassName} ${className}`.trim();
1830
+ const combinedClassName = `relative ${className}`.trim();
1842
1831
  const displayValue = rangeStart && rangeEnd ? `${formatDate2(rangeStart, format)}${separator}${formatDate2(rangeEnd, format)}` : rangeStart ? formatDate2(rangeStart, format) : "";
1843
1832
  return /* @__PURE__ */ React7.createElement("div", { ref: containerRef, className: combinedClassName }, /* @__PURE__ */ React7.createElement(
1844
1833
  "input",
@@ -1854,7 +1843,7 @@ function DateRangePicker({
1854
1843
  name: `${name}[end]`,
1855
1844
  value: rangeEnd ? rangeEnd.toISOString() : ""
1856
1845
  }
1857
- ), /* @__PURE__ */ React7.createElement("div", { className: "daterangepicker-input-wrapper" }, showIcon && /* @__PURE__ */ React7.createElement("span", { className: "daterangepicker-icon", "aria-hidden": "true" }, /* @__PURE__ */ React7.createElement(
1846
+ ), /* @__PURE__ */ React7.createElement("div", { className: "relative" }, showIcon && /* @__PURE__ */ React7.createElement("span", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none", "aria-hidden": "true" }, /* @__PURE__ */ React7.createElement(
1858
1847
  "svg",
1859
1848
  {
1860
1849
  xmlns: "http://www.w3.org/2000/svg",
@@ -1872,7 +1861,7 @@ function DateRangePicker({
1872
1861
  "input",
1873
1862
  {
1874
1863
  type: "text",
1875
- className: "daterangepicker-input",
1864
+ className: `flex h-9 w-full rounded-md border border-input bg-transparent ${showIcon ? "pl-10" : "pl-3"} ${clearable && (rangeStart || rangeEnd) ? "pr-10" : "pr-3"} py-1 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm ${error ? "border-red-500 ring-1 ring-red-500" : ""}`,
1876
1865
  value: displayValue,
1877
1866
  onClick: handleToggle,
1878
1867
  onBlur,
@@ -1888,13 +1877,13 @@ function DateRangePicker({
1888
1877
  "button",
1889
1878
  {
1890
1879
  type: "button",
1891
- className: "daterangepicker-clear",
1880
+ className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors",
1892
1881
  onClick: handleClear,
1893
1882
  "aria-label": "Clear date range",
1894
1883
  tabIndex: -1
1895
1884
  },
1896
1885
  "\u2715"
1897
- )), isOpen && !disabled && /* @__PURE__ */ React7.createElement("div", { className: "daterangepicker-dropdown" }, renderCalendar(), rangeStart && !rangeEnd && /* @__PURE__ */ React7.createElement("div", { className: "daterangepicker-hint" }, "Select end date")));
1886
+ )), isOpen && !disabled && /* @__PURE__ */ React7.createElement("div", { className: "absolute z-50 top-full mt-1 min-w-full rounded-md border border-border bg-popover text-popover-foreground shadow-md p-3" }, renderCalendar(), rangeStart && !rangeEnd && /* @__PURE__ */ React7.createElement("div", { className: "text-xs text-muted-foreground text-center pt-2 border-t border-border mt-2" }, "Select end date")));
1898
1887
  }
1899
1888
  DateRangePicker.displayName = "DateRangePicker";
1900
1889
  function htmlToMarkdown(html) {
@@ -2049,17 +2038,13 @@ function RichTextEditor({
2049
2038
  }
2050
2039
  }
2051
2040
  };
2052
- const baseClassName = "richtexteditor";
2053
- const errorClassName = error ? "richtexteditor--error" : "";
2054
- const disabledClassName = disabled ? "richtexteditor--disabled" : "";
2055
- const modeClassName = `richtexteditor--${currentMode}`;
2056
- const combinedClassName = `${baseClassName} ${errorClassName} ${disabledClassName} ${modeClassName} ${className}`.trim();
2041
+ const combinedClassName = `rounded-md border border-input ${error ? "border-red-500 ring-1 ring-red-500" : ""} ${disabled ? "opacity-50 cursor-not-allowed" : ""} ${className}`.trim();
2057
2042
  const editorStyle = {
2058
2043
  minHeight,
2059
2044
  maxHeight,
2060
2045
  overflowY: maxHeight ? "auto" : void 0
2061
2046
  };
2062
- return /* @__PURE__ */ React7.createElement("div", { className: combinedClassName }, /* @__PURE__ */ React7.createElement("input", { type: "hidden", name, value: content }), showToolbar && /* @__PURE__ */ React7.createElement("div", { className: "richtexteditor-toolbar" }, /* @__PURE__ */ React7.createElement("div", { className: "richtexteditor-toolbar-buttons" }, toolbarButtons.map((buttonName) => {
2047
+ return /* @__PURE__ */ React7.createElement("div", { className: combinedClassName }, /* @__PURE__ */ React7.createElement("input", { type: "hidden", name, value: content }), showToolbar && /* @__PURE__ */ React7.createElement("div", { className: "flex items-center justify-between p-2 border-b border-border bg-muted/50" }, /* @__PURE__ */ React7.createElement("div", { className: "flex items-center gap-1" }, toolbarButtons.map((buttonName) => {
2063
2048
  const button = toolbarConfig[buttonName];
2064
2049
  if (!button) return null;
2065
2050
  return /* @__PURE__ */ React7.createElement(
@@ -2067,7 +2052,7 @@ function RichTextEditor({
2067
2052
  {
2068
2053
  key: buttonName,
2069
2054
  type: "button",
2070
- className: "richtexteditor-toolbar-button",
2055
+ className: "flex items-center justify-center h-8 w-8 rounded border-none bg-transparent hover:bg-accent text-muted-foreground hover:text-foreground cursor-pointer transition-colors disabled:cursor-not-allowed disabled:opacity-50",
2071
2056
  onClick: () => editorRef.current && button.action(editorRef.current),
2072
2057
  title: button.title,
2073
2058
  disabled: disabled || currentMode === "markdown",
@@ -2079,18 +2064,18 @@ function RichTextEditor({
2079
2064
  "button",
2080
2065
  {
2081
2066
  type: "button",
2082
- className: "richtexteditor-mode-toggle",
2067
+ className: "flex items-center justify-center h-8 px-3 rounded border-none bg-transparent hover:bg-accent text-xs font-medium text-muted-foreground hover:text-foreground cursor-pointer transition-colors disabled:cursor-not-allowed disabled:opacity-50",
2083
2068
  onClick: handleModeToggle,
2084
2069
  disabled,
2085
2070
  title: `Switch to ${currentMode === "wysiwyg" ? "Markdown" : "WYSIWYG"}`,
2086
2071
  "aria-label": `Switch to ${currentMode === "wysiwyg" ? "Markdown" : "WYSIWYG"}`
2087
2072
  },
2088
2073
  currentMode === "wysiwyg" ? "MD" : "WYSIWYG"
2089
- )), /* @__PURE__ */ React7.createElement("div", { className: "richtexteditor-editor", style: editorStyle }, currentMode === "wysiwyg" ? /* @__PURE__ */ React7.createElement(
2074
+ )), /* @__PURE__ */ React7.createElement("div", { style: editorStyle }, currentMode === "wysiwyg" ? /* @__PURE__ */ React7.createElement(
2090
2075
  "div",
2091
2076
  {
2092
2077
  ref: editorRef,
2093
- className: "richtexteditor-content",
2078
+ className: "w-full p-3 text-base md:text-sm outline-none bg-transparent focus-visible:outline-none [&:empty:before]:content-[attr(data-placeholder)] [&:empty:before]:text-muted-foreground",
2094
2079
  role: "textbox",
2095
2080
  contentEditable: !disabled,
2096
2081
  onInput: handleWysiwygChange,
@@ -2105,7 +2090,7 @@ function RichTextEditor({
2105
2090
  "textarea",
2106
2091
  {
2107
2092
  ref: textareaRef,
2108
- className: "richtexteditor-markdown",
2093
+ className: "w-full p-3 text-base md:text-sm outline-none bg-transparent resize-none focus-visible:outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
2109
2094
  value: content,
2110
2095
  onChange: handleMarkdownChange,
2111
2096
  onBlur,
@@ -2114,7 +2099,8 @@ function RichTextEditor({
2114
2099
  placeholder,
2115
2100
  "aria-invalid": error || props["aria-invalid"] ? "true" : "false",
2116
2101
  "aria-describedby": props["aria-describedby"],
2117
- "aria-required": required || props["aria-required"]
2102
+ "aria-required": required || props["aria-required"],
2103
+ style: editorStyle
2118
2104
  }
2119
2105
  )));
2120
2106
  }