twico-ui 1.46.0 → 1.47.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.
package/llms.txt CHANGED
@@ -615,6 +615,7 @@ Props:
615
615
  - `onChange` — `(hex: string) => void` — Fires with the new hex string whenever the user adjusts saturation, hue, the text field, or picks a preset.
616
616
  - `disabled` — `boolean` · default `false` — Disable all interaction (the popover cannot be opened).
617
617
  - `hint` — `React.ReactNode` — Helper text shown below when there is no error.
618
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
618
619
  - `error` — `React.ReactNode` — Error message — turns the field red and replaces the hint.
619
620
  - `alpha` — `boolean` · default `false` — Show an alpha slider and emit 8-digit `#RRGGBBAA`; the hex input then accepts 3/6/8-digit hex.
620
621
  - `size` — `"sm" | "md" | "lg"` · default `"md"` — Control size.
@@ -643,6 +644,7 @@ Combobox is a searchable single-select dropdown (MUI-Autocomplete style) where y
643
644
  Props:
644
645
  - `label` — `React.ReactNode` — Renders a caption above the control to identify the field and improve accessibility for the searchable select.
645
646
  - `hint` — `React.ReactNode` — Shows helper text below the field to guide input, displayed only while no error message is present.
647
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
646
648
  - `error` — `React.ReactNode` — Displays an error message, marks the field invalid, and replaces the hint to flag a failed validation.
647
649
  - `virtualized` — `boolean` · default `false` — Virtualize the option list — render only the visible slice (plus overscan) so long lists open fast.
648
650
  - `overscan` — `number` · default `8` — Extra option rows rendered above/below the viewport when virtualized, smoothing fast scrolling.
@@ -705,6 +707,7 @@ Currency is a text input for monetary amounts with a fixed currency defined in c
705
707
  Props:
706
708
  - `label` — `React.ReactNode` — Renders a label above the input describing the monetary field, accepting any ReactNode for icons or rich text.
707
709
  - `hint` — `React.ReactNode` — Shows helper text below the input to guide entry, displayed only when no error is present.
710
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
708
711
  - `error` — `React.ReactNode` — Displays an error message below the input and marks the field invalid, overriding any hint while set.
709
712
  - `required` — `boolean` · default `false` — Marks the field as required and renders an asterisk beside the label; off by default.
710
713
  - `size` — `"sm" | "md" | "lg"` · default `"md"` — Sets the input height and padding (sm, md, or lg) to match the surrounding form's density, defaulting to "md".
@@ -745,6 +748,7 @@ CurrencyField is a currency amount input where the user picks the currency from
745
748
  Props:
746
749
  - `label` — `React.ReactNode` — Renders a label above the field describing the amount, accepting any ReactNode for icons or formatted text.
747
750
  - `hint` — `React.ReactNode` — Shows helper text below the field to guide entry, displayed only when no error message is present.
751
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
748
752
  - `error` — `React.ReactNode` — Displays an error message and marks the field invalid when set, taking visual precedence over the hint.
749
753
  - `required` — `boolean` · default `false` — Marks the field as required and renders an asterisk beside the label; off by default.
750
754
  - `size` — `"sm" | "md" | "lg"` · default `"md"` — Sets the input and dropdown height (sm, md, or lg) to match the surrounding form's density, defaulting to "md".
@@ -804,6 +808,7 @@ Props:
804
808
  - `weekStartsOn` — `0 | 1 | 2 | 3 | 4 | 5 | 6` · default `0` — Widened from 0|1 to any weekday; controls which day the calendar grid + weekday header start on (0 = Sunday).
805
809
  - `onChange` — `(date: Date | null) => void` — Fires with the newly selected Date, or null when the value is cleared, so you can update state.
806
810
  - `hint` — `React.ReactNode` — Helper text shown below when there is no error.
811
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
807
812
  - `error` — `React.ReactNode` — Error message — turns the field red and replaces the hint.
808
813
  - `required` — `boolean` · default `false` — Marks the field required (adds an asterisk to the label).
809
814
  - `locale` — `string` — BCP-47 locale for Intl-derived month/weekday names and date formatting; omit for the runtime default.
@@ -843,6 +848,7 @@ Props:
843
848
  - `onChange` — `(range: DateRange) => void` — Fires with the updated { start, end } range whenever the selection changes so you can update state.
844
849
  - `disabled` — `boolean` · default `false` — Disable all interaction (the popover cannot be opened).
845
850
  - `hint` — `React.ReactNode` — Helper text shown below when there is no error.
851
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
846
852
  - `error` — `React.ReactNode` — Error message — turns the field red and replaces the hint.
847
853
  - `required` — `boolean` · default `false` — Marks the field required (adds an asterisk to the label).
848
854
  - `locale` — `string` — BCP-47 locale for Intl-derived month/weekday names and date formatting; omit for the runtime default.
@@ -875,6 +881,7 @@ DateTimePicker combines a calendar and a time-column popover over a single Date
875
881
  Props:
876
882
  - `label` — `React.ReactNode` — Optional field label rendered above the date/time pair to name and associate it.
877
883
  - `hint` — `React.ReactNode` — Helper text shown below the controls when there is no error message set.
884
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
878
885
  - `error` — `React.ReactNode` — Error message that recolors both controls red and replaces the hint, shown once on the wrapper.
879
886
  - `required` — `boolean` · default `false` — Marks the field required, adding an asterisk to the label as a validation cue.
880
887
  - `value` — `Date | null` — Controlled selected date-time as a Date; pair with onChange to own the value in state.
@@ -921,6 +928,7 @@ Field is the reusable form-field wrapper that supplies the label, required aster
921
928
  Props:
922
929
  - `label` — `React.ReactNode` — Field label rendered above the control.
923
930
  - `hint` — `React.ReactNode` — Helper text shown below when there is no error.
931
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
924
932
  - `error` — `React.ReactNode` — Error message — replaces the hint and renders in the danger color.
925
933
  - `required` — `boolean` · default `false` — Marks the field required, adding an asterisk after the label.
926
934
  - `htmlFor` — `string` — Id of the control the <label> binds to (sets the label's htmlFor).
@@ -1025,6 +1033,7 @@ A text input with optional label, hint text, error/validation state, and inline
1025
1033
  Props:
1026
1034
  - `label` — `React.ReactNode` — Renders a label node above the control so the field has an accessible, visible name for the user.
1027
1035
  - `hint` — `React.ReactNode` — Shows helper text below the input to guide entry; it is hidden once an error message is present.
1036
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
1028
1037
  - `error` — `React.ReactNode` — Displays a validation error below the field, switches the control to its red invalid state, and replaces the hint.
1029
1038
  - `required` — `boolean` · default `false` — Marks the field as required and appends an asterisk to the label to signal mandatory input; defaults to false.
1030
1039
  - `size` — `"sm" | "md" | "lg"` · default `"md"` — Sets the control height and padding (sm, md, or lg) to match the density of the surrounding form.
@@ -1067,6 +1076,7 @@ Props:
1067
1076
  - `options` — `Array<string | MultiSelectOption | MultiSelectGroup>` · **required** — Supplies the selectable options as plain strings, {value,label,description} objects, or {group,options} grouped sections.
1068
1077
  - `label` — `React.ReactNode` — Renders a label node above the control so the multi-select has an accessible, visible name for the user.
1069
1078
  - `hint` — `React.ReactNode` — Shows helper text below the control to guide selection; it is hidden once an error message is present.
1079
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
1070
1080
  - `error` — `React.ReactNode` — Displays a validation error below the control and styles it as invalid to flag a selection problem.
1071
1081
  - `virtualized` — `boolean` · default `false` — Virtualize the option list — render only the visible slice (plus overscan) so long lists open fast.
1072
1082
  - `overscan` — `number` · default `8` — Extra option rows rendered above/below the viewport when virtualized, smoothing fast scrolling.
@@ -1193,6 +1203,7 @@ A custom select that replaces the native browser dropdown with a rounded, keyboa
1193
1203
  Props:
1194
1204
  - `label` — `React.ReactNode` — Renders a field label above the trigger to identify what the select controls within a form.
1195
1205
  - `hint` — `React.ReactNode` — Shows helper text below the trigger to guide selection, automatically hidden once an error message is set.
1206
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
1196
1207
  - `error` — `React.ReactNode` — Displays an error message and marks the field invalid, replacing the hint to flag failed validation.
1197
1208
  - `virtualized` — `boolean` · default `false` — Virtualize the option list — render only the visible slice (plus overscan) so long lists open fast.
1198
1209
  - `overscan` — `number` · default `8` — Extra option rows rendered above/below the viewport when virtualized, smoothing fast scrolling.
@@ -1330,6 +1341,7 @@ Textarea is a multi-line text input with an optional label, hint text, and error
1330
1341
  Props:
1331
1342
  - `label` — `React.ReactNode` — Renders a field label above the textarea, identifying what longer-form input the control collects.
1332
1343
  - `hint` — `React.ReactNode` — Shows helper text below the textarea to guide input, hidden whenever an error message is present.
1344
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
1333
1345
  - `error` — `React.ReactNode` — Displays an error message and marks the field invalid when set, replacing the hint text below.
1334
1346
  - `required` — `boolean` · default `false` — Adds a required asterisk beside the label when true, signaling that the field must be filled in.
1335
1347
  - `size` — `"sm" | "md" | "lg"` · default `"md"` — Control size — same padding steps as Input.
@@ -1368,6 +1380,7 @@ TimePicker is a time-of-day input with a column-spinner popover: scrollable hour
1368
1380
  Props:
1369
1381
  - `label` — `React.ReactNode` — Optional field label rendered above the control to name it and associate it for accessibility.
1370
1382
  - `hint` — `React.ReactNode` — Helper text shown below the control when there is no error message set.
1383
+ - `reserveFooter` — `boolean` · default `false` — Always render the footer lane, empty when there is nothing to say, so this field is the same height as one that has a hint, an error or a counter. A row of fields aligned with align="flex-end" splits onto two lines the moment ONE of them has a hint — that field grows a footer and the others do not, so the caption ends up moving a different control. align cannot fix it: flex-start lines up the labels instead, so the controls part company as soon as one label wraps. Set it per field, or once on any ancestor (data-reserve-footer) for everything inside — the safer habit in a row, since with a per-field prop alone, adding a field later and forgetting it brings the misalignment straight back.
1371
1384
  - `error` — `React.ReactNode` — Error message that turns the control red and replaces the hint text below it.
1372
1385
  - `required` — `boolean` · default `false` — Marks the field required, adding an asterisk to the label as a validation cue.
1373
1386
  - `value` — `Date | null` — Controlled selected time as a Date; pair with onChange to own the value in state.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "twico-ui",
3
- "version": "1.46.0",
3
+ "version": "1.47.0",
4
4
  "description": "Twico UI — a free, modern, themeable React + Tailwind-friendly component library. 61 components with dark mode, motion, and accessibility built in.",
5
5
  "license": "MIT",
6
6
  "author": "Twico UI",