@pathscale/ui 1.1.13 → 1.1.14

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 (33) hide show
  1. package/dist/components/glass-panel/GlassPanel.js +5 -3
  2. package/dist/components/select/Select.css +244 -0
  3. package/dist/components/select/Select.d.ts +44 -13
  4. package/dist/components/select/Select.js +618 -41
  5. package/dist/components/select/index.d.ts +2 -1
  6. package/dist/components/table/EnhancedTable.js +79 -160
  7. package/dist/components/table/Table.css +50 -9
  8. package/dist/components/table/Table.d.ts +19 -1
  9. package/dist/components/table/Table.js +100 -18
  10. package/dist/components/table/hooks/helpers.d.ts +7 -0
  11. package/dist/components/table/hooks/helpers.js +26 -0
  12. package/dist/components/table/hooks/index.d.ts +9 -0
  13. package/dist/components/table/hooks/index.js +18 -0
  14. package/dist/components/table/hooks/useAnchoredOverlayPosition.d.ts +16 -0
  15. package/dist/components/table/hooks/useAnchoredOverlayPosition.js +61 -0
  16. package/dist/components/table/hooks/useTableExpansion.d.ts +13 -0
  17. package/dist/components/table/hooks/useTableExpansion.js +17 -0
  18. package/dist/components/table/hooks/useTableFiltering.d.ts +30 -0
  19. package/dist/components/table/hooks/useTableFiltering.js +67 -0
  20. package/dist/components/table/hooks/useTableModel.d.ts +27 -0
  21. package/dist/components/table/hooks/useTableModel.js +56 -0
  22. package/dist/components/table/hooks/useTablePagination.d.ts +20 -0
  23. package/dist/components/table/hooks/useTablePagination.js +48 -0
  24. package/dist/components/table/hooks/useTableSelection.d.ts +14 -0
  25. package/dist/components/table/hooks/useTableSelection.js +17 -0
  26. package/dist/components/table/hooks/useTableSorting.d.ts +19 -0
  27. package/dist/components/table/hooks/useTableSorting.js +21 -0
  28. package/dist/components/table/index.d.ts +4 -2
  29. package/dist/components/table/index.js +13 -1
  30. package/dist/index.d.ts +2 -1
  31. package/dist/index.js +10 -1
  32. package/package.json +2 -1
  33. package/dist/components/select/select.css +0 -351
@@ -1 +1,2 @@
1
- export { default, type SelectProps } from "./Select";
1
+ export { default } from "./Select";
2
+ export type { SelectProps, SelectRootProps, SelectValueType, SelectVariant, SelectSelectionMode, SelectTriggerProps, SelectValueProps, SelectIndicatorProps, SelectPopoverProps, SelectListboxProps, SelectOptionProps, } from "./Select";
@@ -10,6 +10,7 @@ import * as __WEBPACK_EXTERNAL_MODULE__input_Input_js_ae745814__ from "../input/
10
10
  import * as __WEBPACK_EXTERNAL_MODULE__dropdown_Dropdown_js_1eafe997__ from "../dropdown/Dropdown.js";
11
11
  import * as __WEBPACK_EXTERNAL_MODULE__loading_Loading_js_1fa096bd__ from "../loading/Loading.js";
12
12
  import * as __WEBPACK_EXTERNAL_MODULE__menu_Menu_js_2e8cbfbf__ from "../menu/Menu.js";
13
+ import * as __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__ from "./hooks/index.js";
13
14
  var _tmpl$ = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<span class="cursor-pointer ml-auto shrink-0">'), _tmpl$2 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div><div class=mb-2></div><div class="flex gap-2 justify-end">'), _tmpl$3 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div><div class="flex items-center gap-2"><span class=opacity-70>Rows per page</span></div><div class="flex items-center gap-3 ml-4"><span class=opacity-70>Page <!> of </span><div class=join>'), _tmpl$4 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div class="flex items-center gap-2"><div class=truncate>'), _tmpl$5 = /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.template)('<div class="flex gap-2">');
14
15
  function EnhancedTable_EnhancedTable(props) {
15
16
  const [local, tableProps] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.splitProps)(props, [
@@ -48,67 +49,64 @@ function EnhancedTable_EnhancedTable(props) {
48
49
  "nextPageIcon",
49
50
  "lastPageIcon"
50
51
  ]);
51
- const [openFilterFor, setOpenFilterFor] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(null);
52
52
  const [pageSizeMenuOpen, setPageSizeMenuOpen] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)(false);
53
- const [pageSizeMenuStyle, setPageSizeMenuStyle] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)({
54
- position: "fixed",
55
- top: "0px",
56
- left: "0px",
57
- "min-width": "96px",
58
- "z-index": 1300
53
+ const sortingModel = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__.useTableSorting)({
54
+ sorting: local.sorting,
55
+ setSorting: local.setSorting,
56
+ initialSorting: []
57
+ });
58
+ const paginationModel = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__.useTablePagination)({
59
+ pagination: local.pagination,
60
+ setPagination: local.setPagination,
61
+ initialPagination: {
62
+ pageIndex: 0,
63
+ pageSize: 10
64
+ },
65
+ pageSizeOptions: [
66
+ 10,
67
+ 25,
68
+ 50,
69
+ 100
70
+ ]
71
+ });
72
+ const selectionModel = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__.useTableSelection)({
73
+ rowSelection: local.rowSelection,
74
+ setRowSelection: local.setRowSelection,
75
+ initialRowSelection: {}
76
+ });
77
+ const filteringModel = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__.useTableFiltering)({
78
+ columnFilters: local.columnFilters,
79
+ setColumnFilters: local.setColumnFilters,
80
+ initialColumnFilters: [],
81
+ globalFilter: local.globalFilter,
82
+ setGlobalFilter: local.setGlobalFilter,
83
+ initialGlobalFilter: ""
84
+ });
85
+ const expansionModel = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__.useTableExpansion)({
86
+ expanded: local.expanded,
87
+ setExpanded: local.setExpanded,
88
+ initialExpanded: {}
59
89
  });
60
- const pageSizeOptions = [
61
- 10,
62
- 25,
63
- 50,
64
- 100
65
- ];
66
90
  let pageSizeToggleRef;
67
91
  let pageSizeMenuRef;
68
- const table = (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.createSolidTable)({
69
- get data () {
70
- return local.data;
71
- },
72
- get columns () {
73
- return local.columns;
74
- },
75
- state: {
76
- get sorting () {
77
- return local.sorting?.() || [];
78
- },
79
- get columnFilters () {
80
- return local.columnFilters?.() || [];
81
- },
82
- get pagination () {
83
- return local.pagination?.() || {
84
- pageIndex: 0,
85
- pageSize: 10
86
- };
87
- },
88
- get globalFilter () {
89
- return local.globalFilter?.() || "";
90
- },
91
- get rowSelection () {
92
- return local.rowSelection?.() || {};
93
- },
94
- get expanded () {
95
- return local.expanded?.() || {};
96
- }
97
- },
98
- onSortingChange: local.setSorting,
99
- onColumnFiltersChange: local.setColumnFilters,
100
- onPaginationChange: local.setPagination,
101
- onGlobalFilterChange: local.setGlobalFilter,
102
- onRowSelectionChange: local.setRowSelection,
103
- onExpandedChange: local.setExpanded,
104
- getCoreRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getCoreRowModel)(),
105
- getSortedRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getSortedRowModel)(),
106
- getFilteredRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getFilteredRowModel)(),
107
- getPaginationRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getPaginationRowModel)(),
108
- getExpandedRowModel: (0, __WEBPACK_EXTERNAL_MODULE__tanstack_solid_table_1239d047__.getExpandedRowModel)(),
92
+ const table = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__.useTableModel)({
93
+ data: ()=>local.data,
94
+ columns: ()=>local.columns,
95
+ sorting: sortingModel.sorting,
96
+ setSorting: sortingModel.setSorting,
97
+ columnFilters: filteringModel.columnFilters,
98
+ setColumnFilters: filteringModel.setColumnFilters,
99
+ pagination: paginationModel.pagination,
100
+ setPagination: paginationModel.setPagination,
101
+ globalFilter: filteringModel.globalFilter,
102
+ setGlobalFilter: filteringModel.setGlobalFilter,
103
+ rowSelection: selectionModel.rowSelection,
104
+ setRowSelection: selectionModel.setRowSelection,
105
+ expanded: expansionModel.expanded,
106
+ setExpanded: expansionModel.setExpanded,
109
107
  enableSorting: false !== local.enableSorting,
110
108
  enableFilters: !!local.enableFilters,
111
- manualPagination: !local.enablePagination,
109
+ enablePagination: !!local.enablePagination,
112
110
  enableRowSelection: !!local.enableRowSelection,
113
111
  enableExpanding: true,
114
112
  getRowCanExpand: ()=>!!local.expandable
@@ -127,82 +125,37 @@ function EnhancedTable_EnhancedTable(props) {
127
125
  return pageCount > 1 || totalRows > pageSize;
128
126
  });
129
127
  const headerGroups = ()=>table.getHeaderGroups();
130
- const sortDescriptor = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>{
131
- const activeSort = table.getState().sorting[0];
132
- if (!activeSort) return;
133
- return {
134
- column: activeSort.id,
135
- direction: activeSort.desc ? "descending" : "ascending"
136
- };
137
- });
138
- const handleSortChange = (descriptor)=>{
139
- table.setSorting([
140
- {
141
- id: descriptor.column,
142
- desc: "descending" === descriptor.direction
143
- }
144
- ]);
145
- };
128
+ const sortDescriptor = sortingModel.sortDescriptor;
129
+ const handleSortChange = sortingModel.setSortDescriptor;
146
130
  const totalColumns = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createMemo)(()=>table.getVisibleLeafColumns().length + (local.enableRowSelection ? 1 : 0) + (local.expandable ? 1 : 0));
147
131
  const filterTriggerRefs = new Map();
148
- const [filterPanelStyle, setFilterPanelStyle] = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createSignal)({
149
- position: "fixed",
150
- top: "0px",
151
- left: "0px",
152
- "z-index": 1300
153
- });
154
132
  let filterPanelRef;
155
- const updateFilterPanelPosition = ()=>{
156
- const colId = openFilterFor();
157
- if (!colId) return;
158
- const triggerEl = filterTriggerRefs.get(colId);
159
- if (!triggerEl) return;
160
- const rect = triggerEl.getBoundingClientRect();
161
- const panelWidth = 224;
162
- const offset = 6;
163
- const viewportPadding = 8;
164
- let left = rect.right - panelWidth;
165
- left = Math.max(viewportPadding, Math.min(left, window.innerWidth - panelWidth - viewportPadding));
166
- let top = rect.bottom + offset;
167
- if (filterPanelRef) {
168
- const panelHeight = filterPanelRef.getBoundingClientRect().height;
169
- if (top + panelHeight > window.innerHeight - viewportPadding) {
170
- const above = rect.top - panelHeight - offset;
171
- top = above >= viewportPadding ? above : Math.max(viewportPadding, window.innerHeight - panelHeight - viewportPadding);
172
- }
173
- }
174
- setFilterPanelStyle({
175
- position: "fixed",
176
- top: `${top}px`,
177
- left: `${left}px`,
178
- "z-index": 1300
179
- });
180
- };
181
- (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
182
- if (!openFilterFor()) return;
183
- requestAnimationFrame(()=>{
184
- updateFilterPanelPosition();
185
- requestAnimationFrame(updateFilterPanelPosition);
186
- });
187
- const onViewportChange = ()=>updateFilterPanelPosition();
188
- window.addEventListener("resize", onViewportChange);
189
- window.addEventListener("scroll", onViewportChange, true);
190
- (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
191
- window.removeEventListener("resize", onViewportChange);
192
- window.removeEventListener("scroll", onViewportChange, true);
193
- });
133
+ const filterPanelAnchor = ()=>filteringModel.openFilterFor() ? filterTriggerRefs.get(filteringModel.openFilterFor()) : void 0;
134
+ const filterPanelPosition = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__.useAnchoredOverlayPosition)({
135
+ isOpen: ()=>Boolean(filteringModel.openFilterFor()),
136
+ getAnchor: filterPanelAnchor,
137
+ getOverlay: ()=>filterPanelRef,
138
+ width: 224,
139
+ zIndex: 1300
140
+ });
141
+ const pageSizeMenuPosition = (0, __WEBPACK_EXTERNAL_MODULE__hooks_index_js_ea54ea0e__.useAnchoredOverlayPosition)({
142
+ isOpen: pageSizeMenuOpen,
143
+ getAnchor: ()=>pageSizeToggleRef,
144
+ getOverlay: ()=>pageSizeMenuRef,
145
+ minWidth: ()=>pageSizeToggleRef ? Math.max(pageSizeToggleRef.getBoundingClientRect().width, 96) : 96,
146
+ zIndex: 1300
194
147
  });
195
148
  const FilterIconTrigger = (props)=>(()=>{
196
149
  var _el$ = _tmpl$();
197
150
  _el$.$$click = (e)=>{
198
151
  e.stopPropagation();
199
- if (!props.disabled) setOpenFilterFor((c)=>c === props.colId ? null : props.colId);
152
+ if (!props.disabled) filteringModel.toggleFilter(props.colId);
200
153
  };
201
154
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.use)((el)=>filterTriggerRefs.set(props.colId, el), _el$);
202
155
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$, ()=>local.filterIcon);
203
156
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)((_$p)=>(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.classList)(_el$, {
204
157
  "opacity-50 pointer-events-none": props.disabled,
205
- "text-primary": openFilterFor() === props.colId
158
+ "text-primary": filteringModel.openFilterFor() === props.colId
206
159
  }, _$p));
207
160
  return _el$;
208
161
  })();
@@ -211,7 +164,7 @@ function EnhancedTable_EnhancedTable(props) {
211
164
  const colId = col.id;
212
165
  return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.Show, {
213
166
  get when () {
214
- return openFilterFor() === colId;
167
+ return filteringModel.openFilterFor() === colId;
215
168
  },
216
169
  get children () {
217
170
  return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.Portal, {
@@ -232,18 +185,18 @@ function EnhancedTable_EnhancedTable(props) {
232
185
  variant: "outline",
233
186
  onClick: ()=>{
234
187
  col.setFilterValue(void 0);
235
- setOpenFilterFor(null);
188
+ filteringModel.closeFilter();
236
189
  },
237
190
  children: "Clear"
238
191
  }), null);
239
192
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.insert)(_el$4, (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE__button_Button_js_6d750473__["default"], {
240
193
  size: "sm",
241
194
  variant: "primary",
242
- onClick: ()=>setOpenFilterFor(null),
195
+ onClick: ()=>filteringModel.closeFilter(),
243
196
  children: "Apply"
244
197
  }), null);
245
198
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.effect)((_p$)=>{
246
- var _v$ = filterPanelStyle(), _v$2 = local.filterPanelClass ?? "z-[1300] w-56 border border-nf-border bg-nf-surface-1 shadow-lg rounded-box p-2";
199
+ var _v$ = filterPanelPosition.style(), _v$2 = local.filterPanelClass ?? "z-[1300] w-56 border border-nf-border bg-nf-surface-1 shadow-lg rounded-box p-2";
247
200
  _p$.e = (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.style)(_el$2, _v$, _p$.e);
248
201
  _v$2 !== _p$.t && (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.className)(_el$2, _p$.t = _v$2);
249
202
  return _p$;
@@ -266,33 +219,6 @@ function EnhancedTable_EnhancedTable(props) {
266
219
  document.body.append(root);
267
220
  return root;
268
221
  };
269
- const updatePageSizeMenuPosition = ()=>{
270
- const toggleEl = pageSizeToggleRef;
271
- const menuEl = pageSizeMenuRef;
272
- if (!toggleEl || !menuEl) return;
273
- const viewportPadding = 8;
274
- const gap = 4;
275
- const toggleRect = toggleEl.getBoundingClientRect();
276
- const menuRect = menuEl.getBoundingClientRect();
277
- const menuWidth = menuRect.width || Math.max(toggleRect.width, 96);
278
- const menuHeight = menuRect.height || 0;
279
- const viewportWidth = window.innerWidth;
280
- const viewportHeight = window.innerHeight;
281
- let left = toggleRect.right - menuWidth;
282
- left = Math.max(viewportPadding, Math.min(left, viewportWidth - menuWidth - viewportPadding));
283
- const spaceBelow = viewportHeight - toggleRect.bottom;
284
- const spaceAbove = toggleRect.top;
285
- const shouldOpenUp = spaceBelow < menuHeight + gap && spaceAbove > menuHeight + gap;
286
- let top = shouldOpenUp ? toggleRect.top - menuHeight - gap : toggleRect.bottom + gap;
287
- top = Math.max(viewportPadding, Math.min(top, viewportHeight - menuHeight - viewportPadding));
288
- setPageSizeMenuStyle({
289
- position: "fixed",
290
- top: `${top}px`,
291
- left: `${left}px`,
292
- "min-width": `${Math.max(toggleRect.width, 96)}px`,
293
- "z-index": 1300
294
- });
295
- };
296
222
  const closePageSizeMenu = ()=>setPageSizeMenuOpen(false);
297
223
  const togglePageSizeMenu = ()=>setPageSizeMenuOpen((current)=>!current);
298
224
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
@@ -301,10 +227,6 @@ function EnhancedTable_EnhancedTable(props) {
301
227
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.createEffect)(()=>{
302
228
  if (!pageSizeMenuOpen()) return;
303
229
  ensurePortalRoot();
304
- requestAnimationFrame(()=>{
305
- updatePageSizeMenuPosition();
306
- requestAnimationFrame(updatePageSizeMenuPosition);
307
- });
308
230
  const onPointerDown = (event)=>{
309
231
  const target = event.target;
310
232
  if (!target) return;
@@ -315,16 +237,11 @@ function EnhancedTable_EnhancedTable(props) {
315
237
  const onKeyDown = (event)=>{
316
238
  if ("Escape" === event.key) closePageSizeMenu();
317
239
  };
318
- const onViewportChange = ()=>updatePageSizeMenuPosition();
319
240
  document.addEventListener("pointerdown", onPointerDown);
320
241
  document.addEventListener("keydown", onKeyDown);
321
- window.addEventListener("resize", onViewportChange);
322
- window.addEventListener("scroll", onViewportChange, true);
323
242
  (0, __WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.onCleanup)(()=>{
324
243
  document.removeEventListener("pointerdown", onPointerDown);
325
244
  document.removeEventListener("keydown", onKeyDown);
326
- window.removeEventListener("resize", onViewportChange);
327
- window.removeEventListener("scroll", onViewportChange, true);
328
245
  });
329
246
  });
330
247
  return [
@@ -676,14 +593,16 @@ function EnhancedTable_EnhancedTable(props) {
676
593
  pageSizeMenuRef = el;
677
594
  },
678
595
  get style () {
679
- return pageSizeMenuStyle();
596
+ return pageSizeMenuPosition.style();
680
597
  },
681
598
  class: "p-2 shadow bg-base-100 rounded-box border border-base-300 w-24",
682
599
  role: "menu",
683
600
  "aria-label": "Rows per page",
684
601
  get children () {
685
602
  return (0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE_solid_js_aeefcc6d__.For, {
686
- each: pageSizeOptions,
603
+ get each () {
604
+ return paginationModel.pageSizeOptions();
605
+ },
687
606
  children: (size)=>(0, __WEBPACK_EXTERNAL_MODULE_solid_js_web_35d951b7__.createComponent)(__WEBPACK_EXTERNAL_MODULE__button_Button_js_6d750473__["default"], {
688
607
  type: "button",
689
608
  size: "sm",
@@ -18,7 +18,7 @@
18
18
  background-color: var(--color-base-200);
19
19
  padding-inline: 0.25rem;
20
20
  padding-bottom: 0.25rem;
21
- border-radius: 0.75rem;
21
+ border-radius: calc(var(--radius-box, 1rem) * 1.25);
22
22
  }
23
23
 
24
24
  /* --------------------------------------------------------------------------
@@ -102,13 +102,13 @@
102
102
  }
103
103
 
104
104
  .table-root--secondary .table__column:first-child {
105
- border-top-left-radius: 0.75rem;
106
- border-bottom-left-radius: 0.75rem;
105
+ border-top-left-radius: 1rem;
106
+ border-bottom-left-radius: 1rem;
107
107
  }
108
108
 
109
109
  .table-root--secondary .table__column:last-child {
110
- border-top-right-radius: 0.75rem;
111
- border-bottom-right-radius: 0.75rem;
110
+ border-top-right-radius: 1rem;
111
+ border-bottom-right-radius: 1rem;
112
112
  }
113
113
 
114
114
  .table-root--secondary .table__body tr:first-child td:first-child,
@@ -210,19 +210,19 @@
210
210
  Table Body (<tbody>)
211
211
  -------------------------------------------------------------------------- */
212
212
  .table__body tr:first-child td:first-child {
213
- border-top-left-radius: 0.5rem;
213
+ border-top-left-radius: 1rem;
214
214
  }
215
215
 
216
216
  .table__body tr:first-child td:last-child {
217
- border-top-right-radius: 0.5rem;
217
+ border-top-right-radius: 1rem;
218
218
  }
219
219
 
220
220
  .table__body tr:last-child td:first-child {
221
- border-bottom-left-radius: 0.5rem;
221
+ border-bottom-left-radius: 1rem;
222
222
  }
223
223
 
224
224
  .table__body tr:last-child td:last-child {
225
- border-bottom-right-radius: 0.5rem;
225
+ border-bottom-right-radius: 1rem;
226
226
  }
227
227
 
228
228
  /* --------------------------------------------------------------------------
@@ -287,6 +287,14 @@
287
287
  box-shadow: inset 0 0 0 2px var(--color-accent);
288
288
  }
289
289
 
290
+ .table__expanded-row .table__expanded-cell {
291
+ background-color: color-mix(in oklch, var(--color-base-200) 75%, var(--color-base-100));
292
+ }
293
+
294
+ .table__expanded-cell {
295
+ padding-block: 0.875rem;
296
+ }
297
+
290
298
  /* --------------------------------------------------------------------------
291
299
  Table Footer (div outside <table>)
292
300
  -------------------------------------------------------------------------- */
@@ -297,6 +305,39 @@
297
305
  padding-block: 0.625rem;
298
306
  }
299
307
 
308
+ .table__page-size {
309
+ display: inline-flex;
310
+ align-items: center;
311
+ gap: 0.5rem;
312
+ font-size: 0.75rem;
313
+ font-weight: 600;
314
+ letter-spacing: 0.16em;
315
+ text-transform: uppercase;
316
+ }
317
+
318
+ .table__page-size-label {
319
+ opacity: 0.7;
320
+ }
321
+
322
+ .table__page-size-select {
323
+ min-width: 4.5rem;
324
+ border-radius: 0.75rem;
325
+ border: 1px solid color-mix(in oklch, var(--color-base-content) 10%, transparent);
326
+ background-color: var(--color-base-100);
327
+ padding-inline: 0.75rem;
328
+ padding-block: 0.5rem;
329
+ font-size: 0.875rem;
330
+ font-weight: 500;
331
+ letter-spacing: normal;
332
+ text-transform: none;
333
+ color: var(--color-base-content);
334
+ }
335
+
336
+ .table__page-size-select:focus-visible {
337
+ outline: none;
338
+ box-shadow: 0 0 0 2px var(--color-accent);
339
+ }
340
+
300
341
  /* --------------------------------------------------------------------------
301
342
  Resizable Container
302
343
  -------------------------------------------------------------------------- */
@@ -45,8 +45,24 @@ export type TableRowProps = JSX.HTMLAttributes<HTMLTableRowElement> & IComponent
45
45
  declare const TableRow: Component<TableRowProps>;
46
46
  export type TableCellProps = JSX.TdHTMLAttributes<HTMLTableCellElement> & IComponentBaseProps;
47
47
  declare const TableCell: Component<TableCellProps>;
48
+ export type TableExpandedRowProps = JSX.HTMLAttributes<HTMLTableRowElement> & IComponentBaseProps & {
49
+ colSpan: number;
50
+ cellClass?: string;
51
+ cellClassName?: string;
52
+ cellDataTheme?: string;
53
+ };
54
+ declare const TableExpandedRow: Component<TableExpandedRowProps>;
48
55
  export type TableFooterProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
49
56
  declare const TableFooter: Component<TableFooterProps>;
57
+ export type TablePageSizeProps = Omit<JSX.SelectHTMLAttributes<HTMLSelectElement>, "onChange"> & IComponentBaseProps & {
58
+ value: number;
59
+ options: readonly number[];
60
+ onChange: (value: number) => void;
61
+ label?: JSX.Element;
62
+ selectClass?: string;
63
+ selectClassName?: string;
64
+ };
65
+ declare const TablePageSize: Component<TablePageSizeProps>;
50
66
  export type TableResizableContainerProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
51
67
  declare const TableResizableContainer: Component<TableResizableContainerProps>;
52
68
  export type TableColumnResizerProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
@@ -56,7 +72,7 @@ declare const TableLoadMore: Component<TableLoadMoreProps>;
56
72
  export type TableLoadMoreContentProps = JSX.HTMLAttributes<HTMLDivElement> & IComponentBaseProps;
57
73
  declare const TableLoadMoreContent: Component<TableLoadMoreContentProps>;
58
74
  export type { TableVariant, TableSortDirection, TableSortDescriptor, TableColumnRenderProps, };
59
- export { TableRoot, TableScrollContainer, TableContent, TableHeader, TableColumn, TableBody, TableRow, TableCell, TableFooter, TableResizableContainer, TableColumnResizer, TableLoadMore, TableLoadMoreContent, };
75
+ export { TableRoot, TableScrollContainer, TableContent, TableHeader, TableColumn, TableBody, TableRow, TableCell, TableExpandedRow, TableFooter, TablePageSize, TableResizableContainer, TableColumnResizer, TableLoadMore, TableLoadMoreContent, };
60
76
  declare const _default: Component<TableRootProps> & {
61
77
  Root: Component<TableRootProps>;
62
78
  ScrollContainer: Component<TableScrollContainerProps>;
@@ -66,7 +82,9 @@ declare const _default: Component<TableRootProps> & {
66
82
  Body: Component<TableBodyProps>;
67
83
  Row: Component<TableRowProps>;
68
84
  Cell: Component<TableCellProps>;
85
+ ExpandedRow: Component<TableExpandedRowProps>;
69
86
  Footer: Component<TableFooterProps>;
87
+ PageSize: Component<TablePageSizeProps>;
70
88
  ResizableContainer: Component<TableResizableContainerProps>;
71
89
  ColumnResizer: Component<TableColumnResizerProps>;
72
90
  LoadMore: Component<TableLoadMoreProps>;