@crossangle-org/cs-ui 0.2.5 → 0.2.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 (119) hide show
  1. package/dist/components/accordion/cs-accordion.js +116 -0
  2. package/dist/components/accordion/cs-accordion.js.map +1 -0
  3. package/dist/components/alert-dialog/cs-alert-dialog.js +148 -0
  4. package/dist/components/alert-dialog/cs-alert-dialog.js.map +1 -0
  5. package/dist/components/avatar/cs-avatar.js +44 -0
  6. package/dist/components/avatar/cs-avatar.js.map +1 -0
  7. package/dist/components/badge/cs-badge.js +40 -0
  8. package/dist/components/badge/cs-badge.js.map +1 -0
  9. package/dist/components/box/cs-box.js +37 -0
  10. package/dist/components/box/cs-box.js.map +1 -0
  11. package/dist/components/button/cs-button.js +91 -0
  12. package/dist/components/button/cs-button.js.map +1 -0
  13. package/dist/components/calendar/cs-calendar.js +199 -0
  14. package/dist/components/calendar/cs-calendar.js.map +1 -0
  15. package/dist/components/card/cs-card.js +95 -0
  16. package/dist/components/card/cs-card.js.map +1 -0
  17. package/dist/components/chart/cs-chart.js +88 -0
  18. package/dist/components/chart/cs-chart.js.map +1 -0
  19. package/dist/components/checkbox/cs-checkbox.js +55 -0
  20. package/dist/components/checkbox/cs-checkbox.js.map +1 -0
  21. package/dist/components/code-block/cs-code-block.js +39 -0
  22. package/dist/components/code-block/cs-code-block.js.map +1 -0
  23. package/dist/components/code-block/cs-code-highlighter.js +59 -0
  24. package/dist/components/code-block/cs-code-highlighter.js.map +1 -0
  25. package/dist/components/collapsible/cs-collapsible.js +36 -0
  26. package/dist/components/collapsible/cs-collapsible.js.map +1 -0
  27. package/dist/components/date-picker/cs-date-picker.js +25 -0
  28. package/dist/components/date-picker/cs-date-picker.js.map +1 -0
  29. package/dist/components/dialog/cs-dialog.js +131 -0
  30. package/dist/components/dialog/cs-dialog.js.map +1 -0
  31. package/dist/components/drawer/cs-drawer.js +131 -0
  32. package/dist/components/drawer/cs-drawer.js.map +1 -0
  33. package/dist/components/dropdown-menu/cs-dropdown-menu.js +247 -0
  34. package/dist/components/dropdown-menu/cs-dropdown-menu.js.map +1 -0
  35. package/dist/components/dropzone/cs-dropzone.js +147 -0
  36. package/dist/components/dropzone/cs-dropzone.js.map +1 -0
  37. package/dist/components/empty/cs-empty.js +107 -0
  38. package/dist/components/empty/cs-empty.js.map +1 -0
  39. package/dist/components/field/cs-field.js +218 -0
  40. package/dist/components/field/cs-field.js.map +1 -0
  41. package/dist/components/input/cs-input-group.js +207 -0
  42. package/dist/components/input/cs-input-group.js.map +1 -0
  43. package/dist/components/input/cs-input.js +40 -0
  44. package/dist/components/input/cs-input.js.map +1 -0
  45. package/dist/components/label/cs-label.js +26 -0
  46. package/dist/components/label/cs-label.js.map +1 -0
  47. package/dist/components/navigation-menu/cs-navigation-menu.js +214 -0
  48. package/dist/components/navigation-menu/cs-navigation-menu.js.map +1 -0
  49. package/dist/components/pagination/cs-pagination.js +124 -0
  50. package/dist/components/pagination/cs-pagination.js.map +1 -0
  51. package/dist/components/popover/cs-popover.js +60 -0
  52. package/dist/components/popover/cs-popover.js.map +1 -0
  53. package/dist/components/progress/cs-progress.js +62 -0
  54. package/dist/components/progress/cs-progress.js.map +1 -0
  55. package/dist/components/scroll-area/cs-scroll-area.js +61 -0
  56. package/dist/components/scroll-area/cs-scroll-area.js.map +1 -0
  57. package/dist/components/select/cs-select.js +195 -0
  58. package/dist/components/select/cs-select.js.map +1 -0
  59. package/dist/components/select/cs-simple-select.js +32 -0
  60. package/dist/components/select/cs-simple-select.js.map +1 -0
  61. package/dist/components/separator/cs-separator.js +28 -0
  62. package/dist/components/separator/cs-separator.js.map +1 -0
  63. package/dist/components/sheet/cs-sheet.js +128 -0
  64. package/dist/components/sheet/cs-sheet.js.map +1 -0
  65. package/dist/components/sidebar/cs-sidebar.js +657 -0
  66. package/dist/components/sidebar/cs-sidebar.js.map +1 -0
  67. package/dist/components/skeleton/cs-skeleton.js +32 -0
  68. package/dist/components/skeleton/cs-skeleton.js.map +1 -0
  69. package/dist/components/sonner/cs-sonner.js +76 -0
  70. package/dist/components/sonner/cs-sonner.js.map +1 -0
  71. package/dist/components/spinner/cs-spinner.js +34 -0
  72. package/dist/components/spinner/cs-spinner.js.map +1 -0
  73. package/dist/components/switch/cs-switch.js +38 -0
  74. package/dist/components/switch/cs-switch.js.map +1 -0
  75. package/dist/components/table/cs-data-base-table.js +108 -0
  76. package/dist/components/table/cs-data-base-table.js.map +1 -0
  77. package/dist/components/table/cs-data-table.js +32 -0
  78. package/dist/components/table/cs-data-table.js.map +1 -0
  79. package/dist/components/table/cs-skeleton-table.js +41 -0
  80. package/dist/components/table/cs-skeleton-table.js.map +1 -0
  81. package/dist/components/table/cs-table.js +120 -0
  82. package/dist/components/table/cs-table.js.map +1 -0
  83. package/dist/components/tabs/cs-simple-tabs.js +24 -0
  84. package/dist/components/tabs/cs-simple-tabs.js.map +1 -0
  85. package/dist/components/tabs/cs-tabs.js +114 -0
  86. package/dist/components/tabs/cs-tabs.js.map +1 -0
  87. package/dist/components/toggle/cs-toggle-group.js +65 -0
  88. package/dist/components/toggle/cs-toggle-group.js.map +1 -0
  89. package/dist/components/toggle/cs-toggle.js +46 -0
  90. package/dist/components/toggle/cs-toggle.js.map +1 -0
  91. package/dist/components/tooltip/cs-simple-tooltip.js +16 -0
  92. package/dist/components/tooltip/cs-simple-tooltip.js.map +1 -0
  93. package/dist/components/tooltip/cs-tooltip.js +72 -0
  94. package/dist/components/tooltip/cs-tooltip.js.map +1 -0
  95. package/dist/constants/cs-chart-option.constant.js +105 -0
  96. package/dist/constants/cs-chart-option.constant.js.map +1 -0
  97. package/dist/cs-ui.css +73 -108
  98. package/dist/hooks/use-accordion.js +54 -0
  99. package/dist/hooks/use-accordion.js.map +1 -0
  100. package/dist/hooks/use-infinite-scroll.js +40 -0
  101. package/dist/hooks/use-infinite-scroll.js.map +1 -0
  102. package/dist/hooks/use-laptop.js +20 -0
  103. package/dist/hooks/use-laptop.js.map +1 -0
  104. package/dist/hooks/use-mobile.js +20 -0
  105. package/dist/hooks/use-mobile.js.map +1 -0
  106. package/dist/index.d.ts +19 -6
  107. package/dist/index.js +287 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/lib/chart.util.js +48 -0
  110. package/dist/lib/chart.util.js.map +1 -0
  111. package/dist/lib/style.util.js +19 -0
  112. package/dist/lib/style.util.js.map +1 -0
  113. package/dist/lib/utils.js +27 -0
  114. package/dist/lib/utils.js.map +1 -0
  115. package/package.json +4 -5
  116. package/dist/index.cjs.js +0 -147659
  117. package/dist/index.cjs.js.map +0 -1
  118. package/dist/index.es.js +0 -147624
  119. package/dist/index.es.js.map +0 -1
@@ -0,0 +1,105 @@
1
+ import { getFillerColor } from "../lib/chart.util.js";
2
+ import { csChartTooltipStyle } from "../components/tooltip/cs-tooltip.js";
3
+ const CsChartBaseOptions = {
4
+ tooltip: {
5
+ className: csChartTooltipStyle,
6
+ borderColor: "transparent"
7
+ },
8
+ legend: {
9
+ bottom: 0,
10
+ icon: "circle",
11
+ itemWidth: 12,
12
+ itemHeight: 12,
13
+ itemGap: 12,
14
+ textStyle: {
15
+ color: "var(--chart-data-label-font)"
16
+ }
17
+ }
18
+ };
19
+ const CsLineChartTheme = {
20
+ line: {
21
+ symbol: "none",
22
+ symbolSize: 8,
23
+ itemStyle: {
24
+ borderWidth: 2
25
+ }
26
+ }
27
+ };
28
+ const CsChartAxisOptions = {
29
+ grid: {
30
+ containLabel: true,
31
+ top: 10,
32
+ bottom: 40,
33
+ left: 10,
34
+ right: 10,
35
+ borderColor: "var(--chart-wrapper-grid-color)",
36
+ show: false
37
+ },
38
+ xAxis: {
39
+ axisLine: {
40
+ lineStyle: {
41
+ color: "var(--chart-wrapper-axis-color)"
42
+ }
43
+ },
44
+ axisLabel: {
45
+ color: "var(--chart-wrapper-label)"
46
+ },
47
+ splitLine: {
48
+ lineStyle: {
49
+ color: "var(--chart-wrapper-grid-color)"
50
+ }
51
+ }
52
+ },
53
+ yAxis: {
54
+ axisLine: {
55
+ lineStyle: {
56
+ color: "var(--chart-wrapper-axis-color)"
57
+ }
58
+ },
59
+ axisLabel: {
60
+ color: "var(--chart-wrapper-label)"
61
+ },
62
+ splitLine: {
63
+ lineStyle: {
64
+ color: "var(--chart-wrapper-grid-color)"
65
+ }
66
+ }
67
+ }
68
+ };
69
+ const getCsChartZoomOptions = () => ({
70
+ dataZoom: [
71
+ {
72
+ type: "inside",
73
+ disabled: true,
74
+ start: 0,
75
+ end: 100
76
+ },
77
+ {
78
+ type: "slider",
79
+ show: false,
80
+ start: 0,
81
+ end: 100,
82
+ bottom: 20,
83
+ height: 24,
84
+ borderColor: "var(--chart-range-slider-track-border)",
85
+ backgroundColor: "var(--chart-range-slider-track-bg)",
86
+ fillerColor: getFillerColor(),
87
+ handleSize: "100%",
88
+ handleStyle: {
89
+ color: "var(--chart-range-slider-thumb-handle)",
90
+ borderColor: "var(--chart-range-slider-thumb-handle-border)",
91
+ borderWidth: 1
92
+ },
93
+ moveHandleStyle: {
94
+ color: "var(--chart-range-slider-thumb-bar)"
95
+ }
96
+ }
97
+ ]
98
+ });
99
+ export {
100
+ CsChartAxisOptions,
101
+ CsChartBaseOptions,
102
+ CsLineChartTheme,
103
+ getCsChartZoomOptions
104
+ };
105
+ //# sourceMappingURL=cs-chart-option.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cs-chart-option.constant.js","sources":["../../src/constants/cs-chart-option.constant.ts"],"sourcesContent":["import { IXChartBodyProps } from \"x-charts/components/chart/x-charts-body\";\nimport { csChartTooltipStyle } from \"../components/tooltip\";\nimport { getFillerColor } from '../lib/chart.util';\n\nexport const CsChartBaseOptions: IXChartBodyProps['customOptions'] = {\n tooltip: {\n className: csChartTooltipStyle,\n borderColor: \"transparent\"\n },\n legend: {\n bottom: 0,\n icon: 'circle',\n itemWidth: 12,\n itemHeight: 12,\n itemGap: 12,\n textStyle: {\n color: 'var(--chart-data-label-font)',\n }\n }\n}\n\nexport const CsLineChartTheme = {\n line: {\n symbol: 'none',\n symbolSize: 8,\n itemStyle: {\n borderWidth: 2\n }\n }\n}\n\nexport const CsChartAxisOptions: IXChartBodyProps['customOptions'] = {\n grid: {\n containLabel: true,\n top: 10,\n bottom: 40,\n left: 10,\n right: 10,\n borderColor: 'var(--chart-wrapper-grid-color)',\n show: false\n },\n xAxis: {\n axisLine: {\n lineStyle: {\n color: 'var(--chart-wrapper-axis-color)'\n }\n },\n axisLabel: {\n color: 'var(--chart-wrapper-label)'\n },\n splitLine: {\n lineStyle: {\n color: 'var(--chart-wrapper-grid-color)'\n }\n }\n },\n yAxis: {\n axisLine: {\n lineStyle: {\n color: 'var(--chart-wrapper-axis-color)'\n }\n },\n axisLabel: {\n color: 'var(--chart-wrapper-label)'\n },\n splitLine: {\n lineStyle: {\n color: 'var(--chart-wrapper-grid-color)'\n }\n }\n }\n}\n\nexport const getCsChartZoomOptions = (): IXChartBodyProps['customOptions'] => ({\n dataZoom: [\n {\n type: 'inside',\n disabled: true,\n start: 0,\n end: 100\n },\n {\n type: 'slider',\n show: false,\n start: 0,\n end: 100,\n bottom: 20,\n height: 24,\n borderColor: 'var(--chart-range-slider-track-border)',\n backgroundColor: 'var(--chart-range-slider-track-bg)',\n fillerColor: getFillerColor(),\n handleSize: '100%',\n handleStyle: {\n color: 'var(--chart-range-slider-thumb-handle)',\n borderColor: 'var(--chart-range-slider-thumb-handle-border)',\n borderWidth: 1\n },\n moveHandleStyle: {\n color: 'var(--chart-range-slider-thumb-bar)',\n },\n }\n ]\n})"],"names":[],"mappings":";;AAIO,MAAM,qBAAwD;AAAA,EACnE,SAAS;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,EAAA;AAAA,EAEd,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,WAAW;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ;AAEO,MAAM,mBAAmB;AAAA,EAC9B,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,WAAW;AAAA,MACT,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;AAEO,MAAM,qBAAwD;AAAA,EACnE,MAAM;AAAA,IACJ,cAAc;AAAA,IACd,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,UAAU;AAAA,MACR,WAAW;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,WAAW;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAET,WAAW;AAAA,MACT,WAAW;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF,OAAO;AAAA,IACL,UAAU;AAAA,MACR,WAAW;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,WAAW;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,IAET,WAAW;AAAA,MACT,WAAW;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAEJ;AAEO,MAAM,wBAAwB,OAA0C;AAAA,EAC7E,UAAU;AAAA,IACR;AAAA,MACE,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO;AAAA,MACP,KAAK;AAAA,IAAA;AAAA,IAEP;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,aAAa,eAAA;AAAA,MACb,YAAY;AAAA,MACZ,aAAa;AAAA,QACX,OAAO;AAAA,QACP,aAAa;AAAA,QACb,aAAa;AAAA,MAAA;AAAA,MAEf,iBAAiB;AAAA,QACd,OAAO;AAAA,MAAA;AAAA,IACV;AAAA,EACF;AAEJ;"}
package/dist/cs-ui.css CHANGED
@@ -837,7 +837,7 @@
837
837
  --toast-error-description: var(--font-color-secondary-default);
838
838
  --toast-error-icon: var(--color-state-error-default);
839
839
  --calendar-date-picker-radius: var(--radius-medium);
840
- --calendar-days-week-font: var(--font-color-onbrand-default);
840
+ --calendar-days-week-font: var(--font-color-primary-default);
841
841
  --calendar-date-picker-padding-x: var(--spacing-component-padding-md);
842
842
  --calendar-date-picker-padding-y: var(--spacing-component-padding-md);
843
843
  --calendar-date-picker-icon-size: var(--icon-size-medium);
@@ -2036,10 +2036,6 @@
2036
2036
  width: calc(2rem + var(--switch-common-padding-x) * 2);
2037
2037
  }
2038
2038
 
2039
- .w-\[var\(--radix-navigation-menu-viewport-width\)\] {
2040
- width: var(--radix-navigation-menu-viewport-width);
2041
- }
2042
-
2043
2039
  .w-auto {
2044
2040
  width: auto;
2045
2041
  }
@@ -4087,6 +4083,10 @@
4087
4083
  padding-bottom: calc(var(--spacing) * 2);
4088
4084
  }
4089
4085
 
4086
+ .pb-40 {
4087
+ padding-bottom: calc(var(--spacing) * 40);
4088
+ }
4089
+
4090
4090
  .pb-section-lg {
4091
4091
  padding-bottom: var(--spacing-12);
4092
4092
  }
@@ -4829,6 +4829,10 @@
4829
4829
  color: var(--color-green-700);
4830
4830
  }
4831
4831
 
4832
+ .text-red-500 {
4833
+ color: var(--color-red-500);
4834
+ }
4835
+
4832
4836
  .text-red-700 {
4833
4837
  color: var(--color-red-700);
4834
4838
  }
@@ -6075,6 +6079,18 @@
6075
6079
  cursor: not-allowed;
6076
6080
  }
6077
6081
 
6082
+ .aria-disabled\:text-\(--navigation-button-bottom-border-disabled-font\)[aria-disabled="true"] {
6083
+ color: var(--navigation-button-bottom-border-disabled-font);
6084
+ }
6085
+
6086
+ .aria-disabled\:text-\(--navigation-button-gradient-disabled-font\)[aria-disabled="true"] {
6087
+ color: var(--navigation-button-gradient-disabled-font);
6088
+ }
6089
+
6090
+ .aria-disabled\:text-\(--navigation-button-solid-ghost-disabled-font\)[aria-disabled="true"] {
6091
+ color: var(--navigation-button-solid-ghost-disabled-font);
6092
+ }
6093
+
6078
6094
  .aria-disabled\:opacity-\(--opacity-state-disabled\)[aria-disabled="true"] {
6079
6095
  opacity: var(--opacity-state-disabled);
6080
6096
  }
@@ -6099,6 +6115,14 @@
6099
6115
  opacity: .5;
6100
6116
  }
6101
6117
 
6118
+ .data-\[active\=true\]\:border-b-\(--navigation-button-bottom-border-active-border\)[data-active="true"] {
6119
+ border-bottom-color: var(--navigation-button-bottom-border-active-border);
6120
+ }
6121
+
6122
+ .data-\[active\=true\]\:bg-\(--navigation-button-solid-ghost-active-bg\)[data-active="true"] {
6123
+ background-color: var(--navigation-button-solid-ghost-active-bg);
6124
+ }
6125
+
6102
6126
  .data-\[active\=true\]\:bg-\(--navigation-item-content-hover-bg\)[data-active="true"] {
6103
6127
  background-color: var(--navigation-item-content-hover-bg);
6104
6128
  }
@@ -6107,6 +6131,18 @@
6107
6131
  background-color: var(--navigation-item-hover-bg);
6108
6132
  }
6109
6133
 
6134
+ .data-\[active\=true\]\:text-\(--navigation-button-bottom-border-active-font\)[data-active="true"] {
6135
+ color: var(--navigation-button-bottom-border-active-font);
6136
+ }
6137
+
6138
+ .data-\[active\=true\]\:text-\(--navigation-button-gradient-active-font\)[data-active="true"] {
6139
+ color: var(--navigation-button-gradient-active-font);
6140
+ }
6141
+
6142
+ .data-\[active\=true\]\:text-\(--navigation-button-solid-ghost-active-font\)[data-active="true"] {
6143
+ color: var(--navigation-button-solid-ghost-active-font);
6144
+ }
6145
+
6110
6146
  .data-\[active\=true\]\:text-\(--navigation-item-content-hover-title\)[data-active="true"] {
6111
6147
  color: var(--navigation-item-content-hover-title);
6112
6148
  }
@@ -6115,6 +6151,10 @@
6115
6151
  color: var(--navigation-item-hover-font);
6116
6152
  }
6117
6153
 
6154
+ .data-\[active\=true\]\:gradient-primary-vertical[data-active="true"] {
6155
+ background: linear-gradient(180deg, var(--color-gradient-primary-start) 0%, var(--color-gradient-primary-end) 100%);
6156
+ }
6157
+
6118
6158
  .data-\[disabled\]\:pointer-events-none[data-disabled] {
6119
6159
  pointer-events: none;
6120
6160
  }
@@ -6544,6 +6584,10 @@
6544
6584
  --tw-enter-scale: .95;
6545
6585
  }
6546
6586
 
6587
+ .data-\[state\=open\]\:gradient-primary-vertical[data-state="open"] {
6588
+ background: linear-gradient(180deg, var(--color-gradient-primary-start) 0%, var(--color-gradient-primary-end) 100%);
6589
+ }
6590
+
6547
6591
  .data-\[state\=open\]\:slide-in-from-bottom[data-state="open"] {
6548
6592
  --tw-enter-translate-y: 100%;
6549
6593
  }
@@ -6752,10 +6796,6 @@
6752
6796
  }
6753
6797
 
6754
6798
  @media not all and (min-width: 840px) {
6755
- .max-mobile\:static {
6756
- position: static;
6757
- }
6758
-
6759
6799
  .max-mobile\:flex {
6760
6800
  display: flex;
6761
6801
  }
@@ -6764,10 +6804,6 @@
6764
6804
  display: none;
6765
6805
  }
6766
6806
 
6767
- .max-mobile\:\!w-full, .max-mobile\:w-full\! {
6768
- width: 100% !important;
6769
- }
6770
-
6771
6807
  .max-mobile\:grid-cols-1 {
6772
6808
  grid-template-columns: repeat(1, minmax(0, 1fr));
6773
6809
  }
@@ -7337,6 +7373,30 @@
7337
7373
  color: var(--select-base-disabled-icon);
7338
7374
  }
7339
7375
 
7376
+ .aria-disabled\:\[\&_svg\]\:text-\(--navigation-button-bottom-border-disabled-icon\)[aria-disabled="true"] svg {
7377
+ color: var(--navigation-button-bottom-border-disabled-icon);
7378
+ }
7379
+
7380
+ .aria-disabled\:\[\&_svg\]\:text-\(--navigation-button-gradient-disabled-icon\)[aria-disabled="true"] svg {
7381
+ color: var(--navigation-button-gradient-disabled-icon);
7382
+ }
7383
+
7384
+ .aria-disabled\:\[\&_svg\]\:text-\(--navigation-button-solid-ghost-disabled-icon\)[aria-disabled="true"] svg {
7385
+ color: var(--navigation-button-solid-ghost-disabled-icon);
7386
+ }
7387
+
7388
+ .data-\[active\=true\]\:\[\&_svg\]\:text-\(--navigation-button-bottom-border-active-icon\)[data-active="true"] svg {
7389
+ color: var(--navigation-button-bottom-border-active-icon);
7390
+ }
7391
+
7392
+ .data-\[active\=true\]\:\[\&_svg\]\:text-\(--navigation-button-gradient-active-icon\)[data-active="true"] svg {
7393
+ color: var(--navigation-button-gradient-active-icon);
7394
+ }
7395
+
7396
+ .data-\[active\=true\]\:\[\&_svg\]\:text-\(--navigation-button-solid-ghost-active-icon\)[data-active="true"] svg {
7397
+ color: var(--navigation-button-solid-ghost-active-icon);
7398
+ }
7399
+
7340
7400
  .data-\[active\=true\]\:\[\&_svg\]\:text-\(--navigation-item-content-hover-icon\)[data-active="true"] svg {
7341
7401
  color: var(--navigation-item-content-hover-icon);
7342
7402
  }
@@ -7448,11 +7508,6 @@
7448
7508
  height: var(--toggle-common-icon-size);
7449
7509
  }
7450
7510
 
7451
- .\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*="size-"]) {
7452
- width: calc(var(--spacing) * 4);
7453
- height: calc(var(--spacing) * 4);
7454
- }
7455
-
7456
7511
  .\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6 svg:not([class*="size-"]) {
7457
7512
  width: calc(var(--spacing) * 6);
7458
7513
  height: calc(var(--spacing) * 6);
@@ -8800,93 +8855,3 @@
8800
8855
  height: 0;
8801
8856
  }
8802
8857
  }
8803
- pre code.hljs {
8804
- display: block;
8805
- overflow-x: auto;
8806
- padding: 1em
8807
- }
8808
- code.hljs {
8809
- padding: 3px 5px
8810
- }
8811
- /*
8812
-
8813
- Atom One Dark by Daniel Gamage
8814
- Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax
8815
-
8816
- base: #282c34
8817
- mono-1: #abb2bf
8818
- mono-2: #818896
8819
- mono-3: #5c6370
8820
- hue-1: #56b6c2
8821
- hue-2: #61aeee
8822
- hue-3: #c678dd
8823
- hue-4: #98c379
8824
- hue-5: #e06c75
8825
- hue-5-2: #be5046
8826
- hue-6: #d19a66
8827
- hue-6-2: #e6c07b
8828
-
8829
- */
8830
- .hljs {
8831
- color: #abb2bf;
8832
- background: #282c34
8833
- }
8834
- .hljs-comment,
8835
- .hljs-quote {
8836
- color: #5c6370;
8837
- font-style: italic
8838
- }
8839
- .hljs-doctag,
8840
- .hljs-keyword,
8841
- .hljs-formula {
8842
- color: #c678dd
8843
- }
8844
- .hljs-section,
8845
- .hljs-name,
8846
- .hljs-selector-tag,
8847
- .hljs-deletion,
8848
- .hljs-subst {
8849
- color: #e06c75
8850
- }
8851
- .hljs-literal {
8852
- color: #56b6c2
8853
- }
8854
- .hljs-string,
8855
- .hljs-regexp,
8856
- .hljs-addition,
8857
- .hljs-attribute,
8858
- .hljs-meta .hljs-string {
8859
- color: #98c379
8860
- }
8861
- .hljs-attr,
8862
- .hljs-variable,
8863
- .hljs-template-variable,
8864
- .hljs-type,
8865
- .hljs-selector-class,
8866
- .hljs-selector-attr,
8867
- .hljs-selector-pseudo,
8868
- .hljs-number {
8869
- color: #d19a66
8870
- }
8871
- .hljs-symbol,
8872
- .hljs-bullet,
8873
- .hljs-link,
8874
- .hljs-meta,
8875
- .hljs-selector-id,
8876
- .hljs-title {
8877
- color: #61aeee
8878
- }
8879
- .hljs-built_in,
8880
- .hljs-title.class_,
8881
- .hljs-class .hljs-title {
8882
- color: #e6c07b
8883
- }
8884
- .hljs-emphasis {
8885
- font-style: italic
8886
- }
8887
- .hljs-strong {
8888
- font-weight: bold
8889
- }
8890
- .hljs-link {
8891
- text-decoration: underline
8892
- }
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import { useMemo, useState, useCallback } from "react";
3
+ const useAccordion = (itemKeys, options) => {
4
+ const { initialOpenedItems = [], defaultOpenAll = false } = options ?? {};
5
+ const initialState = useMemo(() => {
6
+ if (defaultOpenAll) {
7
+ return itemKeys;
8
+ }
9
+ return initialOpenedItems;
10
+ }, []);
11
+ const [openedItems, setOpenedItems] = useState(initialState);
12
+ const allKeys = useMemo(
13
+ () => itemKeys,
14
+ [itemKeys]
15
+ );
16
+ const toggleAccordion = useCallback((value) => {
17
+ setOpenedItems(
18
+ (prev) => prev.includes(value) ? prev.filter((item) => item !== value) : [...prev, value]
19
+ );
20
+ }, []);
21
+ const openAllAccordions = useCallback(() => {
22
+ setOpenedItems(allKeys);
23
+ }, [allKeys]);
24
+ const closeAllAccordions = useCallback(() => {
25
+ setOpenedItems([]);
26
+ }, []);
27
+ const toggleAllAccordions = useCallback(() => {
28
+ setOpenedItems(
29
+ (prev) => prev.length === allKeys.length ? [] : allKeys
30
+ );
31
+ }, [allKeys]);
32
+ const isOpenedAll = useMemo(
33
+ () => openedItems.length === allKeys.length && allKeys.length > 0,
34
+ [openedItems.length, allKeys.length]
35
+ );
36
+ const isOpened = useCallback(
37
+ (value) => openedItems.includes(value),
38
+ [openedItems]
39
+ );
40
+ return {
41
+ openedItems,
42
+ setOpenedItems,
43
+ toggleAccordion,
44
+ openAllAccordions,
45
+ closeAllAccordions,
46
+ toggleAllAccordions,
47
+ isOpenedAll,
48
+ isOpened
49
+ };
50
+ };
51
+ export {
52
+ useAccordion
53
+ };
54
+ //# sourceMappingURL=use-accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-accordion.js","sources":["../../src/hooks/use-accordion.tsx"],"sourcesContent":["'use client'\n\nimport { type Dispatch, type SetStateAction, useCallback, useMemo, useState } from 'react'\n\nexport interface UseCsAccordionOptions {\n /** 초기 열림 상태 (기본값: []) */\n initialOpenedItems?: string[]\n /** 초기에 모두 열림 상태로 시작 (기본값: false) */\n defaultOpenAll?: boolean\n}\n\nexport interface ReturnUseCsAccordion {\n openedItems: string[]\n setOpenedItems: Dispatch<SetStateAction<string[]>>\n toggleAccordion: (value: string) => void\n openAllAccordions: () => void\n closeAllAccordions: () => void\n toggleAllAccordions: () => void\n isOpenedAll: boolean\n isOpened: (value: string) => boolean\n}\n\n/**\n * CsAccordion 컴포넌트와 함께 사용하는 훅으로, 아코디언의 열림/닫힘 상태를 관리합니다.\n * \n * @var `openedItems` 열린 아코디언의 key 배열\n * @var `setOpenedItems` 열린 아코디언의 key 배열의 setter 함수\n * @var `toggleAccordion` 특정 아코디언을 토글하는 함수\n * @var `openAllAccordions` 모든 아코디언을 여는 함수\n * @var `closeAllAccordions` 모든 아코디언을 닫는 함수\n * @var `toggleAllAccordions` 모든 아코디언을 토글하는 함수 (모두 열림 → 모두 닫힘, 그 외 → 모두 열림)\n * @var `isOpenedAll` 모든 아코디언이 열려있는지 여부\n * @var `isOpened` 특정 아코디언이 열려있는지 확인하는 함수\n * \n * @example ```tsx\n * // 기본 사용법\n * const itemKeys = ['1', '2', '3']\n * \n * const {\n * openedItems,\n * setOpenedItems,\n * toggleAllAccordions,\n * isOpenedAll\n * } = useCsAccordion(itemKeys)\n * \n * return (\n * <>\n * <CsButton onClick={toggleAllAccordions}>\n * {isOpenedAll ? <Minimize2 /> : <Maximize2 />}\n * {isOpenedAll ? 'Collapse All' : 'Expand All'}\n * </CsButton>\n * \n * <CsAccordion\n * type=\"multiple\"\n * value={openedItems}\n * onValueChange={setOpenedItems}\n * >\n * {items.map((item) => (\n * <CsAccordionItem key={item.id} value={item.id}>\n * <CsAccordionTrigger>{item.title}</CsAccordionTrigger>\n * <CsAccordionContent>{item.content}</CsAccordionContent>\n * </CsAccordionItem>\n * ))}\n * </CsAccordion>\n * </>\n * )\n * ```\n * \n * @example ```tsx\n * // 초기 상태 설정\n * const { openedItems, setOpenedItems } = useCsAccordion(itemKeys, {\n * defaultOpenAll: true // 초기에 모두 열림\n * })\n * \n * // 또는\n * const { openedItems, setOpenedItems } = useCsAccordion(itemKeys, {\n * initialOpenedItems: ['1', '3'] // 특정 아이템만 열림\n * })\n * ```\n * \n * @param {string[]} itemKeys 아코디언 아이템의 key 배열\n * @param {UseCsAccordionOptions} options 옵션\n * @returns {ReturnUseCsAccordion}\n */\n\nexport const useAccordion = (\n itemKeys: string[],\n options?: UseCsAccordionOptions\n): ReturnUseCsAccordion => {\n const { initialOpenedItems = [], defaultOpenAll = false } = options ?? {}\n\n // 초기 상태 설정\n const initialState = useMemo(() => {\n if (defaultOpenAll) {\n return itemKeys\n }\n return initialOpenedItems\n }, []) // 의도적으로 빈 배열 - 초기 마운트 시에만 실행\n\n const [openedItems, setOpenedItems] = useState<string[]>(initialState)\n\n // 모든 아이템의 key 배열을 메모이제이션\n const allKeys = useMemo(\n () => itemKeys,\n [itemKeys]\n )\n\n // 특정 아코디언 토글\n const toggleAccordion = useCallback((value: string) => {\n setOpenedItems((prev) =>\n prev.includes(value)\n ? prev.filter((item) => item !== value)\n : [...prev, value]\n )\n }, [])\n\n // 모든 아코디언 열기\n const openAllAccordions = useCallback(() => {\n setOpenedItems(allKeys)\n }, [allKeys])\n\n // 모든 아코디언 닫기\n const closeAllAccordions = useCallback(() => {\n setOpenedItems([])\n }, [])\n\n // 모든 아코디언 토글 (모두 열림 → 닫힘, 그 외 → 열림)\n const toggleAllAccordions = useCallback(() => {\n setOpenedItems((prev) =>\n prev.length === allKeys.length ? [] : allKeys\n )\n }, [allKeys])\n\n // 모든 아코디언이 열려있는지 확인\n const isOpenedAll = useMemo(\n () => openedItems.length === allKeys.length && allKeys.length > 0,\n [openedItems.length, allKeys.length]\n )\n\n // 특정 아코디언이 열려있는지 확인\n const isOpened = useCallback(\n (value: string) => openedItems.includes(value),\n [openedItems]\n )\n\n return {\n openedItems,\n setOpenedItems,\n toggleAccordion,\n openAllAccordions,\n closeAllAccordions,\n toggleAllAccordions,\n isOpenedAll,\n isOpened,\n }\n}\n\n"],"names":[],"mappings":";;AAyFE,MAAA,eAAQ,CAAA,UAAqB,YAAI;AAGjC,QAAM,EAAA,qBAAuB,CAAA,GAAA,iBAAM,MAAA,IAAA,WAAA,CAAA;AACjC,QAAI,eAAA,QAAgB,MAAA;AAClB,wBAAO;AACT,aAAA;AAAA,IACA;AACF,WAAK;AAAA,EAEL,GAAA,CAAA,CAAA;AAGA,QAAM,CAAA,aAAU,cAAA,IAAA,SAAA,YAAA;AAAA,kBACR;AAAA,IACN,MAAC;AAAA,IACH,CAAA,QAAA;AAAA,EAGA;AACE,QAAA,kBAAA,YAAA,CAAA,UAAA;AAAA;AAAA,MAIA,CAAA,SAAA,KAAA,SAAA,KAAA,IAAA,KAAA,OAAA,CAAA,SAAA,SAAA,KAAA,IAAA,CAAA,GAAA,MAAA,KAAA;AAAA,IACF;AAAA,EAGA,GAAA,CAAA,CAAA;AACE,QAAA,oBAAsB,YAAA,MAAA;AACxB,mBAAY,OAAA;AAAA,EAGZ,GAAA,CAAA,OAAM,CAAA;AACJ,QAAA,qBAAiB,YAAA,MAAA;AACnB,mBAAK,CAAA,CAAA;AAAA,EAGL,GAAA,CAAA,CAAA;AACE,QAAA,sBAAA,YAAA,MAAA;AAAA;AAAA,MAEA,CAAA,SAAA,KAAA,WAAA,QAAA,SAAA,CAAA,IAAA;AAAA,IACF;AAAA,EAGA,GAAA,CAAA,OAAM,CAAA;AAAc,QAClB,cAAkB;AAAA,IAClB,MAAC,uBAA4B,QAAM,UAAA,QAAA,SAAA;AAAA,IACrC,CAAA,YAAA,QAAA,QAAA,MAAA;AAAA,EAGA;AAAiB,mBACI;AAAA,IACnB,CAAC,UAAA,YAAW,SAAA,KAAA;AAAA,IACd,CAAA,WAAA;AAAA,EAEA;AAAO,SACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACF;AAAA,EACF;;"}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { useRef, useEffect } from "react";
3
+ function useInfiniteScroll({
4
+ fetchMore,
5
+ hasMore,
6
+ isFetching,
7
+ threshold = 200
8
+ }) {
9
+ const observerRef = useRef(null);
10
+ useEffect(() => {
11
+ const observer = new IntersectionObserver(
12
+ (entries) => {
13
+ const first = entries[0];
14
+ if (first.isIntersecting && hasMore && !isFetching) {
15
+ fetchMore();
16
+ }
17
+ },
18
+ {
19
+ root: null,
20
+ // viewport
21
+ rootMargin: `${threshold}px`,
22
+ threshold: 0.1
23
+ }
24
+ );
25
+ const currentTarget = observerRef.current;
26
+ if (currentTarget) {
27
+ observer.observe(currentTarget);
28
+ }
29
+ return () => {
30
+ if (currentTarget) {
31
+ observer.unobserve(currentTarget);
32
+ }
33
+ };
34
+ }, [fetchMore, hasMore, isFetching, threshold]);
35
+ return { scrollContainerRef: observerRef };
36
+ }
37
+ export {
38
+ useInfiniteScroll
39
+ };
40
+ //# sourceMappingURL=use-infinite-scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-infinite-scroll.js","sources":["../../src/hooks/use-infinite-scroll.ts"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef } from 'react';\n\ninterface UseInfiniteScrollProps {\n fetchMore: () => void;\n hasMore: boolean;\n isFetching: boolean;\n threshold?: number; // IntersectionObserver의 rootMargin으로 사용 (px 단위)\n useWindowScroll?: boolean; // 하위 호환성을 위해 남겨둠 (사용 안 함)\n}\n\nexport function useInfiniteScroll<T extends HTMLElement = HTMLDivElement>({\n fetchMore,\n hasMore,\n isFetching,\n threshold = 200,\n}: UseInfiniteScrollProps) {\n const observerRef = useRef<T>(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n const first = entries[0];\n if (first.isIntersecting && hasMore && !isFetching) {\n fetchMore();\n }\n },\n {\n root: null, // viewport\n rootMargin: `${threshold}px`,\n threshold: 0.1,\n }\n );\n\n const currentTarget = observerRef.current;\n if (currentTarget) {\n observer.observe(currentTarget);\n }\n\n return () => {\n if (currentTarget) {\n observer.unobserve(currentTarget);\n }\n };\n }, [fetchMore, hasMore, isFetching, threshold]);\n\n return { scrollContainerRef: observerRef }; // 호환성을 위해 이름 유지 (실제로는 sentinel ref)\n}\n"],"names":[],"mappings":";;AAY0E,SACxE,kBAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACF,YAA2B;AACzB;AAEA,QAAA,cAAgB,OAAA,IAAA;AACd,YAAM;AAAe,qBACN,IAAA;AAAA,MACX,CAAA,YAAM;AACN,sBAAU,QAAA,CAAA;AACR,oCAAU,WAAA,CAAA,YAAA;AACZ,oBAAA;AAAA,QACF;AAAA,MACA;AAAA,MAAA;AAAA,QACQ,MAAA;AAAA;AAAA,QAEN,YAAW,GAAA,SAAA;AAAA,QAAA,WAAA;AAAA,MAEf;AAAA,IAEA;AACA,0BAAmB,YAAA;AACjB,QAAA,eAAiB;AACnB,eAAA,QAAA,aAAA;AAAA,IAEA;AACE;AACE,UAAA,eAAS;AACX,iBAAA,UAAA,aAAA;AAAA,MACF;AAAA;EAGF,GAAA,CAAA,WAAS,SAAA,qBAAgC,CAAA;AAC3C,SAAA,EAAA,oBAAA,YAAA;;"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ const LAPTOP_BREAKPOINT = 1600;
4
+ function useIsLaptop() {
5
+ const [isLaptop, setIsLaptop] = React.useState(void 0);
6
+ React.useEffect(() => {
7
+ const mql = window.matchMedia(`(max-width: ${LAPTOP_BREAKPOINT - 1}px)`);
8
+ const onChange = () => {
9
+ setIsLaptop(window.innerWidth < LAPTOP_BREAKPOINT);
10
+ };
11
+ mql.addEventListener("change", onChange);
12
+ setIsLaptop(window.innerWidth < LAPTOP_BREAKPOINT);
13
+ return () => mql.removeEventListener("change", onChange);
14
+ }, []);
15
+ return !!isLaptop;
16
+ }
17
+ export {
18
+ useIsLaptop
19
+ };
20
+ //# sourceMappingURL=use-laptop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-laptop.js","sources":["../../src/hooks/use-laptop.tsx"],"sourcesContent":["'use client'\n\nimport * as React from \"react\"\n\n// Matches --breakpoint-laptop in packages/cs-ui/src/styles/globals.css\nconst LAPTOP_BREAKPOINT = 1600\n\nexport function useIsLaptop() {\n const [isLaptop, setIsLaptop] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${LAPTOP_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsLaptop(window.innerWidth < LAPTOP_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsLaptop(window.innerWidth < LAPTOP_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isLaptop\n}\n"],"names":[],"mappings":";;AAOO,MAAA,oBAAuB;AAC5B,SAAO,cAAU;AAEjB,QAAM,CAAA,UAAU,WAAM,IAAA,MAAA,SAAA,MAAA;AACpB,kBAAY;AACZ,UAAM,MAAA,OAAW,WAAM,eAAA,oBAAA,CAAA,KAAA;AACrB,qBAAY,MAAO;AACrB,kBAAA,OAAA,aAAA,iBAAA;AAAA,IACA;AACA,yBAAmB;AACnB,qDAA+C;AACjD,WAAK,MAAA,IAAA,oBAAA,UAAA,QAAA;AAAA,EAEL,GAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;;"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ const MOBILE_BREAKPOINT = 840;
4
+ function useIsMobile() {
5
+ const [isMobile, setIsMobile] = React.useState(void 0);
6
+ React.useEffect(() => {
7
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
8
+ const onChange = () => {
9
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
10
+ };
11
+ mql.addEventListener("change", onChange);
12
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
13
+ return () => mql.removeEventListener("change", onChange);
14
+ }, []);
15
+ return !!isMobile;
16
+ }
17
+ export {
18
+ useIsMobile
19
+ };
20
+ //# sourceMappingURL=use-mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.js","sources":["../../src/hooks/use-mobile.tsx"],"sourcesContent":["'use client'\n\nimport * as React from \"react\"\n\n// Matches --breakpoint-max-mobile in packages/cs-ui/src/styles/globals.css\nconst MOBILE_BREAKPOINT = 840\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n"],"names":[],"mappings":";;AAOO,MAAA,oBAAuB;AAC5B,SAAO,cAAU;AAEjB,QAAM,CAAA,UAAU,WAAM,IAAA,MAAA,SAAA,MAAA;AACpB,kBAAY;AACZ,UAAM,MAAA,OAAW,WAAM,eAAA,oBAAA,CAAA,KAAA;AACrB,qBAAY,MAAO;AACrB,kBAAA,OAAA,aAAA,iBAAA;AAAA,IACA;AACA,yBAAmB;AACnB,qDAA+C;AACjD,WAAK,MAAA,IAAA,oBAAA,UAAA,QAAA;AAAA,EAEL,GAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;;"}
package/dist/index.d.ts CHANGED
@@ -224,19 +224,15 @@ export declare function CsCollapsibleContent({ ...props }: React.ComponentProps<
224
224
 
225
225
  export declare function CsCollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>): JSX.Element;
226
226
 
227
- export declare function CsDataTable<T>(props: CsDataTableProps<T>): JSX.Element;
227
+ export declare function CsDataBaseTable<T>(props: CsDataBaseTableProps<T>): JSX.Element;
228
228
 
229
- export declare interface CsDataTableProps<T> {
229
+ export declare interface CsDataBaseTableProps<T> {
230
230
  columns: TableColumnDef<T>[];
231
231
  rows?: T[];
232
232
  expandable?: boolean;
233
- isLoading?: boolean;
234
- isError?: boolean;
235
233
  className?: string;
236
- defaultRowSize?: number;
237
234
  subRowsName?: string;
238
235
  EmptyFallback?: ReactNode;
239
- ErrorFallback?: ReactNode;
240
236
  defaultHeaderComp?: ComponentType<{
241
237
  column: any;
242
238
  children: React.ReactNode;
@@ -246,6 +242,15 @@ export declare interface CsDataTableProps<T> {
246
242
  isFetchingNextPage?: boolean;
247
243
  }
248
244
 
245
+ export declare function CsDataTable<T>(props: CsDataTableProps<T>): JSX.Element;
246
+
247
+ export declare interface CsDataTableProps<T> extends CsDataBaseTableProps<T> {
248
+ isLoading?: boolean;
249
+ isError?: boolean;
250
+ defaultRowSize?: number;
251
+ ErrorFallback?: ReactNode;
252
+ }
253
+
249
254
  export declare function CsDatePicker({ children, className, ...props }: PropsWithChildren<CsCalendarProps>): default_2.JSX.Element;
250
255
 
251
256
  export declare type CsDatePickerProps = PropsWithChildren<CsCalendarProps>;
@@ -765,6 +770,14 @@ export declare type CsSkeletonProps = React.ComponentProps<"div"> & {
765
770
  radius?: 'default' | 'max';
766
771
  };
767
772
 
773
+ export declare function CsSkeletonTable<T>({ columns, rowCount, className, }: CsSkeletonTableProps<T>): JSX.Element;
774
+
775
+ export declare interface CsSkeletonTableProps<T> {
776
+ columns: TableColumnDef<T>[];
777
+ rowCount?: number;
778
+ className?: string;
779
+ }
780
+
768
781
  export declare const csSkeletonVariants: (props?: ({
769
782
  radius?: "default" | "max" | null | undefined;
770
783
  } & ClassProp) | undefined) => string;