thread-ui 0.7.0 → 0.7.2

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.
@@ -1,2 +1,11 @@
1
1
  import { DataDisplayControlsProps } from './data-display-controls.types';
2
+ /**
3
+ * Combined filter and sort control bar. Renders filter controls (standard or inline)
4
+ * alongside sort controls, with a single reset button that clears both.
5
+ * Designed to be used with `useDataDisplayControls` via `dataDisplayControlsProps`.
6
+ *
7
+ * @example
8
+ * const { refinedData, dataDisplayControlsProps } = useDataDisplayControls({ data, fields });
9
+ * <DataDisplayControls {...dataDisplayControlsProps} />
10
+ */
2
11
  export declare const DataDisplayControls: <T>({ fields, sortFields, activeSort, activeFilters, onClearAll, isDefault, isActive, onClearFilter, onToggleFilter, onToggleSort, size, color, filterVariant, showFilterLabel, showSortLabel, }: DataDisplayControlsProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -17,6 +17,15 @@ const styles = cva({
17
17
  },
18
18
  },
19
19
  });
20
+ /**
21
+ * Combined filter and sort control bar. Renders filter controls (standard or inline)
22
+ * alongside sort controls, with a single reset button that clears both.
23
+ * Designed to be used with `useDataDisplayControls` via `dataDisplayControlsProps`.
24
+ *
25
+ * @example
26
+ * const { refinedData, dataDisplayControlsProps } = useDataDisplayControls({ data, fields });
27
+ * <DataDisplayControls {...dataDisplayControlsProps} />
28
+ */
20
29
  export const DataDisplayControls = ({ fields, sortFields, activeSort, activeFilters, onClearAll, isDefault, isActive, onClearFilter, onToggleFilter, onToggleSort, size, color, filterVariant = 'inline', showFilterLabel, showSortLabel, }) => {
21
30
  const sharedProps = {
22
31
  color,
@@ -1 +1 @@
1
- {"version":3,"file":"data-display-controls.js","sourceRoot":"","sources":["../../../../src/components/data-display/data-display-controls/data-display-controls.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,MAAM,GAAG,GAAG,CAAC;IAClB,IAAI,EAAE;QACL,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,UAAU,EAAE,OAAO;KACnB;IACD,QAAQ,EAAE;QACT,IAAI,EAAE;YACL,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACd,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACd,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SACd;KACD;CACD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAK,EACvC,MAAM,EACN,UAAU,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,EACb,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,aAAa,GAAG,QAAQ,EACxB,eAAe,EACf,aAAa,GACgB,EAAE,EAAE;IACjC,MAAM,WAAW,GAAG;QACnB,KAAK;QACL,IAAI;QACJ,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,IAAI;KACzB,CAAC;IAEF,MAAM,WAAW,GAAG;QACnB,SAAS;QACT,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,aAAa;QACb,OAAO,EAAE,aAAa;QACtB,UAAU;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ;QACR,eAAe;KACf,CAAC;IAEF,MAAM,SAAS,GAAG;QACjB,MAAM,EAAE,UAAU;QAClB,UAAU;QACV,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,UAAU;QACnB,SAAS;QACT,aAAa;KACb,CAAC;IAEF,MAAM,MAAM,GAAG,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAEpF,OAAO,CACN,eAAK,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,aAC/B,KAAC,MAAM,OAAK,WAAW,KAAM,WAAW,GAAI,EAC5C,KAAC,YAAY,OAAK,WAAW,KAAM,SAAS,GAAI,EAC/C,CAAC,SAAS,IAAI,CACd,KAAC,MAAM,IACN,SAAS,EAAC,+BAA+B,EACzC,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,UAAU,EACnB,IAAI,4BAGI,CACT,IACI,CACN,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"data-display-controls.js","sourceRoot":"","sources":["../../../../src/components/data-display/data-display-controls/data-display-controls.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,MAAM,GAAG,GAAG,CAAC;IAClB,IAAI,EAAE;QACL,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,UAAU,EAAE,OAAO;KACnB;IACD,QAAQ,EAAE;QACT,IAAI,EAAE;YACL,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACd,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACd,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SACd;KACD;CACD,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAK,EACvC,MAAM,EACN,UAAU,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,EACb,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,aAAa,GAAG,QAAQ,EACxB,eAAe,EACf,aAAa,GACgB,EAAE,EAAE;IACjC,MAAM,WAAW,GAAG;QACnB,KAAK;QACL,IAAI;QACJ,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,IAAI;KACzB,CAAC;IAEF,MAAM,WAAW,GAAG;QACnB,SAAS;QACT,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,aAAa;QACb,OAAO,EAAE,aAAa;QACtB,UAAU;QACV,QAAQ,EAAE,cAAc;QACxB,QAAQ;QACR,eAAe;KACf,CAAC;IAEF,MAAM,SAAS,GAAG;QACjB,MAAM,EAAE,UAAU;QAClB,UAAU;QACV,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,UAAU;QACnB,SAAS;QACT,aAAa;KACb,CAAC;IAEF,MAAM,MAAM,GAAG,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC;IAEpF,OAAO,CACN,eAAK,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,aAC/B,KAAC,MAAM,OAAK,WAAW,KAAM,WAAW,GAAI,EAC5C,KAAC,YAAY,OAAK,WAAW,KAAM,SAAS,GAAI,EAC/C,CAAC,SAAS,IAAI,CACd,KAAC,MAAM,IACN,SAAS,EAAC,+BAA+B,EACzC,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,UAAU,EACnB,IAAI,4BAGI,CACT,IACI,CACN,CAAC;AACH,CAAC,CAAC"}
@@ -1,19 +1,30 @@
1
1
  import { Override, Prettify } from '../../../types';
2
2
  import { SortControlsConfig, SortField, SortControlsProps } from '../sort-controls/sort-controls.types';
3
3
  import { FilterControlsConfig, ResolvedFilterField, FilterControlsBaseProps } from '../filter-controls/filter-controls.types';
4
+ /** A field that supports both sorting and filtering */
4
5
  export type DataField<T> = Prettify<Override<SortField<T> & ResolvedFilterField<T>, {}>>;
6
+ /** Configuration passed to `useDataDisplayControls` combining sort and filter config */
5
7
  export type DataDisplayControlsConfig<T> = Prettify<Override<SortControlsConfig<T> & FilterControlsConfig<T>, {
6
8
  fields: DataField<T>[];
7
9
  }>>;
10
+ /** Return value of `useDataDisplayControls` — refined data plus props to pass to `DataDisplayControls` */
8
11
  export type DataDisplayControlsData<T> = {
12
+ /** Dataset after all active filters and sorts are applied */
9
13
  refinedData: T[];
14
+ /** Pre-assembled props to spread directly onto `DataDisplayControls` */
10
15
  dataDisplayControlsProps: DataDisplayControlsProps<T>;
11
16
  };
12
17
  export type DataDisplayControlsProps<T> = Prettify<Omit<SortControlsProps<T> & FilterControlsBaseProps<T>, 'fields' | 'hideReset' | 'onToggle' | 'onClear'> & {
18
+ /** Fields for both filtering and sorting */
13
19
  fields: DataField<T>[];
20
+ /** Fields available for sorting, derived from fields with more than one unique value in the filtered data */
14
21
  sortFields: DataField<T>[];
22
+ /** Called when a sort field is toggled */
15
23
  onToggleSort: SortControlsProps<T>['onToggle'];
24
+ /** Called when a filter field is cleared */
16
25
  onClearFilter: FilterControlsBaseProps<T>['onClear'];
26
+ /** Called when a filter value is toggled */
17
27
  onToggleFilter: FilterControlsBaseProps<T>['onToggle'];
28
+ /** Which filter control variant to render @default `'inline'` */
18
29
  filterVariant?: 'standard' | 'inline';
19
30
  }>;
@@ -1,2 +1,3 @@
1
1
  export type { DataDisplayControlsProps } from './data-display-controls.types';
2
2
  export { DataDisplayControls } from './data-display-controls';
3
+ export { useDataDisplayControls } from './use-data-display-controls';
@@ -1,2 +1,3 @@
1
1
  export { DataDisplayControls } from './data-display-controls';
2
+ export { useDataDisplayControls } from './use-data-display-controls';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/data-display/data-display-controls/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/data-display/data-display-controls/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1,2 +1,22 @@
1
1
  import { DataDisplayControlsConfig, DataDisplayControlsData } from './data-display-controls.types';
2
+ /**
3
+ * Composes `useFilterControls` and `useSortControls` into a single hook.
4
+ * Sorting is applied after filtering, and sort fields are automatically narrowed
5
+ * to fields with more than one unique value in the filtered dataset.
6
+ *
7
+ * @example
8
+ * const { refinedData, dataDisplayControlsProps } = useDataDisplayControls({
9
+ * data: products,
10
+ * fields: [{ key: 'category', label: 'Category' }, { key: 'price', label: 'Price' }],
11
+ * filterMode: 'or',
12
+ * multiSort: true,
13
+ * });
14
+ *
15
+ * return (
16
+ * <>
17
+ * <DataDisplayControls {...dataDisplayControlsProps} />
18
+ * <ProductList data={refinedData} />
19
+ * </>
20
+ * );
21
+ */
2
22
  export declare const useDataDisplayControls: <T>({ data, defaultSort, defaultFilters, filterMode, multiSort, fields, }: DataDisplayControlsConfig<T>) => DataDisplayControlsData<T>;
@@ -1,6 +1,26 @@
1
1
  'use client';
2
2
  import { useFilterControls } from '../filter-controls';
3
3
  import { useSortControls } from '../sort-controls';
4
+ /**
5
+ * Composes `useFilterControls` and `useSortControls` into a single hook.
6
+ * Sorting is applied after filtering, and sort fields are automatically narrowed
7
+ * to fields with more than one unique value in the filtered dataset.
8
+ *
9
+ * @example
10
+ * const { refinedData, dataDisplayControlsProps } = useDataDisplayControls({
11
+ * data: products,
12
+ * fields: [{ key: 'category', label: 'Category' }, { key: 'price', label: 'Price' }],
13
+ * filterMode: 'or',
14
+ * multiSort: true,
15
+ * });
16
+ *
17
+ * return (
18
+ * <>
19
+ * <DataDisplayControls {...dataDisplayControlsProps} />
20
+ * <ProductList data={refinedData} />
21
+ * </>
22
+ * );
23
+ */
4
24
  export const useDataDisplayControls = ({ data, defaultSort, defaultFilters, filterMode, multiSort, fields, }) => {
5
25
  const { filteredData, clearAllFilters, clearFilter, filterControlsProps, activeFilters, toggleFilter, } = useFilterControls({
6
26
  data,
@@ -1 +1 @@
1
- {"version":3,"file":"use-data-display-controls.js","sourceRoot":"","sources":["../../../../src/components/data-display/data-display-controls/use-data-display-controls.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAI,EACzC,IAAI,EACJ,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,MAAM,GACwB,EAA8B,EAAE;IAC9D,MAAM,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,YAAY,GACZ,GAAG,iBAAiB,CAAI;QACxB,IAAI;QACJ,MAAM;QACN,UAAU;QACV,cAAc;KACd,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,EACL,UAAU,EAAE,WAAW,EACvB,UAAU,EACV,SAAS,EACT,UAAU,EACV,iBAAiB,GACjB,GAAG,eAAe,CAAC;QACnB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,UAAU;QAClB,WAAW;QACX,SAAS;KACT,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAG,EAAE;QACvB,eAAe,EAAE,CAAC;QAClB,SAAS,EAAE,CAAC;IACb,CAAC,CAAC;IAEF,OAAO;QACN,WAAW;QACX,wBAAwB,EAAE;YACzB,MAAM,EAAE,mBAAmB,CAAC,MAAM;YAClC,UAAU;YACV,UAAU;YACV,aAAa;YACb,SAAS,EAAE,mBAAmB,CAAC,SAAS,IAAI,iBAAiB,CAAC,SAAS;YACvE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;YACtC,UAAU;YACV,YAAY,EAAE,UAAU;YACxB,cAAc,EAAE,YAAY;YAC5B,aAAa,EAAE,WAAW;SAC1B;KACD,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"use-data-display-controls.js","sourceRoot":"","sources":["../../../../src/components/data-display/data-display-controls/use-data-display-controls.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAI,EACzC,IAAI,EACJ,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,MAAM,GACwB,EAA8B,EAAE;IAC9D,MAAM,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,YAAY,GACZ,GAAG,iBAAiB,CAAI;QACxB,IAAI;QACJ,MAAM;QACN,UAAU;QACV,cAAc;KACd,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,EACL,UAAU,EAAE,WAAW,EACvB,UAAU,EACV,SAAS,EACT,UAAU,EACV,iBAAiB,GACjB,GAAG,eAAe,CAAC;QACnB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,UAAU;QAClB,WAAW;QACX,SAAS;KACT,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAG,EAAE;QACvB,eAAe,EAAE,CAAC;QAClB,SAAS,EAAE,CAAC;IACb,CAAC,CAAC;IAEF,OAAO;QACN,WAAW;QACX,wBAAwB,EAAE;YACzB,MAAM,EAAE,mBAAmB,CAAC,MAAM;YAClC,UAAU;YACV,UAAU;YACV,aAAa;YACb,SAAS,EAAE,mBAAmB,CAAC,SAAS,IAAI,iBAAiB,CAAC,SAAS;YACvE,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;YACtC,UAAU;YACV,YAAY,EAAE,UAAU;YACxB,cAAc,EAAE,YAAY;YAC5B,aAAa,EAAE,WAAW;SAC1B;KACD,CAAC;AACH,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
+ export * from './data-display-controls';
1
2
  export * from './filter-controls';
2
3
  export * from './sort-controls';
3
- export * from './data-display-controls';
@@ -1,4 +1,4 @@
1
+ export * from './data-display-controls';
1
2
  export * from './filter-controls';
2
3
  export * from './sort-controls';
3
- export * from './data-display-controls';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/data-display/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/data-display/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thread-ui",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "author": "Andrew Fisher",
5
5
  "description": "UI Library for React Applications.",
6
6
  "license": "MIT",