kz-design-system 0.2.0 → 0.3.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 (118) hide show
  1. package/dist/button.d.mts +1 -1
  2. package/dist/button.d.ts +1 -1
  3. package/dist/button.js +6 -2
  4. package/dist/button.js.map +1 -1
  5. package/dist/button.mjs +11 -3
  6. package/dist/button.mjs.map +1 -1
  7. package/dist/color-picker.js +6 -2
  8. package/dist/color-picker.js.map +1 -1
  9. package/dist/color-picker.mjs +11 -3
  10. package/dist/color-picker.mjs.map +1 -1
  11. package/dist/date-range-picker.js +6 -2
  12. package/dist/date-range-picker.js.map +1 -1
  13. package/dist/date-range-picker.mjs +11 -3
  14. package/dist/date-range-picker.mjs.map +1 -1
  15. package/dist/date-time-picker.js +6 -2
  16. package/dist/date-time-picker.js.map +1 -1
  17. package/dist/date-time-picker.mjs +11 -3
  18. package/dist/date-time-picker.mjs.map +1 -1
  19. package/dist/dropdown.js +6 -2
  20. package/dist/dropdown.js.map +1 -1
  21. package/dist/dropdown.mjs +11 -3
  22. package/dist/dropdown.mjs.map +1 -1
  23. package/dist/error-page.js +5 -1
  24. package/dist/error-page.js.map +1 -1
  25. package/dist/error-page.mjs +10 -2
  26. package/dist/error-page.mjs.map +1 -1
  27. package/dist/file-uploader.js +5 -1
  28. package/dist/file-uploader.js.map +1 -1
  29. package/dist/file-uploader.mjs +10 -2
  30. package/dist/file-uploader.mjs.map +1 -1
  31. package/dist/icon-picker.d.mts +1 -1
  32. package/dist/icon-picker.d.ts +1 -1
  33. package/dist/icon-picker.js +10 -2
  34. package/dist/icon-picker.js.map +1 -1
  35. package/dist/icon-picker.mjs +15 -3
  36. package/dist/icon-picker.mjs.map +1 -1
  37. package/dist/{icon-registry-YZFYW-mt.d.mts → icon-registry-DY5NSKnE.d.mts} +5 -1
  38. package/dist/{icon-registry-YZFYW-mt.d.ts → icon-registry-DY5NSKnE.d.ts} +5 -1
  39. package/dist/icon.d.mts +2 -2
  40. package/dist/icon.d.ts +2 -2
  41. package/dist/icon.js +9 -1
  42. package/dist/icon.js.map +1 -1
  43. package/dist/icon.mjs +14 -2
  44. package/dist/icon.mjs.map +1 -1
  45. package/dist/index.d.mts +2 -1
  46. package/dist/index.d.ts +2 -1
  47. package/dist/index.js +994 -693
  48. package/dist/index.js.map +1 -1
  49. package/dist/index.mjs +999 -695
  50. package/dist/index.mjs.map +1 -1
  51. package/dist/modal.js +5 -1
  52. package/dist/modal.js.map +1 -1
  53. package/dist/modal.mjs +10 -2
  54. package/dist/modal.mjs.map +1 -1
  55. package/dist/number-input.js +6 -2
  56. package/dist/number-input.js.map +1 -1
  57. package/dist/number-input.mjs +11 -3
  58. package/dist/number-input.mjs.map +1 -1
  59. package/dist/pagination.js +6 -2
  60. package/dist/pagination.js.map +1 -1
  61. package/dist/pagination.mjs +11 -3
  62. package/dist/pagination.mjs.map +1 -1
  63. package/dist/qr-renderer.js +6 -2
  64. package/dist/qr-renderer.js.map +1 -1
  65. package/dist/qr-renderer.mjs +11 -3
  66. package/dist/qr-renderer.mjs.map +1 -1
  67. package/dist/range-slider.d.mts +38 -0
  68. package/dist/range-slider.d.ts +38 -0
  69. package/dist/range-slider.js +466 -0
  70. package/dist/range-slider.js.map +1 -0
  71. package/dist/range-slider.mjs +426 -0
  72. package/dist/range-slider.mjs.map +1 -0
  73. package/dist/select.js +5 -1
  74. package/dist/select.js.map +1 -1
  75. package/dist/select.mjs +10 -2
  76. package/dist/select.mjs.map +1 -1
  77. package/dist/sidemenu.d.mts +1 -1
  78. package/dist/sidemenu.d.ts +1 -1
  79. package/dist/sidemenu.js +5 -1
  80. package/dist/sidemenu.js.map +1 -1
  81. package/dist/sidemenu.mjs +10 -2
  82. package/dist/sidemenu.mjs.map +1 -1
  83. package/dist/sidepanel.js +5 -1
  84. package/dist/sidepanel.js.map +1 -1
  85. package/dist/sidepanel.mjs +10 -2
  86. package/dist/sidepanel.mjs.map +1 -1
  87. package/dist/sql-editor.js +6 -2
  88. package/dist/sql-editor.js.map +1 -1
  89. package/dist/sql-editor.mjs +11 -3
  90. package/dist/sql-editor.mjs.map +1 -1
  91. package/dist/styles.css +2 -2
  92. package/dist/table.d.mts +14 -0
  93. package/dist/table.d.ts +14 -0
  94. package/dist/table.js +41 -21
  95. package/dist/table.js.map +1 -1
  96. package/dist/table.mjs +46 -22
  97. package/dist/table.mjs.map +1 -1
  98. package/dist/tabs.js +5 -1
  99. package/dist/tabs.js.map +1 -1
  100. package/dist/tabs.mjs +10 -2
  101. package/dist/tabs.mjs.map +1 -1
  102. package/dist/text-area.js +5 -1
  103. package/dist/text-area.js.map +1 -1
  104. package/dist/text-area.mjs +10 -2
  105. package/dist/text-area.mjs.map +1 -1
  106. package/dist/text-input.js +5 -1
  107. package/dist/text-input.js.map +1 -1
  108. package/dist/text-input.mjs +10 -2
  109. package/dist/text-input.mjs.map +1 -1
  110. package/dist/toast.js +5 -1
  111. package/dist/toast.js.map +1 -1
  112. package/dist/toast.mjs +10 -2
  113. package/dist/toast.mjs.map +1 -1
  114. package/dist/toggle-button.js +6 -2
  115. package/dist/toggle-button.js.map +1 -1
  116. package/dist/toggle-button.mjs +11 -3
  117. package/dist/toggle-button.mjs.map +1 -1
  118. package/package.json +7 -1
package/dist/table.d.mts CHANGED
@@ -12,6 +12,16 @@ interface TableColumn<TData, TEditValue = string> {
12
12
  minWidth?: string;
13
13
  maxWidth?: string;
14
14
  align?: TableAlign;
15
+ /** Custom CSS class for this column's header cell (<th>). */
16
+ headerClassName?: string;
17
+ /** Custom inline styles for this column's header cell (<th>). */
18
+ headerStyle?: React.CSSProperties;
19
+ /** Custom CSS class for this column's body cells (<td>). */
20
+ cellClassName?: string;
21
+ /** Custom inline styles for this column's body cells (<td>). */
22
+ cellStyle?: React.CSSProperties;
23
+ /** Hide this column from rendering. */
24
+ hidden?: boolean;
15
25
  sortable?: boolean;
16
26
  /** Whether this column's cells are editable. Enables the pencil icon on hover. */
17
27
  editable?: boolean;
@@ -55,6 +65,10 @@ interface TableProps<TData, TEditValue = string> {
55
65
  /** Max height of the scrollable area (CSS value, e.g. "60vh", "400px"). Only applies when stickyHeader is true. Default: none (fills parent). */
56
66
  maxHeight?: string;
57
67
  getRowSticky?: (row: TData, index: number) => boolean;
68
+ /** Return a custom CSS class for a row's <tr> element. */
69
+ getRowClassName?: (row: TData, index: number) => string | undefined;
70
+ /** Return custom inline styles for a row's <tr> element. */
71
+ getRowStyle?: (row: TData, index: number) => React.CSSProperties | undefined;
58
72
  caption?: string;
59
73
  header?: React.ReactNode;
60
74
  title?: React.ReactNode;
package/dist/table.d.ts CHANGED
@@ -12,6 +12,16 @@ interface TableColumn<TData, TEditValue = string> {
12
12
  minWidth?: string;
13
13
  maxWidth?: string;
14
14
  align?: TableAlign;
15
+ /** Custom CSS class for this column's header cell (<th>). */
16
+ headerClassName?: string;
17
+ /** Custom inline styles for this column's header cell (<th>). */
18
+ headerStyle?: React.CSSProperties;
19
+ /** Custom CSS class for this column's body cells (<td>). */
20
+ cellClassName?: string;
21
+ /** Custom inline styles for this column's body cells (<td>). */
22
+ cellStyle?: React.CSSProperties;
23
+ /** Hide this column from rendering. */
24
+ hidden?: boolean;
15
25
  sortable?: boolean;
16
26
  /** Whether this column's cells are editable. Enables the pencil icon on hover. */
17
27
  editable?: boolean;
@@ -55,6 +65,10 @@ interface TableProps<TData, TEditValue = string> {
55
65
  /** Max height of the scrollable area (CSS value, e.g. "60vh", "400px"). Only applies when stickyHeader is true. Default: none (fills parent). */
56
66
  maxHeight?: string;
57
67
  getRowSticky?: (row: TData, index: number) => boolean;
68
+ /** Return a custom CSS class for a row's <tr> element. */
69
+ getRowClassName?: (row: TData, index: number) => string | undefined;
70
+ /** Return custom inline styles for a row's <tr> element. */
71
+ getRowStyle?: (row: TData, index: number) => React.CSSProperties | undefined;
58
72
  caption?: string;
59
73
  header?: React.ReactNode;
60
74
  title?: React.ReactNode;
package/dist/table.js CHANGED
@@ -404,7 +404,11 @@ var iconRegistry = {
404
404
  ["pencil" /* Pencil */]: import_lucide_react.Pencil,
405
405
  ["trash-2" /* Trash2 */]: import_lucide_react.Trash2,
406
406
  ["eye" /* Eye */]: import_lucide_react.Eye,
407
- ["eye-off" /* EyeOff */]: import_lucide_react.EyeOff
407
+ ["eye-off" /* EyeOff */]: import_lucide_react.EyeOff,
408
+ ["pin" /* Pin */]: import_lucide_react.Pin,
409
+ ["pin-off" /* PinOff */]: import_lucide_react.PinOff,
410
+ ["save" /* Save */]: import_lucide_react.Save,
411
+ ["rotate-ccw" /* RotateCcw */]: import_lucide_react.RotateCcw
408
412
  };
409
413
 
410
414
  // src/icon/icon-sizes.ts
@@ -647,7 +651,7 @@ var base = [
647
651
  "inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium",
648
652
  "transition-all duration-150 ease-out",
649
653
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--kz-color-border-focus)]",
650
- "disabled:pointer-events-none disabled:opacity-[var(--kz-component-button-disabled-opacity,0.5)]",
654
+ "disabled:cursor-not-allowed disabled:opacity-[var(--kz-component-button-disabled-opacity,0.5)]",
651
655
  "[&_svg]:pointer-events-none [&_svg]:shrink-0"
652
656
  ].join(" ");
653
657
  var buttonVariants = (0, import_class_variance_authority2.cva)(base, {
@@ -1406,6 +1410,8 @@ function TableInner({
1406
1410
  stickyHeader = false,
1407
1411
  maxHeight,
1408
1412
  getRowSticky,
1413
+ getRowClassName,
1414
+ getRowStyle,
1409
1415
  caption,
1410
1416
  header: headerProp,
1411
1417
  title,
@@ -1451,6 +1457,10 @@ function TableInner({
1451
1457
  () => data.map((row, i) => getRowId(row, i)),
1452
1458
  [data, getRowId]
1453
1459
  );
1460
+ const visibleColumns = React8.useMemo(
1461
+ () => columns.filter((col) => !col.hidden),
1462
+ [columns]
1463
+ );
1454
1464
  const selectedCount = React8.useMemo(
1455
1465
  () => Object.keys(selectedRowIds).filter((id) => selectedRowIds[id]).length,
1456
1466
  [selectedRowIds]
@@ -1710,11 +1720,13 @@ function TableInner({
1710
1720
  )
1711
1721
  }
1712
1722
  ),
1713
- columns.map((col) => {
1714
- const style = {};
1715
- if (col.width) style.width = col.width;
1716
- if (col.minWidth) style.minWidth = col.minWidth;
1717
- if (col.maxWidth) style.maxWidth = col.maxWidth;
1723
+ visibleColumns.map((col) => {
1724
+ const thStyle = {
1725
+ ...col.headerStyle
1726
+ };
1727
+ if (col.width) thStyle.width = col.width;
1728
+ if (col.minWidth) thStyle.minWidth = col.minWidth;
1729
+ if (col.maxWidth) thStyle.maxWidth = col.maxWidth;
1718
1730
  const align = col.align ?? "left";
1719
1731
  const isSortable = col.sortable && onSortChange != null;
1720
1732
  const isActive = sort?.key === col.key;
@@ -1728,9 +1740,10 @@ function TableInner({
1728
1740
  "kz-table-th border-b border-[var(--kz-component-table-row-border)] bg-[var(--kz-component-table-header-bg)]",
1729
1741
  sizeClass,
1730
1742
  alignClasses[align],
1731
- stickyHeader && "sticky top-0 z-10 bg-[var(--kz-component-table-header-bg)]"
1743
+ stickyHeader && "sticky top-0 z-10 bg-[var(--kz-component-table-header-bg)]",
1744
+ col.headerClassName
1732
1745
  ),
1733
- style,
1746
+ style: thStyle,
1734
1747
  children: isSortable ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1735
1748
  "button",
1736
1749
  {
@@ -1796,7 +1809,7 @@ function TableInner({
1796
1809
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("tbody", { children: loading ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1797
1810
  "td",
1798
1811
  {
1799
- colSpan: columns.length + (selectableRows ? 1 : 0) + (actions ? 1 : 0),
1812
+ colSpan: visibleColumns.length + (selectableRows ? 1 : 0) + (actions ? 1 : 0),
1800
1813
  className: cn(
1801
1814
  "kz-table-td text-center text-[var(--kz-color-text-muted)]",
1802
1815
  sizeClass
@@ -1806,7 +1819,7 @@ function TableInner({
1806
1819
  ) }) : data.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1807
1820
  "td",
1808
1821
  {
1809
- colSpan: columns.length + (selectableRows ? 1 : 0) + (actions ? 1 : 0),
1822
+ colSpan: visibleColumns.length + (selectableRows ? 1 : 0) + (actions ? 1 : 0),
1810
1823
  className: cn(
1811
1824
  "kz-table-td text-center text-[var(--kz-color-text-muted)]",
1812
1825
  sizeClass
@@ -1826,8 +1839,10 @@ function TableInner({
1826
1839
  className: cn(
1827
1840
  "kz-table-tr border-b border-[var(--kz-component-table-row-border)] last:border-b-0 hover:bg-[var(--kz-component-table-row-hover-bg)] transition-colors duration-[var(--kz-motion-duration-normal)]",
1828
1841
  isSticky && "kz-table-tr--sticky",
1829
- hasEditingCell && "kz-table-tr--editing"
1842
+ hasEditingCell && "kz-table-tr--editing",
1843
+ getRowClassName?.(row, index)
1830
1844
  ),
1845
+ style: getRowStyle?.(row, index),
1831
1846
  children: [
1832
1847
  selectableRows && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1833
1848
  "td",
@@ -1849,11 +1864,13 @@ function TableInner({
1849
1864
  )
1850
1865
  }
1851
1866
  ),
1852
- columns.map((col) => {
1853
- const style = {};
1854
- if (col.width) style.width = col.width;
1855
- if (col.minWidth) style.minWidth = col.minWidth;
1856
- if (col.maxWidth) style.maxWidth = col.maxWidth;
1867
+ visibleColumns.map((col) => {
1868
+ const tdStyle = {
1869
+ ...col.cellStyle
1870
+ };
1871
+ if (col.width) tdStyle.width = col.width;
1872
+ if (col.minWidth) tdStyle.minWidth = col.minWidth;
1873
+ if (col.maxWidth) tdStyle.maxWidth = col.maxWidth;
1857
1874
  const align = col.align ?? "left";
1858
1875
  const isCellEditing = isMultiCellMode ? !!editingCells[rowId]?.[col.key] : editingCell != null && editingCell.rowId === rowId && editingCell.columnKey === col.key;
1859
1876
  if (isCellEditing) {
@@ -1874,9 +1891,10 @@ function TableInner({
1874
1891
  className: cn(
1875
1892
  "kz-table-td text-[var(--kz-color-text-primary)]",
1876
1893
  sizeClass,
1877
- alignClasses[align]
1894
+ alignClasses[align],
1895
+ col.cellClassName
1878
1896
  ),
1879
- style,
1897
+ style: tdStyle,
1880
1898
  children: col.editCell ? col.editCell(row, cellDraft, onChange) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1881
1899
  TextInput,
1882
1900
  {
@@ -1899,9 +1917,10 @@ function TableInner({
1899
1917
  "kz-table-td text-[var(--kz-color-text-primary)]",
1900
1918
  sizeClass,
1901
1919
  alignClasses[align],
1902
- col.editable && "kz-table-td--editable"
1920
+ col.editable && "kz-table-td--editable",
1921
+ col.cellClassName
1903
1922
  ),
1904
- style,
1923
+ style: tdStyle,
1905
1924
  children: [
1906
1925
  getCellContent(row, col),
1907
1926
  col.editable && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
@@ -2010,6 +2029,7 @@ function TableInner({
2010
2029
  Button,
2011
2030
  {
2012
2031
  variant: "primary" /* Primary */,
2032
+ status: "success" /* Success */,
2013
2033
  size: "sm" /* Sm */,
2014
2034
  onClick: handleCellSave,
2015
2035
  children: "Save"