@zentauri-ui/zentauri-components 2.1.6 → 2.1.7

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 (115) hide show
  1. package/README.md +10 -8
  2. package/cli/cli.integration.test.ts +36 -0
  3. package/cli/index.mjs +43 -7
  4. package/cli/props.json +273 -0
  5. package/cli/registry.json +20 -0
  6. package/cli/rewrite-imports.mjs +29 -4
  7. package/cli/rewrite-imports.test.ts +35 -0
  8. package/dist/{chunk-QE7OJW4J.js → chunk-5ELR6MIN.js} +6 -6
  9. package/dist/{chunk-QE7OJW4J.js.map → chunk-5ELR6MIN.js.map} +1 -1
  10. package/dist/chunk-5FU57ZVQ.js +19 -0
  11. package/dist/{chunk-3W2UUKWP.js.map → chunk-5FU57ZVQ.js.map} +1 -1
  12. package/dist/chunk-74SKXGTM.js +4 -0
  13. package/dist/chunk-74SKXGTM.js.map +1 -0
  14. package/dist/{chunk-CHI6MBTI.mjs → chunk-7UXPXCKV.mjs} +3 -3
  15. package/dist/{chunk-CHI6MBTI.mjs.map → chunk-7UXPXCKV.mjs.map} +1 -1
  16. package/dist/chunk-CYKSS5S5.mjs +128 -0
  17. package/dist/chunk-CYKSS5S5.mjs.map +1 -0
  18. package/dist/chunk-DBNGLT5U.mjs +221 -0
  19. package/dist/chunk-DBNGLT5U.mjs.map +1 -0
  20. package/dist/{chunk-A4IB3C23.mjs → chunk-FUCW5GPE.mjs} +22 -6
  21. package/dist/chunk-FUCW5GPE.mjs.map +1 -0
  22. package/dist/chunk-G7FVHZRB.js +225 -0
  23. package/dist/chunk-G7FVHZRB.js.map +1 -0
  24. package/dist/chunk-HMDH4BQJ.js +123 -0
  25. package/dist/chunk-HMDH4BQJ.js.map +1 -0
  26. package/dist/chunk-I7EBE7BD.js +98 -0
  27. package/dist/chunk-I7EBE7BD.js.map +1 -0
  28. package/dist/{chunk-WWKAJHIV.mjs → chunk-KVSRUAXP.mjs} +3 -3
  29. package/dist/{chunk-WWKAJHIV.mjs.map → chunk-KVSRUAXP.mjs.map} +1 -1
  30. package/dist/chunk-LHBJD57K.mjs +143 -0
  31. package/dist/chunk-LHBJD57K.mjs.map +1 -0
  32. package/dist/chunk-OYAJG2BO.js +83 -0
  33. package/dist/chunk-OYAJG2BO.js.map +1 -0
  34. package/dist/chunk-PTU5ZAYX.js +145 -0
  35. package/dist/chunk-PTU5ZAYX.js.map +1 -0
  36. package/dist/chunk-QKO5DA4N.mjs +81 -0
  37. package/dist/chunk-QKO5DA4N.mjs.map +1 -0
  38. package/dist/chunk-T7PIKDUZ.js +130 -0
  39. package/dist/chunk-T7PIKDUZ.js.map +1 -0
  40. package/dist/chunk-TDK5TVJE.mjs +3 -0
  41. package/dist/chunk-TDK5TVJE.mjs.map +1 -0
  42. package/dist/{chunk-VA6SB6NN.js → chunk-TJ2EWPER.js} +28 -5
  43. package/dist/chunk-TJ2EWPER.js.map +1 -0
  44. package/dist/chunk-VBNW2B4D.mjs +3 -0
  45. package/dist/chunk-VBNW2B4D.mjs.map +1 -0
  46. package/dist/chunk-W6DO36XD.mjs +96 -0
  47. package/dist/chunk-W6DO36XD.mjs.map +1 -0
  48. package/dist/chunk-XR3J46TZ.js +4 -0
  49. package/dist/chunk-XR3J46TZ.js.map +1 -0
  50. package/dist/chunk-ZOHCADDL.mjs +121 -0
  51. package/dist/chunk-ZOHCADDL.mjs.map +1 -0
  52. package/dist/design-system/data-table.d.ts +8 -0
  53. package/dist/design-system/data-table.d.ts.map +1 -0
  54. package/dist/design-system/facade.js +5 -5
  55. package/dist/design-system/facade.mjs +4 -4
  56. package/dist/design-system/index.d.ts +1 -0
  57. package/dist/design-system/index.d.ts.map +1 -1
  58. package/dist/hooks/useTableFilter.js +6 -116
  59. package/dist/hooks/useTableFilter.js.map +1 -1
  60. package/dist/hooks/useTableFilter.mjs +1 -118
  61. package/dist/hooks/useTableFilter.mjs.map +1 -1
  62. package/dist/hooks/useTableSort.js +6 -91
  63. package/dist/hooks/useTableSort.js.map +1 -1
  64. package/dist/hooks/useTableSort.mjs +1 -93
  65. package/dist/hooks/useTableSort.mjs.map +1 -1
  66. package/dist/hooks/useVirtualList.js +6 -76
  67. package/dist/hooks/useVirtualList.js.map +1 -1
  68. package/dist/hooks/useVirtualList.mjs +1 -78
  69. package/dist/hooks/useVirtualList.mjs.map +1 -1
  70. package/dist/ui/buttons/animated.js +7 -7
  71. package/dist/ui/buttons/animated.mjs +5 -5
  72. package/dist/ui/buttons.js +9 -8
  73. package/dist/ui/buttons.mjs +7 -6
  74. package/dist/ui/checkbox.js +7 -123
  75. package/dist/ui/checkbox.js.map +1 -1
  76. package/dist/ui/checkbox.mjs +2 -126
  77. package/dist/ui/checkbox.mjs.map +1 -1
  78. package/dist/ui/data-table/data-table-base.d.ts +6 -0
  79. package/dist/ui/data-table/data-table-base.d.ts.map +1 -0
  80. package/dist/ui/data-table/data-table.d.ts +6 -0
  81. package/dist/ui/data-table/data-table.d.ts.map +1 -0
  82. package/dist/ui/data-table/index.d.ts +4 -0
  83. package/dist/ui/data-table/index.d.ts.map +1 -0
  84. package/dist/ui/data-table/types.d.ts +92 -0
  85. package/dist/ui/data-table/types.d.ts.map +1 -0
  86. package/dist/ui/data-table/variants.d.ts +8 -0
  87. package/dist/ui/data-table/variants.d.ts.map +1 -0
  88. package/dist/ui/data-table.js +620 -0
  89. package/dist/ui/data-table.js.map +1 -0
  90. package/dist/ui/data-table.mjs +611 -0
  91. package/dist/ui/data-table.mjs.map +1 -0
  92. package/dist/ui/dynamic-stepper.js +17 -17
  93. package/dist/ui/dynamic-stepper.mjs +6 -6
  94. package/dist/ui/inputs.js +7 -138
  95. package/dist/ui/inputs.js.map +1 -1
  96. package/dist/ui/inputs.mjs +2 -141
  97. package/dist/ui/inputs.mjs.map +1 -1
  98. package/dist/ui/pagination.js +19 -220
  99. package/dist/ui/pagination.js.map +1 -1
  100. package/dist/ui/pagination.mjs +7 -222
  101. package/dist/ui/pagination.mjs.map +1 -1
  102. package/dist/ui/table.js +1 -0
  103. package/dist/ui/table.mjs +1 -0
  104. package/package.json +1 -1
  105. package/src/design-system/data-table.ts +20 -0
  106. package/src/design-system/index.ts +1 -0
  107. package/src/ui/data-table/data-table-base.tsx +701 -0
  108. package/src/ui/data-table/data-table.test.tsx +389 -0
  109. package/src/ui/data-table/data-table.tsx +11 -0
  110. package/src/ui/data-table/index.ts +24 -0
  111. package/src/ui/data-table/types.ts +121 -0
  112. package/src/ui/data-table/variants.ts +21 -0
  113. package/dist/chunk-3W2UUKWP.js +0 -19
  114. package/dist/chunk-A4IB3C23.mjs.map +0 -1
  115. package/dist/chunk-VA6SB6NN.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useTableFilter/useTableFilter.ts"],"names":[],"mappings":";;;AAUA,SAAS,iBACP,OAAA,EACwB;AACxB,EAAA,IAAI,CAAC,OAAA,IAAW,OAAO,OAAA,KAAY,QAAA,EAAU;AAC3C,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACZ,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CAAE,MAAA;AAAA,MACtB,CAAC,KAAA,KACC,OAAO,KAAA,CAAM,CAAC,CAAA,KAAM,QAAA,IAAY,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,EAAK,CAAE,MAAA,GAAS;AAAA;AAC7D,GACF;AACF;AAEA,SAAS,kBAAA,CACP,KACA,SAAA,EACS;AACT,EAAA,IAAI,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,aAAa,GAAA,EAAK;AACtD,IAAA,OAAQ,IAA8B,SAAS,CAAA;AAAA,EACjD;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,cAAA,CAAoD;AAAA,EAClE,IAAA;AAAA,EACA,OAAA;AAAA,EACA,iBAAiB,EAAC;AAAA,EAClB,eAAA;AAAA,EACA,cAAA,GAAiB,kBAAA;AAAA,EACjB;AACF,CAAA,EAAyE;AACvE,EAAA,MAAM,CAAC,iBAAiB,kBAAkB,CAAA,GAAI,SAE5C,MAAM,gBAAA,CAAiB,cAAc,CAAC,CAAA;AAExC,EAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,EAAA,MAAM,cAAA,GAAiB,OAAA;AAAA,IACrB,MAAM,gBAAA,CAAiB,YAAA,GAAe,OAAA,GAAU,eAAe,CAAA;AAAA,IAC/D,CAAC,OAAA,EAAS,eAAA,EAAiB,YAAY;AAAA,GACzC;AAEA,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,CAAC,WAAA,KAAwC;AACvC,MAAA,MAAM,UAAA,GAAa,iBAAiB,WAAW,CAAA;AAC/C,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,kBAAA,CAAmB,UAAU,CAAA;AAAA,MAC/B;AACA,MAAA,eAAA,GAAkB,UAAU,CAAA;AAAA,IAC9B,CAAA;AAAA,IACA,CAAC,cAAc,eAAe;AAAA,GAChC;AAEA,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CACE,OAAA,KAGG;AACH,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,OAAA,CAAQ,cAAc,CAAC,CAAA;AAC3D,QAAA,eAAA,GAAkB,UAAU,CAAA;AAC5B,QAAA;AAAA,MACF;AAEA,MAAA,kBAAA,CAAmB,CAAC,eAAA,KAAoB;AACtC,QAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,OAAA,CAAQ,eAAe,CAAC,CAAA;AAC5D,QAAA,eAAA,GAAkB,UAAU,CAAA;AAC5B,QAAA,OAAO,UAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,cAAA,EAAgB,YAAA,EAAc,eAAe;AAAA,GAChD;AAEA,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,WAAiB,KAAA,KAAkB;AAClC,MAAA,aAAA,CAAc,CAAC,eAAA,MAAqB;AAAA,QAClC,GAAG,eAAA;AAAA,QACH,CAAC,SAAS,GAAG;AAAA,OACf,CAAE,CAAA;AAAA,IACJ,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,SAAA,KAAoB;AACnB,MAAA,aAAA,CAAc,CAAC,eAAA,KAAoB;AACjC,QAAA,MAAM,WAAA,GAAc,EAAE,GAAG,eAAA,EAAgB;AACzC,QAAA,OAAO,YAAY,SAAS,CAAA;AAC5B,QAAA,OAAO,WAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,UAAA,CAAW,EAAE,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,aAAA,GAAgB,OAAA;AAAA,IACpB,MACG,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,CAAuB,GAAA;AAAA,MACnD,CAAC,CAAC,SAAA,EAAW,WAAW,CAAA,MAAO;AAAA,QAC7B,SAAA;AAAA,QACA,WAAA;AAAA,QACA,gBAAA,EAAkB,YAAY,WAAA;AAAY,OAC5C;AAAA,KACF;AAAA,IACF,CAAC,cAAc;AAAA,GACjB;AAEA,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAC9B,MAAA,OAAO,CAAC,GAAG,IAAI,CAAA;AAAA,IACjB;AAEA,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MAAO,CAAC,QAClB,aAAA,CAAc,KAAA,CAAM,CAAC,EAAE,SAAA,EAAW,WAAA,EAAa,gBAAA,EAAiB,KAAM;AACpE,QAAA,IAAI,eAAA,EAAiB;AACnB,UAAA,OAAO,eAAA,CAAgB,GAAA,EAAK,WAAA,EAAa,SAAS,CAAA;AAAA,QACpD;AAEA,QAAA,MAAM,WAAA,GAAc,cAAA,CAAe,GAAA,EAAK,SAAS,CAAA;AACjD,QAAA,IAAI,eAAe,IAAA,EAAM;AACvB,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,OAAO,OAAO,WAAW,CAAA,CAAE,WAAA,EAAY,CAAE,SAAS,gBAAgB,CAAA;AAAA,MACpE,CAAC;AAAA,KACH;AAAA,EACF,GAAG,CAAC,aAAA,EAAe,IAAA,EAAM,eAAA,EAAiB,cAAc,CAAC,CAAA;AAEzD,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,cAAA;AAAA,IACT,YAAA;AAAA,IACA,gBAAA,EAAkB,cAAc,MAAA,GAAS,CAAA;AAAA,IACzC,SAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-ZOHCADDL.mjs","sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useState } from \"react\";\n\nimport type {\n TableFilterState,\n UseTableFilterParams,\n UseTableFilterResult,\n} from \"./types\";\n\nfunction normalizeFilters<TKey extends string>(\n filters: TableFilterState<TKey> | null | undefined,\n): TableFilterState<TKey> {\n if (!filters || typeof filters !== \"object\") {\n return {};\n }\n\n return Object.fromEntries(\n Object.entries(filters).filter(\n (entry): entry is [TKey, string] =>\n typeof entry[1] === \"string\" && entry[1].trim().length > 0,\n ),\n ) as TableFilterState<TKey>;\n}\n\nfunction defaultColumnValue<TData, TKey extends string>(\n row: TData,\n filterKey: TKey,\n): unknown {\n if (row && typeof row === \"object\" && filterKey in row) {\n return (row as Record<TKey, unknown>)[filterKey];\n }\n return undefined;\n}\n\nexport function useTableFilter<TData, TKey extends string = string>({\n data,\n filters,\n defaultFilters = {},\n onFiltersChange,\n getColumnValue = defaultColumnValue,\n filterPredicate,\n}: UseTableFilterParams<TData, TKey>): UseTableFilterResult<TData, TKey> {\n const [internalFilters, setInternalFilters] = useState<\n TableFilterState<TKey>\n >(() => normalizeFilters(defaultFilters));\n\n const isControlled = filters !== undefined;\n const currentFilters = useMemo(\n () => normalizeFilters(isControlled ? filters : internalFilters),\n [filters, internalFilters, isControlled],\n );\n\n const setFilters = useCallback(\n (nextFilters: TableFilterState<TKey>) => {\n const normalized = normalizeFilters(nextFilters);\n if (!isControlled) {\n setInternalFilters(normalized);\n }\n onFiltersChange?.(normalized);\n },\n [isControlled, onFiltersChange],\n );\n\n const updateFilters = useCallback(\n (\n updater: (\n previousFilters: TableFilterState<TKey>,\n ) => TableFilterState<TKey>,\n ) => {\n if (isControlled) {\n const normalized = normalizeFilters(updater(currentFilters));\n onFiltersChange?.(normalized);\n return;\n }\n\n setInternalFilters((previousFilters) => {\n const normalized = normalizeFilters(updater(previousFilters));\n onFiltersChange?.(normalized);\n return normalized;\n });\n },\n [currentFilters, isControlled, onFiltersChange],\n );\n\n const setFilter = useCallback(\n (filterKey: TKey, value: string) => {\n updateFilters((previousFilters) => ({\n ...previousFilters,\n [filterKey]: value,\n }));\n },\n [updateFilters],\n );\n\n const clearFilter = useCallback(\n (filterKey: TKey) => {\n updateFilters((previousFilters) => {\n const nextFilters = { ...previousFilters };\n delete nextFilters[filterKey];\n return nextFilters;\n });\n },\n [updateFilters],\n );\n\n const clearFilters = useCallback(() => {\n setFilters({});\n }, [setFilters]);\n\n const activeFilters = useMemo(\n () =>\n (Object.entries(currentFilters) as [TKey, string][]).map(\n ([filterKey, filterValue]) => ({\n filterKey,\n filterValue,\n lowerFilterValue: filterValue.toLowerCase(),\n }),\n ),\n [currentFilters],\n );\n\n const filteredData = useMemo(() => {\n if (activeFilters.length === 0) {\n return [...data];\n }\n\n return data.filter((row) =>\n activeFilters.every(({ filterKey, filterValue, lowerFilterValue }) => {\n if (filterPredicate) {\n return filterPredicate(row, filterValue, filterKey);\n }\n\n const columnValue = getColumnValue(row, filterKey);\n if (columnValue == null) {\n return false;\n }\n\n return String(columnValue).toLowerCase().includes(lowerFilterValue);\n }),\n );\n }, [activeFilters, data, filterPredicate, getColumnValue]);\n\n return {\n filters: currentFilters,\n filteredData,\n hasActiveFilters: activeFilters.length > 0,\n setFilter,\n setFilters,\n clearFilter,\n clearFilters,\n };\n}\n"]}
@@ -0,0 +1,8 @@
1
+ export declare const zuiDataTableRootBase = "w-full space-y-3 text-[color:var(--zui-data-table-fg,var(--zui-fg,oklch(37.2%_0.044_257.287)))] dark:text-[color:var(--zui-data-table-fg-dark,var(--zui-fg-dark,oklch(92.9%_0.013_255.508)))]";
2
+ export declare const zuiDataTableToolbarBase = "flex flex-col gap-3 rounded-lg border border-[color:var(--zui-data-table-toolbar-border,var(--zui-border,#0000001a))] bg-[var(--zui-data-table-toolbar-bg,var(--zui-surface,#ffffff))] p-3 dark:border-[color:var(--zui-data-table-toolbar-border-dark,var(--zui-border-dark,#ffffff1a))] dark:bg-[var(--zui-data-table-toolbar-bg-dark,var(--zui-surface-dark,#020617))] sm:flex-row sm:items-center sm:justify-between";
3
+ export declare const zuiDataTableToolbarGroupBase = "flex min-w-0 flex-wrap items-center gap-2";
4
+ export declare const zuiDataTableColumnPanelBase = "absolute right-0 z-20 mt-2 grid min-w-48 gap-2 rounded-lg border border-[color:var(--zui-data-table-column-panel-border,var(--zui-border,#0000001a))] bg-[var(--zui-data-table-column-panel-bg,var(--zui-surface,#ffffff))] p-3 shadow-lg shadow-black/10 dark:border-[color:var(--zui-data-table-column-panel-border-dark,var(--zui-border-dark,#ffffff1a))] dark:bg-[var(--zui-data-table-column-panel-bg-dark,var(--zui-surface-dark,#020617))] dark:shadow-black/40";
5
+ export declare const zuiDataTableStatusBase = "text-sm text-[color:var(--zui-data-table-muted-fg,var(--zui-muted-fg,oklch(55.4%_0.046_257.417)))] dark:text-[color:var(--zui-data-table-muted-fg-dark,var(--zui-muted-fg-dark,oklch(70.4%_0.04_256.788)))]";
6
+ export declare const zuiDataTableStateCellBase = "p-8 text-center text-[color:var(--zui-data-table-state-fg,var(--zui-muted-fg,oklch(55.4%_0.046_257.417)))] dark:text-[color:var(--zui-data-table-state-fg-dark,var(--zui-muted-fg-dark,oklch(70.4%_0.04_256.788)))]";
7
+ export declare const zuiDataTableVirtualScrollBase = "overflow-auto rounded-lg border border-[color:var(--zui-data-table-virtual-border,var(--zui-border,#0000001a))] dark:border-[color:var(--zui-data-table-virtual-border-dark,var(--zui-border-dark,#ffffff1a))]";
8
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/design-system/data-table.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,kMACgK,CAAC;AAElM,eAAO,MAAM,uBAAuB,6ZACwX,CAAC;AAE7Z,eAAO,MAAM,4BAA4B,8CACI,CAAC;AAE9C,eAAO,MAAM,2BAA2B,4cACma,CAAC;AAE5c,eAAO,MAAM,sBAAsB,gNAC4K,CAAC;AAEhN,eAAO,MAAM,yBAAyB,wNACiL,CAAC;AAExN,eAAO,MAAM,6BAA6B,mNACwK,CAAC"}
@@ -1,32 +1,32 @@
1
1
  'use strict';
2
2
 
3
- var chunkVA6SB6NN_js = require('../chunk-VA6SB6NN.js');
3
+ var chunkTJ2EWPER_js = require('../chunk-TJ2EWPER.js');
4
4
  require('../chunk-FBUY6K6S.js');
5
+ require('../chunk-Y7BU5RC4.js');
5
6
  require('../chunk-NDF3HORF.js');
6
7
  require('../chunk-USLNTKVQ.js');
7
8
  require('../chunk-D7ATXPVI.js');
8
9
  require('../chunk-IEHY6KNM.js');
9
10
  require('../chunk-3MK7CWEX.js');
11
+ require('../chunk-22FJROCI.js');
10
12
  require('../chunk-UJXFD4SK.js');
11
13
  require('../chunk-3EJCQXGV.js');
12
14
  require('../chunk-6KVTKYTB.js');
13
15
  require('../chunk-L7W4NRK6.js');
14
16
  require('../chunk-KWBGLH7G.js');
15
17
  require('../chunk-OH5VOGNW.js');
16
- require('../chunk-Y7BU5RC4.js');
18
+ require('../chunk-WGN2CBG6.js');
17
19
  require('../chunk-SRSRY5K2.js');
18
20
  require('../chunk-UG3GF2BD.js');
19
21
  require('../chunk-BZTAA3MK.js');
20
22
  require('../chunk-PZ25OHJE.js');
21
23
  require('../chunk-HOOZYA4N.js');
22
24
  require('../chunk-CJCOURVM.js');
23
- require('../chunk-22FJROCI.js');
24
25
  require('../chunk-KJMW7S5X.js');
25
26
  require('../chunk-3CYJQ6KF.js');
26
27
  require('../chunk-3453DQNL.js');
27
28
  require('../chunk-DYSXCJGL.js');
28
29
  require('../chunk-A7MU6SFI.js');
29
- require('../chunk-WGN2CBG6.js');
30
30
  require('../chunk-NYO3W5GY.js');
31
31
  require('../chunk-HNRCPZCK.js');
32
32
  require('../chunk-J2SUGU3X.js');
@@ -242,7 +242,7 @@ function classifyVariables(raw) {
242
242
  };
243
243
  });
244
244
  }
245
- var tokenEntries = Object.entries(chunkVA6SB6NN_js.design_system_exports);
245
+ var tokenEntries = Object.entries(chunkTJ2EWPER_js.design_system_exports);
246
246
  function flattenClassStrings(value) {
247
247
  if (typeof value === "string") {
248
248
  return [value];
@@ -1,30 +1,30 @@
1
- import { design_system_exports } from '../chunk-A4IB3C23.mjs';
1
+ import { design_system_exports } from '../chunk-FUCW5GPE.mjs';
2
2
  import '../chunk-2NQKFH26.mjs';
3
+ import '../chunk-FX5KR2GP.mjs';
3
4
  import '../chunk-ZBAKTM2R.mjs';
4
5
  import '../chunk-4ZBMDWWY.mjs';
5
6
  import '../chunk-YH6MOKHR.mjs';
6
7
  import '../chunk-T4ZLTKV2.mjs';
7
8
  import '../chunk-PUSCPBT2.mjs';
9
+ import '../chunk-523VQLCW.mjs';
8
10
  import '../chunk-3VW4HMJT.mjs';
9
11
  import '../chunk-LRYKMXKI.mjs';
10
12
  import '../chunk-XFJIX2YP.mjs';
11
13
  import '../chunk-4WG3VNVL.mjs';
12
14
  import '../chunk-YPTHTFVF.mjs';
13
15
  import '../chunk-XY3TKIIH.mjs';
14
- import '../chunk-FX5KR2GP.mjs';
16
+ import '../chunk-JEDMUBYI.mjs';
15
17
  import '../chunk-EJ3UMMCS.mjs';
16
18
  import '../chunk-EE53BIXR.mjs';
17
19
  import '../chunk-YXU2MJMT.mjs';
18
20
  import '../chunk-3IE4IELX.mjs';
19
21
  import '../chunk-BUEI4RMR.mjs';
20
22
  import '../chunk-5AOVTY2X.mjs';
21
- import '../chunk-523VQLCW.mjs';
22
23
  import '../chunk-SS3T3BUL.mjs';
23
24
  import '../chunk-SCWQSQBJ.mjs';
24
25
  import '../chunk-ZPGYR2UP.mjs';
25
26
  import '../chunk-MBEQ4GQ7.mjs';
26
27
  import '../chunk-34LHS26H.mjs';
27
- import '../chunk-JEDMUBYI.mjs';
28
28
  import '../chunk-YKTANA3H.mjs';
29
29
  import '../chunk-ENYZGL4R.mjs';
30
30
  import '../chunk-2VPXQ2LA.mjs';
@@ -12,6 +12,7 @@ export * from "./combobox";
12
12
  export * from "./command";
13
13
  export * from "./context-menu";
14
14
  export * from "./copy-button";
15
+ export * from "./data-table";
15
16
  export * from "./divider";
16
17
  export * from "./drawer";
17
18
  export * from "./dropdown";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/design-system/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/design-system/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
@@ -1,124 +1,14 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var chunkHMDH4BQJ_js = require('../chunk-HMDH4BQJ.js');
4
5
  require('../chunk-PZ5AY32C.js');
5
- var react = require('react');
6
6
 
7
- function normalizeFilters(filters) {
8
- if (!filters || typeof filters !== "object") {
9
- return {};
10
- }
11
- return Object.fromEntries(
12
- Object.entries(filters).filter(
13
- (entry) => typeof entry[1] === "string" && entry[1].trim().length > 0
14
- )
15
- );
16
- }
17
- function defaultColumnValue(row, filterKey) {
18
- if (row && typeof row === "object" && filterKey in row) {
19
- return row[filterKey];
20
- }
21
- return void 0;
22
- }
23
- function useTableFilter({
24
- data,
25
- filters,
26
- defaultFilters = {},
27
- onFiltersChange,
28
- getColumnValue = defaultColumnValue,
29
- filterPredicate
30
- }) {
31
- const [internalFilters, setInternalFilters] = react.useState(() => normalizeFilters(defaultFilters));
32
- const isControlled = filters !== void 0;
33
- const currentFilters = react.useMemo(
34
- () => normalizeFilters(isControlled ? filters : internalFilters),
35
- [filters, internalFilters, isControlled]
36
- );
37
- const setFilters = react.useCallback(
38
- (nextFilters) => {
39
- const normalized = normalizeFilters(nextFilters);
40
- if (!isControlled) {
41
- setInternalFilters(normalized);
42
- }
43
- onFiltersChange?.(normalized);
44
- },
45
- [isControlled, onFiltersChange]
46
- );
47
- const updateFilters = react.useCallback(
48
- (updater) => {
49
- if (isControlled) {
50
- const normalized = normalizeFilters(updater(currentFilters));
51
- onFiltersChange?.(normalized);
52
- return;
53
- }
54
- setInternalFilters((previousFilters) => {
55
- const normalized = normalizeFilters(updater(previousFilters));
56
- onFiltersChange?.(normalized);
57
- return normalized;
58
- });
59
- },
60
- [currentFilters, isControlled, onFiltersChange]
61
- );
62
- const setFilter = react.useCallback(
63
- (filterKey, value) => {
64
- updateFilters((previousFilters) => ({
65
- ...previousFilters,
66
- [filterKey]: value
67
- }));
68
- },
69
- [updateFilters]
70
- );
71
- const clearFilter = react.useCallback(
72
- (filterKey) => {
73
- updateFilters((previousFilters) => {
74
- const nextFilters = { ...previousFilters };
75
- delete nextFilters[filterKey];
76
- return nextFilters;
77
- });
78
- },
79
- [updateFilters]
80
- );
81
- const clearFilters = react.useCallback(() => {
82
- setFilters({});
83
- }, [setFilters]);
84
- const activeFilters = react.useMemo(
85
- () => Object.entries(currentFilters).map(
86
- ([filterKey, filterValue]) => ({
87
- filterKey,
88
- filterValue,
89
- lowerFilterValue: filterValue.toLowerCase()
90
- })
91
- ),
92
- [currentFilters]
93
- );
94
- const filteredData = react.useMemo(() => {
95
- if (activeFilters.length === 0) {
96
- return [...data];
97
- }
98
- return data.filter(
99
- (row) => activeFilters.every(({ filterKey, filterValue, lowerFilterValue }) => {
100
- if (filterPredicate) {
101
- return filterPredicate(row, filterValue, filterKey);
102
- }
103
- const columnValue = getColumnValue(row, filterKey);
104
- if (columnValue == null) {
105
- return false;
106
- }
107
- return String(columnValue).toLowerCase().includes(lowerFilterValue);
108
- })
109
- );
110
- }, [activeFilters, data, filterPredicate, getColumnValue]);
111
- return {
112
- filters: currentFilters,
113
- filteredData,
114
- hasActiveFilters: activeFilters.length > 0,
115
- setFilter,
116
- setFilters,
117
- clearFilter,
118
- clearFilters
119
- };
120
- }
121
7
 
122
- exports.useTableFilter = useTableFilter;
8
+
9
+ Object.defineProperty(exports, "useTableFilter", {
10
+ enumerable: true,
11
+ get: function () { return chunkHMDH4BQJ_js.useTableFilter; }
12
+ });
123
13
  //# sourceMappingURL=useTableFilter.js.map
124
14
  //# sourceMappingURL=useTableFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useTableFilter/useTableFilter.ts"],"names":["useState","useMemo","useCallback"],"mappings":"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","file":"useTableFilter.js","sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useState } from \"react\";\n\nimport type {\n TableFilterState,\n UseTableFilterParams,\n UseTableFilterResult,\n} from \"./types\";\n\nfunction normalizeFilters<TKey extends string>(\n filters: TableFilterState<TKey> | null | undefined,\n): TableFilterState<TKey> {\n if (!filters || typeof filters !== \"object\") {\n return {};\n }\n\n return Object.fromEntries(\n Object.entries(filters).filter(\n (entry): entry is [TKey, string] =>\n typeof entry[1] === \"string\" && entry[1].trim().length > 0,\n ),\n ) as TableFilterState<TKey>;\n}\n\nfunction defaultColumnValue<TData, TKey extends string>(\n row: TData,\n filterKey: TKey,\n): unknown {\n if (row && typeof row === \"object\" && filterKey in row) {\n return (row as Record<TKey, unknown>)[filterKey];\n }\n return undefined;\n}\n\nexport function useTableFilter<TData, TKey extends string = string>({\n data,\n filters,\n defaultFilters = {},\n onFiltersChange,\n getColumnValue = defaultColumnValue,\n filterPredicate,\n}: UseTableFilterParams<TData, TKey>): UseTableFilterResult<TData, TKey> {\n const [internalFilters, setInternalFilters] = useState<\n TableFilterState<TKey>\n >(() => normalizeFilters(defaultFilters));\n\n const isControlled = filters !== undefined;\n const currentFilters = useMemo(\n () => normalizeFilters(isControlled ? filters : internalFilters),\n [filters, internalFilters, isControlled],\n );\n\n const setFilters = useCallback(\n (nextFilters: TableFilterState<TKey>) => {\n const normalized = normalizeFilters(nextFilters);\n if (!isControlled) {\n setInternalFilters(normalized);\n }\n onFiltersChange?.(normalized);\n },\n [isControlled, onFiltersChange],\n );\n\n const updateFilters = useCallback(\n (\n updater: (\n previousFilters: TableFilterState<TKey>,\n ) => TableFilterState<TKey>,\n ) => {\n if (isControlled) {\n const normalized = normalizeFilters(updater(currentFilters));\n onFiltersChange?.(normalized);\n return;\n }\n\n setInternalFilters((previousFilters) => {\n const normalized = normalizeFilters(updater(previousFilters));\n onFiltersChange?.(normalized);\n return normalized;\n });\n },\n [currentFilters, isControlled, onFiltersChange],\n );\n\n const setFilter = useCallback(\n (filterKey: TKey, value: string) => {\n updateFilters((previousFilters) => ({\n ...previousFilters,\n [filterKey]: value,\n }));\n },\n [updateFilters],\n );\n\n const clearFilter = useCallback(\n (filterKey: TKey) => {\n updateFilters((previousFilters) => {\n const nextFilters = { ...previousFilters };\n delete nextFilters[filterKey];\n return nextFilters;\n });\n },\n [updateFilters],\n );\n\n const clearFilters = useCallback(() => {\n setFilters({});\n }, [setFilters]);\n\n const activeFilters = useMemo(\n () =>\n (Object.entries(currentFilters) as [TKey, string][]).map(\n ([filterKey, filterValue]) => ({\n filterKey,\n filterValue,\n lowerFilterValue: filterValue.toLowerCase(),\n }),\n ),\n [currentFilters],\n );\n\n const filteredData = useMemo(() => {\n if (activeFilters.length === 0) {\n return [...data];\n }\n\n return data.filter((row) =>\n activeFilters.every(({ filterKey, filterValue, lowerFilterValue }) => {\n if (filterPredicate) {\n return filterPredicate(row, filterValue, filterKey);\n }\n\n const columnValue = getColumnValue(row, filterKey);\n if (columnValue == null) {\n return false;\n }\n\n return String(columnValue).toLowerCase().includes(lowerFilterValue);\n }),\n );\n }, [activeFilters, data, filterPredicate, getColumnValue]);\n\n return {\n filters: currentFilters,\n filteredData,\n hasActiveFilters: activeFilters.length > 0,\n setFilter,\n setFilters,\n clearFilter,\n clearFilters,\n };\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"useTableFilter.js"}
@@ -1,122 +1,5 @@
1
1
  "use client";
2
+ export { useTableFilter } from '../chunk-ZOHCADDL.mjs';
2
3
  import '../chunk-J5LGTIGS.mjs';
3
- import { useState, useMemo, useCallback } from 'react';
4
-
5
- function normalizeFilters(filters) {
6
- if (!filters || typeof filters !== "object") {
7
- return {};
8
- }
9
- return Object.fromEntries(
10
- Object.entries(filters).filter(
11
- (entry) => typeof entry[1] === "string" && entry[1].trim().length > 0
12
- )
13
- );
14
- }
15
- function defaultColumnValue(row, filterKey) {
16
- if (row && typeof row === "object" && filterKey in row) {
17
- return row[filterKey];
18
- }
19
- return void 0;
20
- }
21
- function useTableFilter({
22
- data,
23
- filters,
24
- defaultFilters = {},
25
- onFiltersChange,
26
- getColumnValue = defaultColumnValue,
27
- filterPredicate
28
- }) {
29
- const [internalFilters, setInternalFilters] = useState(() => normalizeFilters(defaultFilters));
30
- const isControlled = filters !== void 0;
31
- const currentFilters = useMemo(
32
- () => normalizeFilters(isControlled ? filters : internalFilters),
33
- [filters, internalFilters, isControlled]
34
- );
35
- const setFilters = useCallback(
36
- (nextFilters) => {
37
- const normalized = normalizeFilters(nextFilters);
38
- if (!isControlled) {
39
- setInternalFilters(normalized);
40
- }
41
- onFiltersChange?.(normalized);
42
- },
43
- [isControlled, onFiltersChange]
44
- );
45
- const updateFilters = useCallback(
46
- (updater) => {
47
- if (isControlled) {
48
- const normalized = normalizeFilters(updater(currentFilters));
49
- onFiltersChange?.(normalized);
50
- return;
51
- }
52
- setInternalFilters((previousFilters) => {
53
- const normalized = normalizeFilters(updater(previousFilters));
54
- onFiltersChange?.(normalized);
55
- return normalized;
56
- });
57
- },
58
- [currentFilters, isControlled, onFiltersChange]
59
- );
60
- const setFilter = useCallback(
61
- (filterKey, value) => {
62
- updateFilters((previousFilters) => ({
63
- ...previousFilters,
64
- [filterKey]: value
65
- }));
66
- },
67
- [updateFilters]
68
- );
69
- const clearFilter = useCallback(
70
- (filterKey) => {
71
- updateFilters((previousFilters) => {
72
- const nextFilters = { ...previousFilters };
73
- delete nextFilters[filterKey];
74
- return nextFilters;
75
- });
76
- },
77
- [updateFilters]
78
- );
79
- const clearFilters = useCallback(() => {
80
- setFilters({});
81
- }, [setFilters]);
82
- const activeFilters = useMemo(
83
- () => Object.entries(currentFilters).map(
84
- ([filterKey, filterValue]) => ({
85
- filterKey,
86
- filterValue,
87
- lowerFilterValue: filterValue.toLowerCase()
88
- })
89
- ),
90
- [currentFilters]
91
- );
92
- const filteredData = useMemo(() => {
93
- if (activeFilters.length === 0) {
94
- return [...data];
95
- }
96
- return data.filter(
97
- (row) => activeFilters.every(({ filterKey, filterValue, lowerFilterValue }) => {
98
- if (filterPredicate) {
99
- return filterPredicate(row, filterValue, filterKey);
100
- }
101
- const columnValue = getColumnValue(row, filterKey);
102
- if (columnValue == null) {
103
- return false;
104
- }
105
- return String(columnValue).toLowerCase().includes(lowerFilterValue);
106
- })
107
- );
108
- }, [activeFilters, data, filterPredicate, getColumnValue]);
109
- return {
110
- filters: currentFilters,
111
- filteredData,
112
- hasActiveFilters: activeFilters.length > 0,
113
- setFilter,
114
- setFilters,
115
- clearFilter,
116
- clearFilters
117
- };
118
- }
119
-
120
- export { useTableFilter };
121
4
  //# sourceMappingURL=useTableFilter.mjs.map
122
5
  //# sourceMappingURL=useTableFilter.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useTableFilter/useTableFilter.ts"],"names":[],"mappings":"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","file":"useTableFilter.mjs","sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useState } from \"react\";\n\nimport type {\n TableFilterState,\n UseTableFilterParams,\n UseTableFilterResult,\n} from \"./types\";\n\nfunction normalizeFilters<TKey extends string>(\n filters: TableFilterState<TKey> | null | undefined,\n): TableFilterState<TKey> {\n if (!filters || typeof filters !== \"object\") {\n return {};\n }\n\n return Object.fromEntries(\n Object.entries(filters).filter(\n (entry): entry is [TKey, string] =>\n typeof entry[1] === \"string\" && entry[1].trim().length > 0,\n ),\n ) as TableFilterState<TKey>;\n}\n\nfunction defaultColumnValue<TData, TKey extends string>(\n row: TData,\n filterKey: TKey,\n): unknown {\n if (row && typeof row === \"object\" && filterKey in row) {\n return (row as Record<TKey, unknown>)[filterKey];\n }\n return undefined;\n}\n\nexport function useTableFilter<TData, TKey extends string = string>({\n data,\n filters,\n defaultFilters = {},\n onFiltersChange,\n getColumnValue = defaultColumnValue,\n filterPredicate,\n}: UseTableFilterParams<TData, TKey>): UseTableFilterResult<TData, TKey> {\n const [internalFilters, setInternalFilters] = useState<\n TableFilterState<TKey>\n >(() => normalizeFilters(defaultFilters));\n\n const isControlled = filters !== undefined;\n const currentFilters = useMemo(\n () => normalizeFilters(isControlled ? filters : internalFilters),\n [filters, internalFilters, isControlled],\n );\n\n const setFilters = useCallback(\n (nextFilters: TableFilterState<TKey>) => {\n const normalized = normalizeFilters(nextFilters);\n if (!isControlled) {\n setInternalFilters(normalized);\n }\n onFiltersChange?.(normalized);\n },\n [isControlled, onFiltersChange],\n );\n\n const updateFilters = useCallback(\n (\n updater: (\n previousFilters: TableFilterState<TKey>,\n ) => TableFilterState<TKey>,\n ) => {\n if (isControlled) {\n const normalized = normalizeFilters(updater(currentFilters));\n onFiltersChange?.(normalized);\n return;\n }\n\n setInternalFilters((previousFilters) => {\n const normalized = normalizeFilters(updater(previousFilters));\n onFiltersChange?.(normalized);\n return normalized;\n });\n },\n [currentFilters, isControlled, onFiltersChange],\n );\n\n const setFilter = useCallback(\n (filterKey: TKey, value: string) => {\n updateFilters((previousFilters) => ({\n ...previousFilters,\n [filterKey]: value,\n }));\n },\n [updateFilters],\n );\n\n const clearFilter = useCallback(\n (filterKey: TKey) => {\n updateFilters((previousFilters) => {\n const nextFilters = { ...previousFilters };\n delete nextFilters[filterKey];\n return nextFilters;\n });\n },\n [updateFilters],\n );\n\n const clearFilters = useCallback(() => {\n setFilters({});\n }, [setFilters]);\n\n const activeFilters = useMemo(\n () =>\n (Object.entries(currentFilters) as [TKey, string][]).map(\n ([filterKey, filterValue]) => ({\n filterKey,\n filterValue,\n lowerFilterValue: filterValue.toLowerCase(),\n }),\n ),\n [currentFilters],\n );\n\n const filteredData = useMemo(() => {\n if (activeFilters.length === 0) {\n return [...data];\n }\n\n return data.filter((row) =>\n activeFilters.every(({ filterKey, filterValue, lowerFilterValue }) => {\n if (filterPredicate) {\n return filterPredicate(row, filterValue, filterKey);\n }\n\n const columnValue = getColumnValue(row, filterKey);\n if (columnValue == null) {\n return false;\n }\n\n return String(columnValue).toLowerCase().includes(lowerFilterValue);\n }),\n );\n }, [activeFilters, data, filterPredicate, getColumnValue]);\n\n return {\n filters: currentFilters,\n filteredData,\n hasActiveFilters: activeFilters.length > 0,\n setFilter,\n setFilters,\n clearFilter,\n clearFilters,\n };\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"useTableFilter.mjs"}
@@ -1,99 +1,14 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var chunkI7EBE7BD_js = require('../chunk-I7EBE7BD.js');
4
5
  require('../chunk-PZ5AY32C.js');
5
- var react = require('react');
6
6
 
7
- function nextSortDirection(currentDirection) {
8
- if (currentDirection === "ascending") {
9
- return "descending";
10
- }
11
- if (currentDirection === "descending") {
12
- return "none";
13
- }
14
- return "ascending";
15
- }
16
- function normalizeSortState(nextSort) {
17
- if (!nextSort.sortKey || nextSort.sortDirection === "none") {
18
- return { sortKey: void 0, sortDirection: "none" };
19
- }
20
- return nextSort;
21
- }
22
- function useTableSort({
23
- sortKey,
24
- defaultSortKey,
25
- sortDirection,
26
- defaultSortDirection = "none",
27
- onSortChange
28
- } = {}) {
29
- const [internalSort, setInternalSort] = react.useState(
30
- () => normalizeSortState({
31
- sortKey: defaultSortKey,
32
- sortDirection: defaultSortDirection
33
- })
34
- );
35
- const isSortKeyControlled = sortKey !== void 0;
36
- const isSortDirectionControlled = sortDirection !== void 0;
37
- const currentSort = normalizeSortState({
38
- sortKey: isSortKeyControlled ? sortKey : internalSort.sortKey,
39
- sortDirection: isSortDirectionControlled ? sortDirection : internalSort.sortDirection
40
- });
41
- const setSort = react.useCallback(
42
- (nextSort) => {
43
- const normalized = normalizeSortState(nextSort);
44
- if (!isSortKeyControlled || !isSortDirectionControlled) {
45
- setInternalSort((previousSort) => ({
46
- sortKey: isSortKeyControlled ? previousSort.sortKey : normalized.sortKey,
47
- sortDirection: isSortDirectionControlled ? previousSort.sortDirection : normalized.sortDirection
48
- }));
49
- }
50
- onSortChange?.(normalized);
51
- },
52
- [isSortDirectionControlled, isSortKeyControlled, onSortChange]
53
- );
54
- const clearSort = react.useCallback(() => {
55
- setSort({ sortKey: void 0, sortDirection: "none" });
56
- }, [setSort]);
57
- const toggleSort = react.useCallback(
58
- (nextSortKey) => {
59
- const direction = currentSort.sortKey === nextSortKey ? nextSortDirection(currentSort.sortDirection) : "ascending";
60
- setSort({
61
- sortKey: nextSortKey,
62
- sortDirection: direction
63
- });
64
- },
65
- [currentSort.sortDirection, currentSort.sortKey, setSort]
66
- );
67
- const getSortProps = react.useCallback(
68
- (nextSortKey) => ({
69
- sortKey: nextSortKey,
70
- sortDirection: currentSort.sortKey === nextSortKey ? currentSort.sortDirection : "none",
71
- onSortChange: (nextSort) => {
72
- setSort(nextSort);
73
- }
74
- }),
75
- [currentSort.sortDirection, currentSort.sortKey, setSort]
76
- );
77
- return react.useMemo(
78
- () => ({
79
- sortKey: currentSort.sortKey,
80
- sortDirection: currentSort.sortDirection,
81
- setSort,
82
- clearSort,
83
- toggleSort,
84
- getSortProps
85
- }),
86
- [
87
- clearSort,
88
- currentSort.sortDirection,
89
- currentSort.sortKey,
90
- getSortProps,
91
- setSort,
92
- toggleSort
93
- ]
94
- );
95
- }
96
7
 
97
- exports.useTableSort = useTableSort;
8
+
9
+ Object.defineProperty(exports, "useTableSort", {
10
+ enumerable: true,
11
+ get: function () { return chunkI7EBE7BD_js.useTableSort; }
12
+ });
98
13
  //# sourceMappingURL=useTableSort.js.map
99
14
  //# sourceMappingURL=useTableSort.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useTableSort/useTableSort.ts"],"names":["useState","useCallback","useMemo"],"mappings":"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","file":"useTableSort.js","sourcesContent":["\"use client\";\n\nimport { useCallback, useMemo, useState } from \"react\";\n\nimport type { TableSortDirection, TableSortState } from \"../../ui/table/types\";\nimport type { UseTableSortParams, UseTableSortResult } from \"./types\";\n\nfunction nextSortDirection(\n currentDirection: TableSortDirection,\n): TableSortDirection {\n if (currentDirection === \"ascending\") {\n return \"descending\";\n }\n if (currentDirection === \"descending\") {\n return \"none\";\n }\n return \"ascending\";\n}\n\nfunction normalizeSortState<TKey extends string>(\n nextSort: TableSortState<TKey>,\n): TableSortState<TKey> {\n if (!nextSort.sortKey || nextSort.sortDirection === \"none\") {\n return { sortKey: undefined, sortDirection: \"none\" };\n }\n return nextSort;\n}\n\nexport function useTableSort<TKey extends string = string>({\n sortKey,\n defaultSortKey,\n sortDirection,\n defaultSortDirection = \"none\",\n onSortChange,\n}: UseTableSortParams<TKey> = {}): UseTableSortResult<TKey> {\n const [internalSort, setInternalSort] = useState<TableSortState<TKey>>(() =>\n normalizeSortState({\n sortKey: defaultSortKey,\n sortDirection: defaultSortDirection,\n }),\n );\n\n const isSortKeyControlled = sortKey !== undefined;\n const isSortDirectionControlled = sortDirection !== undefined;\n const currentSort = normalizeSortState({\n sortKey: isSortKeyControlled ? sortKey : internalSort.sortKey,\n sortDirection: isSortDirectionControlled\n ? sortDirection\n : internalSort.sortDirection,\n });\n\n const setSort = useCallback(\n (nextSort: TableSortState<TKey>) => {\n const normalized = normalizeSortState(nextSort);\n if (!isSortKeyControlled || !isSortDirectionControlled) {\n setInternalSort((previousSort) => ({\n sortKey: isSortKeyControlled\n ? previousSort.sortKey\n : normalized.sortKey,\n sortDirection: isSortDirectionControlled\n ? previousSort.sortDirection\n : normalized.sortDirection,\n }));\n }\n onSortChange?.(normalized);\n },\n [isSortDirectionControlled, isSortKeyControlled, onSortChange],\n );\n\n const clearSort = useCallback(() => {\n setSort({ sortKey: undefined, sortDirection: \"none\" });\n }, [setSort]);\n\n const toggleSort = useCallback(\n (nextSortKey: TKey) => {\n const direction =\n currentSort.sortKey === nextSortKey\n ? nextSortDirection(currentSort.sortDirection)\n : \"ascending\";\n\n setSort({\n sortKey: nextSortKey,\n sortDirection: direction,\n });\n },\n [currentSort.sortDirection, currentSort.sortKey, setSort],\n );\n\n const getSortProps = useCallback(\n (nextSortKey: TKey) => ({\n sortKey: nextSortKey,\n sortDirection:\n currentSort.sortKey === nextSortKey\n ? currentSort.sortDirection\n : \"none\",\n onSortChange: (nextSort: TableSortState) => {\n setSort(nextSort as TableSortState<TKey>);\n },\n }),\n [currentSort.sortDirection, currentSort.sortKey, setSort],\n );\n\n return useMemo(\n () => ({\n sortKey: currentSort.sortKey,\n sortDirection: currentSort.sortDirection,\n setSort,\n clearSort,\n toggleSort,\n getSortProps,\n }),\n [\n clearSort,\n currentSort.sortDirection,\n currentSort.sortKey,\n getSortProps,\n setSort,\n toggleSort,\n ],\n );\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"useTableSort.js"}
@@ -1,97 +1,5 @@
1
1
  "use client";
2
+ export { useTableSort } from '../chunk-W6DO36XD.mjs';
2
3
  import '../chunk-J5LGTIGS.mjs';
3
- import { useState, useCallback, useMemo } from 'react';
4
-
5
- function nextSortDirection(currentDirection) {
6
- if (currentDirection === "ascending") {
7
- return "descending";
8
- }
9
- if (currentDirection === "descending") {
10
- return "none";
11
- }
12
- return "ascending";
13
- }
14
- function normalizeSortState(nextSort) {
15
- if (!nextSort.sortKey || nextSort.sortDirection === "none") {
16
- return { sortKey: void 0, sortDirection: "none" };
17
- }
18
- return nextSort;
19
- }
20
- function useTableSort({
21
- sortKey,
22
- defaultSortKey,
23
- sortDirection,
24
- defaultSortDirection = "none",
25
- onSortChange
26
- } = {}) {
27
- const [internalSort, setInternalSort] = useState(
28
- () => normalizeSortState({
29
- sortKey: defaultSortKey,
30
- sortDirection: defaultSortDirection
31
- })
32
- );
33
- const isSortKeyControlled = sortKey !== void 0;
34
- const isSortDirectionControlled = sortDirection !== void 0;
35
- const currentSort = normalizeSortState({
36
- sortKey: isSortKeyControlled ? sortKey : internalSort.sortKey,
37
- sortDirection: isSortDirectionControlled ? sortDirection : internalSort.sortDirection
38
- });
39
- const setSort = useCallback(
40
- (nextSort) => {
41
- const normalized = normalizeSortState(nextSort);
42
- if (!isSortKeyControlled || !isSortDirectionControlled) {
43
- setInternalSort((previousSort) => ({
44
- sortKey: isSortKeyControlled ? previousSort.sortKey : normalized.sortKey,
45
- sortDirection: isSortDirectionControlled ? previousSort.sortDirection : normalized.sortDirection
46
- }));
47
- }
48
- onSortChange?.(normalized);
49
- },
50
- [isSortDirectionControlled, isSortKeyControlled, onSortChange]
51
- );
52
- const clearSort = useCallback(() => {
53
- setSort({ sortKey: void 0, sortDirection: "none" });
54
- }, [setSort]);
55
- const toggleSort = useCallback(
56
- (nextSortKey) => {
57
- const direction = currentSort.sortKey === nextSortKey ? nextSortDirection(currentSort.sortDirection) : "ascending";
58
- setSort({
59
- sortKey: nextSortKey,
60
- sortDirection: direction
61
- });
62
- },
63
- [currentSort.sortDirection, currentSort.sortKey, setSort]
64
- );
65
- const getSortProps = useCallback(
66
- (nextSortKey) => ({
67
- sortKey: nextSortKey,
68
- sortDirection: currentSort.sortKey === nextSortKey ? currentSort.sortDirection : "none",
69
- onSortChange: (nextSort) => {
70
- setSort(nextSort);
71
- }
72
- }),
73
- [currentSort.sortDirection, currentSort.sortKey, setSort]
74
- );
75
- return useMemo(
76
- () => ({
77
- sortKey: currentSort.sortKey,
78
- sortDirection: currentSort.sortDirection,
79
- setSort,
80
- clearSort,
81
- toggleSort,
82
- getSortProps
83
- }),
84
- [
85
- clearSort,
86
- currentSort.sortDirection,
87
- currentSort.sortKey,
88
- getSortProps,
89
- setSort,
90
- toggleSort
91
- ]
92
- );
93
- }
94
-
95
- export { useTableSort };
96
4
  //# sourceMappingURL=useTableSort.mjs.map
97
5
  //# sourceMappingURL=useTableSort.mjs.map