@ssa-ui-kit/core 3.26.4 → 3.27.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.
Files changed (44) hide show
  1. package/dist/ai/source-map.md +107 -37
  2. package/dist/components/Calendar/Calendar.d.ts +11 -3
  3. package/dist/components/Calendar/CalendarContext.d.ts +12 -1
  4. package/dist/components/Calendar/components/CalendarToolbar.d.ts +5 -1
  5. package/dist/components/Calendar/components/DayView.d.ts +4 -2
  6. package/dist/components/Calendar/components/TimeZoneSelect.d.ts +14 -0
  7. package/dist/components/Calendar/consts.d.ts +14 -1
  8. package/dist/components/Calendar/styles.d.ts +37 -1
  9. package/dist/components/Calendar/types.d.ts +93 -5
  10. package/dist/components/Calendar/utils.d.ts +35 -5
  11. package/dist/components/DataTable/DataTable.d.ts +79 -0
  12. package/dist/components/DataTable/DataTableColumnPicker.d.ts +66 -0
  13. package/dist/components/DataTable/ExpanderCell.d.ts +10 -0
  14. package/dist/components/DataTable/SelectionCell.d.ts +25 -0
  15. package/dist/components/DataTable/index.d.ts +4 -0
  16. package/dist/components/DataTable/styles.d.ts +47 -0
  17. package/dist/components/DataTable/types.d.ts +378 -0
  18. package/dist/components/DataTable/useColumnReorder.d.ts +31 -0
  19. package/dist/components/DataTable/useDataTableModel.d.ts +36 -0
  20. package/dist/components/DataTable/utils.d.ts +82 -0
  21. package/dist/components/Dropdown/Dropdown.d.ts +1 -1
  22. package/dist/components/Dropdown/types.d.ts +34 -0
  23. package/dist/components/DropdownOption/DropdownOption.d.ts +5 -0
  24. package/dist/components/DropdownOptions/DropdownSearch.d.ts +25 -0
  25. package/dist/components/DropdownOptions/useToggleListKeys.d.ts +13 -7
  26. package/dist/components/DropdownOptions/utils.d.ts +7 -0
  27. package/dist/components/DropdownToggle/types.d.ts +2 -0
  28. package/dist/components/MultipleDropdown/types.d.ts +25 -0
  29. package/dist/components/NestedTable/WithNestedTableRow.d.ts +4 -0
  30. package/dist/components/NestedTable/components/NestedTable.d.ts +4 -0
  31. package/dist/components/NestedTable/components/NestedTableCell.d.ts +4 -0
  32. package/dist/components/NestedTable/components/NestedTableCellHeader.d.ts +4 -0
  33. package/dist/components/NestedTable/components/NestedTableRow.d.ts +4 -0
  34. package/dist/components/Table/ColumnFreezeMenu.d.ts +11 -1
  35. package/dist/components/Table/ColumnMenu.d.ts +30 -0
  36. package/dist/components/Table/Table.d.ts +4 -4
  37. package/dist/components/Table/types.d.ts +77 -6
  38. package/dist/components/TableCellHeader/TableCellHeader.d.ts +1 -1
  39. package/dist/components/TableCellHeader/types.d.ts +14 -5
  40. package/dist/components/index.d.ts +2 -0
  41. package/dist/index.js +2932 -600
  42. package/dist/index.mjs +2932 -601
  43. package/dist/tsbuildcache +1 -1
  44. package/package.json +6 -5
@@ -4,7 +4,7 @@ Generated from the TypeScript program at build time — do not edit by hand.
4
4
 
5
5
  **Everything below is imported from the package root:** `import { X } from '@ssa-ui-kit/core'`
6
6
 
7
- 196 components · 20 contexts · 23 hooks · 21 functions · 16 constants · 348 exported types
7
+ 198 components · 20 contexts · 23 hooks · 21 functions · 16 constants · 359 exported types
8
8
 
9
9
  ## Reading this file
10
10
 
@@ -20,7 +20,7 @@ Generated from the TypeScript program at build time — do not edit by hand.
20
20
 
21
21
  **Form Structure** — Filters, FiltersMultiSelect, FiltersMultiSelectEmpty, FiltersMultiSelectOption, FiltersMultiSelectOptions, Form, FormAction, FormCheckbox, FormGroup, FormHelperText, FormRadioGroup
22
22
 
23
- **Data Display** — Avatar, Badge, BarGaugeChart, BarGaugeChartComponent, BarLineComplexChart, BigNumberChart, BigNumberChartComponent, Calendar, CalendarEventDetails, CandlestickChart, CandlestickChartComponent, Card, CardBase, CardContent, CardHeader, CardList, Carousel, ChartBackground, Chip, ColumnFreezeMenu, ColumnResizeHandle, Counter, FunnelChart, GaugeChart, ImageItem, Indicator, Label, NestedTable, NestedTableCell, NestedTableCellHeader, NestedTableCellSubHeader, NestedTableRow, PieChart, PieChartComponent, PieChartLegend, Progress, ProgressBar, ProgressCircle, ProgressInfo, ProgressInfoTotals, ProgressLegend, ProgressLegendItem, ProgressVertical, ResponsiveImage, SegmentedPieChart, SegmentedPieChartComponent, Table, TableBody, TableCell, TableCellHeader, TableContainer, TableFilterCheckbox, TableFilters, TableFiltersAccordion, TableFiltersAccordionContent, TableFiltersButtons, TableFiltersCancelButton, TableFiltersClearButton, TableFilterTrigger, TableFilterTriggerWithNotification, TableHead, TableRow, Tag, TreeMapChart, TreeMapChartComponent, TreeMapTooltipBase, Typography, WithNestedTableRow
23
+ **Data Display** — Avatar, Badge, BarGaugeChart, BarGaugeChartComponent, BarLineComplexChart, BigNumberChart, BigNumberChartComponent, Calendar, CalendarEventDetails, CandlestickChart, CandlestickChartComponent, Card, CardBase, CardContent, CardHeader, CardList, Carousel, ChartBackground, Chip, ColumnFreezeMenu, ColumnResizeHandle, Counter, DataTable, DataTableColumnPicker, FunnelChart, GaugeChart, ImageItem, Indicator, Label, NestedTable, NestedTableCell, NestedTableCellHeader, NestedTableCellSubHeader, NestedTableRow, PieChart, PieChartComponent, PieChartLegend, Progress, ProgressBar, ProgressCircle, ProgressInfo, ProgressInfoTotals, ProgressLegend, ProgressLegendItem, ProgressVertical, ResponsiveImage, SegmentedPieChart, SegmentedPieChartComponent, Table, TableBody, TableCell, TableCellHeader, TableContainer, TableFilterCheckbox, TableFilters, TableFiltersAccordion, TableFiltersAccordionContent, TableFiltersButtons, TableFiltersCancelButton, TableFiltersClearButton, TableFilterTrigger, TableFilterTriggerWithNotification, TableHead, TableRow, Tag, TreeMapChart, TreeMapChartComponent, TreeMapTooltipBase, Typography, WithNestedTableRow
24
24
 
25
25
  **Navigation & Layout** — CollapsibleNavBar, CollapsibleNavBarCustomIconSVG, Footer, Header, History, LargeTab, Link, LinksTabBar, NavBar, Pagination, Step, StepConnector, StepLabel, Stepper, Tab, TabBar, TreeView, WithLink, WithPagination, WithVisibleLG, WithVisibleMD, WithVisibleSM, WithVisibleUpToLG, Wrapper
26
26
 
@@ -135,7 +135,7 @@ The list of options shown inside a dropdown, typeahead, filter or action menu.
135
135
  - `renderGroupLabel?: (group: ContextMenuGroup<V>) => ReactNode` — Replaces the content of group titles.
136
136
  - `emptyState?: ReactNode` `= 'No items'` — Shown when `items` has no options.
137
137
  - `maxHeight?: string | number` — Scrolls the list beyond this height (px or any CSS length).
138
- - `selectionMode?: 'none' | 'multiple' | 'single' | 'includeExclude'`
138
+ - `selectionMode?: 'none' | 'single' | 'multiple' | 'includeExclude'`
139
139
  - `value?: V | V[] | ContextMenuIncludeExcludeEntry<V>[] | null` — Controlled selected value. `null` for none. Controlled selected values. Controlled chosen rows.
140
140
  - `defaultValue?: V | V[] | ContextMenuIncludeExcludeEntry<V>[] | null` — Initially selected value when uncontrolled. Initially selected values when uncontrolled. Initially chosen…
141
141
  - `onChange?: ((value: V) => void) | ((value: V[], toggled: V) => void) | …(1 more)` — Fires with the newly selected value. Choosing the selected option again keeps it selected. Fires with the new…
@@ -259,6 +259,9 @@ Select-like dropdown component for single selection
259
259
  - `success?: boolean` `= false` — Whether to display success state styling When true, status is set to 'success'
260
260
  - `icon?: 'reset' | 'archive' | 'arrow-down' | 'arrow-up' | …(237 more — full list under "Icon.name")` — Leading icon shown in the toggle button when no selected item avatar is present. Ignored once an item with an…
261
261
  - `width?: string | number` — Width of the dropdown. Can be a number (pixels) or a string (any CSS value, e.g. `'100%'`).
262
+ - `searchable?: boolean` `= false` — Adds a search box above the open list. Typing filters the options by their text (case-insensitive, anywhere…
263
+ - `searchPlaceholder?: string` `= 'Search'` — Placeholder and accessible name of the search box.
264
+ - `searchEmptyState?: React.ReactNode` `= 'No results found'` — Shown in the list when nothing matches the search.
262
265
  - `dropdownProps?: { base, toggleButton, toggleButtonArrow, dropdownPosition }` — Props object for sub-components Allows fine-grained control over component parts
263
266
 
264
267
  #### DropdownArrow
@@ -283,6 +286,7 @@ A single selectable row inside `Dropdown` or `MultipleDropdown`.
283
286
  - `label?: string | number`
284
287
  - `children?: React.ReactNode`
285
288
  - `avatar?: React.ReactNode` — Avatar or icon to display before the option content (e.g. <Avatar size={20} image={url} />)
289
+ - `textValue?: string` — Plain text of the option, for search and type-to-find. Needed when `children` is markup rather than text;…
286
290
  - _plus native element attributes_
287
291
 
288
292
  #### DropdownOptionGroup
@@ -427,6 +431,9 @@ Dropdown component for multi-select and single-select
427
431
  - `onChange?: (selectedItem: string | number, isSelected: boolean) => void` — Callback fired when an option is toggled
428
432
  - `maxHeight?: number` `= 200` — Max height (px) of the options list; overflow scrolls.
429
433
  - `width?: string | number` — Width of the dropdown. Can be a number (pixels) or a string (any CSS value, e.g. `'100%'`).
434
+ - `searchable?: boolean` `= false` — Adds a search box above the open list. Typing filters the options by their text (case-insensitive, anywhere…
435
+ - `searchPlaceholder?: string` `= 'Search'` — Placeholder and accessible name of the search box.
436
+ - `searchEmptyState?: ReactNode` `= 'No results found'` — Shown in the list when nothing matches the search.
430
437
 
431
438
  #### MultipleDropdownNotification
432
439
 
@@ -1015,7 +1022,17 @@ Shows entries on a month grid or on a single day's hour timeline.
1015
1022
  - `timeFormat?: '24h' | '12h'` `= '24h'` — Clock used for event times and the hour labels of the day view.
1016
1023
  - `dayHeader?: 'weekday' | 'monthYear'` `= 'monthYear'` — Header of the day view: the weekday name, or the month and year.
1017
1024
  - `locale?: string` — Locale for weekday and month names, e.g. `'uk'`. Defaults to the browser's.
1018
- - `scrollToHour?: number` — Hour the day view scrolls to when it opens. Defaults to an hour before the current time on today, and to 8:00…
1025
+ - `scrollToHour?: number` — Hour the day view scrolls to when it opens. Defaults to an hour before the current time on today, and to the…
1026
+ - `workingHours?: CalendarWorkingHours | …(1 more)` — Working time of the day view: the hours outside it get a grey background. They stay open for adding entries —…
1027
+ - `hourHeight?: number` — Height of one hour on the day view's timeline, in px. Passing it makes it controlled: change it from…
1028
+ - `defaultHourHeight?: number` `= 68` — Hour height to start with when `hourHeight` isn't controlled, and the one a double click on the hour labels…
1029
+ - `onHourHeightChange?: (hourHeight: number) => void` — Called as the user resizes the hours — see `resizableHours`.
1030
+ - `resizableHours?: boolean` `= false` — Lets the user make the day view's hours taller or shorter by dragging the hour labels column up or down, or…
1031
+ - `timeZone?: string` `= the browser's time zone` — IANA time zone the calendar shows times in, e.g. `'Europe/Kyiv'` or `'UTC'`. Passing it makes it controlled:…
1032
+ - `defaultTimeZone?: string` — Time zone to start in when `timeZone` isn't controlled.
1033
+ - `onTimeZoneChange?: (timeZone: string) => void` — Called when the user picks a time zone — see `timeZoneSelector`.
1034
+ - `timeZoneSelector?: boolean` `= false` — Shows a time zone button that opens a searchable list of zones. It sits in the toolbar next to the Month/Day…
1035
+ - `timeZones?: string[]` `= every zone the browser knows` — Zones the selector offers.
1019
1036
  - `aria-label?: string` — Accessible name of the calendar region.
1020
1037
  - `style?: CSSProperties`
1021
1038
 
@@ -1154,6 +1171,52 @@ Compact numeric indicator for displaying counts or notification badges.
1154
1171
  - `size?: keyof MainSizes` `= 'medium'` — Size of the counter. Ignored when `count` is undefined — the component uses `dot` automatically.
1155
1172
  - `color?: string` — Optional color override. Accepts a `theme.colors` key or any valid CSS color string. When provided, overrides…
1156
1173
 
1174
+ #### DataTable<Row>
1175
+ A table driven by data: give it rows and column definitions and it renders, sorts and lays out the columns itself.
1176
+
1177
+ - `data: Row[]` — Rows to show, in the order to show them unless a column sorts them.
1178
+ - `columns: DataTableColumn<Row>[]` — Column definitions. Every `id` must be unique. Need not be memoised: the table only rebuilds its model when…
1179
+ - `getRowId?: (row: Row, index: number) => string` `= (row) => String(row.id)` — Stable id of a row, for rows whose id is not in an `id` field, such as `employeeId` or a key built from…
1180
+ - `columnState?: Partial<DataTableColumnState>` — Column layout, for the controlled case. Partial values are filled in with defaults. Hold it in state and…
1181
+ - `defaultColumnState?: Partial<DataTableColumnState>` — Starting column layout, for the uncontrolled case.
1182
+ - `onColumnStateChange?: (columnState: DataTableColumnState) => void` — Called whenever the user changes the layout: on every frame of a resize drag, when moving or hiding a column,…
1183
+ - `resizableColumns?: boolean` `= false` — Lets the user resize columns by dragging the right edge of the header.
1184
+ - `columnResizeMode?: ColumnResizeMode` `= 'fit'` — How a resize spends width. `fit` keeps the table's width: the resizable columns to the right share the…
1185
+ - `minColumnWidth?: number` `= 64` — Narrowest a column can be resized to, in pixels. A column's own `minWidth` wins.
1186
+ - `maxColumnWidth?: number` — Widest a column can be resized to, in pixels. A column's own `maxWidth` wins. Unbounded when omitted.
1187
+ - `freezeControls?: boolean` `= false` — Gives every header a menu to freeze its column to either edge.
1188
+ - `reorderableColumns?: boolean` `= false` — Lets the user move columns: by dragging the grip at the left of the header, or with "Move left" and "Move…
1189
+ - `hideableColumns?: boolean` `= false` — Adds "Hide column" to the header menu. The last visible column cannot be hidden. Hidden columns are kept in…
1190
+ - `stickyHeader?: boolean` `= false` — Keeps the header in view while the rows scroll. Give the table a height limit through `maxHeight`.
1191
+ - `maxHeight?: string | number` — Tallest the table gets before it scrolls vertically. Any CSS value. Unbounded when omitted, so only…
1192
+ - `sort?: DataTableSort | null` — Sorted column, for the controlled case. `null` for none.
1193
+ - `defaultSort?: DataTableSort | null` — Starting sort, for the uncontrolled case.
1194
+ - `onSortChange?: (sort: DataTableSort | null, sortKey: string | null) => void` — Called when a sortable header is clicked. A column starts ascending and toggles between ascending and…
1195
+ - `isLoading?: boolean` `= false` — Marks the table busy. Rows already shown stay, dimmed, so a re-fetch after sorting does not make the table…
1196
+ - `loadingState?: ReactNode` `= 'Loading…'` — Shown in place of the rows while loading with none to show.
1197
+ - `emptyState?: ReactNode` `= 'No results'` — Shown in place of the rows when there are none.
1198
+ - `onRowClick?: (row: Row, event: MouseEvent<HTMLTableRowElement> | KeyboardEvent<HTMLT…` — Called when a row is clicked, or when Enter is pressed on a focused row; rows become focusable when this is…
1199
+ - `getRowProps?: (row: Row, rowIndex: number) => DataTableElementProps` — Class name, style, background or data attributes for a body row, such as tinting rows that need attention.…
1200
+ - `getSubRows?: (row: Row) => Row[] | undefined` — Children of a row, shown nested under it, to any depth. Rows with children get an expand button in a column…
1201
+ - `expandedRowIds?: string[]` — Ids of the expanded rows, for the controlled case.
1202
+ - `defaultExpanded?: boolean | string[]` `= false` — Which rows start expanded, for the uncontrolled case: `true` for all, including rows that arrive later, or a…
1203
+ - `onExpandedChange?: (expandedRowIds: string[]) => void` — Called with the ids of the expanded rows whenever the user changes them.
1204
+ - `selectionMode?: DataTableSelectionMode` `= 'none'` — Lets the user select rows: `multiple` adds a checkbox column whose header checkbox selects or clears the rows…
1205
+ - `selectedRowIds?: string[]` — Ids of the selected rows, for the controlled case.
1206
+ - `defaultSelectedRowIds?: string[]` — Ids of the rows selected at first, for the uncontrolled case.
1207
+ - `onSelectionChange?: (selectedRowIds: string[]) => void` — Called with the ids of the selected rows whenever the user changes them.
1208
+ - `isRowSelectable?: (row: Row) => boolean` — Whether a row can be selected. Rows that cannot get a disabled checkbox and are skipped by the header…
1209
+ - `getRowLabel?: (row: Row, rowIndex: number) => string` `= (row, rowIndex) => `Select row ${rowIndex + 1}`` — Accessible name of a row's selection checkbox, such as the person's name. Without it the row is named by its…
1210
+ - `footer?: ReactNode` — Rendered below the table, such as `Pagination`.
1211
+
1212
+ #### DataTableColumnPicker<Row>
1213
+ A button that opens a checklist of a {@link DataTable }'s columns, to show or hide each one.
1214
+
1215
+ - `columns: DataTableColumn<Row>[]` — The same columns the table gets.
1216
+ - `columnState?: Partial<DataTableColumnState>` — The table's column state, as passed to its `columnState`.
1217
+ - `onColumnStateChange: (columnState: DataTableColumnState) => void` — Called with the whole new column state when a column is shown or hidden.
1218
+ - `label?: ReactNode` `= 'Columns'` — Text of the button that opens the list.
1219
+
1157
1220
  #### FunnelChart
1158
1221
  Stage diagram drawn as a funnel or a triangle
1159
1222
 
@@ -1221,17 +1284,17 @@ Stage diagram drawn as a funnel or a triangle
1221
1284
  Table whose rows collapse into expandable groups.
1222
1285
 
1223
1286
  - `resizableColumns?: boolean` `= false` — Lets columns be resized by dragging the right edge of each header cell.
1224
- - `columnWidths?: number[]` — Column widths in pixels, one per column. Passing this prop puts the table into controlled mode for the life…
1225
- - `defaultColumnWidths?: number[]` — Starting column widths in pixels, for the uncontrolled case. Omit it and the table measures its own columns…
1226
- - `onColumnWidthsChange?: (columnWidths: number[]) => void` — Called on every width change, including each frame of a drag. Persisting widths is the caller's job — write…
1227
- - `minColumnWidth?: number` `= 64` — Narrowest a column can be dragged, in pixels.
1228
- - `maxColumnWidth?: number` — Widest a column can be dragged, in pixels. Unbounded when omitted.
1229
- - `columnResizeMode?: ColumnResizeMode` `= 'fit'` — Whether a resize is paid for by the next column or by the table's own width. Defaults to `fit`, which keeps…
1230
- - `frozenColumns?: FrozenColumns` — Columns frozen to each edge. Passing this prop puts freezing into controlled mode — hold the value in state…
1231
- - `defaultFrozenColumns?: FrozenColumns` — Columns frozen to each edge to begin with, for the uncontrolled case.
1232
- - `onFrozenColumnsChange?: (frozenColumns: Required<FrozenColumns>) => void` — Called whenever the user freezes or unfreezes columns from the header controls. Always receives both lists.
1233
- - `freezeControls?: boolean` `= false` — Gives every `TableCellHeader` a menu to freeze its column to either edge, or unfreeze it. Independent of…
1234
- - `stickyHeader?: boolean` `= false` — Keeps the header row in view while the table scrolls vertically. Needs a scroll container with a height…
1287
+ - `columnWidths?: number[]` — Column widths in pixels, one per column, for the controlled case.
1288
+ - `defaultColumnWidths?: number[]` — Starting column widths in pixels, for the uncontrolled case.
1289
+ - `onColumnWidthsChange?: (columnWidths: number[]) => void` — Called on every width change, including each frame of a drag.
1290
+ - `minColumnWidth?: number` — Narrowest a column can be dragged, in pixels.
1291
+ - `maxColumnWidth?: number` — Widest a column can be dragged, in pixels.
1292
+ - `columnResizeMode?: ColumnResizeMode` — Whether a resize is paid for by the columns to the right or by the table's own width.
1293
+ - `frozenColumns?: FrozenColumns` — Columns frozen to each edge, for the controlled case.
1294
+ - `defaultFrozenColumns?: FrozenColumns` — Columns frozen to each edge to begin with.
1295
+ - `onFrozenColumnsChange?: (frozenColumns: Required<FrozenColumns>) => void` — Called whenever the user freezes or unfreezes columns.
1296
+ - `freezeControls?: boolean` — Gives every `TableCellHeader` a menu to freeze its column.
1297
+ - `stickyHeader?: boolean` — Keeps the header row in view while the table scrolls vertically.
1235
1298
  - `collapsedIconName?: 'reset' | 'archive' | 'arrow-down' | 'arrow-up' | …(237 more — full list under "Icon.name")` `= 'carrot-up'` — Toggle icon shown while a group is collapsed.
1236
1299
  - `expandedIconName?: 'reset' | 'archive' | 'arrow-down' | 'arrow-up' | …(237 more — full list under "Icon.name")` `= 'carrot-down'` — Toggle icon shown while a group is expanded.
1237
1300
  - `defaultCollapsed?: boolean` `= false` — Whether groups start collapsed. Applies to every group in the table; a single `WithNestedTableRow` can…
@@ -1248,6 +1311,8 @@ Column header cell for a `NestedTable`.
1248
1311
 
1249
1312
  - `resizable?: boolean` `= true` — Whether this column can be resized inside a `Table` with `resizableColumns`. Set it to `false` to pin a…
1250
1313
  - `freezable?: boolean` `= true` — Whether this header cell offers the freeze menu inside a `Table` with `freezeControls`. Set it to `false` for…
1314
+ - `minWidth?: number` — Narrowest this column can be resized to, in pixels, inside a `Table` with `resizableColumns`. Overrides the…
1315
+ - `maxWidth?: number` — Widest this column can be resized to, in pixels, inside a `Table` with `resizableColumns`. Overrides the…
1251
1316
  - `columnId?: ColumnId` — Stable id for this column, used by `frozenColumns` on the `Table`. Give every header one when the app can…
1252
1317
  - `align?: 'center' | 'left' | 'right' | 'justify'` `= 'left'` — Text alignment for the cell content
1253
1318
  - _plus native element attributes_
@@ -1411,17 +1476,17 @@ A simple wrapper over the `<img />` tag.
1411
1476
  Base table component for displaying tabular data
1412
1477
 
1413
1478
  - `resizableColumns?: boolean` `= false` — Lets columns be resized by dragging the right edge of each header cell.
1414
- - `columnWidths?: number[]` — Column widths in pixels, one per column. Passing this prop puts the table into controlled mode for the life…
1415
- - `defaultColumnWidths?: number[]` — Starting column widths in pixels, for the uncontrolled case. Omit it and the table measures its own columns…
1416
- - `onColumnWidthsChange?: (columnWidths: number[]) => void` — Called on every width change, including each frame of a drag. Persisting widths is the caller's job — write…
1417
- - `minColumnWidth?: number` `= 64` — Narrowest a column can be dragged, in pixels.
1418
- - `maxColumnWidth?: number` — Widest a column can be dragged, in pixels. Unbounded when omitted.
1419
- - `columnResizeMode?: ColumnResizeMode` `= 'fit'` — Whether a resize is paid for by the next column or by the table's own width. Defaults to `fit`, which keeps…
1420
- - `frozenColumns?: FrozenColumns` — Columns frozen to each edge. Passing this prop puts freezing into controlled mode — hold the value in state…
1421
- - `defaultFrozenColumns?: FrozenColumns` — Columns frozen to each edge to begin with, for the uncontrolled case.
1422
- - `onFrozenColumnsChange?: (frozenColumns: Required<FrozenColumns>) => void` — Called whenever the user freezes or unfreezes columns from the header controls. Always receives both lists.
1423
- - `freezeControls?: boolean` `= false` — Gives every `TableCellHeader` a menu to freeze its column to either edge, or unfreeze it. Independent of…
1424
- - `stickyHeader?: boolean` `= false` — Keeps the header row in view while the table scrolls vertically. Needs a scroll container with a height…
1479
+ - `columnWidths?: number[]` — Column widths in pixels, one per column, for the controlled case.
1480
+ - `defaultColumnWidths?: number[]` — Starting column widths in pixels, for the uncontrolled case.
1481
+ - `onColumnWidthsChange?: (columnWidths: number[]) => void` — Called on every width change, including each frame of a drag.
1482
+ - `minColumnWidth?: number` — Narrowest a column can be dragged, in pixels.
1483
+ - `maxColumnWidth?: number` — Widest a column can be dragged, in pixels.
1484
+ - `columnResizeMode?: ColumnResizeMode` — Whether a resize is paid for by the columns to the right or by the table's own width.
1485
+ - `frozenColumns?: FrozenColumns` — Columns frozen to each edge, for the controlled case.
1486
+ - `defaultFrozenColumns?: FrozenColumns` — Columns frozen to each edge to begin with.
1487
+ - `onFrozenColumnsChange?: (frozenColumns: Required<FrozenColumns>) => void` — Called whenever the user freezes or unfreezes columns.
1488
+ - `freezeControls?: boolean` — Gives every `TableCellHeader` a menu to freeze its column.
1489
+ - `stickyHeader?: boolean` — Keeps the header row in view while the table scrolls vertically.
1425
1490
  - _plus native element attributes_
1426
1491
 
1427
1492
  #### TableBody
@@ -1441,6 +1506,8 @@ Table header cell component
1441
1506
 
1442
1507
  - `resizable?: boolean` `= true` — Whether this column can be resized inside a `Table` with `resizableColumns`. Set it to `false` to pin a…
1443
1508
  - `freezable?: boolean` `= true` — Whether this header cell offers the freeze menu inside a `Table` with `freezeControls`. Set it to `false` for…
1509
+ - `minWidth?: number` — Narrowest this column can be resized to, in pixels, inside a `Table` with `resizableColumns`. Overrides the…
1510
+ - `maxWidth?: number` — Widest this column can be resized to, in pixels, inside a `Table` with `resizableColumns`. Overrides the…
1444
1511
  - `columnId?: ColumnId` — Stable id for this column, used by `frozenColumns` on the `Table`. Give every header one when the app can…
1445
1512
  - `align?: 'center' | 'left' | 'right' | 'justify'` `= 'left'` — Text alignment for the cell content
1446
1513
  - _plus native element attributes_
@@ -1738,11 +1805,11 @@ A nestable list of rows, up to three levels deep.
1738
1805
  - `expandedIds?: string[]` — Ids of expanded nodes. Pass to control expansion yourself.
1739
1806
  - `defaultExpandedIds?: string[]` — Ids expanded on mount, when expansion is uncontrolled.
1740
1807
  - `onExpandedIdsChange?: (ids: string[]) => void`
1741
- - `expandMode?: 'multiple' | 'single'` `= 'multiple'` — `single` collapses siblings when a node expands, accordion-style.
1808
+ - `expandMode?: 'single' | 'multiple'` `= 'multiple'` — `single` collapses siblings when a node expands, accordion-style.
1742
1809
  - `selectedIds?: string[]` — Ids of selected nodes. Always an array, even in `single` mode — which is what lets a consumer move to…
1743
1810
  - `defaultSelectedIds?: string[]`
1744
1811
  - `onSelectedIdsChange?: (ids: string[], item: AnyTreeItem<TMeta>) => void` — Receives the full next selection, plus the node that was acted on.
1745
- - `selectionMode?: 'multiple' | 'single'` `= 'single'` — `single` replaces the selection on click, `multiple` toggles membership.
1812
+ - `selectionMode?: 'single' | 'multiple'` `= 'single'` — `single` replaces the selection on click, `multiple` toggles membership.
1746
1813
  - `renderItem?: (props: TreeItemRenderProps<TMeta>) => React.ReactNode` — Replaces the row's interior. The `li`, ARIA and keyboard stay with `TreeView`.
1747
1814
  - `activeColor?: string` — Overrides the selected row's colour (and the chevron and icon on it), for a consumer whose accent isn't the…
1748
1815
  - `semantics?: 'list' | 'tree'` `= 'tree'` — `tree` gives a real `role="tree"` with roving focus and arrow-key navigation — right for a file tree. `list`…
@@ -2453,20 +2520,23 @@ _Names only — read the `.d.ts` for their shape._
2453
2520
  `CalendarEventDetailsControls` · `CalendarEventDetailsField` · `CalendarEventDetailsProps`
2454
2521
  `CalendarEventProps` · `CalendarEventRenderContext` · `CalendarEventSlotContext` · `CalendarEvent`
2455
2522
  `CalendarHighlightColor` · `CalendarProps` · `CalendarRange` · `CalendarType` · `CalendarVariant`
2456
- `CalendarView` · `CalendarWeek` · `CandlestickChartFeatures` · `CandlestickChartProps`
2457
- `CardListProps` · `CardProps` · `CarouselControlsPosition` · `CarouselFit` · `CarouselItem`
2458
- `CarouselOpenFullMode` · `CarouselProps` · `CarouselThumbnailsPosition` · `CheckboxProps`
2459
- `ChildrenDataProps` · `ChipColor` · `ChipProps` · `ChipSize` · `ChipVariant`
2460
- `CollapsibleNavBarExtendedProps` · `CollapsibleNavBarGroup` · `CollapsibleNavBarHeader`
2461
- `CollapsibleNavBarItem` · `ColoredButtonTextProps` · `ColorsKeys` · `ColumnFreezeApi`
2462
- `ColumnFreezeMenuProps` · `ColumnFreezeOptions` · `ColumnId` · `ColumnResizeApi`
2463
- `ColumnResizeHandleProps` · `ColumnResizeMode` · `ColumnResizeOptions` · `CommonProps`
2464
- `ContextMenuBaseProps` · `ContextMenuEntry` · `ContextMenuGroup` · `ContextMenuIncludeExcludeEntry`
2523
+ `CalendarView` · `CalendarWeek` · `CalendarWeekday` · `CalendarWorkingHoursByWeekday`
2524
+ `CalendarWorkingHours` · `CandlestickChartFeatures` · `CandlestickChartProps` · `CardListProps`
2525
+ `CardProps` · `CarouselControlsPosition` · `CarouselFit` · `CarouselItem` · `CarouselOpenFullMode`
2526
+ `CarouselProps` · `CarouselThumbnailsPosition` · `CheckboxProps` · `ChildrenDataProps` · `ChipColor`
2527
+ `ChipProps` · `ChipSize` · `ChipVariant` · `CollapsibleNavBarExtendedProps`
2528
+ `CollapsibleNavBarGroup` · `CollapsibleNavBarHeader` · `CollapsibleNavBarItem`
2529
+ `ColoredButtonTextProps` · `ColorsKeys` · `ColumnFreezeApi` · `ColumnFreezeMenuProps`
2530
+ `ColumnFreezeOptions` · `ColumnId` · `ColumnResizeApi` · `ColumnResizeHandleProps`
2531
+ `ColumnResizeMode` · `ColumnResizeOptions` · `CommonProps` · `ContextMenuBaseProps`
2532
+ `ContextMenuEntry` · `ContextMenuGroup` · `ContextMenuIncludeExcludeEntry`
2465
2533
  `ContextMenuIncludeExcludeSelectionProps` · `ContextMenuIncludeExcludeType` · `ContextMenuIndicator`
2466
2534
  `ContextMenuItemState` · `ContextMenuItem` · `ContextMenuMultipleSelectionProps`
2467
2535
  `ContextMenuNoSelectionProps` · `ContextMenuProps` · `ContextMenuSelectionProps`
2468
2536
  `ContextMenuSingleSelectionProps` · `ContextMenuValue` · `ContextType` · `ControlledButtonProps`
2469
2537
  `CounterProps` · `CounterSizes` · `CounterVariants` · `CustomIconProps` · `CustomTagStyles`
2538
+ `DataTableColumnPickerProps` · `DataTableColumnState` · `DataTableColumn` · `DataTableElementProps`
2539
+ `DataTableProps` · `DataTableSelectionMode` · `DataTableSortDirection` · `DataTableSort`
2470
2540
  `DatePickerContextProps` · `DatePickerFormat` · `DatePickerProps` · `DateRangePickerContextProps`
2471
2541
  `DateRangePickerFormBridgeProps` · `DateRangePickerFormBridgeValue` · `DateRangePickerOnChangeDates`
2472
2542
  `DateRangePickerProps` · `DateRangePresetValue` · `DateRangePreset` · `DateTimeTuple`
@@ -22,10 +22,18 @@ import { CalendarProps } from './types';
22
22
  * adds anything up itself — totals are whatever the consumer renders.
23
23
  *
24
24
  * ### Day view
25
- * Untimed entries are listed above 00:00; timed ones are placed on the hour
26
- * timeline, side by side where they overlap. A timed entry that runs past
25
+ * Untimed entries are listed in a row above 00:00, shown only when there are
26
+ * some; timed ones are placed on the hour timeline, side by side where they
27
+ * overlap, with text that grows with their box. A timed entry that runs past
27
28
  * midnight continues on the next day's timeline. Today shows a line at the
28
- * current time.
29
+ * current time. `workingHours` shades the hours outside the working time
30
+ * (per weekday if needed); `resizableHours` lets the user drag the hour
31
+ * labels to make the hours taller or shorter.
32
+ *
33
+ * ### Time zones
34
+ * `timeZone` (or `defaultTimeZone`) shows timed entries in another IANA
35
+ * zone; untimed entries and day values stay on their date.
36
+ * `timeZoneSelector` adds a button that lets the user pick the zone.
29
37
  *
30
38
  * ### Multi-day entries
31
39
  * An untimed entry with an `end`, or a timed one lasting 24 hours or more,
@@ -1,11 +1,22 @@
1
+ import { ReactNode } from 'react';
1
2
  import { DateTime } from 'luxon';
2
3
  import { CalendarEvent, CalendarProps } from './types';
3
4
  /**
4
5
  * Props every part of the calendar reads, shared through context so the
5
6
  * views don't have to pass them down level by level.
6
7
  */
7
- export type CalendarContextValue = Pick<CalendarProps, 'getDayProps' | 'onAddEvent' | 'onTaskToggle' | 'onDayClick' | 'renderEvent' | 'renderEventActions' | 'getEventProps' | 'locale'> & {
8
+ export type CalendarContextValue = Pick<CalendarProps, 'getDayProps' | 'onAddEvent' | 'onTaskToggle' | 'onDayClick' | 'renderEvent' | 'renderEventActions' | 'getEventProps' | 'locale' | 'workingHours'> & {
8
9
  timeFormat: '24h' | '12h';
10
+ /** Zone times are shown in; `undefined` — local time. */
11
+ timeZone?: string;
12
+ /** Height of one hour on the day view's timeline, in px. */
13
+ hourHeight: number;
14
+ /** Resizes the hours; `undefined` when they can't be resized. */
15
+ setHourHeight?: (height: number) => void;
16
+ /** Hour height a double click on the hour labels goes back to. */
17
+ defaultHourHeight: number;
18
+ /** Extra controls for the day view's header, e.g. the time zone picker. */
19
+ dayHeaderEnd?: ReactNode;
9
20
  /**
10
21
  * Whether a day gets an add button, going by `onAddEvent` and
11
22
  * `minAddDate` / `maxAddDate` (not `getDayProps`, which the views apply).
@@ -5,6 +5,10 @@ type CalendarToolbarProps = {
5
5
  view: CalendarView;
6
6
  date: DateTime;
7
7
  locale?: string;
8
+ /** Zone "Today" is taken in; `undefined` — local time. */
9
+ timeZone?: string;
10
+ /** The time zone button, when the calendar offers one. */
11
+ timeZonePicker?: ReactNode;
8
12
  /** Moves to a date; `undefined` when the date can't move. */
9
13
  onNavigate?: (date: DateTime) => void;
10
14
  /** Views to toggle between; the toggle shows with two or more. */
@@ -16,5 +20,5 @@ type CalendarToolbarProps = {
16
20
  * The bar above the grid: previous / today / next, the date on show, the
17
21
  * consumer's content and the view toggle.
18
22
  */
19
- export declare const CalendarToolbar: ({ view, date, locale, onNavigate, views, onViewChange, end, }: CalendarToolbarProps) => import("@emotion/react/jsx-runtime").JSX.Element;
23
+ export declare const CalendarToolbar: ({ view, date, locale, timeZone, timeZonePicker, onNavigate, views, onViewChange, end, }: CalendarToolbarProps) => import("@emotion/react/jsx-runtime").JSX.Element;
20
24
  export {};
@@ -7,8 +7,10 @@ type DayViewProps = {
7
7
  scrollToHour?: number;
8
8
  };
9
9
  /**
10
- * A single day: header, untimed entries above 00:00, and an hour timeline
11
- * with the timed entries placed by time. Overlapping entries share the width.
10
+ * A single day: header, untimed entries above 00:00 (a row shown only when
11
+ * there are some), and an hour timeline with the timed entries placed by
12
+ * time. Overlapping entries share the width; hours outside the working time
13
+ * are shaded.
12
14
  */
13
15
  export declare const DayView: ({ date, items, header, scrollToHour, }: DayViewProps) => import("@emotion/react/jsx-runtime").JSX.Element;
14
16
  export {};
@@ -0,0 +1,14 @@
1
+ type TimeZoneSelectProps = {
2
+ value: string;
3
+ /** Zones to offer; every zone the browser knows when missing. */
4
+ options?: string[];
5
+ onChange: (zone: string) => void;
6
+ };
7
+ /** `GMT+2`, `GMT-3:30`, or `GMT` for UTC — the zone's offset right now. */
8
+ export declare const formatTimeZoneOffset: (zone: string) => string;
9
+ /**
10
+ * The calendar's time zone button: shows the zone's offset and opens a
11
+ * searchable list of zones, sorted by offset.
12
+ */
13
+ export declare const TimeZoneSelect: ({ value, options, onChange, }: TimeZoneSelectProps) => import("@emotion/react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -7,8 +7,21 @@ export declare const TOTAL_COLUMN_WIDTH: {
7
7
  readonly 7: 91;
8
8
  readonly 5: 160;
9
9
  };
10
- /** Height of one hour on the day view's timeline. */
10
+ /** Height of one hour on the day view's timeline, unless resized. */
11
11
  export declare const HOUR_HEIGHT = 68;
12
+ /**
13
+ * Resize limits for when the view can't be measured (before layout, or with
14
+ * no height). Otherwise an hour goes from the whole day fitting the view to
15
+ * a single hour filling it.
16
+ */
17
+ export declare const HOUR_HEIGHT_FALLBACK_LIMITS: {
18
+ readonly min: 16;
19
+ readonly max: 480;
20
+ };
21
+ /** Shortest an hour is ever drawn, whatever `hourHeight` says. */
22
+ export declare const HOUR_HEIGHT_FLOOR = 8;
23
+ /** Hour height change per arrow key press on the resize handle. */
24
+ export declare const HOUR_HEIGHT_STEP = 8;
12
25
  /**
13
26
  * Space above the 00:00 line. It holds untimed entries, and leaves room for
14
27
  * the 00:00 label, which is centred on its line.
@@ -12,6 +12,9 @@ export declare const toolbar: (theme: Theme) => import("@emotion/react").Seriali
12
12
  export declare const toolbarNav: import("@emotion/react").SerializedStyles;
13
13
  export declare const toolbarTitle: import("@emotion/react").SerializedStyles;
14
14
  export declare const toolbarViews: import("@emotion/react").SerializedStyles;
15
+ export declare const timeZoneButton: (theme: Theme) => import("@emotion/react").SerializedStyles;
16
+ export declare const timeZonePopover: (theme: Theme) => import("@emotion/react").SerializedStyles;
17
+ export declare const timeZoneSearch: (theme: Theme) => import("@emotion/react").SerializedStyles;
15
18
  export declare const toolbarEnd: import("@emotion/react").SerializedStyles;
16
19
  /**
17
20
  * The header and the week rows scroll together, so the header can't drift
@@ -103,6 +106,8 @@ export declare const dayLeadRow: (theme: Theme) => import("@emotion/react").Seri
103
106
  export declare const hourLabelFirst: import("@emotion/react").SerializedStyles;
104
107
  /** Above 00:00. Grows to fit untimed entries. */
105
108
  export declare const dayLead: (theme: Theme) => import("@emotion/react").SerializedStyles;
109
+ /** Set on the timeline to the hour height in px; the hour cells follow it. */
110
+ export declare const HOUR_HEIGHT_VARIABLE = "--calendar-hour-height";
106
111
  export declare const hourCell: (theme: Theme) => import("@emotion/react").SerializedStyles;
107
112
  export declare const hourCellLast: import("@emotion/react").SerializedStyles;
108
113
  export declare const hourCellAddable: (theme: Theme) => import("@emotion/react").SerializedStyles;
@@ -110,14 +115,45 @@ export declare const dayHighlight: (outline: string | undefined, tint: string) =
110
115
  export declare const dayHighlightLabel: import("@emotion/react").SerializedStyles;
111
116
  /** Where the timeline's hours start, below the lead area. */
112
117
  export declare const timeline: import("@emotion/react").SerializedStyles;
118
+ /** Holds the shading of the hours outside the working time. */
119
+ export declare const offHoursLayer: import("@emotion/react").SerializedStyles;
120
+ /**
121
+ * Multiplied over the cells rather than painted on them, so the hour lines
122
+ * and the cells' hover still show through.
123
+ */
124
+ export declare const offHours: (theme: Theme) => import("@emotion/react").SerializedStyles;
125
+ /** Lies over the hour labels; dragging it resizes the hours. */
126
+ export declare const hourResizer: (theme: Theme) => import("@emotion/react").SerializedStyles;
113
127
  /** Holds the timed events over the hour cells, right of the labels. */
114
128
  export declare const dayEventsLayer: import("@emotion/react").SerializedStyles;
115
129
  /** Places a timed entry; its content fills it. */
116
130
  export declare const dayEventBox: import("@emotion/react").SerializedStyles;
117
- export type DayEventSize = 'large' | 'medium' | 'small';
131
+ export type DayEventSize = 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge';
132
+ /**
133
+ * Text of a timed entry by its size, and the box height each size starts
134
+ * at. `small` lays the title and time out in a row; the rest stack them.
135
+ */
136
+ export declare const DAY_EVENT_TEXT: Record<DayEventSize, {
137
+ minHeight: number;
138
+ padding: number;
139
+ title: {
140
+ fontSize: number;
141
+ fontWeight: number;
142
+ lineHeight: string;
143
+ };
144
+ titleLineHeight: number;
145
+ time: {
146
+ fontSize: number;
147
+ fontWeight: number;
148
+ lineHeight: string;
149
+ };
150
+ timeLineHeight: number;
151
+ }>;
118
152
  export declare const dayEvent: (theme: Theme, stripe: string | undefined, size: DayEventSize) => import("@emotion/react").SerializedStyles;
119
153
  export declare const dayEventContent: (size: DayEventSize) => import("@emotion/react").SerializedStyles;
120
154
  export declare const dayEventTitle: (size: DayEventSize) => import("@emotion/react").SerializedStyles;
155
+ /** A title with room for more lines; the line count is set inline. */
156
+ export declare const dayEventTitleWrap: import("@emotion/react").SerializedStyles;
121
157
  export declare const dayEventTime: (size: DayEventSize) => import("@emotion/react").SerializedStyles;
122
158
  export declare const dayTask: import("@emotion/react").SerializedStyles;
123
159
  export declare const nowPointer: (theme: Theme) => import("@emotion/react").SerializedStyles;
@@ -99,10 +99,33 @@ export type CalendarDayHighlight = {
99
99
  /** Makes the badge row clickable. */
100
100
  onClick?: () => void;
101
101
  };
102
+ /**
103
+ * A day's working time on the day view's timeline, in hours from midnight —
104
+ * `{ start: 8, end: 20 }` is 08:00–20:00, `17.5` is 17:30. The hours
105
+ * outside it are shaded grey, but stay open for adding entries.
106
+ */
107
+ export type CalendarWorkingHours = {
108
+ /** Hour the working time starts, 0–24. */
109
+ start: number;
110
+ /** Hour the working time ends, 0–24; after `start`. */
111
+ end: number;
112
+ };
113
+ /** A weekday, as keyed in {@link CalendarWorkingHoursByWeekday}. */
114
+ export type CalendarWeekday = 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun';
115
+ /**
116
+ * Working time per weekday. A weekday left out, or set to `null`, has no
117
+ * working time — the whole day is shaded.
118
+ */
119
+ export type CalendarWorkingHoursByWeekday = Partial<Record<CalendarWeekday, CalendarWorkingHours | null>>;
102
120
  /**
103
121
  * Per-day options returned by `getDayProps`.
104
122
  */
105
123
  export type CalendarDayProps = {
124
+ /**
125
+ * The day's working time, over `workingHours` — e.g. a short day before a
126
+ * holiday. `null` shades the whole day.
127
+ */
128
+ workingHours?: CalendarWorkingHours | null;
106
129
  /** Turns the day into a highlighted, whole-day cell. */
107
130
  highlight?: CalendarDayHighlight;
108
131
  /**
@@ -189,13 +212,16 @@ export type CalendarEventDetailsControls = {
189
212
  close: () => void;
190
213
  };
191
214
  /**
192
- * The days a view shows, handed to `onRangeChange`.
215
+ * The days a view shows, handed to `onRangeChange`. Unlike the calendar's
216
+ * other day values, `start` and `end` are moments — the span to fetch timed
217
+ * entries for — so with a `timeZone` they're that zone's midnights, not
218
+ * local ones.
193
219
  */
194
220
  export type CalendarRange = {
195
221
  view: CalendarView;
196
- /** Start of the first day shown. */
222
+ /** Start of the first day shown, in the calendar's time zone. */
197
223
  start: Date;
198
- /** End of the last day shown (23:59:59.999). */
224
+ /** End of the last day shown (23:59:59.999), in the calendar's time zone. */
199
225
  end: Date;
200
226
  };
201
227
  /**
@@ -302,7 +328,9 @@ export type CalendarProps<TData = unknown> = {
302
328
  getDayProps?: (date: Date) => CalendarDayProps | undefined;
303
329
  /**
304
330
  * Shows an add button on each day (on hover in the month grid) and in the
305
- * day view header. Receives the day clicked.
331
+ * day view header. Receives the day clicked (its start, in local time
332
+ * like every day value), or the hour clicked on the day view's timeline
333
+ * — a moment, which in another `timeZone` reads differently locally.
306
334
  */
307
335
  onAddEvent?: (date: Date) => void;
308
336
  /**
@@ -373,9 +401,69 @@ export type CalendarProps<TData = unknown> = {
373
401
  locale?: string;
374
402
  /**
375
403
  * Hour the day view scrolls to when it opens. Defaults to an hour before
376
- * the current time on today, and to 8:00 on other days.
404
+ * the current time on today, and to the start of the working time (see
405
+ * `workingHours`) or 8:00 on other days.
377
406
  */
378
407
  scrollToHour?: number;
408
+ /**
409
+ * Working time of the day view: the hours outside it get a grey
410
+ * background. They stay open for adding entries — the shading is only a
411
+ * hint. One range for every day, or a range per weekday; for one-off days
412
+ * use `getDayProps(date).workingHours`.
413
+ *
414
+ * Unset, no hours are shaded.
415
+ */
416
+ workingHours?: CalendarWorkingHours | CalendarWorkingHoursByWeekday;
417
+ /**
418
+ * Height of one hour on the day view's timeline, in px. Passing it makes
419
+ * it controlled: change it from `onHourHeightChange`.
420
+ */
421
+ hourHeight?: number;
422
+ /**
423
+ * Hour height to start with when `hourHeight` isn't controlled, and the
424
+ * one a double click on the hour labels goes back to.
425
+ * @default 68
426
+ */
427
+ defaultHourHeight?: number;
428
+ /** Called as the user resizes the hours — see `resizableHours`. */
429
+ onHourHeightChange?: (hourHeight: number) => void;
430
+ /**
431
+ * Lets the user make the day view's hours taller or shorter by dragging
432
+ * the hour labels column up or down, or with the arrow keys when it's
433
+ * focused — from the whole day fitting the view to a single hour filling
434
+ * it. A double click on the column goes back to `defaultHourHeight`.
435
+ * @default false
436
+ */
437
+ resizableHours?: boolean;
438
+ /**
439
+ * IANA time zone the calendar shows times in, e.g. `'Europe/Kyiv'` or
440
+ * `'UTC'`. Passing it makes it controlled: change it from
441
+ * `onTimeZoneChange`.
442
+ *
443
+ * Timed entries are moved into the zone — an entry at 09:00 in Kyiv shows
444
+ * at 07:00 in `'UTC'`. Untimed entries, `date` and the other day values
445
+ * are calendar days and stay on their day. "Today" and the now line follow
446
+ * the zone.
447
+ *
448
+ * @default the browser's time zone
449
+ */
450
+ timeZone?: string;
451
+ /** Time zone to start in when `timeZone` isn't controlled. */
452
+ defaultTimeZone?: string;
453
+ /** Called when the user picks a time zone — see `timeZoneSelector`. */
454
+ onTimeZoneChange?: (timeZone: string) => void;
455
+ /**
456
+ * Shows a time zone button that opens a searchable list of zones. It sits
457
+ * in the toolbar next to the Month/Day toggle; without `toolbar`, in the
458
+ * day view's header.
459
+ * @default false
460
+ */
461
+ timeZoneSelector?: boolean;
462
+ /**
463
+ * Zones the selector offers.
464
+ * @default every zone the browser knows
465
+ */
466
+ timeZones?: string[];
379
467
  /** Accessible name of the calendar region. */
380
468
  'aria-label'?: string;
381
469
  className?: string;