@krizaka/ui 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/{chunk-I5RVM5CW.js → chunk-2FRWNSRO.js} +2 -6
  2. package/dist/chunk-2FRWNSRO.js.map +1 -0
  3. package/dist/chunk-BTMFZ66D.js +135 -0
  4. package/dist/chunk-BTMFZ66D.js.map +1 -0
  5. package/dist/chunk-C2BRIFJG.js +13 -0
  6. package/dist/chunk-C2BRIFJG.js.map +1 -0
  7. package/dist/chunk-KDXRYUD3.js +39 -0
  8. package/dist/chunk-KDXRYUD3.js.map +1 -0
  9. package/dist/{chunk-2PUDI7JS.js → chunk-ZKVQGXLD.js} +5 -3
  10. package/dist/{chunk-2PUDI7JS.js.map → chunk-ZKVQGXLD.js.map} +1 -1
  11. package/dist/command.js +1 -1
  12. package/dist/confirm-button.js +1 -1
  13. package/dist/data-table.js +3 -2
  14. package/dist/data-table.js.map +1 -1
  15. package/dist/date-picker.d.ts +3 -1
  16. package/dist/date-picker.js +13 -13
  17. package/dist/date-picker.js.map +1 -1
  18. package/dist/dropdown-menu.js +1 -1
  19. package/dist/filter-bar.js +3 -2
  20. package/dist/form.d.ts +23 -12
  21. package/dist/form.js +11 -47
  22. package/dist/form.js.map +1 -1
  23. package/dist/glow-card.js +1 -1
  24. package/dist/image-cropper.js +3 -1
  25. package/dist/image-cropper.js.map +1 -1
  26. package/dist/marquee.js +1 -1
  27. package/dist/native/form.d.ts +60 -15
  28. package/dist/native/form.js +103 -42
  29. package/dist/native/form.js.map +1 -1
  30. package/dist/native.d.ts +206 -2
  31. package/dist/native.js +1172 -541
  32. package/dist/native.js.map +1 -1
  33. package/dist/nav-bar.js +1 -1
  34. package/dist/popover.js +1 -1
  35. package/dist/radio-group.d.ts +66 -32
  36. package/dist/radio-group.js +54 -10
  37. package/dist/radio-group.js.map +1 -1
  38. package/dist/slider.d.ts +96 -35
  39. package/dist/slider.js +67 -13
  40. package/dist/slider.js.map +1 -1
  41. package/dist/terminal-replay.js +34 -60
  42. package/dist/terminal-replay.js.map +1 -1
  43. package/dist/toast.js +1 -1
  44. package/dist/tooltip.js +1 -1
  45. package/dist/video-player.js +3 -1
  46. package/dist/video-player.js.map +1 -1
  47. package/package.json +6 -6
  48. package/registry/combobox.json +225 -3
  49. package/registry/date-picker.json +16 -2
  50. package/registry/dialog.json +74 -3
  51. package/registry/examples/combobox/native/multiple.d.ts +4 -0
  52. package/registry/examples/combobox/native/multiple.dark.png +0 -0
  53. package/registry/examples/combobox/native/multiple.js +15 -0
  54. package/registry/examples/combobox/native/multiple.light.png +0 -0
  55. package/registry/examples/combobox/native/multiple.tsx +15 -0
  56. package/registry/examples/combobox/native/search.d.ts +4 -0
  57. package/registry/examples/combobox/native/search.dark.png +0 -0
  58. package/registry/examples/combobox/native/search.js +15 -0
  59. package/registry/examples/combobox/native/search.light.png +0 -0
  60. package/registry/examples/combobox/native/search.tsx +15 -0
  61. package/registry/examples/dialog/native/sheet.d.ts +4 -0
  62. package/registry/examples/dialog/native/sheet.dark.png +0 -0
  63. package/registry/examples/dialog/native/sheet.js +21 -0
  64. package/registry/examples/dialog/native/sheet.light.png +0 -0
  65. package/registry/examples/dialog/native/sheet.tsx +18 -0
  66. package/registry/examples/field/native/select.d.ts +4 -0
  67. package/registry/examples/field/native/select.dark.png +0 -0
  68. package/registry/examples/field/native/select.js +29 -0
  69. package/registry/examples/field/native/select.light.png +0 -0
  70. package/registry/examples/field/native/select.tsx +25 -0
  71. package/registry/examples/form/native/audience.dark.png +0 -0
  72. package/registry/examples/form/native/audience.light.png +0 -0
  73. package/registry/examples/form/native/profile.dark.png +0 -0
  74. package/registry/examples/form/native/profile.light.png +0 -0
  75. package/registry/examples/form/native/settings.dark.png +0 -0
  76. package/registry/examples/form/native/settings.light.png +0 -0
  77. package/registry/examples/form/native/sign-up.dark.png +0 -0
  78. package/registry/examples/form/native/sign-up.light.png +0 -0
  79. package/registry/examples/form/native/upload.dark.png +0 -0
  80. package/registry/examples/form/native/upload.light.png +0 -0
  81. package/registry/examples/radio-group/buttons.d.ts +4 -0
  82. package/registry/examples/radio-group/buttons.js +17 -0
  83. package/registry/examples/radio-group/buttons.tsx +21 -0
  84. package/registry/examples/radio-group/cards.js +1 -1
  85. package/registry/examples/radio-group/cards.tsx +2 -2
  86. package/registry/examples/radio-group/native/buttons.d.ts +4 -0
  87. package/registry/examples/radio-group/native/buttons.dark.png +0 -0
  88. package/registry/examples/radio-group/native/buttons.js +25 -0
  89. package/registry/examples/radio-group/native/buttons.light.png +0 -0
  90. package/registry/examples/radio-group/native/buttons.tsx +21 -0
  91. package/registry/examples/radio-group/native/cards.d.ts +4 -0
  92. package/registry/examples/radio-group/native/cards.dark.png +0 -0
  93. package/registry/examples/radio-group/native/cards.js +23 -0
  94. package/registry/examples/radio-group/native/cards.light.png +0 -0
  95. package/registry/examples/radio-group/native/cards.tsx +19 -0
  96. package/registry/examples/radio-group/native/list.d.ts +4 -0
  97. package/registry/examples/radio-group/native/list.dark.png +0 -0
  98. package/registry/examples/radio-group/native/list.js +24 -0
  99. package/registry/examples/radio-group/native/list.light.png +0 -0
  100. package/registry/examples/radio-group/native/list.tsx +20 -0
  101. package/registry/examples/radio-group/native/segmented.d.ts +4 -0
  102. package/registry/examples/radio-group/native/segmented.dark.png +0 -0
  103. package/registry/examples/radio-group/native/segmented.js +24 -0
  104. package/registry/examples/radio-group/native/segmented.light.png +0 -0
  105. package/registry/examples/radio-group/native/segmented.tsx +20 -0
  106. package/registry/examples/radio-group/segmented.d.ts +4 -0
  107. package/registry/examples/radio-group/segmented.js +15 -0
  108. package/registry/examples/radio-group/segmented.tsx +12 -0
  109. package/registry/examples/slider/floating.d.ts +4 -0
  110. package/registry/examples/slider/floating.js +11 -0
  111. package/registry/examples/slider/floating.tsx +12 -0
  112. package/registry/examples/slider/native/default.d.ts +4 -0
  113. package/registry/examples/slider/native/default.dark.png +0 -0
  114. package/registry/examples/slider/native/default.js +14 -0
  115. package/registry/examples/slider/native/default.light.png +0 -0
  116. package/registry/examples/slider/native/default.tsx +13 -0
  117. package/registry/examples/slider/native/range.d.ts +4 -0
  118. package/registry/examples/slider/native/range.dark.png +0 -0
  119. package/registry/examples/slider/native/range.js +12 -0
  120. package/registry/examples/slider/native/range.light.png +0 -0
  121. package/registry/examples/slider/native/range.tsx +11 -0
  122. package/registry/examples/slider/native/stepped.d.ts +4 -0
  123. package/registry/examples/slider/native/stepped.dark.png +0 -0
  124. package/registry/examples/slider/native/stepped.js +28 -0
  125. package/registry/examples/slider/native/stepped.light.png +0 -0
  126. package/registry/examples/slider/native/stepped.tsx +24 -0
  127. package/registry/examples/slider/native/vertical.d.ts +4 -0
  128. package/registry/examples/slider/native/vertical.dark.png +0 -0
  129. package/registry/examples/slider/native/vertical.js +16 -0
  130. package/registry/examples/slider/native/vertical.light.png +0 -0
  131. package/registry/examples/slider/native/vertical.tsx +13 -0
  132. package/registry/examples/slider/price-range.d.ts +4 -0
  133. package/registry/examples/slider/price-range.js +29 -0
  134. package/registry/examples/slider/price-range.tsx +27 -0
  135. package/registry/examples/slider/stepped.d.ts +4 -0
  136. package/registry/examples/slider/stepped.js +28 -0
  137. package/registry/examples/slider/stepped.tsx +24 -0
  138. package/registry/examples/slider/vertical.d.ts +4 -0
  139. package/registry/examples/slider/vertical.js +15 -0
  140. package/registry/examples/slider/vertical.tsx +14 -0
  141. package/registry/examples/switch/native/default.d.ts +4 -0
  142. package/registry/examples/switch/native/default.dark.png +0 -0
  143. package/registry/examples/switch/native/default.js +16 -0
  144. package/registry/examples/switch/native/default.light.png +0 -0
  145. package/registry/examples/switch/native/default.tsx +13 -0
  146. package/registry/examples/switch/native/settings.d.ts +4 -0
  147. package/registry/examples/switch/native/settings.dark.png +0 -0
  148. package/registry/examples/switch/native/settings.js +20 -0
  149. package/registry/examples/switch/native/settings.light.png +0 -0
  150. package/registry/examples/switch/native/settings.tsx +17 -0
  151. package/registry/field.json +15 -3
  152. package/registry/form.json +250 -42
  153. package/registry/index.json +24 -20
  154. package/registry/radio-group.json +227 -15
  155. package/registry/slider.json +314 -13
  156. package/registry/switch.json +115 -3
  157. package/registry/tabs.json +2 -2
  158. package/skills/choice-controls/SKILL.md +39 -0
  159. package/skills/form/SKILL.md +3 -0
  160. package/dist/chunk-I5RVM5CW.js.map +0 -1
  161. package/dist/chunk-RUPRYJ45.js +0 -82
  162. package/dist/chunk-RUPRYJ45.js.map +0 -1
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-J3NC6ER4.js";
5
5
  import {
6
6
  cn
7
- } from "./chunk-G3ETON2A.js";
7
+ } from "./chunk-2FRWNSRO.js";
8
8
 
9
9
  // src/dropdown-menu/dropdown-menu.tsx
10
10
  import { DropdownMenu as MenuPrimitive } from "radix-ui";
@@ -5,9 +5,10 @@ import {
5
5
  filterBar,
6
6
  readFilterParams,
7
7
  writeFilterParams
8
- } from "./chunk-2PUDI7JS.js";
8
+ } from "./chunk-ZKVQGXLD.js";
9
9
  import "./chunk-YH4LMWRU.js";
10
- import "./chunk-I5RVM5CW.js";
10
+ import "./chunk-J3NC6ER4.js";
11
+ import "./chunk-2FRWNSRO.js";
11
12
  import "./chunk-CPA5CF35.js";
12
13
  export {
13
14
  FilterBar,
package/dist/form.d.ts CHANGED
@@ -4,6 +4,7 @@ import { ButtonProps } from '@krizaka/ui/button';
4
4
  import { ComboboxOption, ComboboxLabels } from '@krizaka/ui/combobox';
5
5
  import { DatePickerLabels } from '@krizaka/ui/date-picker';
6
6
  import { Dropzone } from '@krizaka/ui/file-upload';
7
+ import { SliderMark } from '@krizaka/ui/slider';
7
8
  import { TagInputProps } from '@krizaka/ui/tag-input';
8
9
 
9
10
  /** A part of a typed date. */
@@ -347,8 +348,12 @@ type FormOption = {
347
348
  type RadioGroupProps = Base & {
348
349
  /** The choices, all visible (two to five). */
349
350
  options: readonly FormOption[];
350
- /** `list` (a dot and its words, default) or `cards` (a whole card is the radio: an amount, a plan, an audience). */
351
- variant?: "list" | "cards";
351
+ /**
352
+ * `list` (a dot and its words, default), `cards` (a whole card is the radio: an amount, a plan, an audience),
353
+ * `buttons` (tactile keys that press in: a size, a tip; `description` is the key's second line) or `segmented`
354
+ * (two to four short choices on one line).
355
+ */
356
+ variant?: "list" | "cards" | "buttons" | "segmented";
352
357
  /** `vertical` (default) or `horizontal`. */
353
358
  orientation?: "vertical" | "horizontal";
354
359
  };
@@ -379,19 +384,21 @@ type ComboboxProps = Base & {
379
384
  /** A choice among many, typed to filter or fetched: one value (`string`) or several (`string[]`). */
380
385
  declare function Combobox({ name, label, hint, disabled, className, options, onSearch, multiple, creatable, placeholder, labels }: ComboboxProps): React.JSX.Element;
381
386
  type DateFieldProps = Base & {
382
- /** `calendar` (default: a date near today — a publication, an appointment) or `parts` (day · month · year typed: a
383
- * memorable date, a birth date). */
384
- entry?: "calendar" | "parts";
385
- /** The earliest date (ISO), for the calendar. */
387
+ /**
388
+ * `calendar` (default: a date near today — a publication, an appointment), `parts` (day · month · year typed: a
389
+ * memorable date, a birth date) or `wheel` (three wheels bounded by `min` / `max`: a birth date on a phone).
390
+ */
391
+ entry?: "calendar" | "parts" | "wheel";
392
+ /** The earliest date (ISO), for the calendar and the wheels. */
386
393
  min?: string;
387
- /** The latest date (ISO), for the calendar (`latestBirthDate(18)` for an age gate). */
394
+ /** The latest date (ISO), for the calendar and the wheels (`latestBirthDate(18)` for an age gate). */
388
395
  max?: string;
389
- /** The words of the calendar, or the names of the boxes (`day`, `month`, `year`), passed translated. */
396
+ /** The words of the calendar, or the names of the parts (`day`, `month`, `year`), passed translated. */
390
397
  labels?: Partial<DatePickerLabels> & Partial<Record<DatePart, string>>;
391
- /** `bday` for a date of birth. */
398
+ /** `bday` for a date of birth: typed boxes are autofilled; the wheels rest on 1 January 2000 until turned. */
392
399
  autoComplete?: "bday" | "off";
393
400
  };
394
- /** A date of the form (`YYYY-MM-DD`, `""` for none): a calendar, or day · month · year typed in the locale's order. */
401
+ /** A date of the form (`YYYY-MM-DD`, `""` for none): a calendar, day · month · year typed, or wheels. */
395
402
  declare function DateField({ name, label, hint, disabled, className, entry, min, max, labels, autoComplete }: DateFieldProps): React.JSX.Element;
396
403
  type TagsProps = Base & Pick<TagInputProps, "suggestions" | "normalize" | "max" | "separators" | "placeholder" | "labels">;
397
404
  /** Free words of the form as chips (`string[]`): tags, keywords. */
@@ -437,9 +444,13 @@ type SliderProps = Base & {
437
444
  formatValue?: (value: number) => string;
438
445
  /** For a range (`[number, number]`): each thumb's name, passed translated. */
439
446
  thumbLabels?: [string, string];
447
+ /** A graduation per step (`true`) or at the values given. */
448
+ ticks?: boolean | readonly number[];
449
+ /** Words under the track at some values. */
450
+ marks?: readonly SliderMark[];
440
451
  };
441
- /** A number (or a range) of the form, chosen by feel: a share, a volume, a price range. */
442
- declare function Slider({ name, label, hint, disabled, className, min, max, step, formatValue, thumbLabels }: SliderProps): React.JSX.Element;
452
+ /** A number (or a range) of the form, chosen by feel: a share, a volume, a price range — the value floats while it is touched. */
453
+ declare function Slider({ name, label, hint, disabled, className, min, max, step, formatValue, thumbLabels, ticks, marks }: SliderProps): React.JSX.Element;
443
454
  type FormFieldProps<T = unknown> = {
444
455
  /** The field's name in the schema (typed by the form). */
445
456
  name: string;
package/dist/form.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
 
3
3
  // src/date-picker/parts.ts
4
- var DATE_PART_LENGTH = { day: 2, month: 2, year: 4 };
5
4
  function datePartsOrder(locale) {
6
5
  try {
7
6
  const parts = new Intl.DateTimeFormat(locale, { day: "2-digit", month: "2-digit", year: "numeric" }).formatToParts(new Date(2001, 10, 22));
@@ -16,10 +15,6 @@ function composeDate(parts) {
16
15
  const pad = (v) => v.length === 1 ? `0${v}` : v;
17
16
  return `${parts.year}-${pad(parts.month)}-${pad(parts.day)}`;
18
17
  }
19
- function splitDate(value) {
20
- const m = /^(\d*)-(\d*)-(\d*)$/.exec(value ?? "");
21
- return m ? { year: m[1], month: m[2], day: m[3] } : { day: "", month: "", year: "" };
22
- }
23
18
  function isRealDate(value) {
24
19
  if (!/^\d{4}-\d{2}-\d{2}$/.test(value)) return false;
25
20
  const date = /* @__PURE__ */ new Date(`${value}T00:00:00Z`);
@@ -408,7 +403,7 @@ import { Alert } from "@krizaka/ui/alert";
408
403
  import { Button } from "@krizaka/ui/button";
409
404
  import { Checkbox as CheckboxControl } from "@krizaka/ui/checkbox";
410
405
  import { Combobox as ComboboxControl } from "@krizaka/ui/combobox";
411
- import { DatePicker } from "@krizaka/ui/date-picker";
406
+ import { DateField as DatePartsControl, DatePicker, DateWheel } from "@krizaka/ui/date-picker";
412
407
  import { Field, Input, Select as SelectControl, Textarea } from "@krizaka/ui/field";
413
408
  import { Dropzone, formatBytes } from "@krizaka/ui/file-upload";
414
409
  import { RadioGroup as RadioGroupControl } from "@krizaka/ui/radio-group";
@@ -528,12 +523,13 @@ function RadioGroup({ name, label, hint, disabled, className, options, variant =
528
523
  invalid: Boolean(f.error),
529
524
  "aria-describedby": ids(f, hint),
530
525
  name,
531
- className: variant === "cards" ? "grid grid-cols-[repeat(auto-fit,minmax(9rem,1fr))] gap-2" : void 0,
526
+ variant,
527
+ className: variant === "segmented" ? "self-start" : void 0,
532
528
  children: options.map(
533
529
  (o) => variant === "cards" ? /* @__PURE__ */ jsxs(RadioGroupControl.Card, { value: o.value, disabled: o.disabled, children: [
534
530
  /* @__PURE__ */ jsx2("span", { className: "font-semibold", children: o.label }),
535
531
  o.description ? /* @__PURE__ */ jsx2("span", { className: "text-xs text-fg-secondary", children: o.description }) : null
536
- ] }, o.value) : /* @__PURE__ */ jsxs(RadioGroupControl.Item, { value: o.value, disabled: o.disabled, children: [
532
+ ] }, o.value) : variant === "buttons" ? /* @__PURE__ */ jsx2(RadioGroupControl.Button, { value: o.value, disabled: o.disabled, hint: o.description, children: o.label }, o.value) : variant === "segmented" ? /* @__PURE__ */ jsx2(RadioGroupControl.Segment, { value: o.value, disabled: o.disabled, children: o.label }, o.value) : /* @__PURE__ */ jsxs(RadioGroupControl.Item, { value: o.value, disabled: o.disabled, children: [
537
533
  o.label,
538
534
  o.description ? /* @__PURE__ */ jsx2("span", { className: "block text-xs text-fg-secondary", children: o.description }) : null
539
535
  ] }, o.value)
@@ -583,46 +579,14 @@ function Combobox({ name, label, hint, disabled, className, options = [], onSear
583
579
  }
584
580
  ) });
585
581
  }
586
- var PART_NAMES = { day: "Day", month: "Month", year: "Year" };
587
582
  function DateField({ name, label, hint, disabled, className, entry = "calendar", min, max, labels, autoComplete }) {
588
583
  const f = useKrizakaField(name);
584
+ const onBlur = (e) => !e.currentTarget.contains(e.relatedTarget) && f.onBlur();
589
585
  if (entry === "calendar")
590
- return /* @__PURE__ */ jsx2("div", { className, onBlur: (e) => !e.currentTarget.contains(e.relatedTarget) && f.onBlur(), children: /* @__PURE__ */ jsx2(DatePicker, { label, hint, error: f.error, disabled, name, locale: f.locale, min, max, labels, value: f.value || null, onValueChange: (v) => f.setValue(v ?? "") }) });
591
- return /* @__PURE__ */ jsx2(DateParts, { field: f, label, hint, disabled, className, names: { ...PART_NAMES, ...labels }, autoComplete });
592
- }
593
- function DateParts({ field: f, label, hint, disabled, className, names, autoComplete }) {
594
- const order = React2.useMemo(() => datePartsOrder(f.locale), [f.locale]);
595
- const [parts, setParts] = React2.useState(() => splitDate(f.value));
596
- if ((f.value ?? "") !== composeDate(parts) && composeDate(splitDate(f.value)) === (f.value ?? "")) setParts(splitDate(f.value));
597
- const refs = { day: React2.useRef(null), month: React2.useRef(null), year: React2.useRef(null) };
598
- return /* @__PURE__ */ jsxs("fieldset", { className: className ?? "flex flex-col gap-1.5", "aria-describedby": ids(f, hint), onBlur: (e) => !e.currentTarget.contains(e.relatedTarget) && f.onBlur(), children: [
599
- /* @__PURE__ */ jsx2("legend", { className: "mb-1.5 text-xs font-semibold text-fg-secondary", children: label }),
600
- /* @__PURE__ */ jsx2("div", { className: "flex gap-2", children: order.map((part) => /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-xs text-fg-secondary", children: [
601
- names[part],
602
- /* @__PURE__ */ jsx2(
603
- Input,
604
- {
605
- ref: refs[part],
606
- inputMode: "numeric",
607
- autoComplete: autoComplete === "bday" ? `bday-${part}` : "off",
608
- maxLength: DATE_PART_LENGTH[part],
609
- value: parts[part],
610
- disabled,
611
- invalid: Boolean(f.error),
612
- className: part === "year" ? "w-20 text-center tabular-nums" : "w-14 text-center tabular-nums",
613
- onChange: (e) => {
614
- const digits = e.target.value.replace(/\D/g, "").slice(0, DATE_PART_LENGTH[part]);
615
- const next = { ...parts, [part]: digits };
616
- setParts(next);
617
- f.setValue(composeDate(next));
618
- const following = order[order.indexOf(part) + 1];
619
- if (digits.length === DATE_PART_LENGTH[part] && following) refs[following].current?.focus();
620
- }
621
- }
622
- )
623
- ] }, part)) }),
624
- /* @__PURE__ */ jsx2(Caption, { field: f, hint })
625
- ] });
586
+ return /* @__PURE__ */ jsx2("div", { className, onBlur, children: /* @__PURE__ */ jsx2(DatePicker, { label, hint, error: f.error, disabled, name, locale: f.locale, min, max, labels, value: f.value || null, onValueChange: (v) => f.setValue(v ?? "") }) });
587
+ if (entry === "wheel")
588
+ return /* @__PURE__ */ jsx2("div", { className, onBlur, children: /* @__PURE__ */ jsx2(DateWheel, { label, hint, error: f.error, disabled, name, locale: f.locale, min, max, labels, defaultView: autoComplete === "bday" ? "2000-01-01" : void 0, value: f.value || null, onValueChange: (v) => f.setValue(v) }) });
589
+ return /* @__PURE__ */ jsx2(DatePartsControl, { label, hint, error: f.error, disabled, name, locale: f.locale, labels, autoComplete, className, value: f.value ?? "", onValueChange: (v) => f.setValue(v), onBlur: f.onBlur });
626
590
  }
627
591
  function TagInput({ name, label, hint, disabled, className, ...props }) {
628
592
  const f = useKrizakaField(name);
@@ -698,10 +662,10 @@ function Money({ name, label, hint, disabled, className, currency, placeholder }
698
662
  /* @__PURE__ */ jsx2(Caption, { field: f, hint })
699
663
  ] });
700
664
  }
701
- function Slider({ name, label, hint, disabled, className, min, max, step, formatValue, thumbLabels }) {
665
+ function Slider({ name, label, hint, disabled, className, min, max, step, formatValue, thumbLabels, ticks, marks }) {
702
666
  const f = useKrizakaField(name);
703
667
  return /* @__PURE__ */ jsxs("div", { className: className ?? "flex flex-col gap-1.5", children: [
704
- /* @__PURE__ */ jsx2(SliderControl, { label, showLabel: true, value: f.value, min, max, step, disabled, formatValue, thumbLabels, "aria-describedby": ids(f, hint), onValueChange: (v) => f.setValue(v), onValueCommit: () => f.onBlur() }),
668
+ /* @__PURE__ */ jsx2(SliderControl, { label, showLabel: true, floatingValue: true, value: f.value, min, max, step, ticks, marks, disabled, formatValue, thumbLabels, "aria-describedby": ids(f, hint), onValueChange: (v) => f.setValue(v), onValueCommit: () => f.onBlur() }),
705
669
  /* @__PURE__ */ jsx2(Caption, { field: f, hint })
706
670
  ] });
707
671
  }