@ztwoint/z-ui 0.1.44 → 0.1.46

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 (63) hide show
  1. package/dist/components/avatar/avatar.d.ts +185 -0
  2. package/dist/components/avatar/avatar.js +55 -0
  3. package/dist/components/table/components/pagination/index.d.ts +1 -0
  4. package/dist/components/table/components/pagination/pagination.hook.d.ts +1 -1
  5. package/dist/components/table/components/pagination/pagination.hook.js +20 -16
  6. package/dist/components/table/components/table-filter/filters/checkbox.js +35 -51
  7. package/dist/components/table/components/table-filter/filters/text.js +41 -39
  8. package/dist/components/table/components/table-filter/index.d.ts +4 -1
  9. package/dist/components/table/components/table-filter/selected-filters-display/index.d.ts +2 -0
  10. package/dist/components/table/components/table-filter/selected-filters-display/selected-filters-display.d.ts +3 -0
  11. package/dist/components/table/components/table-filter/selected-filters-display/selected-filters-display.js +30 -0
  12. package/dist/components/table/components/table-filter/selected-filters-display/selected-filters-display.type.d.ts +12 -0
  13. package/dist/components/table/components/table-filter/selected-filters-display/selected-filters-display.utils.d.ts +6 -0
  14. package/dist/components/table/components/table-filter/selected-filters-display/selected-filters-display.utils.js +26 -0
  15. package/dist/components/table/components/table-filter/table-filter-button.d.ts +2 -0
  16. package/dist/components/table/components/table-filter/table-filter-button.js +103 -0
  17. package/dist/components/table/components/table-filter/table-filter-column-button.d.ts +3 -0
  18. package/dist/components/table/components/table-filter/table-filter-column-button.js +78 -0
  19. package/dist/components/table/components/table-filter/table-filter-column-button.type.d.ts +3 -0
  20. package/dist/components/table/components/table-filter/table-filter-provider.d.ts +14 -0
  21. package/dist/components/table/components/table-filter/table-filter-provider.js +32 -0
  22. package/dist/components/table/components/table-filter/table-filter.context.d.ts +21 -0
  23. package/dist/components/table/components/table-filter/table-filter.context.js +13 -0
  24. package/dist/components/table/components/table-filter/table-filter.hook.d.ts +1 -2
  25. package/dist/components/table/components/table-filter/table-filter.hook.js +39 -37
  26. package/dist/components/table/index.d.ts +1 -2
  27. package/dist/components/table/table-provider.d.ts +1 -1
  28. package/dist/components/table/table-provider.js +13 -13
  29. package/dist/components/table/table.type.d.ts +2 -0
  30. package/dist/components/table/table.utils.d.ts +0 -1
  31. package/dist/components/table/table.utils.js +5 -3
  32. package/dist/components/table-card/table-card.js +69 -64
  33. package/dist/components/table-card/table-card.type.d.ts +7 -7
  34. package/dist/css/styles/tailwind.css +1 -1
  35. package/dist/hooks/useClickOutside.d.ts +1 -0
  36. package/dist/hooks/useClickOutside.js +14 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.js +110 -110
  39. package/dist/types/components/avatar/avatar.d.ts +185 -0
  40. package/dist/types/components/table/components/pagination/index.d.ts +1 -0
  41. package/dist/types/components/table/components/pagination/pagination.hook.d.ts +1 -1
  42. package/dist/types/components/table/components/table-filter/index.d.ts +4 -1
  43. package/dist/types/components/table/components/table-filter/selected-filters-display/index.d.ts +2 -0
  44. package/dist/types/components/table/components/table-filter/selected-filters-display/selected-filters-display.d.ts +3 -0
  45. package/dist/types/components/table/components/table-filter/selected-filters-display/selected-filters-display.type.d.ts +12 -0
  46. package/dist/types/components/table/components/table-filter/selected-filters-display/selected-filters-display.utils.d.ts +6 -0
  47. package/dist/types/components/table/components/table-filter/table-filter-button.d.ts +2 -0
  48. package/dist/types/components/table/components/table-filter/table-filter-column-button.d.ts +3 -0
  49. package/dist/types/components/table/components/table-filter/table-filter-column-button.type.d.ts +3 -0
  50. package/dist/types/components/table/components/table-filter/table-filter-provider.d.ts +14 -0
  51. package/dist/types/components/table/components/table-filter/table-filter.context.d.ts +21 -0
  52. package/dist/types/components/table/components/table-filter/table-filter.hook.d.ts +1 -2
  53. package/dist/types/components/table/index.d.ts +1 -2
  54. package/dist/types/components/table/table-provider.d.ts +1 -1
  55. package/dist/types/components/table/table.type.d.ts +2 -0
  56. package/dist/types/components/table/table.utils.d.ts +0 -1
  57. package/dist/types/components/table-card/table-card.type.d.ts +7 -7
  58. package/dist/types/hooks/useClickOutside.d.ts +1 -0
  59. package/dist/types/index.d.ts +1 -0
  60. package/package.json +2 -1
  61. package/dist/components/table/components/table-filter/table-filter.d.ts +0 -9
  62. package/dist/components/table/components/table-filter/table-filter.js +0 -120
  63. package/dist/types/components/table/components/table-filter/table-filter.d.ts +0 -9
@@ -1,9 +1,8 @@
1
1
  export { Table as default, Table, TableProvider } from './table-provider';
2
2
  export { TableBody } from './table';
3
3
  export type { TableProps, TableSchema, TableSchemaColumn, CellType, CellValue, CellRenderer, CellRendererProps, FilterRule, FilterCondition, FilterOption, TableFilter as TableFilterType, TablePaginationConfig, SortDirection, SortColumn, TableSort, } from './table.type';
4
- export { getNestedValue, extractCellValue } from './table.utils';
4
+ export { extractCellValue } from './table.utils';
5
5
  export { DEFAULT_EMPTY_MESSAGE, TABLE_CSS_CLASSES } from './table.const';
6
6
  export { TableContext, useTableContext } from './table.context';
7
7
  export { TableCell, TableHeader, TableRow, TableEmptyState, TableLoadingState, TablePagination, TextCell, NumberCell, BooleanCell, TableHeaderWrapper, TableHeaderContent, TableFooter, TableFooterContent, } from './components';
8
- export { TableFilter } from './components/table-filter';
9
8
  export { PaginationInfo, PaginationQuickJumper } from './components/pagination/components';
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { TableProps } from './table.type';
3
3
  import { TableBody } from './table';
4
- import { TableFilter } from './components/table-filter';
4
+ import { TableFilter } from './components/table-filter/table-filter-provider';
5
5
  import { TableSearch } from './components/table-search';
6
6
  import { Pagination } from './components/pagination';
7
7
  import { TableHeaderWrapper, TableHeaderContent, TableFooter, TableFooterContent } from './components';
@@ -17,6 +17,7 @@ export type FilterRule = {
17
17
  export type FilterOption = {
18
18
  label: string;
19
19
  value: string;
20
+ total?: number;
20
21
  };
21
22
  export type TableFilter = {
22
23
  value: FilterRule[];
@@ -47,6 +48,7 @@ export type TableSort = {
47
48
  };
48
49
  export type TableSchemaColumn = {
49
50
  key: string;
51
+ valueGetter?: (record: Record<string, any>) => string | number | boolean | null | undefined;
50
52
  title: string;
51
53
  cellType: CellType;
52
54
  cellRenderer?: CellRenderer;
@@ -1,3 +1,2 @@
1
1
  import { CellValue, TableSchemaColumn } from './table.type';
2
- export declare const getNestedValue: (object: Record<string, unknown>, path: string) => CellValue;
3
2
  export declare const extractCellValue: (record: Record<string, unknown>, column: TableSchemaColumn) => CellValue;
@@ -12,7 +12,10 @@ export interface TableCardProps {
12
12
  search?: Partial<TableSearch> & {
13
13
  className?: string;
14
14
  };
15
- filter?: Partial<TableFilter>;
15
+ filter?: Partial<TableFilter> & {
16
+ quickFilters?: string[];
17
+ showFilterButton?: boolean;
18
+ };
16
19
  headerLeftContent?: React.ReactNode;
17
20
  headerActions?: React.ReactNode;
18
21
  body?: {
@@ -23,12 +26,9 @@ export interface TableCardProps {
23
26
  };
24
27
  showFooter?: boolean;
25
28
  footerClassName?: string;
26
- pagination?: Partial<PaginationProps>;
27
- paginationInfo?: Partial<Omit<PaginationInfoProps, 'itemsPerPage' | 'totalItems'>> & {
28
- itemsPerPage: number;
29
- totalItems: number;
30
- };
31
- paginationQuickJumper?: Partial<PaginationQuickJumperProps>;
29
+ pagination?: PaginationProps;
30
+ paginationInfo?: PaginationInfoProps;
31
+ paginationQuickJumper?: PaginationQuickJumperProps;
32
32
  loading?: boolean;
33
33
  emptyMessage?: string;
34
34
  }
@@ -0,0 +1 @@
1
+ export declare const useClickOutside: (ref: React.RefObject<HTMLElement | null>, callback: () => void) => void;
@@ -17,6 +17,7 @@ export * from './components/table';
17
17
  export * from './components/tooltip/tooltip';
18
18
  export * from './components/table-card';
19
19
  export * from './components/badge/badge';
20
+ export * from './components/avatar/avatar';
20
21
  export * from './components/assets/icons/apartment-building';
21
22
  export * from './components/assets/icons/chevron-down';
22
23
  export * from './components/assets/icons/chevron-left';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ztwoint/z-ui",
3
- "version": "0.1.44",
3
+ "version": "0.1.46",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -35,6 +35,7 @@
35
35
  "lint": "eslint \"src/components/**/*.{js,jsx,ts,tsx}\" --ignore-pattern \"**/*.d.ts\" --ignore-pattern \"**/*.stories.tsx\"",
36
36
  "lint:fix": "eslint \"src/components/**/*.{js,jsx,ts,tsx}\" --ignore-pattern \"**/*.d.ts\" --ignore-pattern \"**/*.stories.tsx\" --fix",
37
37
  "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
38
+ "type-check": "tsc --noEmit --pretty",
38
39
  "prepare": "husky"
39
40
  },
40
41
  "devDependencies": {
@@ -1,9 +0,0 @@
1
- import { FilterComponentType } from './table-filter.type';
2
- import { TableSchema, TableFilter as TableFilterType } from '../../table.type';
3
- import * as React from 'react';
4
- export interface TableFilterProps {
5
- filterComponents?: Record<string, FilterComponentType>;
6
- schema: TableSchema;
7
- filter?: TableFilterType;
8
- }
9
- export declare const TableFilter: React.FC<TableFilterProps>;
@@ -1,120 +0,0 @@
1
- import { jsxs as l, jsx as t } from "react/jsx-runtime";
2
- import { Button as i } from "../../../button/button.js";
3
- import T from "./table-filter.hook.js";
4
- import C from "./filters/text.js";
5
- import j from "./filters/boolean.js";
6
- import z from "./filters/number/number.js";
7
- import A from "./filters/checkbox.js";
8
- import O from "../../../assets/icons/circle-check-filled.js";
9
- const E = ({
10
- filterComponents: n = {},
11
- schema: d,
12
- filter: o
13
- }) => {
14
- const {
15
- selectedColumn: r,
16
- setSelectedColumn: p,
17
- getFilterForColumn: x,
18
- hasFilterForColumn: b,
19
- updateColumnFilter: f,
20
- clearAllFilters: v,
21
- applyFilters: k,
22
- hasActiveFilters: s,
23
- isOpen: m,
24
- setIsOpen: u,
25
- filterableFields: y
26
- } = T({ schema: d, filter: o || { value: [], onChange: () => {
27
- } } });
28
- if (!o)
29
- return null;
30
- const N = () => {
31
- if (!r) return null;
32
- const e = d.find((c) => c.key === r), F = {
33
- boolean: j,
34
- text: C,
35
- number: z,
36
- checkbox: A
37
- }, h = (n == null ? void 0 : n[(e == null ? void 0 : e.cellType) || ""]) || F[(e == null ? void 0 : e.cellType) || "text"];
38
- if (!h)
39
- return console.warn(
40
- `No filter component found for column "${e == null ? void 0 : e.key}" with cellType "${e == null ? void 0 : e.cellType}". Provide a custom filter component or use supported types: "text", "number", "boolean", "checkbox".`
41
- ), null;
42
- const a = x(r), g = {
43
- condition: (a == null ? void 0 : a.condition) || "",
44
- value: (a == null ? void 0 : a.value) || ""
45
- };
46
- return /* @__PURE__ */ t("div", { className: "flex-1", children: /* @__PURE__ */ t("div", { className: "mb-4", children: /* @__PURE__ */ t("div", { className: "", children: /* @__PURE__ */ t(
47
- h,
48
- {
49
- value: g,
50
- onChange: ({ condition: c, value: w }) => f(r, c, w),
51
- filterOptions: e == null ? void 0 : e.filterOptions
52
- },
53
- e == null ? void 0 : e.key
54
- ) }) }) });
55
- };
56
- return /* @__PURE__ */ l("div", { className: "relative", children: [
57
- /* @__PURE__ */ l(
58
- i,
59
- {
60
- onClick: () => u(!m),
61
- variant: s ? "filled" : "stroke",
62
- shade: s ? "brand" : "neutral",
63
- size: "small",
64
- children: [
65
- "Filter ",
66
- s && `(${o.value.length})`
67
- ]
68
- }
69
- ),
70
- m && /* @__PURE__ */ l("div", { className: "absolute top-full left-0 mt-2 min-w-[600px] bg-surface-neutral-default border border-stroke-solid-medium rounded-md shadow-default z-10", children: [
71
- /* @__PURE__ */ l("div", { className: "flex min-h-[300px]", children: [
72
- /* @__PURE__ */ l("div", { className: "w-48 border-r border-stroke-solid-medium", children: [
73
- /* @__PURE__ */ t("div", { className: "p-3 border-b border-stroke-solid-medium", children: /* @__PURE__ */ t("h3", { className: "text-sm font-medium text-text-neutral-primary", children: "Columns" }) }),
74
- /* @__PURE__ */ t("div", { className: "py-2", children: y.map((e) => /* @__PURE__ */ l(
75
- "button",
76
- {
77
- onClick: () => p(e.key),
78
- className: `w-full text-left px-3 py-2 text-sm flex items-center justify-between hover:bg-surface-neutral-hovered transition-colors ${r === e.key ? "bg-surface-brand-subtle text-text-brand-primary" : "text-text-neutral-primary"}`,
79
- children: [
80
- /* @__PURE__ */ t("span", { className: "truncate", children: e.title }),
81
- b(e.key) && /* @__PURE__ */ t(O, { className: "w-4 h-4 text-icon-brand-primary flex-shrink-0 ml-2" })
82
- ]
83
- },
84
- e.key
85
- )) })
86
- ] }),
87
- /* @__PURE__ */ t("div", { className: "flex-1 flex flex-col", children: r ? N() : /* @__PURE__ */ t("div", { className: "flex-1 flex items-center justify-center text-text-neutral-muted", children: "Select a column to configure its filter" }) })
88
- ] }),
89
- /* @__PURE__ */ l("div", { className: "flex justify-between items-center p-4 border-t border-stroke-solid-medium", children: [
90
- /* @__PURE__ */ t(
91
- i,
92
- {
93
- onClick: v,
94
- variant: "ghost",
95
- shade: "neutral",
96
- size: "small",
97
- disabled: !s,
98
- children: "Clear All"
99
- }
100
- ),
101
- /* @__PURE__ */ l("div", { className: "flex gap-2", children: [
102
- /* @__PURE__ */ t(
103
- i,
104
- {
105
- onClick: () => u(!1),
106
- variant: "stroke",
107
- shade: "neutral",
108
- size: "small",
109
- children: "Cancel"
110
- }
111
- ),
112
- /* @__PURE__ */ t(i, { onClick: k, variant: "filled", shade: "neutral", size: "small", children: "Apply" })
113
- ] })
114
- ] })
115
- ] })
116
- ] });
117
- };
118
- export {
119
- E as TableFilter
120
- };
@@ -1,9 +0,0 @@
1
- import * as React from 'react';
2
- import { FilterComponentType } from './table-filter.type';
3
- import { TableSchema, TableFilter as TableFilterType } from '../../table.type';
4
- export interface TableFilterProps {
5
- filterComponents?: Record<string, FilterComponentType>;
6
- schema: TableSchema;
7
- filter?: TableFilterType;
8
- }
9
- export declare const TableFilter: React.FC<TableFilterProps>;