@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.
- package/dist/components/accordion/cs-accordion.js +116 -0
- package/dist/components/accordion/cs-accordion.js.map +1 -0
- package/dist/components/alert-dialog/cs-alert-dialog.js +148 -0
- package/dist/components/alert-dialog/cs-alert-dialog.js.map +1 -0
- package/dist/components/avatar/cs-avatar.js +44 -0
- package/dist/components/avatar/cs-avatar.js.map +1 -0
- package/dist/components/badge/cs-badge.js +40 -0
- package/dist/components/badge/cs-badge.js.map +1 -0
- package/dist/components/box/cs-box.js +37 -0
- package/dist/components/box/cs-box.js.map +1 -0
- package/dist/components/button/cs-button.js +91 -0
- package/dist/components/button/cs-button.js.map +1 -0
- package/dist/components/calendar/cs-calendar.js +199 -0
- package/dist/components/calendar/cs-calendar.js.map +1 -0
- package/dist/components/card/cs-card.js +95 -0
- package/dist/components/card/cs-card.js.map +1 -0
- package/dist/components/chart/cs-chart.js +88 -0
- package/dist/components/chart/cs-chart.js.map +1 -0
- package/dist/components/checkbox/cs-checkbox.js +55 -0
- package/dist/components/checkbox/cs-checkbox.js.map +1 -0
- package/dist/components/code-block/cs-code-block.js +39 -0
- package/dist/components/code-block/cs-code-block.js.map +1 -0
- package/dist/components/code-block/cs-code-highlighter.js +59 -0
- package/dist/components/code-block/cs-code-highlighter.js.map +1 -0
- package/dist/components/collapsible/cs-collapsible.js +36 -0
- package/dist/components/collapsible/cs-collapsible.js.map +1 -0
- package/dist/components/date-picker/cs-date-picker.js +25 -0
- package/dist/components/date-picker/cs-date-picker.js.map +1 -0
- package/dist/components/dialog/cs-dialog.js +131 -0
- package/dist/components/dialog/cs-dialog.js.map +1 -0
- package/dist/components/drawer/cs-drawer.js +131 -0
- package/dist/components/drawer/cs-drawer.js.map +1 -0
- package/dist/components/dropdown-menu/cs-dropdown-menu.js +247 -0
- package/dist/components/dropdown-menu/cs-dropdown-menu.js.map +1 -0
- package/dist/components/dropzone/cs-dropzone.js +147 -0
- package/dist/components/dropzone/cs-dropzone.js.map +1 -0
- package/dist/components/empty/cs-empty.js +107 -0
- package/dist/components/empty/cs-empty.js.map +1 -0
- package/dist/components/field/cs-field.js +218 -0
- package/dist/components/field/cs-field.js.map +1 -0
- package/dist/components/input/cs-input-group.js +207 -0
- package/dist/components/input/cs-input-group.js.map +1 -0
- package/dist/components/input/cs-input.js +40 -0
- package/dist/components/input/cs-input.js.map +1 -0
- package/dist/components/label/cs-label.js +26 -0
- package/dist/components/label/cs-label.js.map +1 -0
- package/dist/components/navigation-menu/cs-navigation-menu.js +214 -0
- package/dist/components/navigation-menu/cs-navigation-menu.js.map +1 -0
- package/dist/components/pagination/cs-pagination.js +124 -0
- package/dist/components/pagination/cs-pagination.js.map +1 -0
- package/dist/components/popover/cs-popover.js +60 -0
- package/dist/components/popover/cs-popover.js.map +1 -0
- package/dist/components/progress/cs-progress.js +62 -0
- package/dist/components/progress/cs-progress.js.map +1 -0
- package/dist/components/scroll-area/cs-scroll-area.js +61 -0
- package/dist/components/scroll-area/cs-scroll-area.js.map +1 -0
- package/dist/components/select/cs-select.js +195 -0
- package/dist/components/select/cs-select.js.map +1 -0
- package/dist/components/select/cs-simple-select.js +32 -0
- package/dist/components/select/cs-simple-select.js.map +1 -0
- package/dist/components/separator/cs-separator.js +28 -0
- package/dist/components/separator/cs-separator.js.map +1 -0
- package/dist/components/sheet/cs-sheet.js +128 -0
- package/dist/components/sheet/cs-sheet.js.map +1 -0
- package/dist/components/sidebar/cs-sidebar.js +657 -0
- package/dist/components/sidebar/cs-sidebar.js.map +1 -0
- package/dist/components/skeleton/cs-skeleton.js +32 -0
- package/dist/components/skeleton/cs-skeleton.js.map +1 -0
- package/dist/components/sonner/cs-sonner.js +76 -0
- package/dist/components/sonner/cs-sonner.js.map +1 -0
- package/dist/components/spinner/cs-spinner.js +34 -0
- package/dist/components/spinner/cs-spinner.js.map +1 -0
- package/dist/components/switch/cs-switch.js +38 -0
- package/dist/components/switch/cs-switch.js.map +1 -0
- package/dist/components/table/cs-data-base-table.js +108 -0
- package/dist/components/table/cs-data-base-table.js.map +1 -0
- package/dist/components/table/cs-data-table.js +32 -0
- package/dist/components/table/cs-data-table.js.map +1 -0
- package/dist/components/table/cs-skeleton-table.js +41 -0
- package/dist/components/table/cs-skeleton-table.js.map +1 -0
- package/dist/components/table/cs-table.js +120 -0
- package/dist/components/table/cs-table.js.map +1 -0
- package/dist/components/tabs/cs-simple-tabs.js +24 -0
- package/dist/components/tabs/cs-simple-tabs.js.map +1 -0
- package/dist/components/tabs/cs-tabs.js +114 -0
- package/dist/components/tabs/cs-tabs.js.map +1 -0
- package/dist/components/toggle/cs-toggle-group.js +65 -0
- package/dist/components/toggle/cs-toggle-group.js.map +1 -0
- package/dist/components/toggle/cs-toggle.js +46 -0
- package/dist/components/toggle/cs-toggle.js.map +1 -0
- package/dist/components/tooltip/cs-simple-tooltip.js +16 -0
- package/dist/components/tooltip/cs-simple-tooltip.js.map +1 -0
- package/dist/components/tooltip/cs-tooltip.js +72 -0
- package/dist/components/tooltip/cs-tooltip.js.map +1 -0
- package/dist/constants/cs-chart-option.constant.js +105 -0
- package/dist/constants/cs-chart-option.constant.js.map +1 -0
- package/dist/cs-ui.css +73 -108
- package/dist/hooks/use-accordion.js +54 -0
- package/dist/hooks/use-accordion.js.map +1 -0
- package/dist/hooks/use-infinite-scroll.js +40 -0
- package/dist/hooks/use-infinite-scroll.js.map +1 -0
- package/dist/hooks/use-laptop.js +20 -0
- package/dist/hooks/use-laptop.js.map +1 -0
- package/dist/hooks/use-mobile.js +20 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/index.d.ts +19 -6
- package/dist/index.js +287 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/chart.util.js +48 -0
- package/dist/lib/chart.util.js.map +1 -0
- package/dist/lib/style.util.js +19 -0
- package/dist/lib/style.util.js.map +1 -0
- package/dist/lib/utils.js +27 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +4 -5
- package/dist/index.cjs.js +0 -147659
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.es.js +0 -147624
- 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-
|
|
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
|
|
227
|
+
export declare function CsDataBaseTable<T>(props: CsDataBaseTableProps<T>): JSX.Element;
|
|
228
228
|
|
|
229
|
-
export declare interface
|
|
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;
|