twico-ui 1.7.0 → 1.8.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
@@ -343,6 +343,7 @@ Props:
343
343
  - `mr` — `number | string` — Margin right (inline end) — spacing step or CSS length.
344
344
  - `mb` — `number | string` — Margin bottom — spacing step or CSS length.
345
345
  - `ml` — `number | string` — Margin left (inline start) — spacing step or CSS length.
346
+ - `sx` — `Sx` — Style escape hatch: flat CSS goes inline (wins over base); nested selectors/at-rules like "&:hover" or "@media …" compile to a scoped stylesheet.
346
347
 
347
348
  ```jsx
348
349
  import { Box } from "twico-ui";
@@ -362,6 +363,7 @@ Props:
362
363
  - `size` — `"sm" | "md" | "lg" | "xl" | "full" | string` · default `"lg"` — Caps the maximum width using a named token (sm through xl, or full) or any CSS length, defaulting to "lg".
363
364
  - `padded` — `boolean` · default `true` — Adds responsive horizontal padding so content does not touch the viewport edges; enabled by default, set false to remove it.
364
365
  - `as` — `ElementType` · default `"div"` — Chooses the rendered HTML element or component (such as "section" or "main"), defaulting to "div" for semantic flexibility.
366
+ - `sx` — `Sx` — Style escape hatch: flat CSS goes inline (wins over base); nested selectors/at-rules like "&:hover" or "@media …" compile to a scoped stylesheet.
365
367
 
366
368
  ```jsx
367
369
  import { Container, Heading } from "twico-ui";
@@ -408,6 +410,7 @@ Props:
408
410
  - `align` — `string` — Maps to the CSS align-items value, controlling how children are aligned along the block (vertical) axis.
409
411
  - `justify` — `string` — Maps to the CSS justify-items value, controlling how children are aligned along the inline (horizontal) axis.
410
412
  - `as` — `ElementType` · default `"div"` — Renders the grid as a different element or tag instead of the default div, for semantic markup.
413
+ - `sx` — `Sx` — Style escape hatch: flat CSS goes inline (wins over base); nested selectors/at-rules like "&:hover" or "@media …" compile to a scoped stylesheet.
411
414
 
412
415
  ```jsx
413
416
  import { Grid, Card } from "twico-ui";
@@ -433,6 +436,7 @@ Props:
433
436
  - `wrap` — `boolean` · default `false` — Allows children to wrap onto multiple lines instead of overflowing when they exceed the container width.
434
437
  - `inline` — `boolean` · default `false` — Renders the stack as inline-flex rather than block-level flex, so it sits inline with surrounding content.
435
438
  - `as` — `ElementType` · default `"div"` — Overrides the rendered element or tag (default "div"), useful for semantic wrappers like nav, ul, or section.
439
+ - `sx` — `Sx` — Style escape hatch: flat CSS goes inline (wins over base); nested selectors/at-rules like "&:hover" or "@media …" compile to a scoped stylesheet.
436
440
 
437
441
  ```jsx
438
442
  import { Stack } from "twico-ui";
@@ -472,6 +476,7 @@ Props:
472
476
  - `size` — `string` — Overrides the font-size token suffix (e.g. "3xl") to decouple visual scale from the semantic heading level.
473
477
  - `align` — `string` — Sets the CSS text-align value, letting you left-align, center, or right-align the heading text.
474
478
  - `as` — `ElementType` — Renders a different tag while preserving the level's size, useful when semantics and visual weight should differ.
479
+ - `sx` — `Sx` — Style escape hatch: flat CSS goes inline (wins over base); nested selectors/at-rules like "&:hover" or "@media …" compile to a scoped stylesheet.
475
480
 
476
481
  ```jsx
477
482
  import { Heading } from "twico-ui";
@@ -492,6 +497,7 @@ Props:
492
497
  - `weight` — `string` — Sets the font-weight token suffix like semibold to adjust how heavy the text appears.
493
498
  - `align` — `string` — Sets the text-align value, controlling whether the text reads left, center, right, or justified.
494
499
  - `as` — `ElementType` · default `"p"` — Chooses the element or tag rendered, defaulting to p so you can swap in span or other tags.
500
+ - `sx` — `Sx` — Style escape hatch: flat CSS goes inline (wins over base); nested selectors/at-rules like "&:hover" or "@media …" compile to a scoped stylesheet.
495
501
 
496
502
  ```jsx
497
503
  import { Text } from "twico-ui";
@@ -582,6 +588,8 @@ Props:
582
588
  - `label` — `React.ReactNode` — Renders a caption above the control to identify the field and improve accessibility for the searchable select.
583
589
  - `hint` — `React.ReactNode` — Shows helper text below the field to guide input, displayed only while no error message is present.
584
590
  - `error` — `React.ReactNode` — Displays an error message, marks the field invalid, and replaces the hint to flag a failed validation.
591
+ - `virtualized` — `boolean` · default `false` — Virtualize the option list — render only the visible slice (plus overscan) so long lists open fast.
592
+ - `overscan` — `number` · default `8` — Extra option rows rendered above/below the viewport when virtualized, smoothing fast scrolling.
585
593
  - `required` — `boolean` · default `false` — Adds a required asterisk next to the label, signaling that the user must select a value before submitting.
586
594
  - `size` — `"sm" | "md" | "lg"` · default `"md"` — Sets the control height across sm, md, or lg to match the density of the surrounding form.
587
595
  - `tone` — `"primary" | "success" | "warning" | "danger" | "info" | "neutral"` · default `"primary"` — Recolors the focus/open accent (border + ring) using one of six semantic intents; defaults to primary.
@@ -721,6 +729,8 @@ Props:
721
729
  - `disabled` — `boolean` · default `false` — Disables the control and prevents the calendar popover from opening, useful for read-only or gated form states.
722
730
  - `clearable` — `boolean` · default `true` — Shows a clear (×) button when a date is set so users can reset the field, enabled by default.
723
731
  - `format` — `(date: Date) => string` — Custom formatter that turns the selected Date into display text, defaulting to a localized medium date string.
732
+ - `editable` — `boolean` · default `false` — Renders the trigger as a typeable text input with a calendar toggle; typed text commits via parse on Enter/blur.
733
+ - `parse` — `(text: string) => Date | null` — Parses typed text into a Date when editable; return null or an invalid Date to reject, defaults to a lenient Date.parse.
724
734
  - `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).
725
735
  - `onChange` — `(date: Date | null) => void` — Fires with the newly selected Date, or null when the value is cleared, so you can update state.
726
736
  - `hint` — `React.ReactNode` — Helper text shown below when there is no error.
@@ -756,6 +766,8 @@ Props:
756
766
  - `placeholder` — `string` · default `"Select date range"` — Text shown in the trigger when no range is selected, defaulting to "Select date range" to prompt the user.
757
767
  - `presets` — `boolean` · default `true` — Shows the quick-preset column (Last 7/14/30/90 days) for fast range selection, enabled by default.
758
768
  - `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).
769
+ - `editable` — `boolean` · default `false` — Renders the trigger as a typeable input accepting "start – end"; each side commits via parse on Enter/blur.
770
+ - `parse` — `(text: string) => Date | null` — Parses one side of the typed range into a Date when editable; return null or invalid to reject, defaults to Date.parse.
759
771
  - `onChange` — `(range: DateRange) => void` — Fires with the updated { start, end } range whenever the selection changes so you can update state.
760
772
  - `disabled` — `boolean` · default `false` — Disable all interaction (the popover cannot be opened).
761
773
  - `hint` — `React.ReactNode` — Helper text shown below when there is no error.
@@ -888,6 +900,8 @@ Props:
888
900
  - `label` — `React.ReactNode` — Renders a label node above the control so the multi-select has an accessible, visible name for the user.
889
901
  - `hint` — `React.ReactNode` — Shows helper text below the control to guide selection; it is hidden once an error message is present.
890
902
  - `error` — `React.ReactNode` — Displays a validation error below the control and styles it as invalid to flag a selection problem.
903
+ - `virtualized` — `boolean` · default `false` — Virtualize the option list — render only the visible slice (plus overscan) so long lists open fast.
904
+ - `overscan` — `number` · default `8` — Extra option rows rendered above/below the viewport when virtualized, smoothing fast scrolling.
891
905
  - `required` — `boolean` · default `false` — Marks the field as required and adds an asterisk to the label to signal a mandatory selection; defaults to false.
892
906
  - `placeholder` — `string` · default `"Select…"` — Sets the prompt text shown when no chips are selected, defaulting to "Select…" to invite a choice.
893
907
  - `value` — `string[]` — Controls the selected values as a string array, making the component fully controlled when paired with onChange.
@@ -1001,6 +1015,8 @@ Props:
1001
1015
  - `label` — `React.ReactNode` — Renders a field label above the trigger to identify what the select controls within a form.
1002
1016
  - `hint` — `React.ReactNode` — Shows helper text below the trigger to guide selection, automatically hidden once an error message is set.
1003
1017
  - `error` — `React.ReactNode` — Displays an error message and marks the field invalid, replacing the hint to flag failed validation.
1018
+ - `virtualized` — `boolean` · default `false` — Virtualize the option list — render only the visible slice (plus overscan) so long lists open fast.
1019
+ - `overscan` — `number` · default `8` — Extra option rows rendered above/below the viewport when virtualized, smoothing fast scrolling.
1004
1020
  - `required` — `boolean` · default `false` — Appends a required asterisk to the label, signaling that a selection must be made before submitting.
1005
1021
  - `size` — `"sm" | "md" | "lg"` · default `"md"` — Controls the trigger height (sm, md, or lg) to match the density of nearby form controls, defaulting to md.
1006
1022
  - `tone` — `"primary" | "success" | "warning" | "danger" | "info" | "neutral"` · default `"primary"` — Recolors the focus/open accent (border + ring) using one of six semantic intents; defaults to primary.
@@ -1249,6 +1265,7 @@ Props:
1249
1265
  - `interactive` — `boolean` · default `false` — When true, adds a hover-lift effect and pointer cursor to signal the whole card is clickable.
1250
1266
  - `fullHeight` — `boolean` · default `false` — Stretches the card to fill its parent cell (height: 100%) so cards in a grid or flex row align to equal height.
1251
1267
  - `children` — `React.ReactNode` — The main body content of the card, rendered between the optional header and footer regions.
1268
+ - `sx` — `Sx` — Style escape hatch: flat CSS goes inline (wins over base); nested selectors/at-rules like "&:hover" or "@media …" compile to a scoped stylesheet.
1252
1269
 
1253
1270
  ```jsx
1254
1271
  import { Card } from "twico-ui";
@@ -1349,7 +1366,10 @@ Props:
1349
1366
  - `checkboxSelection` — `boolean` · default `false` — Adds a leading checkbox column for selecting rows, enabling batch actions; off by default.
1350
1367
  - `batchActions` — `DatatableBatchAction array` · default `[]` — Defines actions shown in the selection toolbar that operate on the currently selected rows; empty by default.
1351
1368
  - `density` — `compact|standard|comfortable` · default `comfortable` — Sets the row height preset (compact, standard, or comfortable) to trade vertical space for readability, defaulting to comfortable.
1352
- - `pageSize` — `number` · default `10` — Sets the initial number of rows shown per page, defaulting to 10; pass 0 to disable pagination.
1369
+ - `pageSize` — `number` · default `10` — Rows per page (0 disables pagination). Uncontrolled by default (changing it re-applies + resets to page 0); controlled when onPageSizeChange is set.
1370
+ - `page` — `number` — Controlled current page (0-based); when set, the table renders this page and reports changes via onPageChange.
1371
+ - `onPageChange` — `(page: number) => void` — Fires with the next 0-based page on user pagination (and when a size/query change resets to page 0). Required to control page.
1372
+ - `onPageSizeChange` — `(pageSize: number) => void` — Fires with the next rows-per-page when the user picks one; supplying it makes pageSize controlled.
1353
1373
  - `pageSizeOptions` — `number array` · default `[5,10,25,50]` — Lists the selectable rows-per-page values offered in the pagination control, defaulting to [5,10,25,50].
1354
1374
  - `height` — `number` · default `440` — Sets the maximum scroll height of the grid body in pixels before rows scroll internally, defaulting to 440.
1355
1375
  - `serverMode` — `boolean` · default `false` — Switches to server-side data handling so sorting, filtering, and paging are delegated to your backend; off by default.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "twico-ui",
3
- "version": "1.7.0",
3
+ "version": "1.8.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",