@worknice/whiteboard 0.52.1 → 0.54.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 (77) hide show
  1. package/dist/{presentation/TableColumnFilterModal.d.ts → controls/FilterModal.d.ts} +10 -3
  2. package/dist/{presentation/TableColumnFilterModal.js → controls/FilterModal.js} +32 -32
  3. package/dist/controls/FilterModal.module.js +13 -0
  4. package/dist/controls/FilterModal_module.css +60 -0
  5. package/dist/controls/MenuButton.js +1 -1
  6. package/dist/icons/MessagesIcon.d.ts +3 -0
  7. package/dist/icons/MessagesIcon.js +11 -0
  8. package/dist/icons/SlidersIcon.d.ts +3 -0
  9. package/dist/icons/SlidersIcon.js +12 -0
  10. package/dist/icons/WarningIcon.js +3 -3
  11. package/dist/icons/index.d.ts +2 -0
  12. package/dist/icons/index.js +3 -1
  13. package/dist/presentation/CustomizableTable/CustomizableTable.d.ts +1 -1
  14. package/dist/presentation/CustomizableTable/CustomizableTable.js +3 -3
  15. package/dist/presentation/RichList/RichList.d.ts +153 -0
  16. package/dist/presentation/RichList/RichList.js +605 -0
  17. package/dist/presentation/RichList/RichList.module.js +12 -0
  18. package/dist/presentation/RichList/RichList.stories.d.ts +26 -0
  19. package/dist/presentation/RichList/RichList.stories.js +348 -0
  20. package/dist/presentation/RichList/RichListBulkActionBar.d.ts +21 -0
  21. package/dist/presentation/RichList/RichListBulkActionBar.js +112 -0
  22. package/dist/presentation/RichList/RichListBulkActionBar.module.js +7 -0
  23. package/dist/presentation/RichList/RichListBulkActionBar_module.css +18 -0
  24. package/dist/presentation/RichList/RichListDisplayModal.d.ts +33 -0
  25. package/dist/presentation/RichList/RichListDisplayModal.js +198 -0
  26. package/dist/presentation/RichList/RichListRow.d.ts +39 -0
  27. package/dist/presentation/RichList/RichListRow.js +278 -0
  28. package/dist/presentation/RichList/RichListRow.module.js +34 -0
  29. package/dist/presentation/RichList/RichListRow_module.css +313 -0
  30. package/dist/presentation/RichList/RichListToolbar.d.ts +36 -0
  31. package/dist/presentation/RichList/RichListToolbar.js +134 -0
  32. package/dist/presentation/RichList/RichListToolbar.module.js +12 -0
  33. package/dist/presentation/RichList/RichListToolbar_module.css +100 -0
  34. package/dist/presentation/RichList/RichList_module.css +77 -0
  35. package/dist/presentation/RichList/helpers.d.ts +77 -0
  36. package/dist/presentation/RichList/helpers.js +121 -0
  37. package/dist/presentation/RichList/stories/ComplianceGroups.d.ts +9 -0
  38. package/dist/presentation/RichList/stories/ComplianceGroups.js +141 -0
  39. package/dist/presentation/RichList/stories/CustomFields.d.ts +13 -0
  40. package/dist/presentation/RichList/stories/CustomFields.js +80 -0
  41. package/dist/presentation/RichList/stories/EmployeeCompliance.d.ts +15 -0
  42. package/dist/presentation/RichList/stories/EmployeeCompliance.js +300 -0
  43. package/dist/presentation/RichList/stories/EmployeePaperwork.d.ts +21 -0
  44. package/dist/presentation/RichList/stories/EmployeePaperwork.js +225 -0
  45. package/dist/presentation/RichList/stories/EmployeePeople.d.ts +10 -0
  46. package/dist/presentation/RichList/stories/EmployeePeople.js +170 -0
  47. package/dist/presentation/RichList/stories/Leave.d.ts +21 -0
  48. package/dist/presentation/RichList/stories/Leave.js +332 -0
  49. package/dist/presentation/RichList/stories/Paperwork.d.ts +22 -0
  50. package/dist/presentation/RichList/stories/Paperwork.js +446 -0
  51. package/dist/presentation/RichList/stories/PaperworkApprovals.d.ts +23 -0
  52. package/dist/presentation/RichList/stories/PaperworkApprovals.js +342 -0
  53. package/dist/presentation/RichList/stories/PeopleList.d.ts +19 -0
  54. package/dist/presentation/RichList/stories/PeopleList.js +391 -0
  55. package/dist/presentation/RichList/stories/PeopleTags.d.ts +14 -0
  56. package/dist/presentation/RichList/stories/PeopleTags.js +106 -0
  57. package/dist/presentation/RichList/stories/Positions.d.ts +22 -0
  58. package/dist/presentation/RichList/stories/Positions.js +519 -0
  59. package/dist/presentation/RichList/stories/Reviews.d.ts +19 -0
  60. package/dist/presentation/RichList/stories/Reviews.js +215 -0
  61. package/dist/presentation/RichList/stories/SavedQuestions.d.ts +13 -0
  62. package/dist/presentation/RichList/stories/SavedQuestions.js +152 -0
  63. package/dist/presentation/RichList/stories/Tables.d.ts +9 -0
  64. package/dist/presentation/RichList/stories/Tables.js +85 -0
  65. package/dist/presentation/RichList/stories/Tasks.d.ts +16 -0
  66. package/dist/presentation/RichList/stories/Tasks.js +340 -0
  67. package/dist/presentation/RichList/stories/shared/bulkActionStubs.d.ts +9 -0
  68. package/dist/presentation/RichList/stories/shared/bulkActionStubs.js +122 -0
  69. package/dist/presentation/RichList/stories/shared.d.ts +8 -0
  70. package/dist/presentation/RichList/stories/shared.js +2 -0
  71. package/dist/presentation/RichList/types.d.ts +347 -0
  72. package/dist/presentation/RichList/types.js +0 -0
  73. package/dist/presentation/Table.d.ts +1 -1
  74. package/dist/presentation/Table.js +2 -2
  75. package/dist/presentation/Table.module.js +0 -10
  76. package/dist/presentation/Table_module.css +1 -61
  77. package/package.json +2 -2
@@ -0,0 +1,347 @@
1
+ import { type ReactNode } from "react";
2
+ import { type Filter } from "../../controls/FilterModal";
3
+ import { type PrimitiveValue } from "../../utils/tables";
4
+ /**
5
+ * Column width. Use a number (pixels) or a percentage string such as `"30%"` if the
6
+ * track should grow or shrink with the list width.
7
+ */
8
+ export type RichListSlotSize = number | `${number}%`;
9
+ /**
10
+ * When a slot or text field is rendered, gated by `RichList`’s `compactBreakpoint`
11
+ * (measured on the list scope only via the same `ResizeObserver` as `compactSize`).
12
+ *
13
+ * - `always` — render at any list width (default for most positions).
14
+ * - `whenWide` — render only when list width is **above** `compactBreakpoint`.
15
+ * - `whenCompact` — render only when list width is **at or below** `compactBreakpoint`.
16
+ *
17
+ * Useful for moving the same logical content between positions across breakpoints
18
+ * (e.g. status line in a content slot when wide, in `mainSlot.secondary` when compact).
19
+ * `compactBreakpoint` is the **only** width guardrail in `RichList`.
20
+ */
21
+ export type RichListLayoutVisibility = "always" | "whenWide" | "whenCompact";
22
+ /**
23
+ * Width policy for a content slot column.
24
+ *
25
+ * - `"shrinkable"` (default) — column flex-shrinks with the row at its `size` /
26
+ * `compactSize` cap.
27
+ * - `"fixed"` — column is locked to its `size` / `compactSize`; the trailing /
28
+ * main columns shrink first.
29
+ *
30
+ */
31
+ export type RichListColumnWidthMode = "shrinkable" | "fixed";
32
+ /**
33
+ * One line of text (or rich content) inside `mainSlot`. Use the object form for search,
34
+ * filters, CSV, wide-only prefix/suffix adornments, etc.
35
+ *
36
+ * - **Function:** render only; no search, filter, or CSV unless you use the object form.
37
+ * - **Object:** add `value`, `label`, and other fields to hook into search, filters, and
38
+ * export like a table column.
39
+ *
40
+ * Default handling for the object form is in `normalizeTextField` in `helpers.ts`
41
+ * (function form forces `globalFiltering: false` and `csvExport: false`).
42
+ */
43
+ export type RichListTextField<Type> = ((row: Type) => ReactNode) | {
44
+ /**
45
+ * Long text is truncated with an ellipsis when space is tight.
46
+ * Use `prefixOnWide` / `suffixOnWide` for small extras beside the main line at
47
+ * wide widths only.
48
+ */
49
+ render: (row: Type) => ReactNode;
50
+ /**
51
+ * Optional content **before** the main line (e.g. icon). Hidden at compact widths
52
+ * (the same `ResizeObserver` signal as `compactSize` and `rowMainCompact`); use
53
+ * the `render` itself for content that should always render.
54
+ */
55
+ prefixOnWide?: (row: Type) => ReactNode;
56
+ /**
57
+ * Optional content **after** the main line (e.g. badge). Hidden at compact widths
58
+ * (same rule as `prefixOnWide`); use the `render` itself for content that should
59
+ * always render, or pair with a `whenCompact` content/trailing slot for swap.
60
+ */
61
+ suffixOnWide?: (row: Type) => ReactNode;
62
+ /**
63
+ * Value used for search, filters, and export. If you omit it, this line is
64
+ * for display only in those features. When set, search usually includes this
65
+ * field by default.
66
+ */
67
+ value?: (row: Type) => PrimitiveValue;
68
+ /**
69
+ * Label in filter and export UIs. Needed for some filter setups when you add
70
+ * `filter` options.
71
+ */
72
+ label?: string;
73
+ /**
74
+ * If set, this can appear in the Filters dialog.
75
+ * When it is the only filter and a single-select, the toolbar renders an inline
76
+ * `MenuButton` **without** a visible label (`filter.label` is still used in the Filters
77
+ * modal when open, and as `aria-label` on that menu trigger when non-empty).
78
+ */
79
+ filter?: Filter<Type>;
80
+ /**
81
+ * Whether the toolbar search can match this field.
82
+ * @default `true` when `value` is set, otherwise `false` (see `normalizeTextField`)
83
+ */
84
+ globalFiltering?: boolean;
85
+ /**
86
+ * Include this field in CSV export when the list has `csvFilename` set.
87
+ * @default `false`
88
+ */
89
+ csvExport?: boolean;
90
+ /**
91
+ * Hide / show this line based on `RichList`’s `compactBreakpoint`. Use
92
+ * `"whenCompact"` on `mainSlot.secondary` to surface a line only at compact
93
+ * widths (and pair with a `whenWide` content slot for the wide layout).
94
+ * @default `"always"`
95
+ */
96
+ layoutVisibility?: RichListLayoutVisibility;
97
+ };
98
+ /**
99
+ * Primary and optional secondary lines stacked in the row’s main column (same horizontal
100
+ * slot as the content columns to their right).
101
+ */
102
+ export type RichListMainSlot<Type> = {
103
+ primary: RichListTextField<Type>;
104
+ secondary?: RichListTextField<Type>;
105
+ /**
106
+ * Max width of the **main slot** column (pixels), including primary and secondary lines.
107
+ * Omit to let the layout choose a width (see `RichListRow` / grid track fallback).
108
+ */
109
+ size?: number;
110
+ };
111
+ /**
112
+ * Common fields shared by leading, content (`contentSlots`), and trailing slots in
113
+ * their object form. Used directly by `RichListSlot` (leading/trailing) and extended
114
+ * by `RichListContentSlot` with the content-only display options.
115
+ */
116
+ type RichListBaseSlotObject<Type> = {
117
+ /**
118
+ * Unique id for this column across leading, all content slots, and trailing.
119
+ */
120
+ id: string;
121
+ /**
122
+ * Cell content for a row.
123
+ */
124
+ render: (row: Type) => ReactNode;
125
+ /**
126
+ * Label in filters and export headers. Content slots additionally use this in the
127
+ * Display / column UI when toggleable.
128
+ */
129
+ label?: string;
130
+ /**
131
+ * Value for search, filters, and CSV. If omitted, this column is only visual in
132
+ * those features.
133
+ */
134
+ value?: (row: Type) => PrimitiveValue;
135
+ /**
136
+ * Alignment inside the column. Trailing often uses `end` (right in LTR);
137
+ * content columns sometimes use `center`.
138
+ * @default `"end"` for trailing, `"start"` for leading and content
139
+ */
140
+ align?: "start" | "center" | "end";
141
+ /**
142
+ * Default max width for this column when the list is **wider** than
143
+ * `RichList`’s `compactBreakpoint` (default 1024px). Leading, content, and
144
+ * trailing can all set this.
145
+ */
146
+ size?: RichListSlotSize;
147
+ /**
148
+ * Tighter max width at/under `RichList`’s `compactBreakpoint` (default 1024px),
149
+ * if you set this. If omitted, `size` is used at compact too.
150
+ */
151
+ compactSize?: RichListSlotSize;
152
+ /**
153
+ * Column filter for the Filters dialog; use a clear `filter.label` where the modal applies.
154
+ * When this is the list’s only single-select filter, the toolbar renders a label-less
155
+ * inline `MenuButton` (same `filter.label` feeds `aria-label` when non-empty).
156
+ */
157
+ filter?: Filter<Type>;
158
+ /**
159
+ * When `true`, the toolbar search can match this column’s `value`.
160
+ * @default `true` when `value` is set, otherwise `false` (see `normalizeSlot`)
161
+ */
162
+ globalFiltering?: boolean;
163
+ /**
164
+ * Include in CSV when the list sets `csvFilename`.
165
+ * @default `false`
166
+ */
167
+ csvExport?: boolean;
168
+ /**
169
+ * Show / hide this whole column based on `RichList`’s `compactBreakpoint`. Combined
170
+ * with column visibility from the Display dialog (which always wins). Useful for
171
+ * surfacing the same logical content via different positions across breakpoints
172
+ * (e.g. content slot when wide; `mainSlot.secondary` when compact).
173
+ * @default `"always"`
174
+ */
175
+ layoutVisibility?: RichListLayoutVisibility;
176
+ };
177
+ /**
178
+ * A **leading** or **trailing** column. The row order is: leading, main slot (primary /
179
+ * optional secondary), content columns, trailing, then row actions.
180
+ *
181
+ * - **Function:** quick cell: `row => content`.
182
+ * - **Object:** full control with a stable `id` for filters and CSV.
183
+ *
184
+ * Content columns (`contentSlots`) use the wider `RichListContentSlot` shape, which
185
+ * adds `columnWidthMode`, `canToggleVisibility`, and `hiddenByDefault` — those
186
+ * options only have an effect on content columns and are deliberately excluded here.
187
+ *
188
+ * Default handling for the object form is in `normalizeSlot` in `helpers.ts` (function
189
+ * form sets: `align` `"end"` for trailing, `"start"` for leading; `globalFiltering: false`;
190
+ * `csvExport: false`; `layoutVisibility: "always"`).
191
+ */
192
+ export type RichListSlot<Type> = ((row: Type) => ReactNode) | RichListBaseSlotObject<Type>;
193
+ /**
194
+ * A **content** column (in `contentSlots`). Same shape as `RichListSlot` plus the
195
+ * content-only display options:
196
+ *
197
+ * - `columnWidthMode` — width-shrink policy (`"shrinkable"` or `"fixed"`). To drop
198
+ * the column at/under `compactBreakpoint`, use `layoutVisibility: "whenWide"`.
199
+ * - `canToggleVisibility` / `hiddenByDefault` for the Display dialog.
200
+ *
201
+ * Default handling for the object form is in `normalizeSlot` in `helpers.ts` (function
202
+ * form sets: `layoutVisibility: "always"`; `columnWidthMode: "shrinkable"`;
203
+ * `align: "start"`; `globalFiltering: false`; `canToggleVisibility: false`;
204
+ * `hiddenByDefault: false`; `csvExport: false`).
205
+ */
206
+ export type RichListContentSlot<Type> = ((row: Type) => ReactNode) | (RichListBaseSlotObject<Type> & {
207
+ /**
208
+ * Width-shrink policy for this column when sized.
209
+ *
210
+ * - `"shrinkable"` (default) — column shrinks with the row at its `size` /
211
+ * `compactSize`.
212
+ * - `"fixed"` — column is locked to its `size` / `compactSize`; trailing and
213
+ * main shrink first.
214
+ *
215
+ * @default `"shrinkable"`
216
+ */
217
+ columnWidthMode?: RichListColumnWidthMode;
218
+ /**
219
+ * If `true`, users can show or hide this column in Display settings. Requires a
220
+ * non-empty `label`.
221
+ * @default `false`
222
+ */
223
+ canToggleVisibility?: boolean;
224
+ /**
225
+ * If `true`, the column starts hidden. With `canToggleVisibility`, users can turn
226
+ * it on; without it, the column stays out of the visible-columns UI.
227
+ * @default `false`
228
+ */
229
+ hiddenByDefault?: boolean;
230
+ });
231
+ /**
232
+ * Internal shape after `normalizeTextField` in `helpers.ts`. Booleans are always set
233
+ * (no longer optional on the public object form).
234
+ */
235
+ export type NormalizedTextField<Type> = {
236
+ id: string;
237
+ position: "primary" | "secondary";
238
+ label?: string;
239
+ value?: (row: Type) => PrimitiveValue;
240
+ render: (row: Type) => ReactNode;
241
+ prefixOnWide?: (row: Type) => ReactNode;
242
+ suffixOnWide?: (row: Type) => ReactNode;
243
+ filter?: Filter<Type>;
244
+ /**
245
+ * @default `false` for function `RichListTextField`; for object, `true` if `value` is
246
+ * set and `globalFiltering` is omitted, else the explicit `globalFiltering` value.
247
+ */
248
+ globalFiltering: boolean;
249
+ /** @default `false` (or `false` for function form). */
250
+ csvExport: boolean;
251
+ /** @default `"always"` */
252
+ layoutVisibility: RichListLayoutVisibility;
253
+ };
254
+ /**
255
+ * Internal shape after `normalizeSlot` in `helpers.ts`. See `RichListSlot` and
256
+ * `RichListContentSlot` for defaults on the public object; function slots always set
257
+ * `false` for the filtering/toggle/CSV flags.
258
+ */
259
+ export type NormalizedSlot<Type> = {
260
+ id: string;
261
+ position: "leading" | "content" | "trailing";
262
+ /** Index within its position group (e.g. the i-th leading slot in the array). */
263
+ positionIndex?: number;
264
+ label?: string;
265
+ value?: (row: Type) => PrimitiveValue;
266
+ render: (row: Type) => ReactNode;
267
+ /** @default `"always"` */
268
+ layoutVisibility: RichListLayoutVisibility;
269
+ /** @default `"shrinkable"` (content-only knob; defaults to `"shrinkable"` for leading/trailing too). */
270
+ columnWidthMode: RichListColumnWidthMode;
271
+ /** @default from object or `"end"` (trailing) / `"start"` (leading, content). */
272
+ align: "start" | "center" | "end";
273
+ size?: RichListSlotSize;
274
+ compactSize?: RichListSlotSize;
275
+ filter?: Filter<Type>;
276
+ /**
277
+ * @default `false` for function `RichListSlot`; for object, `true` if `value` is set
278
+ * and `globalFiltering` is omitted, else the explicit `globalFiltering` value.
279
+ */
280
+ globalFiltering: boolean;
281
+ /**
282
+ * @default `true` only for content + explicit `true` on the object; otherwise `false`
283
+ * (including leading/trailing).
284
+ */
285
+ canToggleVisibility: boolean;
286
+ /** @default `false` if omitted on the object. */
287
+ hiddenByDefault: boolean;
288
+ /** @default `false` if omitted on the object. */
289
+ csvExport: boolean;
290
+ };
291
+ /**
292
+ * One action for a row: an icon in the action strip and/or an item in the “more” menu.
293
+ * Up to a fixed number of actions show as icons; the rest go in the menu so columns
294
+ * stay aligned.
295
+ */
296
+ export type RichListRowAction<Type> = {
297
+ /** Stable id for the control. */
298
+ id: string;
299
+ /** Tooltip, menu text, and accessibility name. */
300
+ label: string;
301
+ /** @default (omitted) no icon (menu text / tooltip still from `label`). */
302
+ icon?: ReactNode;
303
+ /**
304
+ * If `true`, prefer showing this as an icon in the main strip (until the max number
305
+ * of icon slots is used). If `false`, it only appears in the overflow menu.
306
+ * @default `false` (falsy/omitted: overflow menu only)
307
+ */
308
+ alwaysVisible?: boolean;
309
+ onClick: (row: Type) => void;
310
+ /**
311
+ * If set, the action is not offered when this returns `false` for that row.
312
+ * @default (omitted) the action is always considered for the row.
313
+ */
314
+ predicate?: (row: Type) => boolean;
315
+ };
316
+ /**
317
+ * An action on the **selected** rows. Used with `bulkActions` on the list. The `render`
318
+ * function usually returns a panel (confirm, form, etc.) and receives the matching
319
+ * selected rows, a way to clear selection, and `onClose` when the panel is done.
320
+ */
321
+ export type RichListBulkAction<Type> = {
322
+ /** Id for this bulk action. */
323
+ key: string;
324
+ /** Short label; the bar can show per-action row counts. */
325
+ label: string;
326
+ /** @default (omitted) no icon. */
327
+ icon?: ReactNode;
328
+ /**
329
+ * Panel to run the action: receives selected rows, `resetRowSelection`, and
330
+ * `onClose`.
331
+ */
332
+ render: (props: {
333
+ /** Selected rows this action runs on. */
334
+ rows: Array<Type>;
335
+ /** Clear selection (e.g. after success). */
336
+ resetRowSelection: () => void;
337
+ /** Close the action panel. */
338
+ onClose: () => void;
339
+ }) => ReactNode;
340
+ /**
341
+ * If set, this action only applies to selected rows that pass this test. It can be
342
+ * omitted from the bar if no selection matches.
343
+ * @default (omitted) all selected rows are eligible; no predicate filter.
344
+ */
345
+ predicate?: (row: Type) => boolean;
346
+ };
347
+ export {};
File without changes
@@ -1,9 +1,9 @@
1
1
  import type { SortingColumnDef } from "@tanstack/react-table";
2
2
  import { type ReactNode } from "react";
3
3
  import { type ZodTypeAny } from "zod";
4
+ import { type Filter } from "../controls/FilterModal";
4
5
  import { type MenuButtonOption } from "../controls/MenuButton";
5
6
  import { type PrimitiveValue } from "../utils/tables";
6
- import { type Filter } from "./TableColumnFilterModal";
7
7
  type Grouping<Type> = {
8
8
  fn: (row: Type) => string;
9
9
  header: (row: Type) => ReactNode;
@@ -7,6 +7,7 @@ import * as __WEBPACK_EXTERNAL_MODULE_clsx__ from "clsx";
7
7
  import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
8
8
  import * as __WEBPACK_EXTERNAL_MODULE__controls_Button_js_f591ba2e__ from "../controls/Button.js";
9
9
  import * as __WEBPACK_EXTERNAL_MODULE__controls_Disclosure_js_6e4cc59c__ from "../controls/Disclosure.js";
10
+ import * as __WEBPACK_EXTERNAL_MODULE__controls_FilterModal_js_d56bff3f__ from "../controls/FilterModal.js";
10
11
  import * as __WEBPACK_EXTERNAL_MODULE__controls_MenuButton_js_b23cdd05__ from "../controls/MenuButton.js";
11
12
  import * as __WEBPACK_EXTERNAL_MODULE__inputs_CheckboxInput_js_3a83f64b__ from "../inputs/CheckboxInput.js";
12
13
  import * as __WEBPACK_EXTERNAL_MODULE__inputs_SelectInput_js_d1a6f32e__ from "../inputs/SelectInput.js";
@@ -19,7 +20,6 @@ import * as __WEBPACK_EXTERNAL_MODULE__HStack_js_cc26058d__ from "./HStack.js";
19
20
  import * as __WEBPACK_EXTERNAL_MODULE__Icon_js_0d271bb6__ from "./Icon.js";
20
21
  import * as __WEBPACK_EXTERNAL_MODULE__PlainText_js_cd0b6798__ from "./PlainText.js";
21
22
  import * as __WEBPACK_EXTERNAL_MODULE__Table_module_js_1c0e33be__ from "./Table.module.js";
22
- import * as __WEBPACK_EXTERNAL_MODULE__TableColumnFilterModal_js_dd7b508a__ from "./TableColumnFilterModal.js";
23
23
  import * as __WEBPACK_EXTERNAL_MODULE__VStack_js_02eb6792__ from "./VStack.js";
24
24
  const selectColumnId = "_selectColumn";
25
25
  const actionsColumnId = "_actionsColumn";
@@ -582,7 +582,7 @@ const Table = ({ data, columns, bulkActions = [], secondaryBulkActions = [], csv
582
582
  })
583
583
  ]
584
584
  }),
585
- isFilterModalOpen && /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__TableColumnFilterModal_js_dd7b508a__["default"], {
585
+ isFilterModalOpen && /*#__PURE__*/ (0, __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_225474f2__.jsx)(__WEBPACK_EXTERNAL_MODULE__controls_FilterModal_js_d56bff3f__["default"], {
586
586
  onClose: ()=>setIsFilterModalOpen(false),
587
587
  filterableColumns: filterableColumns,
588
588
  currentFilters: tableState.columnFilters,
@@ -22,16 +22,6 @@ const Table_module_rslib_entry_ = {
22
22
  filterSelectMenus: "filterSelectMenus-rQe_dQ",
23
23
  filterBarSearchReset: "filterBarSearchReset-zMZpkF",
24
24
  filterBarSearchResetContent: "filterBarSearchResetContent-h8b3qb",
25
- filterExpandersContainer: "filterExpandersContainer-yRLNvU",
26
- filterExpanderRow: "filterExpanderRow-_O4wQh",
27
- filterExpanderHighlight: "filterExpanderHighlight-HU8LI2",
28
- filterExpanderLabel: "filterExpanderLabel-z0kGvW",
29
- filterExpanderIcon: "filterExpanderIcon-XmmWLH",
30
- filterExpander: "filterExpander-AzrkVe",
31
- filterExpanderWrapper: "filterExpanderWrapper-wfxkbS",
32
- filterBooleanFieldWrapper: "filterBooleanFieldWrapper-UkqZhF",
33
- filterOptions: "filterOptions-c2gDM9",
34
- filterButton: "filterButton-K5yTnY",
35
25
  downloadLink: "downloadLink-DxebfL"
36
26
  };
37
27
  export { Table_module_rslib_entry_ as default };
@@ -142,67 +142,7 @@
142
142
  }
143
143
  }
144
144
 
145
- .filterExpandersContainer-yRLNvU {
146
- flex-direction: column;
147
- width: 100%;
148
- display: flex;
149
- }
150
-
151
- .filterExpandersContainer-yRLNvU > :not(:first-child) {
152
- border-top: solid var(--size-n5) var(--color-grey-t08);
153
- }
154
-
155
- .filterExpanderRow-_O4wQh {
156
- width: 100%;
157
- padding: var(--size-00);
158
- align-items: center;
159
- gap: var(--size-n2);
160
- cursor: pointer;
161
- text-align: left;
162
- background: none;
163
- border: none;
164
- outline: none;
165
- display: flex;
166
- }
167
-
168
- .filterExpanderHighlight-HU8LI2 .filterExpanderLabel-z0kGvW {
169
- font: var(--font-regular-bold);
170
- }
171
-
172
- .filterExpanderLabel-z0kGvW {
173
- min-width: 0;
174
- font: var(--font-label);
175
- flex: 1;
176
- }
177
-
178
- .filterExpanderIcon-XmmWLH {
179
- transition: transform .15s;
180
- }
181
-
182
- .filterExpander-AzrkVe[open] .filterExpanderRow-_O4wQh {
183
- padding-bottom: var(--size-n2);
184
- }
185
-
186
- .filterExpander-AzrkVe[open] .filterExpanderIcon-XmmWLH {
187
- transform: rotate(90deg);
188
- }
189
-
190
- .filterExpanderWrapper-wfxkbS {
191
- padding: 0 var(--size-00) var(--size-p1);
192
- padding-inline-start: calc(var(--size-p1) + 15px + var(--size-n2));
193
- }
194
-
195
- .filterBooleanFieldWrapper-UkqZhF {
196
- padding: var(--size-00) var(--size-00) var(--size-p1);
197
- }
198
-
199
- .filterOptions-c2gDM9 {
200
- gap: var(--size-n2);
201
- flex-direction: column;
202
- display: flex;
203
- }
204
-
205
- .filterButton-K5yTnY, .downloadLink-DxebfL {
145
+ .downloadLink-DxebfL {
206
146
  justify-content: flex-end;
207
147
  gap: var(--size-00);
208
148
  align-items: center;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@worknice/whiteboard",
3
3
  "description": "",
4
- "version": "0.52.1",
4
+ "version": "0.54.0",
5
5
  "license": "MIT",
6
6
  "private": false,
7
7
  "files": [
@@ -39,7 +39,7 @@
39
39
  "react-markdown": "^10.1.0",
40
40
  "utf8": "^3.0.0",
41
41
  "zod": "^4.1.13",
42
- "@worknice/utils": "^0.35.1"
42
+ "@worknice/utils": "^0.37.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@anolilab/semantic-release-pnpm": "^3.2.2",