@tokis/react 1.0.0 → 1.1.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 (84) hide show
  1. package/README.md +8 -6
  2. package/dist/__tests__/Accordion.test.d.ts +2 -0
  3. package/dist/__tests__/Accordion.test.d.ts.map +1 -0
  4. package/dist/__tests__/Accordion.test.js +144 -0
  5. package/dist/__tests__/Accordion.test.js.map +1 -0
  6. package/dist/__tests__/Button.test.d.ts +2 -0
  7. package/dist/__tests__/Button.test.d.ts.map +1 -0
  8. package/dist/__tests__/Button.test.js +104 -0
  9. package/dist/__tests__/Button.test.js.map +1 -0
  10. package/dist/__tests__/Checkbox.test.d.ts +2 -0
  11. package/dist/__tests__/Checkbox.test.d.ts.map +1 -0
  12. package/dist/__tests__/Checkbox.test.js +90 -0
  13. package/dist/__tests__/Checkbox.test.js.map +1 -0
  14. package/dist/__tests__/Select.test.d.ts +2 -0
  15. package/dist/__tests__/Select.test.d.ts.map +1 -0
  16. package/dist/__tests__/Select.test.js +119 -0
  17. package/dist/__tests__/Select.test.js.map +1 -0
  18. package/dist/__tests__/datagrid-utils.test.d.ts +2 -0
  19. package/dist/__tests__/datagrid-utils.test.d.ts.map +1 -0
  20. package/dist/__tests__/datagrid-utils.test.js +190 -0
  21. package/dist/__tests__/datagrid-utils.test.js.map +1 -0
  22. package/dist/__tests__/date-utils.test.d.ts +2 -0
  23. package/dist/__tests__/date-utils.test.d.ts.map +1 -0
  24. package/dist/__tests__/date-utils.test.js +180 -0
  25. package/dist/__tests__/date-utils.test.js.map +1 -0
  26. package/dist/cjs/components/accordion/index.js +1 -1
  27. package/dist/cjs/components/checkbox/index.js +2 -1
  28. package/dist/cjs/components/datagrid/index.js +161 -0
  29. package/dist/cjs/components/datagrid/types.js +2 -0
  30. package/dist/cjs/components/datagrid/utils.js +87 -0
  31. package/dist/cjs/components/datepicker/Calendar.js +117 -0
  32. package/dist/cjs/components/datepicker/date-utils.js +121 -0
  33. package/dist/cjs/components/datepicker/index.js +134 -0
  34. package/dist/cjs/components/extended/index.js +39 -31
  35. package/dist/cjs/components/layout/index.js +5 -4
  36. package/dist/cjs/components/treeview/index.js +1 -1
  37. package/dist/cjs/hooks/useId.js +18 -5
  38. package/dist/cjs/index.js +2 -0
  39. package/dist/components/accordion/index.js +1 -1
  40. package/dist/components/accordion/index.js.map +1 -1
  41. package/dist/components/checkbox/index.js +2 -1
  42. package/dist/components/checkbox/index.js.map +1 -1
  43. package/dist/components/datagrid/index.d.ts +20 -0
  44. package/dist/components/datagrid/index.d.ts.map +1 -0
  45. package/dist/components/datagrid/index.js +159 -0
  46. package/dist/components/datagrid/index.js.map +1 -0
  47. package/dist/components/datagrid/types.d.ts +92 -0
  48. package/dist/components/datagrid/types.d.ts.map +1 -0
  49. package/dist/components/datagrid/types.js +2 -0
  50. package/dist/components/datagrid/types.js.map +1 -0
  51. package/dist/components/datagrid/utils.d.ts +14 -0
  52. package/dist/components/datagrid/utils.d.ts.map +1 -0
  53. package/dist/components/datagrid/utils.js +80 -0
  54. package/dist/components/datagrid/utils.js.map +1 -0
  55. package/dist/components/datepicker/Calendar.d.ts +30 -0
  56. package/dist/components/datepicker/Calendar.d.ts.map +1 -0
  57. package/dist/components/datepicker/Calendar.js +115 -0
  58. package/dist/components/datepicker/Calendar.js.map +1 -0
  59. package/dist/components/datepicker/date-utils.d.ts +34 -0
  60. package/dist/components/datepicker/date-utils.d.ts.map +1 -0
  61. package/dist/components/datepicker/date-utils.js +107 -0
  62. package/dist/components/datepicker/date-utils.js.map +1 -0
  63. package/dist/components/datepicker/index.d.ts +52 -0
  64. package/dist/components/datepicker/index.d.ts.map +1 -0
  65. package/dist/components/datepicker/index.js +128 -0
  66. package/dist/components/datepicker/index.js.map +1 -0
  67. package/dist/components/extended/index.d.ts +14 -29
  68. package/dist/components/extended/index.d.ts.map +1 -1
  69. package/dist/components/extended/index.js +40 -27
  70. package/dist/components/extended/index.js.map +1 -1
  71. package/dist/components/layout/index.d.ts.map +1 -1
  72. package/dist/components/layout/index.js +5 -4
  73. package/dist/components/layout/index.js.map +1 -1
  74. package/dist/components/treeview/index.js +1 -1
  75. package/dist/components/treeview/index.js.map +1 -1
  76. package/dist/hooks/useId.d.ts +13 -3
  77. package/dist/hooks/useId.d.ts.map +1 -1
  78. package/dist/hooks/useId.js +19 -6
  79. package/dist/hooks/useId.js.map +1 -1
  80. package/dist/index.d.ts +2 -0
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +2 -0
  83. package/dist/index.js.map +1 -1
  84. package/package.json +10 -10
package/dist/cjs/index.js CHANGED
@@ -27,6 +27,7 @@ __exportStar(require("./components/switch/index"), exports);
27
27
  __exportStar(require("./components/select/index"), exports);
28
28
  __exportStar(require("./components/slider/index"), exports);
29
29
  __exportStar(require("./components/spinner/index"), exports);
30
+ __exportStar(require("./components/datepicker/index"), exports);
30
31
  // ─── Layout ───────────────────────────────────────────────
31
32
  __exportStar(require("./components/layout/index"), exports);
32
33
  // ─── Surfaces ─────────────────────────────────────────────
@@ -97,6 +98,7 @@ __exportStar(require("./components/charts/index"), exports);
97
98
  // ─── Data ─────────────────────────────────────────────────
98
99
  __exportStar(require("./components/virtual-list/index"), exports);
99
100
  __exportStar(require("./components/infinite-scroll/index"), exports);
101
+ __exportStar(require("./components/datagrid/index"), exports);
100
102
  // ─── Utilities ────────────────────────────────────────────
101
103
  var cn_js_1 = require("./utils/cn");
102
104
  Object.defineProperty(exports, "cn", { enumerable: true, get: function () { return cn_js_1.cn; } });
@@ -29,6 +29,6 @@ function AccordionItemComponent({ item, isOpen, onToggle }) {
29
29
  const triggerId = useId();
30
30
  const panelId = useId();
31
31
  return (_jsxs("div", { className: "tokis-accordion-item", children: [_jsxs("button", { id: triggerId, type: "button", "aria-expanded": isOpen, "aria-controls": panelId, "aria-disabled": item.disabled || undefined, disabled: item.disabled, className: "tokis-accordion-trigger", onClick: () => { if (!item.disabled)
32
- onToggle(item.value); }, children: [_jsx("span", { style: { flex: 1, textAlign: 'left' }, children: item.trigger }), _jsx("svg", { className: "tokis-accordion-trigger__icon", width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M4 6l4 4 4-4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })] }), _jsx("div", { id: panelId, role: "region", "aria-labelledby": triggerId, className: "tokis-accordion-content", "data-open": isOpen ? 'true' : 'false', "aria-hidden": !isOpen, children: _jsx("div", { className: "tokis-accordion-content-inner", children: item.content }) })] }));
32
+ onToggle(item.value); }, children: [_jsx("span", { style: { flex: 1, textAlign: 'start' }, children: item.trigger }), _jsx("svg", { className: "tokis-accordion-trigger__icon", width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M4 6l4 4 4-4", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })] }), _jsx("div", { id: panelId, role: "region", "aria-labelledby": triggerId, className: "tokis-accordion-content", "data-open": isOpen ? 'true' : 'false', "aria-hidden": !isOpen, children: _jsx("div", { className: "tokis-accordion-content-inner", children: item.content }) })] }));
33
33
  }
34
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/accordion/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/accordion/index.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export function Checkbox({ label, description, checked, defaultChecked, indeterm
11
11
  inputRef.current.indeterminate = indeterminate;
12
12
  }
13
13
  }, [indeterminate]);
14
- return (_jsxs("label", { className: cn('tokis-checkbox-root', className), "data-disabled": disabled || undefined, htmlFor: inputId, children: [_jsx("input", { ref: inputRef, type: "checkbox", id: inputId, name: name, value: value, checked: checked, defaultChecked: defaultChecked, disabled: disabled, onChange: (e) => onChange?.(e.target.checked), className: "tokis-checkbox-native", "aria-label": !label ? ariaLabel : undefined, "aria-describedby": descId }), _jsx("span", { "aria-hidden": "true", className: "tokis-checkbox-control", "data-checked": checked && !indeterminate ? 'true' : undefined, "data-indeterminate": indeterminate ? 'true' : undefined }), (label || description) && (_jsxs("div", { children: [label && _jsx("span", { className: "tokis-checkbox-label", children: label }), description && _jsx("p", { id: descId, className: "tokis-checkbox-description", children: description })] }))] }));
14
+ return (_jsxs("label", { className: cn('tokis-checkbox-root', className), "data-disabled": disabled || undefined, htmlFor: inputId, children: [_jsx("input", { ref: inputRef, type: "checkbox", id: inputId, name: name, value: value, checked: checked, defaultChecked: defaultChecked, disabled: disabled, onChange: (e) => { if (!disabled)
15
+ onChange?.(e.target.checked); }, className: "tokis-checkbox-native", "aria-label": !label ? ariaLabel : undefined, "aria-describedby": descId }), _jsx("span", { "aria-hidden": "true", className: "tokis-checkbox-control", "data-checked": checked && !indeterminate ? 'true' : undefined, "data-indeterminate": indeterminate ? 'true' : undefined }), (label || description) && (_jsxs("div", { children: [label && _jsx("span", { className: "tokis-checkbox-label", children: label }), description && _jsx("p", { id: descId, className: "tokis-checkbox-description", children: description })] }))] }));
15
16
  }
16
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/checkbox/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAiBvC,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,GAAG,KAAK,EAClE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GACjE;IACd,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,EAAE,IAAI,YAAY,MAAM,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,iBACE,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,mBAChC,QAAQ,IAAI,SAAS,EACpC,OAAO,EAAE,OAAO,aAEhB,gBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC7C,SAAS,EAAC,uBAAuB,gBACrB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,sBACxB,MAAM,GACxB,EACF,8BACc,MAAM,EAClB,SAAS,EAAC,wBAAwB,kBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,wBACxC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GACtD,EACD,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,0BACG,KAAK,IAAI,eAAM,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAQ,EAC9D,WAAW,IAAI,YAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,IACnF,CACP,IACK,CACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/checkbox/index.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAiBvC,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,GAAG,KAAK,EAClE,QAAQ,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,GACjE;IACd,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,EAAE,IAAI,YAAY,MAAM,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,iBACE,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,mBAChC,QAAQ,IAAI,SAAS,EACpC,OAAO,EAAE,OAAO,aAEhB,gBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ;oBAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACjE,SAAS,EAAC,uBAAuB,gBACrB,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,sBACxB,MAAM,GACxB,EACF,8BACc,MAAM,EAClB,SAAS,EAAC,wBAAwB,kBACpB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,wBACxC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GACtD,EACD,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,0BACG,KAAK,IAAI,eAAM,SAAS,EAAC,sBAAsB,YAAE,KAAK,GAAQ,EAC9D,WAAW,IAAI,YAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,4BAA4B,YAAE,WAAW,GAAK,IACnF,CACP,IACK,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * DataGrid — feature-complete data table for Tokis.
3
+ *
4
+ * Features:
5
+ * - Column sorting (asc/desc/none cycle, click header)
6
+ * - Quick filter toolbar
7
+ * - Per-column text filtering
8
+ * - Client-side pagination with page-size selector
9
+ * - Row selection (single / multi-select checkboxes)
10
+ * - Custom cell rendering (renderCell)
11
+ * - Loading skeleton state
12
+ * - Empty state
13
+ * - Windowed virtual scrolling (fixed height + rowHeight)
14
+ * - Controlled & uncontrolled patterns for sort, filter, page
15
+ * - ARIA: role="grid", aria-sort, aria-rowcount, aria-colcount
16
+ */
17
+ import type { DataGridProps } from './types.js';
18
+ export declare function DataGrid<R extends Record<string, unknown> = Record<string, unknown>>({ columns, rows, rowIdField, loading, emptyText, checkboxSelection, selectionModel: selectionProp, onSelectionChange, onRowClick, sortModel: sortProp, onSortModelChange, filterModel: filterProp, onFilterModelChange, showToolbar, pageSize: pageSizeProp, pageSizeOptions, page: pageProp, onPageChange, height, rowHeight, className, }: DataGridProps<R>): import("react/jsx-runtime").JSX.Element;
19
+ export type { DataGridProps, DataGridColumn, SortModel, FilterModel, RowId } from './types.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/datagrid/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAcH,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,YAAY,CAAC;AA0KpB,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACpF,OAAO,EACP,IAAI,EACJ,UAAiB,EACjB,OAAe,EACf,SAAqB,EACrB,iBAAyB,EACzB,cAAc,EAAE,aAAa,EAC7B,iBAAiB,EACjB,UAAU,EACV,SAAS,EAAE,QAAQ,EACnB,iBAAiB,EACjB,WAAW,EAAE,UAAU,EACvB,mBAAmB,EACnB,WAAmB,EACnB,QAAQ,EAAE,YAAiB,EAC3B,eAAmC,EACnC,IAAI,EAAE,QAAQ,EACd,YAAY,EACZ,MAAM,EACN,SAAc,EACd,SAAS,GACV,EAAE,aAAa,CAAC,CAAC,CAAC,2CAiMlB;AAGD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,159 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * DataGrid — feature-complete data table for Tokis.
4
+ *
5
+ * Features:
6
+ * - Column sorting (asc/desc/none cycle, click header)
7
+ * - Quick filter toolbar
8
+ * - Per-column text filtering
9
+ * - Client-side pagination with page-size selector
10
+ * - Row selection (single / multi-select checkboxes)
11
+ * - Custom cell rendering (renderCell)
12
+ * - Loading skeleton state
13
+ * - Empty state
14
+ * - Windowed virtual scrolling (fixed height + rowHeight)
15
+ * - Controlled & uncontrolled patterns for sort, filter, page
16
+ * - ARIA: role="grid", aria-sort, aria-rowcount, aria-colcount
17
+ */
18
+ import { useState, useCallback, useMemo, useRef, useEffect, } from 'react';
19
+ import { cn } from '../../utils/cn.js';
20
+ import { sortRows, filterRows, nextSortDirection, paginateRows, } from './utils.js';
21
+ // ─── Sort icon ────────────────────────────────────────────────────────────────
22
+ function SortIcon({ direction }) {
23
+ if (!direction)
24
+ return _jsx("span", { className: "tokis-dg-sort-icon tokis-dg-sort-icon--none", "aria-hidden": "true", children: "\u21C5" });
25
+ if (direction === 'asc')
26
+ return _jsx("span", { className: "tokis-dg-sort-icon", "aria-hidden": "true", children: "\u2191" });
27
+ return _jsx("span", { className: "tokis-dg-sort-icon", "aria-hidden": "true", children: "\u2193" });
28
+ }
29
+ function DataGridToolbar({ quickFilter, onQuickFilter }) {
30
+ return (_jsx("div", { className: "tokis-dg-toolbar", children: _jsx("input", { type: "search", className: "tokis-dg-search", placeholder: "Search\u2026", value: quickFilter, "aria-label": "Quick filter", onChange: (e) => onQuickFilter(e.target.value) }) }));
31
+ }
32
+ function DataGridHeader({ columns, sortModel, onSort, checkboxSelection, allSelected, someSelected, onSelectAll, columnFilters, onColumnFilter, }) {
33
+ return (_jsxs("div", { className: "tokis-dg-header", role: "rowgroup", children: [_jsxs("div", { className: "tokis-dg-row tokis-dg-row--header", role: "row", children: [checkboxSelection && (_jsx("div", { className: "tokis-dg-cell tokis-dg-cell--checkbox", role: "columnheader", "aria-label": "Select all", children: _jsx("input", { type: "checkbox", checked: allSelected, ref: (el) => { if (el)
34
+ el.indeterminate = someSelected && !allSelected; }, onChange: (e) => onSelectAll(e.target.checked), "aria-label": "Select all rows" }) })), columns.map((col) => {
35
+ const isSorted = sortModel.field === col.field && sortModel.direction != null;
36
+ return (_jsxs("div", { className: cn('tokis-dg-cell', 'tokis-dg-cell--header', col.sortable !== false && 'tokis-dg-cell--sortable'), role: "columnheader", "aria-sort": isSorted ? (sortModel.direction === 'asc' ? 'ascending' : 'descending') : 'none', style: { '--dg-align': col.headerAlign ?? col.align ?? 'start' }, onClick: () => col.sortable !== false && onSort(col.field), children: [col.renderHeader ? col.renderHeader(col) : (col.headerName ?? col.field), col.sortable !== false && (_jsx(SortIcon, { direction: isSorted ? sortModel.direction : null }))] }, col.field));
37
+ })] }), columns.some((c) => c.filterable) && (_jsxs("div", { className: "tokis-dg-row tokis-dg-row--filter-row", role: "row", "aria-label": "Column filters", children: [checkboxSelection && _jsx("div", { className: "tokis-dg-cell tokis-dg-cell--checkbox", role: "cell" }), columns.map((col) => (_jsx("div", { className: "tokis-dg-cell tokis-dg-cell--filter", role: "cell", children: col.filterable && (_jsx("input", { type: "search", className: "tokis-dg-col-filter", placeholder: `Filter ${col.headerName ?? col.field}…`, value: columnFilters[col.field] ?? '', "aria-label": `Filter by ${col.headerName ?? col.field}`, onChange: (e) => onColumnFilter(col.field, e.target.value) })) }, col.field)))] }))] }));
38
+ }
39
+ function DataGridPagination({ page, pageSize, pageSizeOptions, total, onPageChange, onPageSizeChange }) {
40
+ const totalPages = Math.max(1, Math.ceil(total / pageSize));
41
+ const start = page * pageSize + 1;
42
+ const end = Math.min((page + 1) * pageSize, total);
43
+ return (_jsxs("div", { className: "tokis-dg-pagination", role: "navigation", "aria-label": "Pagination", children: [_jsx("span", { className: "tokis-dg-pagination-info", children: total === 0 ? '0 rows' : `${start}–${end} of ${total}` }), _jsx("select", { className: "tokis-dg-page-size", value: pageSize, "aria-label": "Rows per page", onChange: (e) => { onPageSizeChange(Number(e.target.value)); onPageChange(0); }, children: pageSizeOptions.map((s) => _jsxs("option", { value: s, children: [s, " / page"] }, s)) }), _jsx("button", { className: "tokis-dg-page-btn", disabled: page === 0, onClick: () => onPageChange(0), "aria-label": "First page", children: "\u00AB" }), _jsx("button", { className: "tokis-dg-page-btn", disabled: page === 0, onClick: () => onPageChange(page - 1), "aria-label": "Previous page", children: "\u2039" }), _jsx("button", { className: "tokis-dg-page-btn", disabled: page >= totalPages - 1, onClick: () => onPageChange(page + 1), "aria-label": "Next page", children: "\u203A" }), _jsx("button", { className: "tokis-dg-page-btn", disabled: page >= totalPages - 1, onClick: () => onPageChange(totalPages - 1), "aria-label": "Last page", children: "\u00BB" })] }));
44
+ }
45
+ // ─── Skeleton loader ──────────────────────────────────────────────────────────
46
+ function DataGridSkeleton({ rows, columns }) {
47
+ return (_jsx(_Fragment, { children: Array.from({ length: rows }).map((_, r) => (_jsx("div", { className: "tokis-dg-row tokis-dg-row--skeleton", role: "row", "aria-hidden": "true", children: Array.from({ length: columns }).map((__, c) => (_jsx("div", { className: "tokis-dg-cell", children: _jsx("span", { className: "tokis-dg-skeleton-bar" }) }, c))) }, r))) }));
48
+ }
49
+ // ─── Main DataGrid ────────────────────────────────────────────────────────────
50
+ export function DataGrid({ columns, rows, rowIdField = 'id', loading = false, emptyText = 'No rows', checkboxSelection = false, selectionModel: selectionProp, onSelectionChange, onRowClick, sortModel: sortProp, onSortModelChange, filterModel: filterProp, onFilterModelChange, showToolbar = false, pageSize: pageSizeProp = 25, pageSizeOptions = [10, 25, 50, 100], page: pageProp, onPageChange, height, rowHeight = 48, className, }) {
51
+ // ── Internal state (uncontrolled fallbacks) ──
52
+ const [sortInternal, setSortInternal] = useState({ field: '', direction: null });
53
+ const [filterInternal, setFilterInternal] = useState({ quickFilter: '', columnFilters: {} });
54
+ const [pageInternal, setPageInternal] = useState(0);
55
+ const [pageSizeInternal, setPageSizeInternal] = useState(pageSizeProp);
56
+ const [selectionInternal, setSelectionInternal] = useState([]);
57
+ const sort = sortProp ?? sortInternal;
58
+ const filterModel = filterProp ?? filterInternal;
59
+ const page = pageProp ?? pageInternal;
60
+ const pageSize = pageSizeInternal;
61
+ const selection = selectionProp ?? selectionInternal;
62
+ const setSort = useCallback((model) => {
63
+ if (onSortModelChange)
64
+ onSortModelChange(model);
65
+ else
66
+ setSortInternal(model);
67
+ }, [onSortModelChange]);
68
+ const setFilter = useCallback((model) => {
69
+ if (onFilterModelChange)
70
+ onFilterModelChange(model);
71
+ else
72
+ setFilterInternal(model);
73
+ // Reset to page 0 on filter change
74
+ if (onPageChange)
75
+ onPageChange(0);
76
+ else
77
+ setPageInternal(0);
78
+ }, [onFilterModelChange, onPageChange]);
79
+ const setPage = useCallback((p) => {
80
+ if (onPageChange)
81
+ onPageChange(p);
82
+ else
83
+ setPageInternal(p);
84
+ }, [onPageChange]);
85
+ const setSelection = useCallback((ids) => {
86
+ if (onSelectionChange)
87
+ onSelectionChange(ids);
88
+ else
89
+ setSelectionInternal(ids);
90
+ }, [onSelectionChange]);
91
+ // ── Process rows ──
92
+ const processed = useMemo(() => {
93
+ let r = filterRows(rows, filterModel, columns);
94
+ r = sortRows(r, sort, columns);
95
+ return r;
96
+ }, [rows, filterModel, sort, columns]);
97
+ const paginated = useMemo(() => paginateRows(processed, page, pageSize), [processed, page, pageSize]);
98
+ // ── Virtualization ──
99
+ const bodyRef = useRef(null);
100
+ const [scrollTop, setScrollTop] = useState(0);
101
+ const isVirtualized = typeof height === 'number';
102
+ useEffect(() => {
103
+ const el = bodyRef.current;
104
+ if (!el || !isVirtualized)
105
+ return;
106
+ const handler = () => setScrollTop(el.scrollTop);
107
+ el.addEventListener('scroll', handler, { passive: true });
108
+ return () => el.removeEventListener('scroll', handler);
109
+ }, [isVirtualized]);
110
+ const OVERSCAN = 5;
111
+ const visibleStart = isVirtualized ? Math.max(0, Math.floor(scrollTop / rowHeight) - OVERSCAN) : 0;
112
+ const visibleCount = isVirtualized ? Math.ceil((Number(height) / rowHeight) + OVERSCAN * 2) : paginated.length;
113
+ const visibleEnd = Math.min(paginated.length, visibleStart + visibleCount);
114
+ const visibleRows = isVirtualized ? paginated.slice(visibleStart, visibleEnd) : paginated;
115
+ const paddingTop = isVirtualized ? visibleStart * rowHeight : 0;
116
+ const paddingBottom = isVirtualized ? Math.max(0, (paginated.length - visibleEnd) * rowHeight) : 0;
117
+ // ── Selection helpers ──
118
+ const allOnPageSelected = paginated.length > 0 && paginated.every((r) => selection.includes(r[rowIdField]));
119
+ const someOnPageSelected = paginated.some((r) => selection.includes(r[rowIdField]));
120
+ const handleSelectAll = (checked) => {
121
+ if (checked) {
122
+ const newIds = paginated.map((r) => r[rowIdField]);
123
+ const merged = Array.from(new Set([...selection, ...newIds]));
124
+ setSelection(merged);
125
+ }
126
+ else {
127
+ const pageIds = new Set(paginated.map((r) => r[rowIdField]));
128
+ setSelection(selection.filter((id) => !pageIds.has(id)));
129
+ }
130
+ };
131
+ const handleRowSelect = (rowId, checked) => {
132
+ if (checked)
133
+ setSelection([...selection, rowId]);
134
+ else
135
+ setSelection(selection.filter((id) => id !== rowId));
136
+ };
137
+ // ── Sort handler ──
138
+ const handleSort = (field) => {
139
+ setSort(nextSortDirection(sort.field, sort, field));
140
+ };
141
+ // ── Filter handlers ──
142
+ const handleQuickFilter = (v) => setFilter({ ...filterModel, quickFilter: v });
143
+ const handleColumnFilter = (field, v) => {
144
+ setFilter({ ...filterModel, columnFilters: { ...(filterModel.columnFilters ?? {}), [field]: v } });
145
+ };
146
+ // ── Render ──
147
+ const bodyStyle = height
148
+ ? { height: typeof height === 'number' ? `${height}px` : height, overflowY: 'auto' }
149
+ : {};
150
+ return (_jsxs("div", { className: cn('tokis-datagrid', className), role: "grid", "aria-rowcount": processed.length, "aria-colcount": columns.length, "aria-busy": loading, children: [showToolbar && (_jsx(DataGridToolbar, { quickFilter: filterModel.quickFilter ?? '', onQuickFilter: handleQuickFilter })), _jsx(DataGridHeader, { columns: columns, sortModel: sort, onSort: handleSort, checkboxSelection: checkboxSelection, allSelected: allOnPageSelected, someSelected: someOnPageSelected, onSelectAll: handleSelectAll, columnFilters: filterModel.columnFilters ?? {}, onColumnFilter: handleColumnFilter }), _jsx("div", { className: "tokis-dg-body", ref: bodyRef, style: bodyStyle, role: "rowgroup", children: loading ? (_jsx(DataGridSkeleton, { rows: Math.min(pageSize, 8), columns: columns.length + (checkboxSelection ? 1 : 0) })) : processed.length === 0 ? (_jsx("div", { className: "tokis-dg-empty", role: "row", children: _jsx("div", { className: "tokis-dg-cell", role: "cell", style: { gridColumn: '1 / -1' }, children: emptyText }) })) : (_jsxs(_Fragment, { children: [paddingTop > 0 && _jsx("div", { style: { height: paddingTop }, "aria-hidden": "true" }), visibleRows.map((row, idx) => {
151
+ const rowId = row[rowIdField];
152
+ const isSelected = selection.includes(rowId);
153
+ return (_jsxs("div", { className: cn('tokis-dg-row', isSelected && 'tokis-dg-row--selected'), role: "row", "aria-rowindex": visibleStart + idx + 2, "aria-selected": checkboxSelection ? isSelected : undefined, style: { height: `${rowHeight}px` }, onClick: (e) => onRowClick?.(row, e), children: [checkboxSelection && (_jsx("div", { className: "tokis-dg-cell tokis-dg-cell--checkbox", role: "gridcell", children: _jsx("input", { type: "checkbox", checked: isSelected, "aria-label": `Select row ${rowId}`, onChange: (e) => handleRowSelect(rowId, e.target.checked), onClick: (e) => e.stopPropagation() }) })), columns.map((col) => {
154
+ const value = col.valueGetter ? col.valueGetter(row) : row[col.field];
155
+ return (_jsx("div", { className: "tokis-dg-cell", role: "gridcell", style: { '--dg-align': col.align ?? 'start', ...col.cellStyle }, children: col.renderCell ? col.renderCell({ value, row, field: col.field }) : value }, col.field));
156
+ })] }, rowId ?? visibleStart + idx));
157
+ }), paddingBottom > 0 && _jsx("div", { style: { height: paddingBottom }, "aria-hidden": "true" })] })) }), _jsx(DataGridPagination, { page: page, pageSize: pageSize, pageSizeOptions: pageSizeOptions, total: processed.length, onPageChange: setPage, onPageSizeChange: setPageSizeInternal })] }));
158
+ }
159
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/datagrid/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import type { ReactNode, CSSProperties, MouseEvent } from 'react';
2
+ export interface DataGridCellParams<R = Record<string, unknown>> {
3
+ /** The raw cell value */
4
+ value: unknown;
5
+ /** The full row object */
6
+ row: R;
7
+ /** The column field name */
8
+ field: string;
9
+ }
10
+ export interface DataGridColumn<R = Record<string, unknown>> {
11
+ /** Unique field key — must match a key in the row object. */
12
+ field: string;
13
+ /** Column header label. */
14
+ headerName?: string;
15
+ /** Fixed pixel width (mutually exclusive with `flex`). */
16
+ width?: number;
17
+ /** Flex grow ratio — distributes remaining width proportionally. */
18
+ flex?: number;
19
+ /** Allow sorting on this column. @default true */
20
+ sortable?: boolean;
21
+ /** Allow per-column text filtering. @default false */
22
+ filterable?: boolean;
23
+ /** Align cell content. @default 'start' */
24
+ align?: 'start' | 'center' | 'end';
25
+ /** Align header content. @default 'start' */
26
+ headerAlign?: 'start' | 'center' | 'end';
27
+ /** Inline styles for the cell. */
28
+ cellStyle?: CSSProperties;
29
+ /** Custom render function — overrides default value display. */
30
+ renderCell?: (params: DataGridCellParams<R>) => ReactNode;
31
+ /** Custom render function for the header cell. */
32
+ renderHeader?: (col: DataGridColumn<R>) => ReactNode;
33
+ /** Value getter — derive the sort/filter value from the row. */
34
+ valueGetter?: (row: R) => unknown;
35
+ }
36
+ export type SortDirection = 'asc' | 'desc' | null;
37
+ export interface SortModel {
38
+ field: string;
39
+ direction: SortDirection;
40
+ }
41
+ export interface FilterModel {
42
+ /** Global quick-filter string applied across all filterable columns. */
43
+ quickFilter?: string;
44
+ /** Per-column filter strings. */
45
+ columnFilters?: Record<string, string>;
46
+ }
47
+ export type RowId = string | number;
48
+ export interface DataGridProps<R extends Record<string, unknown> = Record<string, unknown>> {
49
+ /** Column definitions. */
50
+ columns: DataGridColumn<R>[];
51
+ /** Array of row objects. Each row must have the fields referenced by columns. */
52
+ rows: R[];
53
+ /** Field used as the unique row identifier. @default 'id' */
54
+ rowIdField?: string;
55
+ /** Show loading skeleton over the rows area. */
56
+ loading?: boolean;
57
+ /** Content rendered when rows is empty (and not loading). */
58
+ emptyText?: ReactNode;
59
+ /** Enable checkbox column for multi-row selection. */
60
+ checkboxSelection?: boolean;
61
+ /** Controlled selected row ids. */
62
+ selectionModel?: RowId[];
63
+ /** Fires when the selection changes. */
64
+ onSelectionChange?: (ids: RowId[]) => void;
65
+ /** Fires when a row is clicked. */
66
+ onRowClick?: (row: R, event: MouseEvent<HTMLElement>) => void;
67
+ /** Controlled sort model. */
68
+ sortModel?: SortModel;
69
+ /** Fires when the sort model changes. */
70
+ onSortModelChange?: (model: SortModel) => void;
71
+ /** Controlled filter model. */
72
+ filterModel?: FilterModel;
73
+ /** Fires when the filter model changes. */
74
+ onFilterModelChange?: (model: FilterModel) => void;
75
+ /** Show the global quick-filter toolbar. */
76
+ showToolbar?: boolean;
77
+ /** Rows per page for pagination. @default 25 */
78
+ pageSize?: number;
79
+ /** Available page-size options. @default [10, 25, 50, 100] */
80
+ pageSizeOptions?: number[];
81
+ /** Controlled current page (0-indexed). */
82
+ page?: number;
83
+ /** Fires when page changes. */
84
+ onPageChange?: (page: number) => void;
85
+ /** Container height. If set, enables virtualized scrolling. @default 'auto' */
86
+ height?: number | string;
87
+ /** Fixed row height in px (required for virtualization). @default 48 */
88
+ rowHeight?: number;
89
+ /** Additional CSS class on the root element. */
90
+ className?: string;
91
+ }
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/datagrid/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/datagrid/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import type { DataGridColumn, FilterModel, SortModel } from './types.js';
2
+ /** Extract a comparable value from a row cell. */
3
+ export declare function getCellValue<R extends Record<string, unknown>>(row: R, col: DataGridColumn<R>): unknown;
4
+ /** Sort rows by a single column. Returns a new array. */
5
+ export declare function sortRows<R extends Record<string, unknown>>(rows: R[], sortModel: SortModel, columns: DataGridColumn<R>[]): R[];
6
+ /** Filter rows based on the FilterModel. Returns a new array. */
7
+ export declare function filterRows<R extends Record<string, unknown>>(rows: R[], filterModel: FilterModel, columns: DataGridColumn<R>[]): R[];
8
+ /** Cycle sort direction: null → asc → desc → null */
9
+ export declare function nextSortDirection(currentField: string, currentModel: SortModel, clickedField: string): SortModel;
10
+ /** Paginate an array. Returns the slice for the given page. */
11
+ export declare function paginateRows<T>(rows: T[], page: number, pageSize: number): T[];
12
+ /** Compute column widths from fixed + flex definitions. */
13
+ export declare function computeColumnWidths<R>(columns: DataGridColumn<R>[], totalWidth: number): number[];
14
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/datagrid/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzE,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GACrB,OAAO,CAET;AAED,yDAAyD;AACzD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxD,IAAI,EAAE,CAAC,EAAE,EACT,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,GAC3B,CAAC,EAAE,CAmBL;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1D,IAAI,EAAE,CAAC,EAAE,EACT,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,GAC3B,CAAC,EAAE,CA8BL;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,SAAS,EACvB,YAAY,EAAE,MAAM,GACnB,SAAS,CAQX;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE,CAG9E;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAC5B,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAWV"}
@@ -0,0 +1,80 @@
1
+ /** Extract a comparable value from a row cell. */
2
+ export function getCellValue(row, col) {
3
+ return col.valueGetter ? col.valueGetter(row) : row[col.field];
4
+ }
5
+ /** Sort rows by a single column. Returns a new array. */
6
+ export function sortRows(rows, sortModel, columns) {
7
+ if (!sortModel.direction)
8
+ return rows;
9
+ const col = columns.find((c) => c.field === sortModel.field);
10
+ if (!col)
11
+ return rows;
12
+ return [...rows].sort((a, b) => {
13
+ const av = getCellValue(a, col);
14
+ const bv = getCellValue(b, col);
15
+ let cmp = 0;
16
+ if (typeof av === 'number' && typeof bv === 'number') {
17
+ cmp = av - bv;
18
+ }
19
+ else {
20
+ cmp = String(av ?? '').localeCompare(String(bv ?? ''), undefined, { numeric: true, sensitivity: 'base' });
21
+ }
22
+ return sortModel.direction === 'asc' ? cmp : -cmp;
23
+ });
24
+ }
25
+ /** Filter rows based on the FilterModel. Returns a new array. */
26
+ export function filterRows(rows, filterModel, columns) {
27
+ let result = rows;
28
+ // Global quick filter
29
+ const q = filterModel.quickFilter?.trim().toLowerCase();
30
+ if (q) {
31
+ const filterableCols = columns.filter((c) => c.filterable !== false);
32
+ result = result.filter((row) => filterableCols.some((col) => {
33
+ const v = getCellValue(row, col);
34
+ return String(v ?? '').toLowerCase().includes(q);
35
+ }));
36
+ }
37
+ // Per-column filters
38
+ const colFilters = filterModel.columnFilters ?? {};
39
+ const activeColFilters = Object.entries(colFilters).filter(([, v]) => v.trim() !== '');
40
+ if (activeColFilters.length > 0) {
41
+ result = result.filter((row) => activeColFilters.every(([field, filterStr]) => {
42
+ const col = columns.find((c) => c.field === field);
43
+ if (!col)
44
+ return true;
45
+ const v = getCellValue(row, col);
46
+ return String(v ?? '').toLowerCase().includes(filterStr.toLowerCase());
47
+ }));
48
+ }
49
+ return result;
50
+ }
51
+ /** Cycle sort direction: null → asc → desc → null */
52
+ export function nextSortDirection(currentField, currentModel, clickedField) {
53
+ if (currentModel.field !== clickedField || currentModel.direction === null) {
54
+ return { field: clickedField, direction: 'asc' };
55
+ }
56
+ if (currentModel.direction === 'asc') {
57
+ return { field: clickedField, direction: 'desc' };
58
+ }
59
+ return { field: clickedField, direction: null };
60
+ }
61
+ /** Paginate an array. Returns the slice for the given page. */
62
+ export function paginateRows(rows, page, pageSize) {
63
+ const start = page * pageSize;
64
+ return rows.slice(start, start + pageSize);
65
+ }
66
+ /** Compute column widths from fixed + flex definitions. */
67
+ export function computeColumnWidths(columns, totalWidth) {
68
+ const fixed = columns.map((c) => c.width ?? 0);
69
+ const totalFixed = fixed.reduce((s, w) => s + w, 0);
70
+ const totalFlex = columns.reduce((s, c) => s + (c.flex ?? 0), 0);
71
+ const remaining = Math.max(0, totalWidth - totalFixed);
72
+ return columns.map((col, i) => {
73
+ if (col.width)
74
+ return col.width;
75
+ if (totalFlex > 0 && col.flex)
76
+ return (col.flex / totalFlex) * remaining;
77
+ return fixed[i] || 120; // fallback
78
+ });
79
+ }
80
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/datagrid/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Calendar — standalone month-grid date picker widget.
3
+ *
4
+ * Implements WAI-ARIA Calendar / Date Grid pattern:
5
+ * - role="grid" on the day grid
6
+ * - role="gridcell" on each day
7
+ * - Arrow keys navigate within the grid
8
+ * - Enter/Space selects the focused date
9
+ * - Page Up/Down → prev/next month
10
+ * - Ctrl+Page Up/Down → prev/next year
11
+ * - Home/End → first/last day of current week
12
+ */
13
+ export interface CalendarProps {
14
+ /** Currently selected date as YYYY-MM-DD. */
15
+ value?: string;
16
+ /** Fires with YYYY-MM-DD when a day is selected. */
17
+ onChange?: (value: string) => void;
18
+ /** Minimum selectable date (YYYY-MM-DD). */
19
+ min?: string;
20
+ /** Maximum selectable date (YYYY-MM-DD). */
21
+ max?: string;
22
+ /** Initial month to display (defaults to selected or current month). */
23
+ defaultMonth?: {
24
+ year: number;
25
+ month: number;
26
+ };
27
+ className?: string;
28
+ }
29
+ export declare function Calendar({ value, onChange, min, max, defaultMonth, className }: CalendarProps): import("react/jsx-runtime").JSX.Element;
30
+ //# sourceMappingURL=Calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../../src/components/datepicker/Calendar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,aAAa,2CA2L7F"}