@koobiq/react-components 0.5.1 → 0.7.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 (24) hide show
  1. package/dist/components/Calendar/components/CalendarGrid/CalendarGrid.js +50 -6
  2. package/dist/components/Calendar/components/CalendarGrid/CalendarGrid.module.css.js +22 -1
  3. package/dist/components/Calendar/components/CalendarGrid/utils.d.ts +4 -0
  4. package/dist/components/Calendar/components/CalendarGrid/utils.js +6 -0
  5. package/dist/components/DatePicker/DatePicker.js +1 -0
  6. package/dist/components/DatePicker/DatePicker.module.css.js +5 -2
  7. package/dist/components/Table/Table.d.ts +2 -1
  8. package/dist/components/Table/Table.js +17 -29
  9. package/dist/components/Table/Table.module.css.js +5 -5
  10. package/dist/components/Table/components/TableContainer/TableContainer.d.ts +4 -0
  11. package/dist/components/Table/components/TableContainer/TableContainer.js +30 -0
  12. package/dist/components/Table/components/TableContainer/TableContainer.module.css.js +8 -0
  13. package/dist/components/Table/components/TableContainer/TableContainerContext.d.ts +6 -0
  14. package/dist/components/Table/components/TableContainer/TableContainerContext.js +10 -0
  15. package/dist/components/Table/components/TableContainer/index.d.ts +3 -0
  16. package/dist/components/Table/components/TableContainer/types.d.ts +18 -0
  17. package/dist/components/Table/components/TableContainer/utils.d.ts +2 -0
  18. package/dist/components/Table/components/index.d.ts +1 -0
  19. package/dist/components/Table/types.d.ts +7 -12
  20. package/dist/index.js +2 -0
  21. package/dist/style.css +96 -16
  22. package/package.json +5 -5
  23. package/dist/components/Table/utils.d.ts +0 -2
  24. /package/dist/components/Table/{utils.js → components/TableContainer/utils.js} +0 -0
@@ -1,9 +1,12 @@
1
1
  "use client";
2
- import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useRef, useEffect, createRef } from "react";
3
4
  import { useLocale, getWeeksInMonth, clsx } from "@koobiq/react-core";
4
5
  import { useCalendarGrid } from "@koobiq/react-primitives";
6
+ import { TransitionGroup, CSSTransition } from "react-transition-group";
5
7
  import { utilClasses } from "../../../../styles/utility.js";
6
8
  import s from "./CalendarGrid.module.css.js";
9
+ import { monthIndex } from "./utils.js";
7
10
  import { CalendarCell } from "../CalendarCell/CalendarCell.js";
8
11
  const textNormal = utilClasses.typography["text-normal"];
9
12
  function CalendarGrid({ state, ...props }) {
@@ -12,16 +15,57 @@ function CalendarGrid({ state, ...props }) {
12
15
  { ...props, weekdayStyle: "short" },
13
16
  state
14
17
  );
18
+ const currentKey = useMemo(
19
+ () => state.visibleRange.start.toString(),
20
+ [state.visibleRange.start]
21
+ );
22
+ const prevStartRef = useRef(state.visibleRange.start);
23
+ const dir = useMemo(() => {
24
+ const curr = state.visibleRange.start;
25
+ const prev = prevStartRef.current;
26
+ const delta = monthIndex(curr) - monthIndex(prev);
27
+ if (delta === 0) return "next";
28
+ if (Math.abs(delta) > 1) return "jump";
29
+ return delta > 0 ? "next" : "prev";
30
+ }, [state.visibleRange.start]);
31
+ useEffect(() => {
32
+ prevStartRef.current = state.visibleRange.start;
33
+ }, [state.visibleRange.start]);
15
34
  const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);
16
- return /* @__PURE__ */ jsxs("table", { ...gridProps, className: clsx(s.base, textNormal), children: [
35
+ const nodeRefs = useRef(
36
+ /* @__PURE__ */ new Map()
37
+ );
38
+ const k = currentKey;
39
+ if (!nodeRefs.current.has(k)) {
40
+ nodeRefs.current.set(k, createRef());
41
+ }
42
+ const tbodyRef = nodeRefs.current.get(k);
43
+ return /* @__PURE__ */ jsx("div", { className: s.container, children: /* @__PURE__ */ jsxs("table", { ...gridProps, className: clsx(s.base, s[dir], textNormal), children: [
17
44
  /* @__PURE__ */ jsxs("thead", { ...headerProps, children: [
18
45
  /* @__PURE__ */ jsx("tr", { children: weekDays.map((day, i) => /* @__PURE__ */ jsx("th", { className: clsx(s.weekDay, textNormal), children: day }, i)) }),
19
46
  /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("th", { colSpan: 7, className: s.divider }) })
20
47
  ] }),
21
- /* @__PURE__ */ jsx("tbody", { children: [...new Array(weeksInMonth).keys()].map((weekIndex) => /* @__PURE__ */ jsx("tr", { children: state.getDatesInWeek(weekIndex).map(
22
- (date, i) => date ? /* @__PURE__ */ jsx(CalendarCell, { state, date }, i) : /* @__PURE__ */ jsx("td", {}, i)
23
- ) }, weekIndex)) })
24
- ] });
48
+ /* @__PURE__ */ jsx(TransitionGroup, { component: null, children: /* @__PURE__ */ jsx(
49
+ CSSTransition,
50
+ {
51
+ timeout: 300,
52
+ nodeRef: tbodyRef,
53
+ classNames: {
54
+ enter: s.daysEnter,
55
+ enterActive: s.daysEnterActive,
56
+ exit: s.daysExit,
57
+ exitActive: s.daysExitActive
58
+ },
59
+ onExited: () => {
60
+ nodeRefs.current.delete(k);
61
+ },
62
+ children: /* @__PURE__ */ jsx("tbody", { ref: tbodyRef, children: [...new Array(weeksInMonth).keys()].map((weekIndex) => /* @__PURE__ */ jsx("tr", { children: state.getDatesInWeek(weekIndex).map(
63
+ (date, i) => date ? /* @__PURE__ */ jsx(CalendarCell, { state, date }, i) : /* @__PURE__ */ jsx("td", {}, i)
64
+ ) }, weekIndex)) })
65
+ },
66
+ k
67
+ ) })
68
+ ] }) });
25
69
  }
26
70
  export {
27
71
  CalendarGrid
@@ -1,14 +1,35 @@
1
1
  const base = "kbq-calendargrid-1a43cf";
2
+ const container = "kbq-calendargrid-container-aea3c5";
2
3
  const weekDay = "kbq-calendargrid-weekDay-94b083";
3
4
  const divider = "kbq-calendargrid-divider-3ec061";
5
+ const next = "kbq-calendargrid-next-56a233";
6
+ const daysEnter = "kbq-calendargrid-daysEnter-576154";
7
+ const daysEnterActive = "kbq-calendargrid-daysEnterActive-a174dd";
8
+ const daysExit = "kbq-calendargrid-daysExit-93902d";
9
+ const daysExitActive = "kbq-calendargrid-daysExitActive-57d3e5";
10
+ const prev = "kbq-calendargrid-prev-1d8448";
4
11
  const s = {
5
12
  base,
13
+ container,
6
14
  weekDay,
7
- divider
15
+ divider,
16
+ next,
17
+ daysEnter,
18
+ daysEnterActive,
19
+ daysExit,
20
+ daysExitActive,
21
+ prev
8
22
  };
9
23
  export {
10
24
  base,
25
+ container,
26
+ daysEnter,
27
+ daysEnterActive,
28
+ daysExit,
29
+ daysExitActive,
11
30
  s as default,
12
31
  divider,
32
+ next,
33
+ prev,
13
34
  weekDay
14
35
  };
@@ -0,0 +1,4 @@
1
+ export declare function monthIndex(d: {
2
+ year: number;
3
+ month: number;
4
+ }): number;
@@ -0,0 +1,6 @@
1
+ function monthIndex(d) {
2
+ return d.year * 12 + d.month;
3
+ }
4
+ export {
5
+ monthIndex
6
+ };
@@ -81,6 +81,7 @@ function DatePickerRender(props, ref) {
81
81
  size: "auto",
82
82
  hideArrow: true,
83
83
  hideCloseButton: true,
84
+ className: s.popover,
84
85
  placement: "bottom start",
85
86
  slotProps: {
86
87
  dialog: dialogProps
@@ -1,8 +1,11 @@
1
1
  const calendar = "kbq-datepicker-calendar-25a0d7";
2
+ const popover = "kbq-datepicker-popover-831cde";
2
3
  const s = {
3
- calendar
4
+ calendar,
5
+ popover
4
6
  };
5
7
  export {
6
8
  calendar,
7
- s as default
9
+ s as default,
10
+ popover
8
11
  };
@@ -1,4 +1,5 @@
1
1
  import { Cell, Row, Column, TableBody, TableHeader } from '../Collections';
2
+ import { TableContainer } from './components';
2
3
  import type { TableComponent } from './types';
3
4
  declare const TableComponent: TableComponent;
4
5
  type CompoundedComponent = typeof TableComponent & {
@@ -9,4 +10,4 @@ type CompoundedComponent = typeof TableComponent & {
9
10
  Cell: typeof Cell;
10
11
  };
11
12
  export declare const Table: CompoundedComponent;
12
- export {};
13
+ export { TableContainer };
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { forwardRef, useRef } from "react";
4
- import { useDOMRef, mergeProps, useElementSize, clsx } from "@koobiq/react-core";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import { forwardRef } from "react";
4
+ import { useDOMRef, mergeProps, clsx } from "@koobiq/react-core";
5
5
  import { useTableState, useTable } from "@koobiq/react-primitives";
6
6
  import { utilClasses } from "../../styles/utility.js";
7
7
  import s from "./Table.module.css.js";
8
- import { normalizeBlockSize } from "./utils.js";
8
+ import { useTableContainerContext } from "./components/TableContainer/TableContainerContext.js";
9
9
  import { TableRowGroup } from "./components/TableRowGroup/TableRowGroup.js";
10
10
  import { TableHeaderRow } from "./components/TableHeaderRow/TableHeaderRow.js";
11
11
  import { TableSelectAllCell } from "./components/TableSelectAllCell/TableSelectAllCell.js";
@@ -22,47 +22,35 @@ const textNormal = utilClasses.typography["text-normal"];
22
22
  function TableRender(props, ref) {
23
23
  const {
24
24
  stickyHeader = false,
25
+ fullWidth = false,
25
26
  divider = "none",
26
27
  slotProps,
27
28
  selectionMode,
28
29
  selectionBehavior,
29
30
  className,
30
- blockSize,
31
- maxBlockSize,
32
- minBlockSize,
33
- style: styleProp
31
+ style
34
32
  } = props;
33
+ const { theadRef } = useTableContainerContext();
35
34
  const state = useTableState({
36
35
  ...props,
37
36
  showSelectionCheckboxes: selectionMode === "multiple" && selectionBehavior !== "replace"
38
37
  });
39
38
  const domRef = useDOMRef(ref);
40
- const tableRef = useRef(null);
41
39
  const { collection } = state;
42
- const { gridProps } = useTable(props, state, tableRef);
40
+ const { gridProps } = useTable(props, state, domRef);
43
41
  const tableProps = mergeProps(
44
- { ref: tableRef, className: s.base },
45
- gridProps,
46
- slotProps?.table
47
- );
48
- const { ref: theadRef, height } = useElementSize();
49
- const containerProps = mergeProps(
50
42
  {
51
- className: clsx(s.container, textNormal, className),
52
- "data-divider": divider,
43
+ className: clsx(s.base, fullWidth && s.fullWidth, textNormal, className),
53
44
  "data-sticky-header": stickyHeader,
54
- style: {
55
- ...styleProp,
56
- "--table-container-block-size": normalizeBlockSize(blockSize),
57
- "--table-container-min-block-size": normalizeBlockSize(minBlockSize),
58
- "--table-container-max-block-size": normalizeBlockSize(maxBlockSize),
59
- "--table-container-scroll-padding-top": `${height}px`
60
- },
61
- ref: domRef
45
+ "data-divider": divider,
46
+ "data-fullwidth": fullWidth,
47
+ ref: domRef,
48
+ style
62
49
  },
63
- slotProps?.container
50
+ gridProps,
51
+ slotProps?.root
64
52
  );
65
- return /* @__PURE__ */ jsx("div", { ...containerProps, children: /* @__PURE__ */ jsxs("table", { ...tableProps, children: [
53
+ return /* @__PURE__ */ jsxs("table", { ...tableProps, children: [
66
54
  /* @__PURE__ */ jsx(TableRowGroup, { type: "thead", ref: theadRef, children: collection.headerRows.map((headerRow) => /* @__PURE__ */ jsx(TableHeaderRow, { item: headerRow, state, children: [...headerRow.childNodes].map(
67
55
  (column) => column.props.isSelectionCell ? /* @__PURE__ */ jsx(
68
56
  TableSelectAllCell,
@@ -83,7 +71,7 @@ function TableRender(props, ref) {
83
71
  /* @__PURE__ */ jsx(TableRowGroup, { type: "tbody", children: [...collection.body.childNodes].map((row) => /* @__PURE__ */ jsx(TableRow, { item: row, state, children: [...row.childNodes].map(
84
72
  (cell) => cell.props.isSelectionCell ? /* @__PURE__ */ jsx(TableCheckboxCell, { cell, state }, cell.key) : /* @__PURE__ */ jsx(TableCell, { cell, state }, cell.key)
85
73
  ) }, row.key)) })
86
- ] }) });
74
+ ] });
87
75
  }
88
76
  const TableComponent = forwardRef(TableRender);
89
77
  const Table = TableComponent;
@@ -1,11 +1,11 @@
1
- const container = "kbq-table-container-ecbaa4";
2
1
  const base = "kbq-table-55e555";
2
+ const fullWidth = "kbq-table-fullWidth-419d42";
3
3
  const s = {
4
- container,
5
- base
4
+ base,
5
+ fullWidth
6
6
  };
7
7
  export {
8
8
  base,
9
- container,
10
- s as default
9
+ s as default,
10
+ fullWidth
11
11
  };
@@ -0,0 +1,4 @@
1
+ import type { ComponentPropsWithRef, ElementType } from 'react';
2
+ import type { TableContainerBaseProps } from './types';
3
+ export declare const TableContainer: import("@koobiq/react-core").PolyForwardComponent<"div", TableContainerBaseProps, ElementType>;
4
+ export type TableContainerProps<As extends ElementType = 'div'> = ComponentPropsWithRef<typeof TableContainer<As>>;
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { polymorphicForwardRef, useElementSize, clsx } from "@koobiq/react-core";
4
+ import s from "./TableContainer.module.css.js";
5
+ import { TableContainerContext } from "./TableContainerContext.js";
6
+ import { normalizeBlockSize } from "./utils.js";
7
+ const TableContainer = polymorphicForwardRef((props, ref) => {
8
+ const {
9
+ as: Tag = "div",
10
+ children,
11
+ className,
12
+ blockSize,
13
+ maxBlockSize,
14
+ minBlockSize,
15
+ style: styleProp
16
+ } = props;
17
+ const { ref: theadRef, height } = useElementSize();
18
+ const style = {
19
+ ...styleProp,
20
+ "--table-container-block-size": normalizeBlockSize(blockSize),
21
+ "--table-container-min-block-size": normalizeBlockSize(minBlockSize),
22
+ "--table-container-max-block-size": normalizeBlockSize(maxBlockSize),
23
+ "--table-container-scroll-padding-top": `${height}px`
24
+ };
25
+ return /* @__PURE__ */ jsx(TableContainerContext.Provider, { value: { theadRef }, children: /* @__PURE__ */ jsx(Tag, { className: clsx(s.base, className), style, ref, children }) });
26
+ });
27
+ TableContainer.displayName = "TableContainer";
28
+ export {
29
+ TableContainer
30
+ };
@@ -0,0 +1,8 @@
1
+ const base = "kbq-tablecontainer-0c5c0f";
2
+ const s = {
3
+ base
4
+ };
5
+ export {
6
+ base,
7
+ s as default
8
+ };
@@ -0,0 +1,6 @@
1
+ import { type Ref } from 'react';
2
+ export type TableContainerContextProps = {
3
+ theadRef: Ref<HTMLElement>;
4
+ };
5
+ export declare const TableContainerContext: import("react").Context<TableContainerContextProps>;
6
+ export declare const useTableContainerContext: () => TableContainerContextProps;
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { createContext, useContext } from "react";
3
+ const TableContainerContext = createContext(
4
+ {}
5
+ );
6
+ const useTableContainerContext = () => useContext(TableContainerContext);
7
+ export {
8
+ TableContainerContext,
9
+ useTableContainerContext
10
+ };
@@ -0,0 +1,3 @@
1
+ export * from './TableContainer';
2
+ export * from './TableContainerContext';
3
+ export * from './types';
@@ -0,0 +1,18 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ export type TableContainerPropBlockSize = CSSProperties['blockSize'];
3
+ export type TableContainerPropMinBlockSize = CSSProperties['minBlockSize'];
4
+ export type TableContainerPropMaxBlockSize = CSSProperties['maxInlineSize'];
5
+ export type TableContainerBaseProps = {
6
+ /** Height of the table container. */
7
+ blockSize?: TableContainerPropBlockSize;
8
+ /** Minimum height of the table container. */
9
+ minBlockSize?: TableContainerPropMinBlockSize;
10
+ /** Maximum height of the table container. */
11
+ maxBlockSize?: TableContainerPropMaxBlockSize;
12
+ /** The content of the component. */
13
+ children?: ReactNode;
14
+ /** Additional CSS-classes. */
15
+ className?: string;
16
+ /** Inline styles. */
17
+ style?: CSSProperties;
18
+ };
@@ -0,0 +1,2 @@
1
+ import type { TableContainerPropBlockSize } from './types';
2
+ export declare const normalizeBlockSize: (value: TableContainerPropBlockSize | undefined) => string | undefined;
@@ -5,3 +5,4 @@ export * from './TableRow';
5
5
  export * from './TableCell';
6
6
  export * from './TableSelectAllCell';
7
7
  export * from './TableCheckboxCell';
8
+ export * from './TableContainer';
@@ -4,9 +4,6 @@ import type { Key } from '@react-types/shared';
4
4
  export declare const tablePropDivider: readonly ["none", "row"];
5
5
  export type TablePropDivider = (typeof tablePropDivider)[number];
6
6
  export type TablePropChildren<T> = TableStateProps<T>['children'];
7
- export type TablePropBlockSize = CSSProperties['blockSize'];
8
- export type TablePropMinBlockSize = CSSProperties['minBlockSize'];
9
- export type TablePropMaxBlockSize = CSSProperties['maxInlineSize'];
10
7
  export type TableProps<T> = Pick<TableStateProps<T>, 'selectionBehavior' | 'selectionMode' | 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange' | 'disabledKeys' | 'disabledBehavior'> & {
11
8
  /** Handler that is called when a user performs an action on the row. */
12
9
  onRowAction?: (key: Key) => void;
@@ -21,6 +18,11 @@ export type TableProps<T> = Pick<TableStateProps<T>, 'selectionBehavior' | 'sele
21
18
  * @default 'none'
22
19
  */
23
20
  divider?: TablePropDivider;
21
+ /**
22
+ * If `true`, the button will take up the full width of its container.
23
+ * @default false
24
+ */
25
+ fullWidth?: boolean;
24
26
  /**
25
27
  * Flag indicating a fixed table header.
26
28
  * @default false
@@ -32,17 +34,10 @@ export type TableProps<T> = Pick<TableStateProps<T>, 'selectionBehavior' | 'sele
32
34
  */
33
35
  children?: TablePropChildren<T>;
34
36
  /** Ref to the control. */
35
- ref?: Ref<HTMLDivElement>;
36
- /** Height of the table container. */
37
- blockSize?: TablePropBlockSize;
38
- /** Minimum height of the table container. */
39
- minBlockSize?: TablePropMinBlockSize;
40
- /** Maximum height of the table container. */
41
- maxBlockSize?: TablePropMaxBlockSize;
37
+ ref?: Ref<HTMLTableElement>;
42
38
  /** The props used for each slot inside. */
43
39
  slotProps?: {
44
- container?: ComponentPropsWithRef<'div'>;
45
- table?: ComponentPropsWithRef<'table'>;
40
+ root?: ComponentPropsWithRef<'table'>;
46
41
  };
47
42
  };
48
43
  export type TableComponent = <T>(props: TableProps<T>) => ReactElement | null;
package/dist/index.js CHANGED
@@ -72,6 +72,7 @@ import { TagGroup } from "./components/TagGroup/TagGroup.js";
72
72
  import { Tag } from "./components/TagGroup/Tag.js";
73
73
  import { tagGroupPropVariant } from "./components/TagGroup/types.js";
74
74
  import { Table } from "./components/Table/Table.js";
75
+ import { TableContainer } from "./components/Table/components/TableContainer/TableContainer.js";
75
76
  import { Calendar } from "./components/Calendar/Calendar.js";
76
77
  import { DateInput, DateInputRender } from "./components/DateInput/DateInput.js";
77
78
  import { dateInputPropVariant } from "./components/DateInput/types.js";
@@ -138,6 +139,7 @@ export {
138
139
  SkeletonBlock,
139
140
  SkeletonTypography,
140
141
  Table,
142
+ TableContainer,
141
143
  Tag,
142
144
  TagGroup,
143
145
  Textarea,
package/dist/style.css CHANGED
@@ -3605,20 +3605,17 @@
3605
3605
  .kbq-taggroup-20136b [role="gridcell"] {
3606
3606
  display: contents;
3607
3607
  }
3608
- .kbq-table-container-ecbaa4 {
3609
- --table-container-block-size: 100%;
3610
- --table-container-min-block-size: unset;
3611
- --table-container-max-block-size: unset;
3612
- --table-container-scroll-padding-top: 0;
3608
+ .kbq-table-55e555 {
3613
3609
  --table-cell-padding: 10px var(--kbq-size-s);
3614
3610
  --table-cell-color: var(--kbq-foreground-contrast);
3615
3611
  --table-header-cell-padding: 10px var(--kbq-size-s);
3616
3612
  --table-border: 1px solid var(--kbq-line-contrast-less);
3617
3613
  --table-header-cell-color: var(--kbq-foreground-contrast-secondary);
3618
- block-size: var(--table-container-block-size);
3619
- min-block-size: var(--table-container-min-block-size);
3620
- max-block-size: var(--table-container-max-block-size);
3621
- scroll-padding-block-start: var(--table-container-scroll-padding-top);
3614
+ border-spacing: 0;
3615
+ }
3616
+
3617
+ .kbq-table-fullWidth-419d42 {
3618
+ inline-size: 100%;
3622
3619
  }
3623
3620
 
3624
3621
  [data-divider="none"] tbody td:first-child {
@@ -3665,11 +3662,6 @@
3665
3662
  inset-block-start: 0;
3666
3663
  }
3667
3664
 
3668
- .kbq-table-55e555 {
3669
- border-spacing: 0;
3670
- inline-size: 100%;
3671
- }
3672
-
3673
3665
  [aria-multiselectable="true"] tbody tr:is([data-selected="true"], [data-focus-visible="true"]):has( + :is([data-selected="true"], [data-focus-visible="true"])) {
3674
3666
  border-end-end-radius: 0;
3675
3667
  border-end-start-radius: 0;
@@ -3825,6 +3817,21 @@
3825
3817
  outline-offset: -2px;
3826
3818
  outline: 2px solid var(--kbq-states-line-focus-theme);
3827
3819
  }
3820
+ .kbq-tablecontainer-0c5c0f {
3821
+ --table-container-block-size: ;
3822
+ --table-container-min-block-size: unset;
3823
+ --table-container-max-block-size: unset;
3824
+ --table-container-scroll-padding-top: 0;
3825
+ block-size: var(--table-container-block-size);
3826
+ min-block-size: var(--table-container-min-block-size);
3827
+ max-block-size: var(--table-container-max-block-size);
3828
+ scroll-padding-block-start: var(--table-container-scroll-padding-top);
3829
+ overflow: auto;
3830
+ }
3831
+
3832
+ .kbq-tablecontainer-0c5c0f table {
3833
+ inline-size: 100%;
3834
+ }
3828
3835
  .kbq-calendar-fa3168 {
3829
3836
  --calendar-cell-inline-size: 40px;
3830
3837
  --calendar-cell-block-size: 32px;
@@ -3835,6 +3842,7 @@
3835
3842
  padding-block: var(--kbq-size-m);
3836
3843
  flex-direction: column;
3837
3844
  display: flex;
3845
+ overflow-x: hidden;
3838
3846
  }
3839
3847
 
3840
3848
  .kbq-calendar-open-e506bb {
@@ -3856,15 +3864,23 @@
3856
3864
  margin-inline-start: auto;
3857
3865
  }
3858
3866
  .kbq-calendargrid-1a43cf {
3867
+ border-spacing: 0;
3859
3868
  border-collapse: separate;
3860
- padding-inline: var(--kbq-size-m);
3861
- border-spacing: 0 var(--kbq-size-3xs);
3869
+ position: relative;
3862
3870
  }
3863
3871
 
3864
3872
  .kbq-calendargrid-1a43cf td, .kbq-calendargrid-1a43cf th {
3865
3873
  padding: 0;
3866
3874
  }
3867
3875
 
3876
+ .kbq-calendargrid-1a43cf tr > td {
3877
+ padding-block-start: var(--kbq-size-3xs);
3878
+ }
3879
+
3880
+ .kbq-calendargrid-container-aea3c5 {
3881
+ padding-inline: var(--kbq-size-m);
3882
+ }
3883
+
3868
3884
  .kbq-calendargrid-weekDay-94b083 {
3869
3885
  block-size: var(--calendar-cell-block-size);
3870
3886
  inline-size: var(--calendar-cell-inline-size);
@@ -3883,6 +3899,54 @@
3883
3899
  background-color: var(--kbq-line-contrast-less);
3884
3900
  position: absolute;
3885
3901
  }
3902
+
3903
+ .kbq-calendargrid-next-56a233 .kbq-calendargrid-daysEnter-576154 {
3904
+ transform: translateX(50px);
3905
+ }
3906
+
3907
+ .kbq-calendargrid-next-56a233 .kbq-calendargrid-daysEnterActive-a174dd, .kbq-calendargrid-next-56a233 .kbq-calendargrid-daysExit-93902d {
3908
+ transform: translateX(0);
3909
+ }
3910
+
3911
+ .kbq-calendargrid-next-56a233 .kbq-calendargrid-daysExitActive-57d3e5 {
3912
+ transform: translateX(-50px);
3913
+ }
3914
+
3915
+ .kbq-calendargrid-prev-1d8448 .kbq-calendargrid-daysEnter-576154 {
3916
+ transform: translateX(-50px);
3917
+ }
3918
+
3919
+ .kbq-calendargrid-prev-1d8448 .kbq-calendargrid-daysEnterActive-a174dd, .kbq-calendargrid-prev-1d8448 .kbq-calendargrid-daysExit-93902d {
3920
+ transform: translateX(0);
3921
+ }
3922
+
3923
+ .kbq-calendargrid-prev-1d8448 .kbq-calendargrid-daysExitActive-57d3e5 {
3924
+ transform: translateX(50px);
3925
+ }
3926
+
3927
+ .kbq-calendargrid-daysEnter-576154 {
3928
+ opacity: 0;
3929
+ position: absolute;
3930
+ inset-inline-start: 0;
3931
+ }
3932
+
3933
+ .kbq-calendargrid-daysEnterActive-a174dd {
3934
+ opacity: 1;
3935
+ }
3936
+
3937
+ .kbq-calendargrid-daysExit-93902d {
3938
+ pointer-events: none;
3939
+ opacity: 1;
3940
+ position: absolute;
3941
+ }
3942
+
3943
+ .kbq-calendargrid-daysExitActive-57d3e5 {
3944
+ opacity: 0;
3945
+ }
3946
+
3947
+ .kbq-calendargrid-daysEnterActive-a174dd, .kbq-calendargrid-daysExitActive-57d3e5 {
3948
+ transition: opacity .2s, transform .3s;
3949
+ }
3886
3950
  .kbq-calendarcell-dc4d6e {
3887
3951
  --table-cell-outline-color: transparent;
3888
3952
  --table-cell-outline-width: var(--kbq-size-3xs);
@@ -4023,6 +4087,22 @@
4023
4087
  .kbq-datepicker-calendar-25a0d7 {
4024
4088
  margin-inline-end: calc(-1 * var(--kbq-size-xxs));
4025
4089
  }
4090
+
4091
+ .kbq-datepicker-popover-831cde {
4092
+ border-radius: var(--kbq-size-s);
4093
+ opacity: 0;
4094
+ transform: translateY(-8px);
4095
+ }
4096
+
4097
+ .kbq-datepicker-popover-831cde[data-transition="entering"], .kbq-datepicker-popover-831cde[data-transition="entered"] {
4098
+ opacity: 1;
4099
+ transform: translateY(0);
4100
+ }
4101
+
4102
+ .kbq-datepicker-popover-831cde[data-transition="exiting"], .kbq-datepicker-popover-831cde[data-transition="exited"] {
4103
+ opacity: 0;
4104
+ transform: translateY(-8px);
4105
+ }
4026
4106
  .kbq-timepicker-a6e9f3 {
4027
4107
  min-inline-size: 150px;
4028
4108
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koobiq/react-components",
3
- "version": "0.5.1",
3
+ "version": "0.7.0",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -28,10 +28,10 @@
28
28
  "@koobiq/design-tokens": "^3.14.0",
29
29
  "@types/react-transition-group": "^4.4.12",
30
30
  "react-transition-group": "^4.4.5",
31
- "@koobiq/react-core": "0.5.1",
32
- "@koobiq/logger": "0.5.1",
33
- "@koobiq/react-icons": "0.5.1",
34
- "@koobiq/react-primitives": "0.5.1"
31
+ "@koobiq/react-core": "0.7.0",
32
+ "@koobiq/react-icons": "0.7.0",
33
+ "@koobiq/logger": "0.7.0",
34
+ "@koobiq/react-primitives": "0.7.0"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@koobiq/design-tokens": "^3.14.0",
@@ -1,2 +0,0 @@
1
- import type { TablePropBlockSize } from './types';
2
- export declare const normalizeBlockSize: (value: TablePropBlockSize | undefined) => string | undefined;