@sth87/shadcn-design-system 0.1.0 → 0.1.2
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/cjs/components/Checkbox/Checkbox.cjs +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/Rate/Rate.cjs +1 -1
- package/dist/cjs/components/Rate/Rate.cjs.map +1 -1
- package/dist/cjs/components/Sheet/Sheet.cjs +1 -1
- package/dist/cjs/components/Sheet/Sheet.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs +1 -1
- package/dist/cjs/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs +1 -1
- package/dist/cjs/components/Stepper/StepperWrapper.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.cjs +1 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs +1 -1
- package/dist/cjs/components/Table/data-table-column-header.cjs.map +1 -1
- package/dist/cjs/components/Tabs/classes.cjs +1 -1
- package/dist/cjs/components/Tabs/classes.cjs.map +1 -1
- package/dist/cjs/components/TimeGridView.cjs +1 -1
- package/dist/cjs/components/TimeGridView.cjs.map +1 -1
- package/dist/cjs/components/Toast/Toast.cjs +1 -1
- package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/WheelColumn.cjs +1 -1
- package/dist/cjs/components/WheelColumn.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
- package/dist/cjs/styles/index.css +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +20 -20
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Input/Input.js +43 -43
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Rate/Rate.js +15 -15
- package/dist/esm/components/Rate/Rate.js.map +1 -1
- package/dist/esm/components/Sheet/Sheet.js +25 -25
- package/dist/esm/components/Sheet/Sheet.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js +139 -139
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Stepper/Stepper.js +52 -52
- package/dist/esm/components/Stepper/Stepper.js.map +1 -1
- package/dist/esm/components/Stepper/StepperWrapper.js +25 -25
- package/dist/esm/components/Stepper/StepperWrapper.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js +19 -19
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Table/data-table-column-header.js +22 -22
- package/dist/esm/components/Table/data-table-column-header.js.map +1 -1
- package/dist/esm/components/Tabs/classes.js +128 -128
- package/dist/esm/components/Tabs/classes.js.map +1 -1
- package/dist/esm/components/TimeGridView.js +27 -27
- package/dist/esm/components/TimeGridView.js.map +1 -1
- package/dist/esm/components/Toast/Toast.js +26 -26
- package/dist/esm/components/Toast/Toast.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +42 -42
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/WheelColumn.js +9 -9
- package/dist/esm/components/WheelColumn.js.map +1 -1
- package/dist/esm/packages/ui/src/components/calendar.js +73 -73
- package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
- package/dist/esm/styles/index.css +1 -1
- package/package.json +1 -1
|
@@ -75,188 +75,188 @@ const J = {
|
|
|
75
75
|
root: "ds:flex ds:flex-row-reverse",
|
|
76
76
|
list: "ds:flex-col ds:h-fit"
|
|
77
77
|
}
|
|
78
|
-
}, O = (
|
|
79
|
-
const
|
|
78
|
+
}, O = (a, t) => {
|
|
79
|
+
const d = {
|
|
80
80
|
primary: {
|
|
81
|
-
bg: "data-[state=active]:bg-primary dark:data-[state=active]:bg-primary data-[state=active]:text-primary-foreground dark:data-[state=active]:text-primary-foreground",
|
|
82
|
-
text: "data-[state=active]:text-primary dark:data-[state=active]:text-primary",
|
|
83
|
-
border: "data-[state=active]:border-primary dark:data-[state=active]:border-primary"
|
|
81
|
+
bg: "ds:data-[state=active]:bg-primary ds:dark:data-[state=active]:bg-primary ds:data-[state=active]:text-primary-foreground ds:dark:data-[state=active]:text-primary-foreground",
|
|
82
|
+
text: "ds:data-[state=active]:text-primary ds:dark:data-[state=active]:text-primary",
|
|
83
|
+
border: "ds:data-[state=active]:border-primary ds:dark:data-[state=active]:border-primary"
|
|
84
84
|
},
|
|
85
85
|
secondary: {
|
|
86
|
-
bg: "data-[state=active]:bg-secondary dark:data-[state=active]:bg-secondary data-[state=active]:text-secondary-foreground dark:data-[state=active]:text-secondary-foreground",
|
|
87
|
-
text: "data-[state=active]:text-secondary dark:data-[state=active]:text-secondary",
|
|
88
|
-
border: "data-[state=active]:border-secondary dark:data-[state=active]:border-secondary"
|
|
86
|
+
bg: "ds:data-[state=active]:bg-secondary ds:dark:data-[state=active]:bg-secondary ds:data-[state=active]:text-secondary-foreground ds:dark:data-[state=active]:text-secondary-foreground",
|
|
87
|
+
text: "ds:data-[state=active]:text-secondary ds:dark:data-[state=active]:text-secondary",
|
|
88
|
+
border: "ds:data-[state=active]:border-secondary ds:dark:data-[state=active]:border-secondary"
|
|
89
89
|
},
|
|
90
90
|
muted: {
|
|
91
|
-
bg: "data-[state=active]:bg-muted dark:data-[state=active]:bg-muted data-[state=active]:text-muted-foreground dark:data-[state=active]:text-muted-foreground",
|
|
92
|
-
text: "data-[state=active]:text-muted-foreground dark:data-[state=active]:text-muted-foreground",
|
|
93
|
-
border: "data-[state=active]:border-border dark:data-[state=active]:border-border"
|
|
91
|
+
bg: "ds:data-[state=active]:bg-muted ds:dark:data-[state=active]:bg-muted ds:data-[state=active]:text-muted-foreground ds:dark:data-[state=active]:text-muted-foreground",
|
|
92
|
+
text: "ds:data-[state=active]:text-muted-foreground ds:dark:data-[state=active]:text-muted-foreground",
|
|
93
|
+
border: "ds:data-[state=active]:border-border ds:dark:data-[state=active]:border-border"
|
|
94
94
|
},
|
|
95
95
|
accent: {
|
|
96
|
-
bg: "data-[state=active]:bg-accent dark:data-[state=active]:bg-accent data-[state=active]:text-accent-foreground dark:data-[state=active]:text-accent-foreground",
|
|
97
|
-
text: "data-[state=active]:text-accent-foreground dark:data-[state=active]:text-accent-foreground",
|
|
98
|
-
border: "data-[state=active]:border-accent dark:data-[state=active]:border-accent"
|
|
96
|
+
bg: "ds:data-[state=active]:bg-accent ds:dark:data-[state=active]:bg-accent ds:data-[state=active]:text-accent-foreground ds:dark:data-[state=active]:text-accent-foreground",
|
|
97
|
+
text: "ds:data-[state=active]:text-accent-foreground ds:dark:data-[state=active]:text-accent-foreground",
|
|
98
|
+
border: "ds:data-[state=active]:border-accent ds:dark:data-[state=active]:border-accent"
|
|
99
99
|
},
|
|
100
100
|
destructive: {
|
|
101
|
-
bg: "data-[state=active]:bg-destructive dark:data-[state=active]:bg-destructive data-[state=active]:text-destructive-foreground dark:data-[state=active]:text-destructive-foreground",
|
|
102
|
-
text: "data-[state=active]:text-destructive dark:data-[state=active]:text-destructive",
|
|
103
|
-
border: "data-[state=active]:border-destructive dark:data-[state=active]:border-destructive"
|
|
101
|
+
bg: "ds:data-[state=active]:bg-destructive ds:dark:data-[state=active]:bg-destructive ds:data-[state=active]:text-destructive-foreground ds:dark:data-[state=active]:text-destructive-foreground",
|
|
102
|
+
text: "ds:data-[state=active]:text-destructive ds:dark:data-[state=active]:text-destructive",
|
|
103
|
+
border: "ds:data-[state=active]:border-destructive ds:dark:data-[state=active]:border-destructive"
|
|
104
104
|
},
|
|
105
105
|
success: {
|
|
106
|
-
bg: "data-[state=active]:bg-success dark:data-[state=active]:bg-success data-[state=active]:text-success-foreground dark:data-[state=active]:text-success-foreground",
|
|
107
|
-
text: "data-[state=active]:text-success dark:data-[state=active]:text-success",
|
|
108
|
-
border: "data-[state=active]:border-success dark:data-[state=active]:border-success"
|
|
106
|
+
bg: "ds:data-[state=active]:bg-success ds:dark:data-[state=active]:bg-success ds:data-[state=active]:text-success-foreground ds:dark:data-[state=active]:text-success-foreground",
|
|
107
|
+
text: "ds:data-[state=active]:text-success ds:dark:data-[state=active]:text-success",
|
|
108
|
+
border: "ds:data-[state=active]:border-success ds:dark:data-[state=active]:border-success"
|
|
109
109
|
},
|
|
110
110
|
warning: {
|
|
111
|
-
bg: "data-[state=active]:bg-warning dark:data-[state=active]:bg-warning data-[state=active]:text-warning-foreground dark:data-[state=active]:text-warning-foreground",
|
|
112
|
-
text: "data-[state=active]:text-warning dark:data-[state=active]:text-warning",
|
|
113
|
-
border: "data-[state=active]:border-warning dark:data-[state=active]:border-warning"
|
|
111
|
+
bg: "ds:data-[state=active]:bg-warning ds:dark:data-[state=active]:bg-warning ds:data-[state=active]:text-warning-foreground ds:dark:data-[state=active]:text-warning-foreground",
|
|
112
|
+
text: "ds:data-[state=active]:text-warning ds:dark:data-[state=active]:text-warning",
|
|
113
|
+
border: "ds:data-[state=active]:border-warning ds:dark:data-[state=active]:border-warning"
|
|
114
114
|
}
|
|
115
115
|
}[t];
|
|
116
|
-
switch (
|
|
116
|
+
switch (a) {
|
|
117
117
|
case "bordered":
|
|
118
118
|
case "pills":
|
|
119
|
-
return `${
|
|
119
|
+
return `${d.bg} ds:dark:data-[state=active]:border-transparent`;
|
|
120
120
|
case "pill-stroke":
|
|
121
|
-
return "data-[state=active]:bg-transparent dark:data-[state=active]:bg-transparent";
|
|
121
|
+
return "ds:data-[state=active]:bg-transparent ds:dark:data-[state=active]:bg-transparent";
|
|
122
122
|
case "text":
|
|
123
|
-
return
|
|
123
|
+
return d.text;
|
|
124
124
|
case "outline":
|
|
125
|
-
return
|
|
125
|
+
return d.border;
|
|
126
126
|
case "underlined":
|
|
127
|
-
return s(
|
|
127
|
+
return s(d.border, d.text);
|
|
128
128
|
case "enclosed":
|
|
129
|
-
return s(
|
|
129
|
+
return s(d.border, d.text);
|
|
130
130
|
case "enclosed-fill":
|
|
131
|
-
return s(
|
|
131
|
+
return s(d.border, d.text);
|
|
132
132
|
default:
|
|
133
133
|
return "";
|
|
134
134
|
}
|
|
135
|
-
}, Q = (
|
|
136
|
-
if (
|
|
135
|
+
}, Q = (a, t, r) => {
|
|
136
|
+
if (a === "underlined")
|
|
137
137
|
return {
|
|
138
|
-
top: "border-b",
|
|
139
|
-
bottom: "border-t",
|
|
140
|
-
left: "border-r",
|
|
141
|
-
right: "border-l"
|
|
142
|
-
}[
|
|
143
|
-
if (
|
|
144
|
-
const
|
|
145
|
-
top: "border-b",
|
|
146
|
-
bottom: "border-t",
|
|
147
|
-
left: "border-r",
|
|
148
|
-
right: "border-l"
|
|
149
|
-
},
|
|
138
|
+
top: "ds:border-b",
|
|
139
|
+
bottom: "ds:border-t",
|
|
140
|
+
left: "ds:border-r",
|
|
141
|
+
right: "ds:border-l"
|
|
142
|
+
}[r];
|
|
143
|
+
if (a === "enclosed") {
|
|
144
|
+
const d = {
|
|
145
|
+
top: "ds:border-b",
|
|
146
|
+
bottom: "ds:border-t",
|
|
147
|
+
left: "ds:border-r",
|
|
148
|
+
right: "ds:border-l"
|
|
149
|
+
}, e = {
|
|
150
150
|
top: {
|
|
151
|
-
primary: "border-b-primary",
|
|
152
|
-
secondary: "border-b-secondary",
|
|
153
|
-
muted: "border-b-border",
|
|
154
|
-
accent: "border-b-accent",
|
|
155
|
-
destructive: "border-b-destructive",
|
|
156
|
-
success: "border-b-success",
|
|
157
|
-
warning: "border-b-warning"
|
|
151
|
+
primary: "ds:border-b-primary",
|
|
152
|
+
secondary: "ds:border-b-secondary",
|
|
153
|
+
muted: "ds:border-b-border",
|
|
154
|
+
accent: "ds:border-b-accent",
|
|
155
|
+
destructive: "ds:border-b-destructive",
|
|
156
|
+
success: "ds:border-b-success",
|
|
157
|
+
warning: "ds:border-b-warning"
|
|
158
158
|
},
|
|
159
159
|
bottom: {
|
|
160
|
-
primary: "border-t-primary",
|
|
161
|
-
secondary: "border-t-secondary",
|
|
162
|
-
muted: "border-t-border",
|
|
163
|
-
accent: "border-t-accent",
|
|
164
|
-
destructive: "border-t-destructive",
|
|
165
|
-
success: "border-t-success",
|
|
166
|
-
warning: "border-t-warning"
|
|
160
|
+
primary: "ds:border-t-primary",
|
|
161
|
+
secondary: "ds:border-t-secondary",
|
|
162
|
+
muted: "ds:border-t-border",
|
|
163
|
+
accent: "ds:border-t-accent",
|
|
164
|
+
destructive: "ds:border-t-destructive",
|
|
165
|
+
success: "ds:border-t-success",
|
|
166
|
+
warning: "ds:border-t-warning"
|
|
167
167
|
},
|
|
168
168
|
left: {
|
|
169
|
-
primary: "border-r-primary",
|
|
170
|
-
secondary: "border-r-secondary",
|
|
171
|
-
muted: "border-r-border",
|
|
172
|
-
accent: "border-r-accent",
|
|
173
|
-
destructive: "border-r-destructive",
|
|
174
|
-
success: "border-r-success",
|
|
175
|
-
warning: "border-r-warning"
|
|
169
|
+
primary: "ds:border-r-primary",
|
|
170
|
+
secondary: "ds:border-r-secondary",
|
|
171
|
+
muted: "ds:border-r-border",
|
|
172
|
+
accent: "ds:border-r-accent",
|
|
173
|
+
destructive: "ds:border-r-destructive",
|
|
174
|
+
success: "ds:border-r-success",
|
|
175
|
+
warning: "ds:border-r-warning"
|
|
176
176
|
},
|
|
177
177
|
right: {
|
|
178
|
-
primary: "border-l-primary",
|
|
179
|
-
secondary: "border-l-secondary",
|
|
180
|
-
muted: "border-l-border",
|
|
181
|
-
accent: "border-l-accent",
|
|
182
|
-
destructive: "border-l-destructive",
|
|
183
|
-
success: "border-l-success",
|
|
184
|
-
warning: "border-l-warning"
|
|
178
|
+
primary: "ds:border-l-primary",
|
|
179
|
+
secondary: "ds:border-l-secondary",
|
|
180
|
+
muted: "ds:border-l-border",
|
|
181
|
+
accent: "ds:border-l-accent",
|
|
182
|
+
destructive: "ds:border-l-destructive",
|
|
183
|
+
success: "ds:border-l-success",
|
|
184
|
+
warning: "ds:border-l-warning"
|
|
185
185
|
}
|
|
186
186
|
};
|
|
187
|
-
return `${
|
|
187
|
+
return `${d[r]} ${e[r][t]}`;
|
|
188
188
|
}
|
|
189
|
-
if (
|
|
190
|
-
const
|
|
191
|
-
top: "border-b",
|
|
192
|
-
bottom: "border-t",
|
|
193
|
-
left: "border-r",
|
|
194
|
-
right: "border-l"
|
|
195
|
-
},
|
|
189
|
+
if (a === "enclosed-fill") {
|
|
190
|
+
const d = {
|
|
191
|
+
top: "ds:border-b",
|
|
192
|
+
bottom: "ds:border-t",
|
|
193
|
+
left: "ds:border-r",
|
|
194
|
+
right: "ds:border-l"
|
|
195
|
+
}, e = {
|
|
196
196
|
top: {
|
|
197
|
-
primary: "border-b-primary",
|
|
198
|
-
secondary: "border-b-secondary",
|
|
199
|
-
muted: "border-b-border",
|
|
200
|
-
accent: "border-b-accent",
|
|
201
|
-
destructive: "border-b-destructive",
|
|
202
|
-
success: "border-b-success",
|
|
203
|
-
warning: "border-b-warning"
|
|
197
|
+
primary: "ds:border-b-primary",
|
|
198
|
+
secondary: "ds:border-b-secondary",
|
|
199
|
+
muted: "ds:border-b-border",
|
|
200
|
+
accent: "ds:border-b-accent",
|
|
201
|
+
destructive: "ds:border-b-destructive",
|
|
202
|
+
success: "ds:border-b-success",
|
|
203
|
+
warning: "ds:border-b-warning"
|
|
204
204
|
},
|
|
205
205
|
bottom: {
|
|
206
|
-
primary: "border-t-primary",
|
|
207
|
-
secondary: "border-t-secondary",
|
|
208
|
-
muted: "border-t-border",
|
|
209
|
-
accent: "border-t-accent",
|
|
210
|
-
destructive: "border-t-destructive",
|
|
211
|
-
success: "border-t-success",
|
|
212
|
-
warning: "border-t-warning"
|
|
206
|
+
primary: "ds:border-t-primary",
|
|
207
|
+
secondary: "ds:border-t-secondary",
|
|
208
|
+
muted: "ds:border-t-border",
|
|
209
|
+
accent: "ds:border-t-accent",
|
|
210
|
+
destructive: "ds:border-t-destructive",
|
|
211
|
+
success: "ds:border-t-success",
|
|
212
|
+
warning: "ds:border-t-warning"
|
|
213
213
|
},
|
|
214
214
|
left: {
|
|
215
|
-
primary: "border-r-primary",
|
|
216
|
-
secondary: "border-r-secondary",
|
|
217
|
-
muted: "border-r-border",
|
|
218
|
-
accent: "border-r-accent",
|
|
219
|
-
destructive: "border-r-destructive",
|
|
220
|
-
success: "border-r-success",
|
|
221
|
-
warning: "border-r-warning"
|
|
215
|
+
primary: "ds:border-r-primary",
|
|
216
|
+
secondary: "ds:border-r-secondary",
|
|
217
|
+
muted: "ds:border-r-border",
|
|
218
|
+
accent: "ds:border-r-accent",
|
|
219
|
+
destructive: "ds:border-r-destructive",
|
|
220
|
+
success: "ds:border-r-success",
|
|
221
|
+
warning: "ds:border-r-warning"
|
|
222
222
|
},
|
|
223
223
|
right: {
|
|
224
|
-
primary: "border-l-primary",
|
|
225
|
-
secondary: "border-l-secondary",
|
|
226
|
-
muted: "border-l-border",
|
|
227
|
-
accent: "border-l-accent",
|
|
228
|
-
destructive: "border-l-destructive",
|
|
229
|
-
success: "border-l-success",
|
|
230
|
-
warning: "border-l-warning"
|
|
224
|
+
primary: "ds:border-l-primary",
|
|
225
|
+
secondary: "ds:border-l-secondary",
|
|
226
|
+
muted: "ds:border-l-border",
|
|
227
|
+
accent: "ds:border-l-accent",
|
|
228
|
+
destructive: "ds:border-l-destructive",
|
|
229
|
+
success: "ds:border-l-success",
|
|
230
|
+
warning: "ds:border-l-warning"
|
|
231
231
|
}
|
|
232
232
|
};
|
|
233
|
-
return `${
|
|
233
|
+
return `${d[r]} ${e[r][t]}`;
|
|
234
234
|
}
|
|
235
235
|
return "";
|
|
236
|
-
}, R = (
|
|
236
|
+
}, R = (a) => {
|
|
237
237
|
const t = "ds:bg-background ds:dark:bg-background ds:rounded-none ds:border-0 ds:border-transparent ds:data-[state=active]:shadow-none";
|
|
238
238
|
return {
|
|
239
|
-
top: `${t} border-b-2 h-full`,
|
|
240
|
-
bottom: `${t} border-t-2 h-full`,
|
|
241
|
-
left: `${t} border-r-2 w-full`,
|
|
242
|
-
right: `${t} border-l-2 w-full`
|
|
243
|
-
}[
|
|
244
|
-
}, S = (
|
|
239
|
+
top: `${t} ds:border-b-2 ds:h-full`,
|
|
240
|
+
bottom: `${t} ds:border-t-2 ds:h-full`,
|
|
241
|
+
left: `${t} ds:border-r-2 ds:w-full`,
|
|
242
|
+
right: `${t} ds:border-l-2 ds:w-full`
|
|
243
|
+
}[a];
|
|
244
|
+
}, S = (a) => {
|
|
245
245
|
const t = "ds:bg-background ds:dark:bg-background ds:border ds:border-transparent ds:data-[state=active]:shadow-none ds:rounded-none";
|
|
246
246
|
return {
|
|
247
|
-
top: `${t} rounded-t-md data-[state=active]:border-t data-[state=active]:border-l data-[state=active]:border-r data-[state=active]:border-b-0 data-[state=active]:border-b-background dark:data-[state=active]:border-b-background h-full data-[state=active]:-mb-0.5 data-[state=active]:translate-y-[0px]`,
|
|
248
|
-
bottom: `${t} rounded-b-md data-[state=active]:border-b data-[state=active]:border-l data-[state=active]:border-r data-[state=active]:border-t-0 data-[state=active]:border-t-background dark:data-[state=active]:border-t-background h-full data-[state=active]:-mt-0.5 data-[state=active]:translate-y-[0px]`,
|
|
249
|
-
left: `${t} rounded-l-md data-[state=active]:border-t data-[state=active]:border-l data-[state=active]:border-b data-[state=active]:border-r-0 data-[state=active]:border-r-background dark:data-[state=active]:border-r-background w-full data-[state=active]:-mr-0.5 data-[state=active]:translate-x-[1px]`,
|
|
250
|
-
right: `${t} rounded-r-md data-[state=active]:border-t data-[state=active]:border-r data-[state=active]:border-b data-[state=active]:border-l-0 data-[state=active]:border-l-background dark:data-[state=active]:border-l-background w-full data-[state=active]:-ml-0.5 data-[state=active]:translate-x-[1px]`
|
|
251
|
-
}[
|
|
252
|
-
}, V = (
|
|
247
|
+
top: `${t} ds:rounded-t-md ds:data-[state=active]:border-t ds:data-[state=active]:border-l ds:data-[state=active]:border-r ds:data-[state=active]:border-b-0 ds:data-[state=active]:border-b-background dark:ds:data-[state=active]:border-b-background ds:h-full ds:data-[state=active]:-mb-0.5 ds:data-[state=active]:translate-y-[0px]`,
|
|
248
|
+
bottom: `${t} ds:rounded-b-md ds:data-[state=active]:border-b ds:data-[state=active]:border-l ds:data-[state=active]:border-r ds:data-[state=active]:border-t-0 ds:data-[state=active]:border-t-background dark:ds:data-[state=active]:border-t-background ds:h-full ds:data-[state=active]:-mt-0.5 ds:data-[state=active]:translate-y-[0px]`,
|
|
249
|
+
left: `${t} ds:rounded-l-md ds:data-[state=active]:border-t ds:data-[state=active]:border-l ds:data-[state=active]:border-b ds:data-[state=active]:border-r-0 ds:data-[state=active]:border-r-background dark:ds:data-[state=active]:border-r-background ds:w-full ds:data-[state=active]:-mr-0.5 ds:data-[state=active]:translate-x-[1px]`,
|
|
250
|
+
right: `${t} ds:rounded-r-md ds:data-[state=active]:border-t ds:data-[state=active]:border-r ds:data-[state=active]:border-b ds:data-[state=active]:border-l-0 ds:data-[state=active]:border-l-background dark:ds:data-[state=active]:border-l-background ds:w-full ds:data-[state=active]:-ml-0.5 ds:data-[state=active]:translate-x-[1px]`
|
|
251
|
+
}[a];
|
|
252
|
+
}, V = (a) => {
|
|
253
253
|
const t = "ds:bg-muted ds:dark:bg-muted ds:border ds:border-transparent ds:data-[state=active]:bg-background ds:dark:data-[state=active]:bg-background ds:data-[state=active]:shadow-none ds:rounded-none";
|
|
254
254
|
return {
|
|
255
|
-
top: `${t} rounded-t-md data-[state=active]:border-t data-[state=active]:border-l data-[state=active]:border-r data-[state=active]:border-b-0 data-[state=active]:border-b-background dark:data-[state=active]:border-b-background h-full data-[state=active]:-mb-0.5 data-[state=active]:translate-y-[0px]`,
|
|
256
|
-
bottom: `${t} rounded-b-md data-[state=active]:border-b data-[state=active]:border-l data-[state=active]:border-r data-[state=active]:border-t-0 data-[state=active]:border-t-background dark:data-[state=active]:border-t-background h-full data-[state=active]:-mt-0.5 data-[state=active]:translate-y-[0px]`,
|
|
257
|
-
left: `${t} rounded-l-md data-[state=active]:border-t data-[state=active]:border-l data-[state=active]:border-b data-[state=active]:border-r-0 data-[state=active]:border-r-background dark:data-[state=active]:border-r-background w-full data-[state=active]:-mr-0.5 data-[state=active]:translate-x-[1px]`,
|
|
258
|
-
right: `${t} rounded-r-md data-[state=active]:border-t data-[state=active]:border-r data-[state=active]:border-b data-[state=active]:border-l-0 data-[state=active]:border-l-background dark:data-[state=active]:border-l-background w-full data-[state=active]:-ml-0.5 data-[state=active]:translate-x-[1px]`
|
|
259
|
-
}[
|
|
255
|
+
top: `${t} ds:rounded-t-md ds:data-[state=active]:border-t ds:data-[state=active]:border-l ds:data-[state=active]:border-r ds:data-[state=active]:border-b-0 ds:data-[state=active]:border-b-background dark:ds:data-[state=active]:border-b-background ds:h-full ds:data-[state=active]:-mb-0.5 ds:data-[state=active]:translate-y-[0px]`,
|
|
256
|
+
bottom: `${t} ds:rounded-b-md ds:data-[state=active]:border-b ds:data-[state=active]:border-l ds:data-[state=active]:border-r ds:data-[state=active]:border-t-0 ds:data-[state=active]:border-t-background dark:ds:data-[state=active]:border-t-background ds:h-full ds:data-[state=active]:-mt-0.5 ds:data-[state=active]:translate-y-[0px]`,
|
|
257
|
+
left: `${t} ds:rounded-l-md ds:data-[state=active]:border-t ds:data-[state=active]:border-l ds:data-[state=active]:border-b ds:data-[state=active]:border-r-0 ds:data-[state=active]:border-r-background dark:ds:data-[state=active]:border-r-background ds:w-full ds:data-[state=active]:-mr-0.5 ds:data-[state=active]:translate-x-[1px]`,
|
|
258
|
+
right: `${t} ds:rounded-r-md ds:data-[state=active]:border-t ds:data-[state=active]:border-r ds:data-[state=active]:border-b ds:data-[state=active]:border-l-0 ds:data-[state=active]:border-l-background dark:ds:data-[state=active]:border-l-background ds:w-full ds:data-[state=active]:-ml-0.5 ds:data-[state=active]:translate-x-[1px]`
|
|
259
|
+
}[a];
|
|
260
260
|
}, W = {
|
|
261
261
|
// Solid: Default style (muted background, active has white background)
|
|
262
262
|
solid: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classes.js","sources":["../../../../src/components/Tabs/classes.ts"],"sourcesContent":["import { cn } from \"@dsui/ui/index\";\nimport type {\n TabAlignment,\n TabColor,\n TabPosition,\n TabSize,\n TabVariant,\n} from \"./types\";\n\nexport const sizeClasses: Record<\n TabSize,\n { horizontal: string; vertical: string }\n> = {\n sm: {\n horizontal: \"ds:text-xs ds:h-7 ds:[&>button]:px-2\",\n vertical: \"ds:text-xs ds:[&>button]:py-0.5\",\n },\n md: {\n horizontal: \"ds:text-sm ds:h-9 ds:[&>button]:px-3\",\n vertical: \"ds:text-sm ds:[&>button]:py-1\",\n },\n lg: {\n horizontal: \"ds:text-base ds:h-11 ds:[&>button]:px-4\",\n vertical: \"ds:text-base ds:[&>button]:py-1.5\",\n },\n};\n\nexport const alignmentClasses: Record<\n TabAlignment,\n { horizontal: string; vertical: string }\n> = {\n start: {\n horizontal: \"ds:justify-start\",\n vertical: \"ds:items-start\",\n },\n center: {\n horizontal: \"ds:justify-center\",\n vertical: \"ds:items-center\",\n },\n end: {\n horizontal: \"ds:justify-end\",\n vertical: \"ds:items-end\",\n },\n};\n\nexport const positionClasses: Record<\n TabPosition,\n { root: string; list: string }\n> = {\n top: {\n root: \"ds:flex ds:flex-col\",\n list: \"ds:flex-row\",\n },\n bottom: {\n root: \"ds:flex ds:flex-col-reverse\",\n list: \"ds:flex-row\",\n },\n left: {\n root: \"ds:flex ds:flex-row\",\n list: \"ds:flex-col ds:h-fit\",\n },\n right: {\n root: \"ds:flex ds:flex-row-reverse\",\n list: \"ds:flex-col ds:h-fit\",\n },\n};\n\n// Color classes for backgrounds, text, and borders\nexport const getColorClasses = (\n variant: TabVariant,\n color: TabColor\n): string => {\n // Helper to generate color-specific classes based on variant\n const colorMap: Record<\n TabColor,\n { bg: string; text: string; border: string }\n > = {\n primary: {\n bg: \"data-[state=active]:bg-primary dark:data-[state=active]:bg-primary data-[state=active]:text-primary-foreground dark:data-[state=active]:text-primary-foreground\",\n text: \"data-[state=active]:text-primary dark:data-[state=active]:text-primary\",\n border:\n \"data-[state=active]:border-primary dark:data-[state=active]:border-primary\",\n },\n secondary: {\n bg: \"data-[state=active]:bg-secondary dark:data-[state=active]:bg-secondary data-[state=active]:text-secondary-foreground dark:data-[state=active]:text-secondary-foreground\",\n text: \"data-[state=active]:text-secondary dark:data-[state=active]:text-secondary\",\n border:\n \"data-[state=active]:border-secondary dark:data-[state=active]:border-secondary\",\n },\n muted: {\n bg: \"data-[state=active]:bg-muted dark:data-[state=active]:bg-muted data-[state=active]:text-muted-foreground dark:data-[state=active]:text-muted-foreground\",\n text: \"data-[state=active]:text-muted-foreground dark:data-[state=active]:text-muted-foreground\",\n border:\n \"data-[state=active]:border-border dark:data-[state=active]:border-border\",\n },\n accent: {\n bg: \"data-[state=active]:bg-accent dark:data-[state=active]:bg-accent data-[state=active]:text-accent-foreground dark:data-[state=active]:text-accent-foreground\",\n text: \"data-[state=active]:text-accent-foreground dark:data-[state=active]:text-accent-foreground\",\n border:\n \"data-[state=active]:border-accent dark:data-[state=active]:border-accent\",\n },\n destructive: {\n bg: \"data-[state=active]:bg-destructive dark:data-[state=active]:bg-destructive data-[state=active]:text-destructive-foreground dark:data-[state=active]:text-destructive-foreground\",\n text: \"data-[state=active]:text-destructive dark:data-[state=active]:text-destructive\",\n border:\n \"data-[state=active]:border-destructive dark:data-[state=active]:border-destructive\",\n },\n success: {\n bg: \"data-[state=active]:bg-success dark:data-[state=active]:bg-success data-[state=active]:text-success-foreground dark:data-[state=active]:text-success-foreground\",\n text: \"data-[state=active]:text-success dark:data-[state=active]:text-success\",\n border:\n \"data-[state=active]:border-success dark:data-[state=active]:border-success\",\n },\n warning: {\n bg: \"data-[state=active]:bg-warning dark:data-[state=active]:bg-warning data-[state=active]:text-warning-foreground dark:data-[state=active]:text-warning-foreground\",\n text: \"data-[state=active]:text-warning dark:data-[state=active]:text-warning\",\n border:\n \"data-[state=active]:border-warning dark:data-[state=active]:border-warning\",\n },\n };\n\n const colors = colorMap[color];\n\n switch (variant) {\n case \"bordered\":\n case \"pills\":\n // Background color on active state\n return `${colors.bg} dark:data-[state=active]:border-transparent`;\n case \"pill-stroke\":\n // Border color on active state, no background\n return `data-[state=active]:bg-transparent dark:data-[state=active]:bg-transparent`;\n case \"text\":\n // Text color only on active state\n return colors.text;\n case \"outline\":\n // Border color on active state\n return colors.border;\n case \"underlined\":\n // Bottom/side border color on active state\n return cn(colors.border, colors.text);\n case \"enclosed\":\n // Border color on active state (except bottom/side)\n return cn(colors.border, colors.text);\n case \"enclosed-fill\":\n // Border color on active state (except bottom/side)\n return cn(colors.border, colors.text);\n default:\n return \"\";\n }\n};\n\n// Get TabsList border classes based on position\nexport const getListBorderClasses = (\n variant: TabVariant,\n color: TabColor,\n tabPosition: TabPosition\n): string => {\n if (variant === \"underlined\") {\n // Underlined variant: border on the opposite side from where tabs connect\n const borderMap: Record<TabPosition, string> = {\n top: \"border-b\",\n bottom: \"border-t\",\n left: \"border-r\",\n right: \"border-l\",\n };\n return borderMap[tabPosition];\n }\n\n if (variant === \"enclosed\") {\n // Enclosed variant: colored border on the opposite side\n const borderBaseMap: Record<TabPosition, string> = {\n top: \"border-b\",\n bottom: \"border-t\",\n left: \"border-r\",\n right: \"border-l\",\n };\n\n const colorBorderMap: Record<TabPosition, Record<TabColor, string>> = {\n top: {\n primary: \"border-b-primary\",\n secondary: \"border-b-secondary\",\n muted: \"border-b-border\",\n accent: \"border-b-accent\",\n destructive: \"border-b-destructive\",\n success: \"border-b-success\",\n warning: \"border-b-warning\",\n },\n bottom: {\n primary: \"border-t-primary\",\n secondary: \"border-t-secondary\",\n muted: \"border-t-border\",\n accent: \"border-t-accent\",\n destructive: \"border-t-destructive\",\n success: \"border-t-success\",\n warning: \"border-t-warning\",\n },\n left: {\n primary: \"border-r-primary\",\n secondary: \"border-r-secondary\",\n muted: \"border-r-border\",\n accent: \"border-r-accent\",\n destructive: \"border-r-destructive\",\n success: \"border-r-success\",\n warning: \"border-r-warning\",\n },\n right: {\n primary: \"border-l-primary\",\n secondary: \"border-l-secondary\",\n muted: \"border-l-border\",\n accent: \"border-l-accent\",\n destructive: \"border-l-destructive\",\n success: \"border-l-success\",\n warning: \"border-l-warning\",\n },\n };\n return `${borderBaseMap[tabPosition]} ${colorBorderMap[tabPosition][color]}`;\n }\n\n if (variant === \"enclosed-fill\") {\n // Enclosed-fill variant: colored border on the opposite side\n const borderBaseMap: Record<TabPosition, string> = {\n top: \"border-b\",\n bottom: \"border-t\",\n left: \"border-r\",\n right: \"border-l\",\n };\n\n const colorBorderMap: Record<TabPosition, Record<TabColor, string>> = {\n top: {\n primary: \"border-b-primary\",\n secondary: \"border-b-secondary\",\n muted: \"border-b-border\",\n accent: \"border-b-accent\",\n destructive: \"border-b-destructive\",\n success: \"border-b-success\",\n warning: \"border-b-warning\",\n },\n bottom: {\n primary: \"border-t-primary\",\n secondary: \"border-t-secondary\",\n muted: \"border-t-border\",\n accent: \"border-t-accent\",\n destructive: \"border-t-destructive\",\n success: \"border-t-success\",\n warning: \"border-t-warning\",\n },\n left: {\n primary: \"border-r-primary\",\n secondary: \"border-r-secondary\",\n muted: \"border-r-border\",\n accent: \"border-r-accent\",\n destructive: \"border-r-destructive\",\n success: \"border-r-success\",\n warning: \"border-r-warning\",\n },\n right: {\n primary: \"border-l-primary\",\n secondary: \"border-l-secondary\",\n muted: \"border-l-border\",\n accent: \"border-l-accent\",\n destructive: \"border-l-destructive\",\n success: \"border-l-success\",\n warning: \"border-l-warning\",\n },\n };\n return `${borderBaseMap[tabPosition]} ${colorBorderMap[tabPosition][color]}`;\n }\n\n return \"\";\n};\n\n// Get trigger border classes for underlined variant based on position\nexport const getUnderlinedTriggerClasses = (\n tabPosition: TabPosition\n): string => {\n const baseClasses =\n \"ds:bg-background ds:dark:bg-background ds:rounded-none ds:border-0 ds:border-transparent ds:data-[state=active]:shadow-none\";\n\n const positionMap: Record<TabPosition, string> = {\n top: `${baseClasses} border-b-2 h-full`,\n bottom: `${baseClasses} border-t-2 h-full`,\n left: `${baseClasses} border-r-2 w-full`,\n right: `${baseClasses} border-l-2 w-full`,\n };\n\n return positionMap[tabPosition];\n};\n\n// Get trigger border classes for enclosed variant based on position\nexport const getEnclosedTriggerClasses = (tabPosition: TabPosition): string => {\n const baseClasses =\n \"ds:bg-background ds:dark:bg-background ds:border ds:border-transparent ds:data-[state=active]:shadow-none ds:rounded-none\";\n\n const positionMap: Record<TabPosition, string> = {\n top: `${baseClasses} rounded-t-md data-[state=active]:border-t data-[state=active]:border-l data-[state=active]:border-r data-[state=active]:border-b-0 data-[state=active]:border-b-background dark:data-[state=active]:border-b-background h-full data-[state=active]:-mb-0.5 data-[state=active]:translate-y-[0px]`,\n bottom: `${baseClasses} rounded-b-md data-[state=active]:border-b data-[state=active]:border-l data-[state=active]:border-r data-[state=active]:border-t-0 data-[state=active]:border-t-background dark:data-[state=active]:border-t-background h-full data-[state=active]:-mt-0.5 data-[state=active]:translate-y-[0px]`,\n left: `${baseClasses} rounded-l-md data-[state=active]:border-t data-[state=active]:border-l data-[state=active]:border-b data-[state=active]:border-r-0 data-[state=active]:border-r-background dark:data-[state=active]:border-r-background w-full data-[state=active]:-mr-0.5 data-[state=active]:translate-x-[1px]`,\n right: `${baseClasses} rounded-r-md data-[state=active]:border-t data-[state=active]:border-r data-[state=active]:border-b data-[state=active]:border-l-0 data-[state=active]:border-l-background dark:data-[state=active]:border-l-background w-full data-[state=active]:-ml-0.5 data-[state=active]:translate-x-[1px]`,\n };\n\n return positionMap[tabPosition];\n};\n\n// Get trigger border classes for enclosed-fill variant based on position\nexport const getEnclosedFillTriggerClasses = (\n tabPosition: TabPosition\n): string => {\n const baseClasses =\n \"ds:bg-muted ds:dark:bg-muted ds:border ds:border-transparent ds:data-[state=active]:bg-background ds:dark:data-[state=active]:bg-background ds:data-[state=active]:shadow-none ds:rounded-none\";\n\n const positionMap: Record<TabPosition, string> = {\n top: `${baseClasses} rounded-t-md data-[state=active]:border-t data-[state=active]:border-l data-[state=active]:border-r data-[state=active]:border-b-0 data-[state=active]:border-b-background dark:data-[state=active]:border-b-background h-full data-[state=active]:-mb-0.5 data-[state=active]:translate-y-[0px]`,\n bottom: `${baseClasses} rounded-b-md data-[state=active]:border-b data-[state=active]:border-l data-[state=active]:border-r data-[state=active]:border-t-0 data-[state=active]:border-t-background dark:data-[state=active]:border-t-background h-full data-[state=active]:-mt-0.5 data-[state=active]:translate-y-[0px]`,\n left: `${baseClasses} rounded-l-md data-[state=active]:border-t data-[state=active]:border-l data-[state=active]:border-b data-[state=active]:border-r-0 data-[state=active]:border-r-background dark:data-[state=active]:border-r-background w-full data-[state=active]:-mr-0.5 data-[state=active]:translate-x-[1px]`,\n right: `${baseClasses} rounded-r-md data-[state=active]:border-t data-[state=active]:border-r data-[state=active]:border-b data-[state=active]:border-l-0 data-[state=active]:border-l-background dark:data-[state=active]:border-l-background w-full data-[state=active]:-ml-0.5 data-[state=active]:translate-x-[1px]`,\n };\n\n return positionMap[tabPosition];\n};\n\nexport const variantClasses: Record<\n TabVariant,\n {\n list: { horizontal: string; vertical: string };\n trigger: { horizontal: string; vertical: string };\n }\n> = {\n // Solid: Default style (muted background, active has white background)\n solid: {\n list: {\n horizontal: \"ds:bg-muted ds:dark:bg-muted ds:rounded-lg ds:p-[3px]\",\n vertical: \"ds:bg-muted ds:dark:bg-muted ds:rounded-lg ds:p-[3px]\",\n },\n trigger: {\n horizontal: \"\",\n vertical: \"\",\n },\n },\n\n // Bordered: With border on group and colored active background\n bordered: {\n list: {\n horizontal:\n \"ds:bg-background ds:dark:bg-background ds:border ds:p-1 ds:gap-1 ds:rounded-lg\",\n vertical: \"ds:bg-background ds:dark:bg-background ds:border ds:p-1 ds:gap-1 ds:rounded-lg\",\n },\n trigger: {\n horizontal: \"\",\n vertical: \"\",\n },\n },\n\n // Pills: No border/background on group, colored background on active button\n pills: {\n list: {\n horizontal: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n vertical: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal: \"\",\n vertical: \"\",\n },\n },\n\n // Pill-stroke: Pill-style with stroke border, stronger border radius, no background on active\n \"pill-stroke\": {\n list: {\n horizontal: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n vertical: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal: \"ds:border ds:border-border ds:rounded-full ds:bg-transparent\",\n vertical: \"ds:border ds:border-border ds:rounded-full ds:bg-transparent\",\n },\n },\n\n // Text: No border/background on group, colored text on active button\n text: {\n list: {\n horizontal: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n vertical: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal:\n \"ds:bg-transparent ds:data-[state=active]:bg-transparent ds:data-[state=active]:shadow-none\",\n vertical:\n \"ds:bg-transparent ds:data-[state=active]:bg-transparent ds:data-[state=active]:shadow-none\",\n },\n },\n\n // Outline: No border/background on group, colored border (stroke) on active button\n outline: {\n list: {\n horizontal: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n vertical: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal:\n \"ds:bg-transparent ds:border ds:border-transparent ds:data-[state=active]:bg-transparent ds:data-[state=active]:shadow-none\",\n vertical:\n \"ds:bg-transparent ds:border ds:border-transparent ds:data-[state=active]:bg-transparent ds:data-[state=active]:shadow-none\",\n },\n },\n\n // Underlined: Bottom border on group, bottom border on active tab\n underlined: {\n list: {\n horizontal: \"ds:bg-background ds:dark:bg-background ds:rounded-none ds:p-0\",\n vertical: \"ds:bg-background ds:dark:bg-background ds:rounded-none ds:p-0\",\n },\n trigger: {\n horizontal: \"\", // Will be set dynamically\n vertical: \"\", // Will be set dynamically\n },\n },\n\n // Enclosed: Border on active tab except bottom border (tab style)\n enclosed: {\n list: {\n horizontal:\n \"ds:bg-background ds:dark:bg-background ds:justify-start ds:rounded-none ds:p-0\",\n vertical: \"ds:bg-background ds:dark:bg-background ds:items-start ds:rounded-none ds:p-0\",\n },\n trigger: {\n horizontal: \"\", // Will be set dynamically\n vertical: \"\", // Will be set dynamically\n },\n },\n\n // Enclosed-fill: Border on active tab except bottom border with background on inactive tabs\n \"enclosed-fill\": {\n list: {\n horizontal:\n \"ds:bg-background ds:dark:bg-background ds:justify-start ds:rounded-none ds:p-0 ds:gap-1\",\n vertical:\n \"ds:bg-background ds:dark:bg-background ds:items-start ds:rounded-none ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal: \"\", // Will be set dynamically\n vertical: \"\", // Will be set dynamically\n },\n },\n};\n"],"names":["sizeClasses","alignmentClasses","positionClasses","getColorClasses","variant","color","colors","cn","getListBorderClasses","tabPosition","borderBaseMap","colorBorderMap","getUnderlinedTriggerClasses","baseClasses","getEnclosedTriggerClasses","getEnclosedFillTriggerClasses","variantClasses"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"classes.js","sources":["../../../../src/components/Tabs/classes.ts"],"sourcesContent":["import { cn } from \"@dsui/ui/index\";\nimport type {\n TabAlignment,\n TabColor,\n TabPosition,\n TabSize,\n TabVariant,\n} from \"./types\";\n\nexport const sizeClasses: Record<\n TabSize,\n { horizontal: string; vertical: string }\n> = {\n sm: {\n horizontal: \"ds:text-xs ds:h-7 ds:[&>button]:px-2\",\n vertical: \"ds:text-xs ds:[&>button]:py-0.5\",\n },\n md: {\n horizontal: \"ds:text-sm ds:h-9 ds:[&>button]:px-3\",\n vertical: \"ds:text-sm ds:[&>button]:py-1\",\n },\n lg: {\n horizontal: \"ds:text-base ds:h-11 ds:[&>button]:px-4\",\n vertical: \"ds:text-base ds:[&>button]:py-1.5\",\n },\n};\n\nexport const alignmentClasses: Record<\n TabAlignment,\n { horizontal: string; vertical: string }\n> = {\n start: {\n horizontal: \"ds:justify-start\",\n vertical: \"ds:items-start\",\n },\n center: {\n horizontal: \"ds:justify-center\",\n vertical: \"ds:items-center\",\n },\n end: {\n horizontal: \"ds:justify-end\",\n vertical: \"ds:items-end\",\n },\n};\n\nexport const positionClasses: Record<\n TabPosition,\n { root: string; list: string }\n> = {\n top: {\n root: \"ds:flex ds:flex-col\",\n list: \"ds:flex-row\",\n },\n bottom: {\n root: \"ds:flex ds:flex-col-reverse\",\n list: \"ds:flex-row\",\n },\n left: {\n root: \"ds:flex ds:flex-row\",\n list: \"ds:flex-col ds:h-fit\",\n },\n right: {\n root: \"ds:flex ds:flex-row-reverse\",\n list: \"ds:flex-col ds:h-fit\",\n },\n};\n\n// Color classes for backgrounds, text, and borders\nexport const getColorClasses = (\n variant: TabVariant,\n color: TabColor\n): string => {\n // Helper to generate color-specific classes based on variant\n const colorMap: Record<\n TabColor,\n { bg: string; text: string; border: string }\n > = {\n primary: {\n bg: \"ds:data-[state=active]:bg-primary ds:dark:data-[state=active]:bg-primary ds:data-[state=active]:text-primary-foreground ds:dark:data-[state=active]:text-primary-foreground\",\n text: \"ds:data-[state=active]:text-primary ds:dark:data-[state=active]:text-primary\",\n border:\n \"ds:data-[state=active]:border-primary ds:dark:data-[state=active]:border-primary\",\n },\n secondary: {\n bg: \"ds:data-[state=active]:bg-secondary ds:dark:data-[state=active]:bg-secondary ds:data-[state=active]:text-secondary-foreground ds:dark:data-[state=active]:text-secondary-foreground\",\n text: \"ds:data-[state=active]:text-secondary ds:dark:data-[state=active]:text-secondary\",\n border:\n \"ds:data-[state=active]:border-secondary ds:dark:data-[state=active]:border-secondary\",\n },\n muted: {\n bg: \"ds:data-[state=active]:bg-muted ds:dark:data-[state=active]:bg-muted ds:data-[state=active]:text-muted-foreground ds:dark:data-[state=active]:text-muted-foreground\",\n text: \"ds:data-[state=active]:text-muted-foreground ds:dark:data-[state=active]:text-muted-foreground\",\n border:\n \"ds:data-[state=active]:border-border ds:dark:data-[state=active]:border-border\",\n },\n accent: {\n bg: \"ds:data-[state=active]:bg-accent ds:dark:data-[state=active]:bg-accent ds:data-[state=active]:text-accent-foreground ds:dark:data-[state=active]:text-accent-foreground\",\n text: \"ds:data-[state=active]:text-accent-foreground ds:dark:data-[state=active]:text-accent-foreground\",\n border:\n \"ds:data-[state=active]:border-accent ds:dark:data-[state=active]:border-accent\",\n },\n destructive: {\n bg: \"ds:data-[state=active]:bg-destructive ds:dark:data-[state=active]:bg-destructive ds:data-[state=active]:text-destructive-foreground ds:dark:data-[state=active]:text-destructive-foreground\",\n text: \"ds:data-[state=active]:text-destructive ds:dark:data-[state=active]:text-destructive\",\n border:\n \"ds:data-[state=active]:border-destructive ds:dark:data-[state=active]:border-destructive\",\n },\n success: {\n bg: \"ds:data-[state=active]:bg-success ds:dark:data-[state=active]:bg-success ds:data-[state=active]:text-success-foreground ds:dark:data-[state=active]:text-success-foreground\",\n text: \"ds:data-[state=active]:text-success ds:dark:data-[state=active]:text-success\",\n border:\n \"ds:data-[state=active]:border-success ds:dark:data-[state=active]:border-success\",\n },\n warning: {\n bg: \"ds:data-[state=active]:bg-warning ds:dark:data-[state=active]:bg-warning ds:data-[state=active]:text-warning-foreground ds:dark:data-[state=active]:text-warning-foreground\",\n text: \"ds:data-[state=active]:text-warning ds:dark:data-[state=active]:text-warning\",\n border:\n \"ds:data-[state=active]:border-warning ds:dark:data-[state=active]:border-warning\",\n },\n };\n\n const colors = colorMap[color];\n\n switch (variant) {\n case \"bordered\":\n case \"pills\":\n // Background color on active state\n return `${colors.bg} ds:dark:data-[state=active]:border-transparent`;\n case \"pill-stroke\":\n // Border color on active state, no background\n return `ds:data-[state=active]:bg-transparent ds:dark:data-[state=active]:bg-transparent`;\n case \"text\":\n // Text color only on active state\n return colors.text;\n case \"outline\":\n // Border color on active state\n return colors.border;\n case \"underlined\":\n // Bottom/side border color on active state\n return cn(colors.border, colors.text);\n case \"enclosed\":\n // Border color on active state (except bottom/side)\n return cn(colors.border, colors.text);\n case \"enclosed-fill\":\n // Border color on active state (except bottom/side)\n return cn(colors.border, colors.text);\n default:\n return \"\";\n }\n};\n\n// Get TabsList border classes based on position\nexport const getListBorderClasses = (\n variant: TabVariant,\n color: TabColor,\n tabPosition: TabPosition\n): string => {\n if (variant === \"underlined\") {\n // Underlined variant: border on the opposite side from where tabs connect\n const borderMap: Record<TabPosition, string> = {\n top: \"ds:border-b\",\n bottom: \"ds:border-t\",\n left: \"ds:border-r\",\n right: \"ds:border-l\",\n };\n return borderMap[tabPosition];\n }\n\n if (variant === \"enclosed\") {\n // Enclosed variant: colored border on the opposite side\n const borderBaseMap: Record<TabPosition, string> = {\n top: \"ds:border-b\",\n bottom: \"ds:border-t\",\n left: \"ds:border-r\",\n right: \"ds:border-l\",\n };\n\n const colorBorderMap: Record<TabPosition, Record<TabColor, string>> = {\n top: {\n primary: \"ds:border-b-primary\",\n secondary: \"ds:border-b-secondary\",\n muted: \"ds:border-b-border\",\n accent: \"ds:border-b-accent\",\n destructive: \"ds:border-b-destructive\",\n success: \"ds:border-b-success\",\n warning: \"ds:border-b-warning\",\n },\n bottom: {\n primary: \"ds:border-t-primary\",\n secondary: \"ds:border-t-secondary\",\n muted: \"ds:border-t-border\",\n accent: \"ds:border-t-accent\",\n destructive: \"ds:border-t-destructive\",\n success: \"ds:border-t-success\",\n warning: \"ds:border-t-warning\",\n },\n left: {\n primary: \"ds:border-r-primary\",\n secondary: \"ds:border-r-secondary\",\n muted: \"ds:border-r-border\",\n accent: \"ds:border-r-accent\",\n destructive: \"ds:border-r-destructive\",\n success: \"ds:border-r-success\",\n warning: \"ds:border-r-warning\",\n },\n right: {\n primary: \"ds:border-l-primary\",\n secondary: \"ds:border-l-secondary\",\n muted: \"ds:border-l-border\",\n accent: \"ds:border-l-accent\",\n destructive: \"ds:border-l-destructive\",\n success: \"ds:border-l-success\",\n warning: \"ds:border-l-warning\",\n },\n };\n return `${borderBaseMap[tabPosition]} ${colorBorderMap[tabPosition][color]}`;\n }\n\n if (variant === \"enclosed-fill\") {\n // Enclosed-fill variant: colored border on the opposite side\n const borderBaseMap: Record<TabPosition, string> = {\n top: \"ds:border-b\",\n bottom: \"ds:border-t\",\n left: \"ds:border-r\",\n right: \"ds:border-l\",\n };\n\n const colorBorderMap: Record<TabPosition, Record<TabColor, string>> = {\n top: {\n primary: \"ds:border-b-primary\",\n secondary: \"ds:border-b-secondary\",\n muted: \"ds:border-b-border\",\n accent: \"ds:border-b-accent\",\n destructive: \"ds:border-b-destructive\",\n success: \"ds:border-b-success\",\n warning: \"ds:border-b-warning\",\n },\n bottom: {\n primary: \"ds:border-t-primary\",\n secondary: \"ds:border-t-secondary\",\n muted: \"ds:border-t-border\",\n accent: \"ds:border-t-accent\",\n destructive: \"ds:border-t-destructive\",\n success: \"ds:border-t-success\",\n warning: \"ds:border-t-warning\",\n },\n left: {\n primary: \"ds:border-r-primary\",\n secondary: \"ds:border-r-secondary\",\n muted: \"ds:border-r-border\",\n accent: \"ds:border-r-accent\",\n destructive: \"ds:border-r-destructive\",\n success: \"ds:border-r-success\",\n warning: \"ds:border-r-warning\",\n },\n right: {\n primary: \"ds:border-l-primary\",\n secondary: \"ds:border-l-secondary\",\n muted: \"ds:border-l-border\",\n accent: \"ds:border-l-accent\",\n destructive: \"ds:border-l-destructive\",\n success: \"ds:border-l-success\",\n warning: \"ds:border-l-warning\",\n },\n };\n return `${borderBaseMap[tabPosition]} ${colorBorderMap[tabPosition][color]}`;\n }\n\n return \"\";\n};\n\n// Get trigger border classes for underlined variant based on position\nexport const getUnderlinedTriggerClasses = (\n tabPosition: TabPosition\n): string => {\n const baseClasses =\n \"ds:bg-background ds:dark:bg-background ds:rounded-none ds:border-0 ds:border-transparent ds:data-[state=active]:shadow-none\";\n\n const positionMap: Record<TabPosition, string> = {\n top: `${baseClasses} ds:border-b-2 ds:h-full`,\n bottom: `${baseClasses} ds:border-t-2 ds:h-full`,\n left: `${baseClasses} ds:border-r-2 ds:w-full`,\n right: `${baseClasses} ds:border-l-2 ds:w-full`,\n };\n\n return positionMap[tabPosition];\n};\n\n// Get trigger border classes for enclosed variant based on position\nexport const getEnclosedTriggerClasses = (tabPosition: TabPosition): string => {\n const baseClasses =\n \"ds:bg-background ds:dark:bg-background ds:border ds:border-transparent ds:data-[state=active]:shadow-none ds:rounded-none\";\n\n const positionMap: Record<TabPosition, string> = {\n top: `${baseClasses} ds:rounded-t-md ds:data-[state=active]:border-t ds:data-[state=active]:border-l ds:data-[state=active]:border-r ds:data-[state=active]:border-b-0 ds:data-[state=active]:border-b-background dark:ds:data-[state=active]:border-b-background ds:h-full ds:data-[state=active]:-mb-0.5 ds:data-[state=active]:translate-y-[0px]`,\n bottom: `${baseClasses} ds:rounded-b-md ds:data-[state=active]:border-b ds:data-[state=active]:border-l ds:data-[state=active]:border-r ds:data-[state=active]:border-t-0 ds:data-[state=active]:border-t-background dark:ds:data-[state=active]:border-t-background ds:h-full ds:data-[state=active]:-mt-0.5 ds:data-[state=active]:translate-y-[0px]`,\n left: `${baseClasses} ds:rounded-l-md ds:data-[state=active]:border-t ds:data-[state=active]:border-l ds:data-[state=active]:border-b ds:data-[state=active]:border-r-0 ds:data-[state=active]:border-r-background dark:ds:data-[state=active]:border-r-background ds:w-full ds:data-[state=active]:-mr-0.5 ds:data-[state=active]:translate-x-[1px]`,\n right: `${baseClasses} ds:rounded-r-md ds:data-[state=active]:border-t ds:data-[state=active]:border-r ds:data-[state=active]:border-b ds:data-[state=active]:border-l-0 ds:data-[state=active]:border-l-background dark:ds:data-[state=active]:border-l-background ds:w-full ds:data-[state=active]:-ml-0.5 ds:data-[state=active]:translate-x-[1px]`,\n };\n\n return positionMap[tabPosition];\n};\n\n// Get trigger border classes for enclosed-fill variant based on position\nexport const getEnclosedFillTriggerClasses = (\n tabPosition: TabPosition\n): string => {\n const baseClasses =\n \"ds:bg-muted ds:dark:bg-muted ds:border ds:border-transparent ds:data-[state=active]:bg-background ds:dark:data-[state=active]:bg-background ds:data-[state=active]:shadow-none ds:rounded-none\";\n\n const positionMap: Record<TabPosition, string> = {\n top: `${baseClasses} ds:rounded-t-md ds:data-[state=active]:border-t ds:data-[state=active]:border-l ds:data-[state=active]:border-r ds:data-[state=active]:border-b-0 ds:data-[state=active]:border-b-background dark:ds:data-[state=active]:border-b-background ds:h-full ds:data-[state=active]:-mb-0.5 ds:data-[state=active]:translate-y-[0px]`,\n bottom: `${baseClasses} ds:rounded-b-md ds:data-[state=active]:border-b ds:data-[state=active]:border-l ds:data-[state=active]:border-r ds:data-[state=active]:border-t-0 ds:data-[state=active]:border-t-background dark:ds:data-[state=active]:border-t-background ds:h-full ds:data-[state=active]:-mt-0.5 ds:data-[state=active]:translate-y-[0px]`,\n left: `${baseClasses} ds:rounded-l-md ds:data-[state=active]:border-t ds:data-[state=active]:border-l ds:data-[state=active]:border-b ds:data-[state=active]:border-r-0 ds:data-[state=active]:border-r-background dark:ds:data-[state=active]:border-r-background ds:w-full ds:data-[state=active]:-mr-0.5 ds:data-[state=active]:translate-x-[1px]`,\n right: `${baseClasses} ds:rounded-r-md ds:data-[state=active]:border-t ds:data-[state=active]:border-r ds:data-[state=active]:border-b ds:data-[state=active]:border-l-0 ds:data-[state=active]:border-l-background dark:ds:data-[state=active]:border-l-background ds:w-full ds:data-[state=active]:-ml-0.5 ds:data-[state=active]:translate-x-[1px]`,\n };\n\n return positionMap[tabPosition];\n};\n\nexport const variantClasses: Record<\n TabVariant,\n {\n list: { horizontal: string; vertical: string };\n trigger: { horizontal: string; vertical: string };\n }\n> = {\n // Solid: Default style (muted background, active has white background)\n solid: {\n list: {\n horizontal: \"ds:bg-muted ds:dark:bg-muted ds:rounded-lg ds:p-[3px]\",\n vertical: \"ds:bg-muted ds:dark:bg-muted ds:rounded-lg ds:p-[3px]\",\n },\n trigger: {\n horizontal: \"\",\n vertical: \"\",\n },\n },\n\n // Bordered: With border on group and colored active background\n bordered: {\n list: {\n horizontal:\n \"ds:bg-background ds:dark:bg-background ds:border ds:p-1 ds:gap-1 ds:rounded-lg\",\n vertical: \"ds:bg-background ds:dark:bg-background ds:border ds:p-1 ds:gap-1 ds:rounded-lg\",\n },\n trigger: {\n horizontal: \"\",\n vertical: \"\",\n },\n },\n\n // Pills: No border/background on group, colored background on active button\n pills: {\n list: {\n horizontal: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n vertical: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal: \"\",\n vertical: \"\",\n },\n },\n\n // Pill-stroke: Pill-style with stroke border, stronger border radius, no background on active\n \"pill-stroke\": {\n list: {\n horizontal: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n vertical: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal: \"ds:border ds:border-border ds:rounded-full ds:bg-transparent\",\n vertical: \"ds:border ds:border-border ds:rounded-full ds:bg-transparent\",\n },\n },\n\n // Text: No border/background on group, colored text on active button\n text: {\n list: {\n horizontal: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n vertical: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal:\n \"ds:bg-transparent ds:data-[state=active]:bg-transparent ds:data-[state=active]:shadow-none\",\n vertical:\n \"ds:bg-transparent ds:data-[state=active]:bg-transparent ds:data-[state=active]:shadow-none\",\n },\n },\n\n // Outline: No border/background on group, colored border (stroke) on active button\n outline: {\n list: {\n horizontal: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n vertical: \"ds:bg-transparent ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal:\n \"ds:bg-transparent ds:border ds:border-transparent ds:data-[state=active]:bg-transparent ds:data-[state=active]:shadow-none\",\n vertical:\n \"ds:bg-transparent ds:border ds:border-transparent ds:data-[state=active]:bg-transparent ds:data-[state=active]:shadow-none\",\n },\n },\n\n // Underlined: Bottom border on group, bottom border on active tab\n underlined: {\n list: {\n horizontal: \"ds:bg-background ds:dark:bg-background ds:rounded-none ds:p-0\",\n vertical: \"ds:bg-background ds:dark:bg-background ds:rounded-none ds:p-0\",\n },\n trigger: {\n horizontal: \"\", // Will be set dynamically\n vertical: \"\", // Will be set dynamically\n },\n },\n\n // Enclosed: Border on active tab except bottom border (tab style)\n enclosed: {\n list: {\n horizontal:\n \"ds:bg-background ds:dark:bg-background ds:justify-start ds:rounded-none ds:p-0\",\n vertical: \"ds:bg-background ds:dark:bg-background ds:items-start ds:rounded-none ds:p-0\",\n },\n trigger: {\n horizontal: \"\", // Will be set dynamically\n vertical: \"\", // Will be set dynamically\n },\n },\n\n // Enclosed-fill: Border on active tab except bottom border with background on inactive tabs\n \"enclosed-fill\": {\n list: {\n horizontal:\n \"ds:bg-background ds:dark:bg-background ds:justify-start ds:rounded-none ds:p-0 ds:gap-1\",\n vertical:\n \"ds:bg-background ds:dark:bg-background ds:items-start ds:rounded-none ds:p-0 ds:gap-1\",\n },\n trigger: {\n horizontal: \"\", // Will be set dynamically\n vertical: \"\", // Will be set dynamically\n },\n },\n};\n"],"names":["sizeClasses","alignmentClasses","positionClasses","getColorClasses","variant","color","colors","cn","getListBorderClasses","tabPosition","borderBaseMap","colorBorderMap","getUnderlinedTriggerClasses","baseClasses","getEnclosedTriggerClasses","getEnclosedFillTriggerClasses","variantClasses"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
2
|
import * as w from "react";
|
|
3
3
|
import { memo as $, useMemo as h } from "react";
|
|
4
4
|
import "@radix-ui/react-slot";
|
|
@@ -34,49 +34,49 @@ import "@radix-ui/react-slider";
|
|
|
34
34
|
import "../packages/ui/src/components/tabs.js";
|
|
35
35
|
import "../packages/ui/src/components/toggle.js";
|
|
36
36
|
import N from "./Button/Button.js";
|
|
37
|
-
const
|
|
37
|
+
const s = (o) => String(o).padStart(2, "0"), V = (o = "primary") => ({
|
|
38
38
|
primary: {
|
|
39
|
-
bg: "bg-primary",
|
|
40
|
-
text: "text-primary-foreground"
|
|
39
|
+
bg: "ds:bg-primary",
|
|
40
|
+
text: "ds:text-primary-foreground"
|
|
41
41
|
},
|
|
42
42
|
secondary: {
|
|
43
|
-
bg: "bg-secondary",
|
|
44
|
-
text: "text-secondary-foreground"
|
|
43
|
+
bg: "ds:bg-secondary",
|
|
44
|
+
text: "ds:text-secondary-foreground"
|
|
45
45
|
},
|
|
46
46
|
accent: {
|
|
47
|
-
bg: "bg-accent",
|
|
48
|
-
text: "text-accent-foreground"
|
|
47
|
+
bg: "ds:bg-accent",
|
|
48
|
+
text: "ds:text-accent-foreground"
|
|
49
49
|
},
|
|
50
50
|
destructive: {
|
|
51
|
-
bg: "bg-destructive",
|
|
52
|
-
text: "text-destructive-foreground"
|
|
51
|
+
bg: "ds:bg-destructive",
|
|
52
|
+
text: "ds:text-destructive-foreground"
|
|
53
53
|
},
|
|
54
54
|
muted: {
|
|
55
|
-
bg: "bg-muted",
|
|
56
|
-
text: "text-muted-foreground"
|
|
55
|
+
bg: "ds:bg-muted",
|
|
56
|
+
text: "ds:text-muted-foreground"
|
|
57
57
|
},
|
|
58
58
|
success: {
|
|
59
|
-
bg: "bg-success",
|
|
60
|
-
text: "text-success-foreground"
|
|
59
|
+
bg: "ds:bg-success",
|
|
60
|
+
text: "ds:text-success-foreground"
|
|
61
61
|
},
|
|
62
62
|
error: {
|
|
63
|
-
bg: "bg-error",
|
|
64
|
-
text: "text-error-foreground"
|
|
63
|
+
bg: "ds:bg-error",
|
|
64
|
+
text: "ds:text-error-foreground"
|
|
65
65
|
},
|
|
66
66
|
warning: {
|
|
67
|
-
bg: "bg-warning",
|
|
68
|
-
text: "text-warning-foreground"
|
|
67
|
+
bg: "ds:bg-warning",
|
|
68
|
+
text: "ds:text-warning-foreground"
|
|
69
69
|
},
|
|
70
70
|
foreground: {
|
|
71
|
-
bg: "bg-foreground",
|
|
72
|
-
text: "text-background"
|
|
71
|
+
bg: "ds:bg-foreground",
|
|
72
|
+
text: "ds:text-background"
|
|
73
73
|
}
|
|
74
74
|
})[o], k = $(
|
|
75
75
|
w.forwardRef(
|
|
76
76
|
({
|
|
77
77
|
HOURS: o,
|
|
78
|
-
MINUTES:
|
|
79
|
-
hours:
|
|
78
|
+
MINUTES: d,
|
|
79
|
+
hours: m,
|
|
80
80
|
minutes: n,
|
|
81
81
|
disabled: g,
|
|
82
82
|
isTimeDisabled: p,
|
|
@@ -86,24 +86,24 @@ const i = (o) => String(o).padStart(2, "0"), V = (o = "primary") => ({
|
|
|
86
86
|
const x = h(() => {
|
|
87
87
|
const t = [];
|
|
88
88
|
for (const r of o)
|
|
89
|
-
for (const e of
|
|
89
|
+
for (const e of d)
|
|
90
90
|
t.push({
|
|
91
91
|
h: r,
|
|
92
92
|
m: e,
|
|
93
|
-
display: `${
|
|
93
|
+
display: `${s(r)}:${s(e)}`
|
|
94
94
|
});
|
|
95
95
|
return t;
|
|
96
|
-
}, [o,
|
|
96
|
+
}, [o, d]), b = m !== void 0 && n !== void 0 ? `${s(m)}:${s(n)}` : "", v = (t, r) => {
|
|
97
97
|
p(t, r, 0) || u(t, r);
|
|
98
98
|
};
|
|
99
|
-
return /* @__PURE__ */
|
|
99
|
+
return /* @__PURE__ */ i("div", { className: "ds:flex ds:flex-col ds:gap-2", children: /* @__PURE__ */ i(
|
|
100
100
|
"div",
|
|
101
101
|
{
|
|
102
102
|
ref: l,
|
|
103
103
|
className: "ds:flex ds:flex-col ds:gap-1 ds:h-64 ds:overflow-y-auto ds:p-2 ds:rounded-md",
|
|
104
104
|
children: x.map(({ h: t, m: r, display: e }) => {
|
|
105
105
|
const y = p(t, r, 0), c = e === b, a = V(f);
|
|
106
|
-
return /* @__PURE__ */
|
|
106
|
+
return /* @__PURE__ */ i(
|
|
107
107
|
N,
|
|
108
108
|
{
|
|
109
109
|
type: "button",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeGridView.js","sources":["../../../src/components/TimeGridView.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { memo, useMemo } from \"react\";\nimport { cn } from \"@dsui/ui/index\";\nimport Button from \"./Button/Button\";\nimport type { CalendarColor } from \"./Calendar/Calendar\";\n\nconst pad = (num: number): string => String(num).padStart(2, \"0\");\n\n// Color variants for time grid items\nconst getColorClasses = (color: CalendarColor = \"primary\") => {\n const colorMap = {\n primary: {\n bg: \"bg-primary\",\n text: \"text-primary-foreground\",\n },\n secondary: {\n bg: \"bg-secondary\",\n text: \"text-secondary-foreground\",\n },\n accent: {\n bg: \"bg-accent\",\n text: \"text-accent-foreground\",\n },\n destructive: {\n bg: \"bg-destructive\",\n text: \"text-destructive-foreground\",\n },\n muted: {\n bg: \"bg-muted\",\n text: \"text-muted-foreground\",\n },\n success: {\n bg: \"bg-success\",\n text: \"text-success-foreground\",\n },\n error: {\n bg: \"bg-error\",\n text: \"text-error-foreground\",\n },\n warning: {\n bg: \"bg-warning\",\n text: \"text-warning-foreground\",\n },\n foreground: {\n bg: \"bg-foreground\",\n text: \"text-background\",\n },\n };\n return colorMap[color];\n};\n\ntype TimeGridViewProps = {\n HOURS: number[];\n MINUTES: number[];\n hours: number | undefined;\n minutes: number | undefined;\n disabled: boolean;\n isTimeDisabled: (h: number, m: number, s: number) => boolean;\n onTimeSelect: (h: number, m: number) => void;\n color?: CalendarColor;\n};\n\nexport const TimeGridView = memo(\n React.forwardRef<HTMLDivElement, TimeGridViewProps>(\n (\n {\n HOURS,\n MINUTES,\n hours,\n minutes,\n disabled,\n isTimeDisabled,\n onTimeSelect,\n color = \"primary\",\n },\n ref\n ) => {\n // Generate all time combinations based on intervals (always HH:mm, never shows seconds)\n const timeOptions = useMemo(() => {\n const options: Array<{ h: number; m: number; display: string }> = [];\n\n for (const h of HOURS) {\n for (const m of MINUTES) {\n options.push({\n h,\n m,\n display: `${pad(h)}:${pad(m)}`,\n });\n }\n }\n\n return options;\n }, [HOURS, MINUTES]);\n\n const currentValue =\n hours !== undefined && minutes !== undefined\n ? `${pad(hours)}:${pad(minutes)}`\n : \"\";\n\n const handleTimeSelect = (h: number, m: number) => {\n // Always set seconds to 0 in grid mode\n if (!isTimeDisabled(h, m, 0)) {\n onTimeSelect(h, m);\n }\n };\n\n return (\n <div className=\"ds:flex ds:flex-col ds:gap-2\">\n <div\n ref={ref}\n className=\"ds:flex ds:flex-col ds:gap-1 ds:h-64 ds:overflow-y-auto ds:p-2 ds:rounded-md\"\n >\n {timeOptions.map(({ h, m, display }) => {\n const itemDisabled = isTimeDisabled(h, m, 0);\n const isSelected = display === currentValue;\n const colorClasses = getColorClasses(color);\n\n return (\n <Button\n key={display}\n type=\"button\"\n variant=\"outline\"\n onClick={() => handleTimeSelect(h, m)}\n data-selected={isSelected || undefined}\n disabled={disabled || itemDisabled}\n size=\"sm\"\n className={cn(\n isSelected\n ? `${colorClasses.bg} ${colorClasses.text} ds:font-semibold`\n : \"ds:text-foreground\"\n )}\n >\n {display}\n </Button>\n );\n })}\n </div>\n </div>\n );\n }\n )\n);\n\nTimeGridView.displayName = \"TimeGridView\";\n"],"names":["pad","num","getColorClasses","color","TimeGridView","memo","React","HOURS","MINUTES","hours","minutes","disabled","isTimeDisabled","onTimeSelect","ref","timeOptions","useMemo","options","h","m","currentValue","handleTimeSelect","jsx","display","itemDisabled","isSelected","colorClasses","Button","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAMA,IAAM,CAACC,MAAwB,OAAOA,CAAG,EAAE,SAAS,GAAG,GAAG,GAG1DC,IAAkB,CAACC,IAAuB,eAC7B;AAAA,EACf,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,WAAW;AAAA,IACT,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AACR,GAEcA,CAAK,GAcVC,IAAeC;AAAA,EAC1BC,EAAM;AAAA,IACJ,CACE;AAAA,MACE,OAAAC;AAAA,MACA,SAAAC;AAAA,MACA,OAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,OAAAV,IAAQ;AAAA,IAAA,GAEVW,MACG;AAEH,YAAMC,IAAcC,EAAQ,MAAM;AAChC,cAAMC,IAA4D,CAAA;AAElE,mBAAWC,KAAKX;AACd,qBAAWY,KAAKX;AACd,YAAAS,EAAQ,KAAK;AAAA,cACX,GAAAC;AAAA,cACA,GAAAC;AAAA,cACA,SAAS,GAAGnB,EAAIkB,CAAC,CAAC,IAAIlB,EAAImB,CAAC,CAAC;AAAA,YAAA,CAC7B;AAIL,eAAOF;AAAA,MACT,GAAG,CAACV,GAAOC,CAAO,CAAC,GAEbY,IACJX,MAAU,UAAaC,MAAY,SAC/B,GAAGV,EAAIS,CAAK,CAAC,IAAIT,EAAIU,CAAO,CAAC,KAC7B,IAEAW,IAAmB,CAACH,GAAWC,MAAc;AAEjD,QAAKP,EAAeM,GAAGC,GAAG,CAAC,KACzBN,EAAaK,GAAGC,CAAC;AAAA,MAErB;AAEA,aACE,gBAAAG,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAR;AAAA,UACA,WAAU;AAAA,UAET,YAAY,IAAI,CAAC,EAAE,GAAAI,GAAG,GAAAC,GAAG,SAAAI,QAAc;AACtC,kBAAMC,IAAeZ,EAAeM,GAAGC,GAAG,CAAC,GACrCM,IAAaF,MAAYH,GACzBM,IAAexB,EAAgBC,CAAK;AAE1C,mBACE,gBAAAmB;AAAA,cAACK;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAS,MAAMN,EAAiBH,GAAGC,CAAC;AAAA,gBACpC,iBAAeM,KAAc;AAAA,gBAC7B,UAAUd,KAAYa;AAAA,gBACtB,MAAK;AAAA,gBACL,WAAWI;AAAA,kBACTH,IACI,GAAGC,EAAa,EAAE,IAAIA,EAAa,IAAI,sBACvC;AAAA,gBAAA;AAAA,gBAGL,UAAAH;AAAA,cAAA;AAAA,cAbIA;AAAA,YAAA;AAAA,UAgBX,CAAC;AAAA,QAAA;AAAA,MAAA,GAEL;AAAA,IAEJ;AAAA,EAAA;AAEJ;AAEAnB,EAAa,cAAc;"}
|
|
1
|
+
{"version":3,"file":"TimeGridView.js","sources":["../../../src/components/TimeGridView.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { memo, useMemo } from \"react\";\nimport { cn } from \"@dsui/ui/index\";\nimport Button from \"./Button/Button\";\nimport type { CalendarColor } from \"./Calendar/Calendar\";\n\nconst pad = (num: number): string => String(num).padStart(2, \"0\");\n\n// Color variants for time grid items\nconst getColorClasses = (color: CalendarColor = \"primary\") => {\n const colorMap = {\n primary: {\n bg: \"ds:bg-primary\",\n text: \"ds:text-primary-foreground\",\n },\n secondary: {\n bg: \"ds:bg-secondary\",\n text: \"ds:text-secondary-foreground\",\n },\n accent: {\n bg: \"ds:bg-accent\",\n text: \"ds:text-accent-foreground\",\n },\n destructive: {\n bg: \"ds:bg-destructive\",\n text: \"ds:text-destructive-foreground\",\n },\n muted: {\n bg: \"ds:bg-muted\",\n text: \"ds:text-muted-foreground\",\n },\n success: {\n bg: \"ds:bg-success\",\n text: \"ds:text-success-foreground\",\n },\n error: {\n bg: \"ds:bg-error\",\n text: \"ds:text-error-foreground\",\n },\n warning: {\n bg: \"ds:bg-warning\",\n text: \"ds:text-warning-foreground\",\n },\n foreground: {\n bg: \"ds:bg-foreground\",\n text: \"ds:text-background\",\n },\n };\n return colorMap[color];\n};\n\ntype TimeGridViewProps = {\n HOURS: number[];\n MINUTES: number[];\n hours: number | undefined;\n minutes: number | undefined;\n disabled: boolean;\n isTimeDisabled: (h: number, m: number, s: number) => boolean;\n onTimeSelect: (h: number, m: number) => void;\n color?: CalendarColor;\n};\n\nexport const TimeGridView = memo(\n React.forwardRef<HTMLDivElement, TimeGridViewProps>(\n (\n {\n HOURS,\n MINUTES,\n hours,\n minutes,\n disabled,\n isTimeDisabled,\n onTimeSelect,\n color = \"primary\",\n },\n ref\n ) => {\n // Generate all time combinations based on intervals (always HH:mm, never shows seconds)\n const timeOptions = useMemo(() => {\n const options: Array<{ h: number; m: number; display: string }> = [];\n\n for (const h of HOURS) {\n for (const m of MINUTES) {\n options.push({\n h,\n m,\n display: `${pad(h)}:${pad(m)}`,\n });\n }\n }\n\n return options;\n }, [HOURS, MINUTES]);\n\n const currentValue =\n hours !== undefined && minutes !== undefined\n ? `${pad(hours)}:${pad(minutes)}`\n : \"\";\n\n const handleTimeSelect = (h: number, m: number) => {\n // Always set seconds to 0 in grid mode\n if (!isTimeDisabled(h, m, 0)) {\n onTimeSelect(h, m);\n }\n };\n\n return (\n <div className=\"ds:flex ds:flex-col ds:gap-2\">\n <div\n ref={ref}\n className=\"ds:flex ds:flex-col ds:gap-1 ds:h-64 ds:overflow-y-auto ds:p-2 ds:rounded-md\"\n >\n {timeOptions.map(({ h, m, display }) => {\n const itemDisabled = isTimeDisabled(h, m, 0);\n const isSelected = display === currentValue;\n const colorClasses = getColorClasses(color);\n\n return (\n <Button\n key={display}\n type=\"button\"\n variant=\"outline\"\n onClick={() => handleTimeSelect(h, m)}\n data-selected={isSelected || undefined}\n disabled={disabled || itemDisabled}\n size=\"sm\"\n className={cn(\n isSelected\n ? `${colorClasses.bg} ${colorClasses.text} ds:font-semibold`\n : \"ds:text-foreground\"\n )}\n >\n {display}\n </Button>\n );\n })}\n </div>\n </div>\n );\n }\n )\n);\n\nTimeGridView.displayName = \"TimeGridView\";\n"],"names":["pad","num","getColorClasses","color","TimeGridView","memo","React","HOURS","MINUTES","hours","minutes","disabled","isTimeDisabled","onTimeSelect","ref","timeOptions","useMemo","options","h","m","currentValue","handleTimeSelect","jsx","display","itemDisabled","isSelected","colorClasses","Button","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAMA,IAAM,CAACC,MAAwB,OAAOA,CAAG,EAAE,SAAS,GAAG,GAAG,GAG1DC,IAAkB,CAACC,IAAuB,eAC7B;AAAA,EACf,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,WAAW;AAAA,IACT,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AAAA,EAER,YAAY;AAAA,IACV,IAAI;AAAA,IACJ,MAAM;AAAA,EAAA;AACR,GAEcA,CAAK,GAcVC,IAAeC;AAAA,EAC1BC,EAAM;AAAA,IACJ,CACE;AAAA,MACE,OAAAC;AAAA,MACA,SAAAC;AAAA,MACA,OAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,OAAAV,IAAQ;AAAA,IAAA,GAEVW,MACG;AAEH,YAAMC,IAAcC,EAAQ,MAAM;AAChC,cAAMC,IAA4D,CAAA;AAElE,mBAAWC,KAAKX;AACd,qBAAWY,KAAKX;AACd,YAAAS,EAAQ,KAAK;AAAA,cACX,GAAAC;AAAA,cACA,GAAAC;AAAA,cACA,SAAS,GAAGnB,EAAIkB,CAAC,CAAC,IAAIlB,EAAImB,CAAC,CAAC;AAAA,YAAA,CAC7B;AAIL,eAAOF;AAAA,MACT,GAAG,CAACV,GAAOC,CAAO,CAAC,GAEbY,IACJX,MAAU,UAAaC,MAAY,SAC/B,GAAGV,EAAIS,CAAK,CAAC,IAAIT,EAAIU,CAAO,CAAC,KAC7B,IAEAW,IAAmB,CAACH,GAAWC,MAAc;AAEjD,QAAKP,EAAeM,GAAGC,GAAG,CAAC,KACzBN,EAAaK,GAAGC,CAAC;AAAA,MAErB;AAEA,aACE,gBAAAG,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAAR;AAAA,UACA,WAAU;AAAA,UAET,YAAY,IAAI,CAAC,EAAE,GAAAI,GAAG,GAAAC,GAAG,SAAAI,QAAc;AACtC,kBAAMC,IAAeZ,EAAeM,GAAGC,GAAG,CAAC,GACrCM,IAAaF,MAAYH,GACzBM,IAAexB,EAAgBC,CAAK;AAE1C,mBACE,gBAAAmB;AAAA,cAACK;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAS,MAAMN,EAAiBH,GAAGC,CAAC;AAAA,gBACpC,iBAAeM,KAAc;AAAA,gBAC7B,UAAUd,KAAYa;AAAA,gBACtB,MAAK;AAAA,gBACL,WAAWI;AAAA,kBACTH,IACI,GAAGC,EAAa,EAAE,IAAIA,EAAa,IAAI,sBACvC;AAAA,gBAAA;AAAA,gBAGL,UAAAH;AAAA,cAAA;AAAA,cAbIA;AAAA,YAAA;AAAA,UAgBX,CAAC;AAAA,QAAA;AAAA,MAAA,GAEL;AAAA,IAEJ;AAAA,EAAA;AAEJ;AAEAnB,EAAa,cAAc;"}
|