@moduix/solid-tailwind 1.0.0 → 1.1.1
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/Accordion.js +19 -13
- package/dist/components/accordion/Accordion.jsx +7 -7
- package/dist/components/alert/Alert.js +19 -13
- package/dist/components/alert/Alert.jsx +7 -7
- package/dist/components/angle-slider/AngleSlider.d.ts +2 -6
- package/dist/components/angle-slider/AngleSlider.js +21 -16
- package/dist/components/angle-slider/AngleSlider.jsx +10 -11
- package/dist/components/avatar/Avatar.js +10 -7
- package/dist/components/avatar/Avatar.jsx +6 -6
- package/dist/components/bleed/Bleed.js +1 -1
- package/dist/components/bleed/Bleed.jsx +1 -1
- package/dist/components/button/Button.js +1 -6
- package/dist/components/button/Button.jsx +2 -4
- package/dist/components/card/Card.js +54 -44
- package/dist/components/card/Card.jsx +12 -12
- package/dist/components/carousel/Carousel.d.ts +1 -1
- package/dist/components/carousel/Carousel.js +32 -23
- package/dist/components/carousel/Carousel.jsx +12 -13
- package/dist/components/checkbox/Checkbox.js +16 -14
- package/dist/components/checkbox/Checkbox.jsx +6 -6
- package/dist/components/clipboard/Clipboard.js +28 -17
- package/dist/components/clipboard/Clipboard.jsx +12 -11
- package/dist/components/collapsible/Collapsible.js +16 -11
- package/dist/components/collapsible/Collapsible.jsx +6 -6
- package/dist/components/color-picker/ColorPicker.js +69 -48
- package/dist/components/color-picker/ColorPicker.jsx +28 -28
- package/dist/components/combobox/Combobox.js +44 -31
- package/dist/components/combobox/Combobox.jsx +18 -18
- package/dist/components/command-palette/CommandPalette.js +72 -53
- package/dist/components/command-palette/CommandPalette.jsx +29 -32
- package/dist/components/container/Container.js +5 -5
- package/dist/components/container/Container.jsx +5 -5
- package/dist/components/date-input/DateInput.js +18 -12
- package/dist/components/date-input/DateInput.jsx +7 -7
- package/dist/components/date-picker/DatePicker.js +73 -51
- package/dist/components/date-picker/DatePicker.jsx +29 -29
- package/dist/components/dialog/Dialog.js +30 -20
- package/dist/components/dialog/Dialog.jsx +10 -10
- package/dist/components/drawer/Drawer.js +45 -30
- package/dist/components/drawer/Drawer.jsx +15 -15
- package/dist/components/editable/Editable.js +24 -17
- package/dist/components/editable/Editable.jsx +10 -10
- package/dist/components/empty/Empty.js +1 -1
- package/dist/components/empty/Empty.jsx +1 -1
- package/dist/components/file-upload/FileUpload.js +39 -28
- package/dist/components/file-upload/FileUpload.jsx +17 -17
- package/dist/components/floating-panel/FloatingPanel.js +35 -23
- package/dist/components/floating-panel/FloatingPanel.jsx +12 -12
- package/dist/components/hover-card/HoverCard.js +16 -11
- package/dist/components/hover-card/HoverCard.jsx +6 -6
- package/dist/components/image-cropper/ImageCropper.js +21 -14
- package/dist/components/image-cropper/ImageCropper.jsx +7 -7
- package/dist/components/input-group/InputGroup.js +3 -2
- package/dist/components/input-group/InputGroup.jsx +3 -2
- package/dist/components/json-tree-view/JsonTreeView.js +1 -1
- package/dist/components/json-tree-view/JsonTreeView.jsx +1 -1
- package/dist/components/lightbox/Lightbox.d.ts +1 -0
- package/dist/components/lightbox/Lightbox.js +41 -27
- package/dist/components/lightbox/Lightbox.jsx +13 -12
- package/dist/components/listbox/Listbox.js +48 -32
- package/dist/components/listbox/Listbox.jsx +17 -17
- package/dist/components/marquee/Marquee.js +18 -12
- package/dist/components/marquee/Marquee.jsx +9 -9
- package/dist/components/menu/Menu.js +66 -44
- package/dist/components/menu/Menu.jsx +28 -28
- package/dist/components/navigation-menu/NavigationMenu.js +36 -24
- package/dist/components/navigation-menu/NavigationMenu.jsx +12 -12
- package/dist/components/number-input/NumberInput.js +19 -14
- package/dist/components/number-input/NumberInput.jsx +9 -9
- package/dist/components/pagination/Pagination.js +10 -9
- package/dist/components/pagination/Pagination.jsx +8 -8
- package/dist/components/password-input/PasswordInput.js +16 -11
- package/dist/components/password-input/PasswordInput.jsx +6 -6
- package/dist/components/pin-input/PinInput.js +15 -10
- package/dist/components/pin-input/PinInput.jsx +6 -6
- package/dist/components/popover/Popover.js +37 -25
- package/dist/components/popover/Popover.jsx +13 -13
- package/dist/components/progress-circular/ProgressCircular.js +18 -13
- package/dist/components/progress-circular/ProgressCircular.jsx +8 -8
- package/dist/components/progress-linear/ProgressLinear.js +17 -12
- package/dist/components/progress-linear/ProgressLinear.jsx +7 -7
- package/dist/components/qr-code/QrCode.js +8 -7
- package/dist/components/qr-code/QrCode.jsx +6 -6
- package/dist/components/rating-group/RatingGroup.js +15 -10
- package/dist/components/rating-group/RatingGroup.jsx +6 -6
- package/dist/components/segment-group/SegmentGroup.js +17 -12
- package/dist/components/segment-group/SegmentGroup.jsx +7 -7
- package/dist/components/select/Select.js +50 -35
- package/dist/components/select/Select.jsx +20 -20
- package/dist/components/sidebar/Sidebar.js +72 -43
- package/dist/components/sidebar/Sidebar.jsx +34 -27
- package/dist/components/signature-pad/SignaturePad.js +16 -12
- package/dist/components/signature-pad/SignaturePad.jsx +8 -8
- package/dist/components/slider/Slider.js +29 -20
- package/dist/components/slider/Slider.jsx +11 -11
- package/dist/components/split-button/SplitButton.d.ts +4 -3
- package/dist/components/split-button/SplitButton.js +20 -9
- package/dist/components/split-button/SplitButton.jsx +13 -7
- package/dist/components/splitter/Splitter.js +13 -9
- package/dist/components/splitter/Splitter.jsx +5 -5
- package/dist/components/steps/Steps.js +34 -23
- package/dist/components/steps/Steps.jsx +12 -12
- package/dist/components/swap/Swap.js +9 -6
- package/dist/components/swap/Swap.jsx +3 -3
- package/dist/components/switch/Switch.js +9 -7
- package/dist/components/switch/Switch.jsx +5 -5
- package/dist/components/tabs/Tabs.js +18 -12
- package/dist/components/tabs/Tabs.jsx +6 -6
- package/dist/components/tags-input/TagsInput.js +28 -20
- package/dist/components/tags-input/TagsInput.jsx +12 -12
- package/dist/components/timer/Timer.js +21 -14
- package/dist/components/timer/Timer.jsx +7 -7
- package/dist/components/toast/Toast.js +11 -9
- package/dist/components/toast/Toast.jsx +7 -7
- package/dist/components/toc/Toc.js +31 -20
- package/dist/components/toc/Toc.jsx +10 -10
- package/dist/components/tooltip/Tooltip.js +13 -9
- package/dist/components/tooltip/Tooltip.jsx +5 -5
- package/dist/components/tour/Tour.js +38 -26
- package/dist/components/tour/Tour.jsx +13 -13
- package/dist/components/tree-view/TreeView.js +39 -28
- package/dist/components/tree-view/TreeView.jsx +17 -17
- package/dist/styles/animations.css +8 -8
- package/package.json +10 -11
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { createComponent, insert, memo, mergeProps, template } from "solid-js/web";
|
|
2
2
|
import { ark } from "@ark-ui/solid/factory";
|
|
3
|
+
import { Splitter } from "@ark-ui/solid/splitter";
|
|
3
4
|
import { createContext, splitProps, useContext } from "solid-js";
|
|
4
5
|
import { cn } from "../../internal/cn.js";
|
|
5
6
|
import { ChevronLeftIcon } from "../../internal/icons/ui/Icons.js";
|
|
6
7
|
import { Input } from "../input/index.js";
|
|
7
8
|
import { Separator } from "../separator/index.js";
|
|
8
|
-
import { Splitter, useSplitterContext } from "../splitter/index.js";
|
|
9
|
+
import { Splitter as index_js_Splitter, useSplitterContext } from "../splitter/index.js";
|
|
9
10
|
import { Tooltip } from "../tooltip/index.js";
|
|
10
11
|
var _tmpl$ = /*#__PURE__*/ template("<span data-slot=sidebar-navigation-sub-label>");
|
|
11
12
|
const sidebarPanel = {
|
|
@@ -61,7 +62,8 @@ function SidebarRoot(props) {
|
|
|
61
62
|
'class',
|
|
62
63
|
'defaultSize',
|
|
63
64
|
'panelId',
|
|
64
|
-
'side'
|
|
65
|
+
'side',
|
|
66
|
+
'style'
|
|
65
67
|
]);
|
|
66
68
|
const panelId = ()=>local.panelId ?? 'sidebar';
|
|
67
69
|
const side = ()=>local.side ?? 'left';
|
|
@@ -84,7 +86,14 @@ function SidebarRoot(props) {
|
|
|
84
86
|
},
|
|
85
87
|
"data-slot": "sidebar-root",
|
|
86
88
|
get ["class"] () {
|
|
87
|
-
return cn('isolate h-dvh min-h-96 w-full min-w-0 rounded-none border border-border bg-background text-foreground shadow-none', local.class);
|
|
89
|
+
return cn('group/splitter relative box-border h-112 min-h-0 w-full min-w-0 rounded-md border border-border bg-card text-foreground shadow-sm data-dragging:cursor-col-resize data-dragging:data-[orientation=vertical]:cursor-row-resize', 'isolate h-dvh min-h-96 w-full min-w-0 rounded-none border border-border bg-background text-foreground shadow-none', local.class);
|
|
90
|
+
},
|
|
91
|
+
get style () {
|
|
92
|
+
return memo(()=>'string' == typeof local.style)() ? `width:;height:;${local.style}` : {
|
|
93
|
+
width: void 0,
|
|
94
|
+
height: void 0,
|
|
95
|
+
...local.style
|
|
96
|
+
};
|
|
88
97
|
}
|
|
89
98
|
}));
|
|
90
99
|
}
|
|
@@ -120,7 +129,7 @@ function SidebarPanel(props) {
|
|
|
120
129
|
return collapsed() ? 'collapsed' : 'expanded';
|
|
121
130
|
},
|
|
122
131
|
get ["class"] () {
|
|
123
|
-
return cn('group/sidebar-panel @container/sidebar-panel relative flex min-h-0 min-w-0 flex-col overflow-hidden bg-card p-0 text-card-foreground transition-colors duration-200 ease-in-out motion-reduce:transition-none', local.class);
|
|
132
|
+
return cn('box-border min-h-50 min-w-0 overflow-auto rounded-none border-0 border-border bg-card p-4 text-card-foreground shadow-none group-data-[orientation=vertical]/splitter:min-h-0 data-dragging:select-none', 'group/sidebar-panel @container/sidebar-panel relative flex min-h-0 min-w-0 flex-col overflow-hidden bg-card p-0 text-card-foreground transition-colors duration-200 ease-in-out motion-reduce:transition-none', local.class);
|
|
124
133
|
}
|
|
125
134
|
}));
|
|
126
135
|
}
|
|
@@ -136,19 +145,23 @@ function SidebarInset(props) {
|
|
|
136
145
|
},
|
|
137
146
|
"data-slot": "sidebar-inset",
|
|
138
147
|
get ["class"] () {
|
|
139
|
-
return cn('relative min-w-0 overflow-auto bg-background p-0 text-foreground', local.class);
|
|
148
|
+
return cn('box-border min-h-50 min-w-0 overflow-auto rounded-none border-0 border-border bg-card p-4 text-card-foreground shadow-none group-data-[orientation=vertical]/splitter:min-h-0 data-dragging:select-none', 'relative min-w-0 overflow-auto bg-background p-0 text-foreground', local.class);
|
|
140
149
|
}
|
|
141
150
|
}));
|
|
142
151
|
}
|
|
143
152
|
function SidebarResizeTrigger(props) {
|
|
144
153
|
const [local, others] = splitProps(props, [
|
|
145
154
|
'aria-label',
|
|
155
|
+
'asChild',
|
|
146
156
|
'class',
|
|
147
157
|
'children'
|
|
148
158
|
]);
|
|
149
159
|
const config = useSidebarConfig();
|
|
150
160
|
const id = ()=>'left' === config.side() ? `${config.panelId()}:content` : `content:${config.panelId()}`;
|
|
151
161
|
return createComponent(Splitter.ResizeTrigger, mergeProps(others, {
|
|
162
|
+
get asChild () {
|
|
163
|
+
return local.asChild;
|
|
164
|
+
},
|
|
152
165
|
get id () {
|
|
153
166
|
return id();
|
|
154
167
|
},
|
|
@@ -160,10 +173,10 @@ function SidebarResizeTrigger(props) {
|
|
|
160
173
|
},
|
|
161
174
|
"data-slot": "sidebar-resize-trigger",
|
|
162
175
|
get ["class"] () {
|
|
163
|
-
return cn('z-2', local.class);
|
|
176
|
+
return cn("group/trigger relative z-1 box-border flex w-px min-w-px cursor-col-resize appearance-none items-center justify-center border-0 bg-transparent p-0 outline-0 transition-opacity duration-200 ease-in-out before:absolute before:h-full before:w-[0.5px] before:rounded-full before:bg-border before:transition-[background-color] before:duration-200 before:ease-in-out before:content-[''] after:absolute after:z-1 after:h-full after:w-2.5 after:content-[''] data-disabled:cursor-default data-disabled:opacity-50 data-dragging:before:bg-muted-foreground/40 data-[orientation=vertical]:h-px data-[orientation=vertical]:min-h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:min-w-0 data-[orientation=vertical]:cursor-row-resize data-[orientation=vertical]:before:h-[0.5px] data-[orientation=vertical]:before:w-full data-[orientation=vertical]:after:h-2.5 data-[orientation=vertical]:after:w-full [@media(hover:hover)]:[&:not(:disabled):not([data-disabled]):hover]:before:bg-muted-foreground/40", 'z-2', local.class);
|
|
164
177
|
},
|
|
165
178
|
get children () {
|
|
166
|
-
return local.children;
|
|
179
|
+
return memo(()=>!!(void 0 === local.children && !local.asChild))() ? createComponent(index_js_Splitter.ResizeTriggerIndicator, {}) : local.children;
|
|
167
180
|
}
|
|
168
181
|
}));
|
|
169
182
|
}
|
|
@@ -202,7 +215,6 @@ function SidebarTrigger(props) {
|
|
|
202
215
|
get ["data-side"] () {
|
|
203
216
|
return config.side();
|
|
204
217
|
},
|
|
205
|
-
"data-slot": "sidebar-trigger",
|
|
206
218
|
get ["data-state"] () {
|
|
207
219
|
return collapsed() ? 'collapsed' : 'expanded';
|
|
208
220
|
},
|
|
@@ -211,6 +223,7 @@ function SidebarTrigger(props) {
|
|
|
211
223
|
},
|
|
212
224
|
onClick: handleClick
|
|
213
225
|
}, others, {
|
|
226
|
+
"data-slot": "sidebar-trigger",
|
|
214
227
|
get children () {
|
|
215
228
|
return memo(()=>!!(void 0 === local.children && !local.asChild))() ? createComponent(ChevronLeftIcon, {}) : local.children;
|
|
216
229
|
}
|
|
@@ -223,11 +236,12 @@ function SidebarLabel(props) {
|
|
|
223
236
|
return createComponent(ark.span, mergeProps({
|
|
224
237
|
"data-scope": "sidebar",
|
|
225
238
|
"data-part": "label",
|
|
226
|
-
"data-slot": "sidebar-label",
|
|
227
239
|
get ["class"] () {
|
|
228
240
|
return cn('min-w-0 truncate group-data-[state=collapsed]/sidebar-panel:sr-only', local.class);
|
|
229
241
|
}
|
|
230
|
-
}, others
|
|
242
|
+
}, others, {
|
|
243
|
+
"data-slot": "sidebar-label"
|
|
244
|
+
}));
|
|
231
245
|
}
|
|
232
246
|
function SidebarHeader(props) {
|
|
233
247
|
const [local, others] = splitProps(props, [
|
|
@@ -236,11 +250,12 @@ function SidebarHeader(props) {
|
|
|
236
250
|
return createComponent(ark.header, mergeProps({
|
|
237
251
|
"data-scope": "sidebar",
|
|
238
252
|
"data-part": "header",
|
|
239
|
-
"data-slot": "sidebar-header",
|
|
240
253
|
get ["class"] () {
|
|
241
254
|
return cn('flex flex-none items-center gap-2 p-3 group-data-[state=collapsed]/sidebar-panel:justify-center group-data-[state=collapsed]/sidebar-panel:px-1 [&>*:only-child]:w-full group-data-[state=collapsed]/sidebar-panel:[&>*:only-child]:w-auto', local.class);
|
|
242
255
|
}
|
|
243
|
-
}, others
|
|
256
|
+
}, others, {
|
|
257
|
+
"data-slot": "sidebar-header"
|
|
258
|
+
}));
|
|
244
259
|
}
|
|
245
260
|
function SidebarContent(props) {
|
|
246
261
|
const [local, others] = splitProps(props, [
|
|
@@ -249,11 +264,12 @@ function SidebarContent(props) {
|
|
|
249
264
|
return createComponent(ark.div, mergeProps({
|
|
250
265
|
"data-scope": "sidebar",
|
|
251
266
|
"data-part": "content",
|
|
252
|
-
"data-slot": "sidebar-content",
|
|
253
267
|
get ["class"] () {
|
|
254
268
|
return cn('flex min-h-0 flex-auto [scrollbar-gutter:stable] flex-col overflow-auto overscroll-contain group-data-[state=collapsed]/sidebar-panel:[scrollbar-width:none] group-data-[state=collapsed]/sidebar-panel:[scrollbar-gutter:auto] group-data-[state=collapsed]/sidebar-panel:overflow-x-hidden group-data-[state=collapsed]/sidebar-panel:overflow-y-auto', local.class);
|
|
255
269
|
}
|
|
256
|
-
}, others
|
|
270
|
+
}, others, {
|
|
271
|
+
"data-slot": "sidebar-content"
|
|
272
|
+
}));
|
|
257
273
|
}
|
|
258
274
|
function SidebarExpandedContent(props) {
|
|
259
275
|
const [local, others] = splitProps(props, [
|
|
@@ -263,11 +279,11 @@ function SidebarExpandedContent(props) {
|
|
|
263
279
|
return createComponent(ark.div, mergeProps({
|
|
264
280
|
"data-scope": "sidebar",
|
|
265
281
|
"data-part": "expanded-content",
|
|
266
|
-
"data-slot": "sidebar-expanded-content",
|
|
267
282
|
get ["class"] () {
|
|
268
283
|
return local.class;
|
|
269
284
|
}
|
|
270
285
|
}, others, {
|
|
286
|
+
"data-slot": "sidebar-expanded-content",
|
|
271
287
|
get hidden () {
|
|
272
288
|
return collapsed();
|
|
273
289
|
}
|
|
@@ -281,11 +297,11 @@ function SidebarCollapsedContent(props) {
|
|
|
281
297
|
return createComponent(ark.div, mergeProps({
|
|
282
298
|
"data-scope": "sidebar",
|
|
283
299
|
"data-part": "collapsed-content",
|
|
284
|
-
"data-slot": "sidebar-collapsed-content",
|
|
285
300
|
get ["class"] () {
|
|
286
301
|
return local.class;
|
|
287
302
|
}
|
|
288
303
|
}, others, {
|
|
304
|
+
"data-slot": "sidebar-collapsed-content",
|
|
289
305
|
get hidden () {
|
|
290
306
|
return !collapsed();
|
|
291
307
|
}
|
|
@@ -298,11 +314,12 @@ function SidebarFooter(props) {
|
|
|
298
314
|
return createComponent(ark.footer, mergeProps({
|
|
299
315
|
"data-scope": "sidebar",
|
|
300
316
|
"data-part": "footer",
|
|
301
|
-
"data-slot": "sidebar-footer",
|
|
302
317
|
get ["class"] () {
|
|
303
318
|
return cn('flex flex-none items-center gap-2 p-3 group-data-[state=collapsed]/sidebar-panel:justify-center group-data-[state=collapsed]/sidebar-panel:px-1', local.class);
|
|
304
319
|
}
|
|
305
|
-
}, others
|
|
320
|
+
}, others, {
|
|
321
|
+
"data-slot": "sidebar-footer"
|
|
322
|
+
}));
|
|
306
323
|
}
|
|
307
324
|
function SidebarGroup(props) {
|
|
308
325
|
const [local, others] = splitProps(props, [
|
|
@@ -311,11 +328,12 @@ function SidebarGroup(props) {
|
|
|
311
328
|
return createComponent(ark.section, mergeProps({
|
|
312
329
|
"data-scope": "sidebar",
|
|
313
330
|
"data-part": "group",
|
|
314
|
-
"data-slot": "sidebar-group",
|
|
315
331
|
get ["class"] () {
|
|
316
332
|
return cn('flex flex-col gap-1 p-3 group-data-[state=collapsed]/sidebar-panel:px-1', local.class);
|
|
317
333
|
}
|
|
318
|
-
}, others
|
|
334
|
+
}, others, {
|
|
335
|
+
"data-slot": "sidebar-group"
|
|
336
|
+
}));
|
|
319
337
|
}
|
|
320
338
|
function SidebarGroupHeader(props) {
|
|
321
339
|
const [local, others] = splitProps(props, [
|
|
@@ -324,11 +342,12 @@ function SidebarGroupHeader(props) {
|
|
|
324
342
|
return createComponent(ark.div, mergeProps({
|
|
325
343
|
"data-scope": "sidebar",
|
|
326
344
|
"data-part": "group-header",
|
|
327
|
-
"data-slot": "sidebar-group-header",
|
|
328
345
|
get ["class"] () {
|
|
329
346
|
return cn('flex min-w-0 items-center gap-2', local.class);
|
|
330
347
|
}
|
|
331
|
-
}, others
|
|
348
|
+
}, others, {
|
|
349
|
+
"data-slot": "sidebar-group-header"
|
|
350
|
+
}));
|
|
332
351
|
}
|
|
333
352
|
function SidebarGroupLabel(props) {
|
|
334
353
|
const [local, others] = splitProps(props, [
|
|
@@ -337,11 +356,12 @@ function SidebarGroupLabel(props) {
|
|
|
337
356
|
return createComponent(ark.h3, mergeProps({
|
|
338
357
|
"data-scope": "sidebar",
|
|
339
358
|
"data-part": "group-label",
|
|
340
|
-
"data-slot": "sidebar-group-label",
|
|
341
359
|
get ["class"] () {
|
|
342
360
|
return cn('min-w-0 flex-1 truncate px-2 text-xs leading-4 font-medium text-muted-foreground group-data-[state=collapsed]/sidebar-panel:sr-only', local.class);
|
|
343
361
|
}
|
|
344
|
-
}, others
|
|
362
|
+
}, others, {
|
|
363
|
+
"data-slot": "sidebar-group-label"
|
|
364
|
+
}));
|
|
345
365
|
}
|
|
346
366
|
function SidebarGroupAction(props) {
|
|
347
367
|
const [local, others] = splitProps(props, [
|
|
@@ -354,11 +374,12 @@ function SidebarGroupAction(props) {
|
|
|
354
374
|
},
|
|
355
375
|
"data-scope": "sidebar",
|
|
356
376
|
"data-part": "group-action",
|
|
357
|
-
"data-slot": "sidebar-group-action",
|
|
358
377
|
get ["class"] () {
|
|
359
378
|
return cn('focus-visible:outline-offset-0.5 me-2 inline-flex size-control-xs flex-none cursor-pointer items-center justify-center rounded-md p-0 text-muted-foreground outline-0 transition-colors duration-200 ease-in-out hover:bg-accent hover:text-accent-foreground focus-visible:outline-2 focus-visible:outline-ring motion-reduce:transition-none @max-[7rem]:hidden [&>svg]:size-4', local.class);
|
|
360
379
|
}
|
|
361
|
-
}, others
|
|
380
|
+
}, others, {
|
|
381
|
+
"data-slot": "sidebar-group-action"
|
|
382
|
+
}));
|
|
362
383
|
}
|
|
363
384
|
function SidebarNavigationList(props) {
|
|
364
385
|
const [local, others] = splitProps(props, [
|
|
@@ -367,11 +388,12 @@ function SidebarNavigationList(props) {
|
|
|
367
388
|
return createComponent(ark.ul, mergeProps({
|
|
368
389
|
"data-scope": "sidebar",
|
|
369
390
|
"data-part": "navigation-list",
|
|
370
|
-
"data-slot": "sidebar-navigation-list",
|
|
371
391
|
get ["class"] () {
|
|
372
392
|
return cn('flex w-full min-w-0 flex-col gap-1', local.class);
|
|
373
393
|
}
|
|
374
|
-
}, others
|
|
394
|
+
}, others, {
|
|
395
|
+
"data-slot": "sidebar-navigation-list"
|
|
396
|
+
}));
|
|
375
397
|
}
|
|
376
398
|
function SidebarNavigationItem(props) {
|
|
377
399
|
const [local, others] = splitProps(props, [
|
|
@@ -380,11 +402,12 @@ function SidebarNavigationItem(props) {
|
|
|
380
402
|
return createComponent(ark.li, mergeProps({
|
|
381
403
|
"data-scope": "sidebar",
|
|
382
404
|
"data-part": "navigation-item",
|
|
383
|
-
"data-slot": "sidebar-navigation-item",
|
|
384
405
|
get ["class"] () {
|
|
385
406
|
return cn('relative min-w-0', local.class);
|
|
386
407
|
}
|
|
387
|
-
}, others
|
|
408
|
+
}, others, {
|
|
409
|
+
"data-slot": "sidebar-navigation-item"
|
|
410
|
+
}));
|
|
388
411
|
}
|
|
389
412
|
function SidebarNavigationButton(props) {
|
|
390
413
|
const [local, others] = splitProps(props, [
|
|
@@ -407,7 +430,6 @@ function SidebarNavigationButton(props) {
|
|
|
407
430
|
},
|
|
408
431
|
"data-scope": "sidebar",
|
|
409
432
|
"data-part": "navigation-button",
|
|
410
|
-
"data-slot": "sidebar-navigation-button",
|
|
411
433
|
get ["data-active"] () {
|
|
412
434
|
return local.active ? '' : void 0;
|
|
413
435
|
},
|
|
@@ -417,7 +439,9 @@ function SidebarNavigationButton(props) {
|
|
|
417
439
|
get ["class"] () {
|
|
418
440
|
return cn('flex w-full min-w-0 cursor-pointer items-center gap-2 overflow-hidden rounded-md px-2 py-1 text-start text-sm leading-5 text-ellipsis whitespace-nowrap text-card-foreground outline-0 transition-colors duration-200 ease-in-out has-[+_[data-slot=sidebar-navigation-badge]]:pe-10 @max-[7rem]:has-[+_[data-slot=sidebar-navigation-badge]]:pe-2', 'focus-visible:outline-offset-0.5 focus-visible:outline-2 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:bg-accent data-active:font-medium data-active:text-accent-foreground motion-reduce:transition-none [&:not(:disabled):not([aria-disabled=true])]:hover:bg-accent [&:not(:disabled):not([aria-disabled=true])]:hover:text-accent-foreground', 'group-data-[state=collapsed]/sidebar-panel:mx-auto group-data-[state=collapsed]/sidebar-panel:min-h-control-md group-data-[state=collapsed]/sidebar-panel:w-control-md group-data-[state=collapsed]/sidebar-panel:justify-center group-data-[state=collapsed]/sidebar-panel:bg-transparent group-data-[state=collapsed]/sidebar-panel:px-0 group-data-[state=collapsed]/sidebar-panel:hover:bg-transparent', '[&>[data-sidebar-icon]]:shrink-0 [&>span:last-child]:min-w-0 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', '[&>[data-scope=select][data-part=indicator]]:ms-auto @max-[7rem]:[&>[data-scope=select][data-part=indicator]]:hidden', '[&>[data-slot=collapsible-indicator]]:ms-auto [&>[data-slot=collapsible-indicator]]:size-control-xs @max-[7rem]:[&>[data-slot=collapsible-indicator]]:hidden [&>[data-slot=collapsible-indicator]>svg]:size-3', '[&>[data-slot=menu-indicator]]:ms-auto [&>[data-slot=menu-indicator]]:size-control-xs [&>[data-slot=menu-indicator]]:leading-none [&>[data-slot=menu-indicator]]:text-muted-foreground @max-[7rem]:[&>[data-slot=menu-indicator]]:hidden [&>[data-slot=menu-indicator]>svg]:block [&>[data-slot=menu-indicator]>svg]:size-4', 'sm' === local.size && 'min-h-control-sm text-xs', (void 0 === local.size || 'md' === local.size) && 'min-h-control-md', 'lg' === local.size && 'min-h-control-lg', local.class);
|
|
419
441
|
}
|
|
420
|
-
}, others
|
|
442
|
+
}, others, {
|
|
443
|
+
"data-slot": "sidebar-navigation-button"
|
|
444
|
+
}));
|
|
421
445
|
}
|
|
422
446
|
function SidebarNavigationBadge(props) {
|
|
423
447
|
const [local, others] = splitProps(props, [
|
|
@@ -426,11 +450,12 @@ function SidebarNavigationBadge(props) {
|
|
|
426
450
|
return createComponent(ark.span, mergeProps({
|
|
427
451
|
"data-scope": "sidebar",
|
|
428
452
|
"data-part": "navigation-badge",
|
|
429
|
-
"data-slot": "sidebar-navigation-badge",
|
|
430
453
|
get ["class"] () {
|
|
431
454
|
return cn('pointer-events-none absolute end-2.5 top-1/2 z-1 box-border inline-grid size-5 -translate-y-1/2 place-items-center rounded-full bg-primary p-0 text-[0.5625rem] leading-none font-medium text-primary-foreground tabular-nums @max-[7rem]:hidden', local.class);
|
|
432
455
|
}
|
|
433
|
-
}, others
|
|
456
|
+
}, others, {
|
|
457
|
+
"data-slot": "sidebar-navigation-badge"
|
|
458
|
+
}));
|
|
434
459
|
}
|
|
435
460
|
function SidebarNavigationSubList(props) {
|
|
436
461
|
const [local, others] = splitProps(props, [
|
|
@@ -439,11 +464,12 @@ function SidebarNavigationSubList(props) {
|
|
|
439
464
|
return createComponent(ark.ul, mergeProps({
|
|
440
465
|
"data-scope": "sidebar",
|
|
441
466
|
"data-part": "navigation-sub-list",
|
|
442
|
-
"data-slot": "sidebar-navigation-sub-list",
|
|
443
467
|
get ["class"] () {
|
|
444
468
|
return cn('ms-4 mt-1 flex w-auto min-w-0 flex-col gap-1 border-s border-border ps-2 group-data-[state=collapsed]/sidebar-panel:hidden', local.class);
|
|
445
469
|
}
|
|
446
|
-
}, others
|
|
470
|
+
}, others, {
|
|
471
|
+
"data-slot": "sidebar-navigation-sub-list"
|
|
472
|
+
}));
|
|
447
473
|
}
|
|
448
474
|
function SidebarNavigationSubItem(props) {
|
|
449
475
|
const [local, others] = splitProps(props, [
|
|
@@ -452,11 +478,12 @@ function SidebarNavigationSubItem(props) {
|
|
|
452
478
|
return createComponent(ark.li, mergeProps({
|
|
453
479
|
"data-scope": "sidebar",
|
|
454
480
|
"data-part": "navigation-sub-item",
|
|
455
|
-
"data-slot": "sidebar-navigation-sub-item",
|
|
456
481
|
get ["class"] () {
|
|
457
482
|
return cn('relative min-w-0', local.class);
|
|
458
483
|
}
|
|
459
|
-
}, others
|
|
484
|
+
}, others, {
|
|
485
|
+
"data-slot": "sidebar-navigation-sub-item"
|
|
486
|
+
}));
|
|
460
487
|
}
|
|
461
488
|
function SidebarNavigationSubButton(props) {
|
|
462
489
|
const [local, others] = splitProps(props, [
|
|
@@ -475,7 +502,6 @@ function SidebarNavigationSubButton(props) {
|
|
|
475
502
|
},
|
|
476
503
|
"data-scope": "sidebar",
|
|
477
504
|
"data-part": "navigation-sub-button",
|
|
478
|
-
"data-slot": "sidebar-navigation-sub-button",
|
|
479
505
|
get ["data-active"] () {
|
|
480
506
|
return local.active ? '' : void 0;
|
|
481
507
|
},
|
|
@@ -483,6 +509,7 @@ function SidebarNavigationSubButton(props) {
|
|
|
483
509
|
return cn('flex min-h-control-sm w-full min-w-0 cursor-pointer items-center gap-2 overflow-hidden rounded-md px-2 text-start text-sm leading-5 text-ellipsis whitespace-nowrap text-card-foreground outline-0 transition-[background-color,border-color,color,box-shadow] duration-200 ease-in-out has-[+_[data-slot=sidebar-navigation-badge]]:pe-10 @max-[7rem]:has-[+_[data-slot=sidebar-navigation-badge]]:pe-2', 'focus-visible:outline-offset-0.5 focus-visible:outline-2 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:bg-accent data-active:font-medium data-active:text-accent-foreground motion-reduce:transition-none [&:not(:disabled):not([aria-disabled=true])]:hover:bg-accent [&:not(:disabled):not([aria-disabled=true])]:hover:text-accent-foreground', '[&>[data-sidebar-icon]]:shrink-0 [&>span:last-child]:min-w-0 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', local.class);
|
|
484
510
|
}
|
|
485
511
|
}, others, {
|
|
512
|
+
"data-slot": "sidebar-navigation-sub-button",
|
|
486
513
|
get children () {
|
|
487
514
|
return memo(()=>'string' == typeof local.children)() ? (()=>{
|
|
488
515
|
var _el$ = _tmpl$();
|
|
@@ -543,22 +570,24 @@ function SidebarInput(props) {
|
|
|
543
570
|
'class'
|
|
544
571
|
]);
|
|
545
572
|
return createComponent(Input.Root, mergeProps({
|
|
546
|
-
"data-slot": "sidebar-input",
|
|
547
573
|
get ["class"] () {
|
|
548
574
|
return cn('w-full group-data-[state=collapsed]/sidebar-panel:hidden', local.class);
|
|
549
575
|
}
|
|
550
|
-
}, others
|
|
576
|
+
}, others, {
|
|
577
|
+
"data-slot": "sidebar-input"
|
|
578
|
+
}));
|
|
551
579
|
}
|
|
552
580
|
function SidebarSeparator(props) {
|
|
553
581
|
const [local, others] = splitProps(props, [
|
|
554
582
|
'class'
|
|
555
583
|
]);
|
|
556
584
|
return createComponent(Separator.Root, mergeProps({
|
|
557
|
-
"data-slot": "sidebar-separator",
|
|
558
585
|
get ["class"] () {
|
|
559
586
|
return cn('border-border', local.class);
|
|
560
587
|
}
|
|
561
|
-
}, others
|
|
588
|
+
}, others, {
|
|
589
|
+
"data-slot": "sidebar-separator"
|
|
590
|
+
}));
|
|
562
591
|
}
|
|
563
592
|
const Sidebar = Object.assign(SidebarRoot, {
|
|
564
593
|
Root: SidebarRoot,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ark } from "@ark-ui/solid/factory";
|
|
2
|
+
import { Splitter } from "@ark-ui/solid/splitter";
|
|
2
3
|
import { createContext, splitProps, useContext } from "solid-js";
|
|
3
4
|
import { cn } from "../../internal/cn.jsx";
|
|
4
5
|
import { ChevronLeftIcon } from "../../internal/icons/ui/Icons.jsx";
|
|
5
6
|
import { Input } from "../input/index.jsx";
|
|
6
7
|
import { Separator } from "../separator/index.jsx";
|
|
7
|
-
import { Splitter, useSplitterContext } from "../splitter/index.jsx";
|
|
8
|
+
import { Splitter as index_jsx_Splitter, useSplitterContext } from "../splitter/index.jsx";
|
|
8
9
|
import { Tooltip } from "../tooltip/index.jsx";
|
|
9
10
|
const sidebarPanel = {
|
|
10
11
|
id: 'sidebar',
|
|
@@ -59,7 +60,8 @@ function SidebarRoot(props) {
|
|
|
59
60
|
'class',
|
|
60
61
|
'defaultSize',
|
|
61
62
|
'panelId',
|
|
62
|
-
'side'
|
|
63
|
+
'side',
|
|
64
|
+
'style'
|
|
63
65
|
]);
|
|
64
66
|
const panelId = ()=>local.panelId ?? 'sidebar';
|
|
65
67
|
const side = ()=>local.side ?? 'left';
|
|
@@ -67,7 +69,11 @@ function SidebarRoot(props) {
|
|
|
67
69
|
panelId,
|
|
68
70
|
side
|
|
69
71
|
}}>
|
|
70
|
-
<Splitter.Root {...others} panels={getDefaultPanels(side(), panelId())} defaultSize={local.defaultSize ?? getDefaultSidebarSize(side())} orientation="horizontal" data-side={side()} data-slot="sidebar-root" class={cn('isolate h-dvh min-h-96 w-full min-w-0 rounded-none border border-border bg-background text-foreground shadow-none', local.class)}
|
|
72
|
+
<Splitter.Root {...others} panels={getDefaultPanels(side(), panelId())} defaultSize={local.defaultSize ?? getDefaultSidebarSize(side())} orientation="horizontal" data-side={side()} data-slot="sidebar-root" class={cn('group/splitter relative box-border h-112 min-h-0 w-full min-w-0 rounded-md border border-border bg-card text-foreground shadow-sm data-dragging:cursor-col-resize data-dragging:data-[orientation=vertical]:cursor-row-resize', 'isolate h-dvh min-h-96 w-full min-w-0 rounded-none border border-border bg-background text-foreground shadow-none', local.class)} style={'string' == typeof local.style ? `width:;height:;${local.style}` : {
|
|
73
|
+
width: void 0,
|
|
74
|
+
height: void 0,
|
|
75
|
+
...local.style
|
|
76
|
+
}}/>
|
|
71
77
|
</SidebarConfigContext.Provider>;
|
|
72
78
|
}
|
|
73
79
|
function useSidebar() {
|
|
@@ -88,25 +94,26 @@ function SidebarPanel(props) {
|
|
|
88
94
|
const config = useSidebarConfig();
|
|
89
95
|
const splitter = useSplitterContext();
|
|
90
96
|
const collapsed = ()=>splitter().isPanelCollapsed(config.panelId());
|
|
91
|
-
return <Splitter.Panel {...others} id={config.panelId()} data-side={config.side()} data-slot="sidebar-panel" data-state={collapsed() ? 'collapsed' : 'expanded'} class={cn('group/sidebar-panel @container/sidebar-panel relative flex min-h-0 min-w-0 flex-col overflow-hidden bg-card p-0 text-card-foreground transition-colors duration-200 ease-in-out motion-reduce:transition-none', local.class)}/>;
|
|
97
|
+
return <Splitter.Panel {...others} id={config.panelId()} data-side={config.side()} data-slot="sidebar-panel" data-state={collapsed() ? 'collapsed' : 'expanded'} class={cn('box-border min-h-50 min-w-0 overflow-auto rounded-none border-0 border-border bg-card p-4 text-card-foreground shadow-none group-data-[orientation=vertical]/splitter:min-h-0 data-dragging:select-none', 'group/sidebar-panel @container/sidebar-panel relative flex min-h-0 min-w-0 flex-col overflow-hidden bg-card p-0 text-card-foreground transition-colors duration-200 ease-in-out motion-reduce:transition-none', local.class)}/>;
|
|
92
98
|
}
|
|
93
99
|
function SidebarInset(props) {
|
|
94
100
|
const [local, others] = splitProps(props, [
|
|
95
101
|
'class'
|
|
96
102
|
]);
|
|
97
103
|
const config = useSidebarConfig();
|
|
98
|
-
return <Splitter.Panel {...others} id="content" data-side={config.side()} data-slot="sidebar-inset" class={cn('relative min-w-0 overflow-auto bg-background p-0 text-foreground', local.class)}/>;
|
|
104
|
+
return <Splitter.Panel {...others} id="content" data-side={config.side()} data-slot="sidebar-inset" class={cn('box-border min-h-50 min-w-0 overflow-auto rounded-none border-0 border-border bg-card p-4 text-card-foreground shadow-none group-data-[orientation=vertical]/splitter:min-h-0 data-dragging:select-none', 'relative min-w-0 overflow-auto bg-background p-0 text-foreground', local.class)}/>;
|
|
99
105
|
}
|
|
100
106
|
function SidebarResizeTrigger(props) {
|
|
101
107
|
const [local, others] = splitProps(props, [
|
|
102
108
|
'aria-label',
|
|
109
|
+
'asChild',
|
|
103
110
|
'class',
|
|
104
111
|
'children'
|
|
105
112
|
]);
|
|
106
113
|
const config = useSidebarConfig();
|
|
107
114
|
const id = ()=>'left' === config.side() ? `${config.panelId()}:content` : `content:${config.panelId()}`;
|
|
108
|
-
return <Splitter.ResizeTrigger {...others} id={id()} aria-label={local['aria-label'] ?? 'Resize sidebar'} data-side={config.side()} data-slot="sidebar-resize-trigger" class={cn('z-2', local.class)}>
|
|
109
|
-
{local.children}
|
|
115
|
+
return <Splitter.ResizeTrigger {...others} asChild={local.asChild} id={id()} aria-label={local['aria-label'] ?? 'Resize sidebar'} data-side={config.side()} data-slot="sidebar-resize-trigger" class={cn("group/trigger relative z-1 box-border flex w-px min-w-px cursor-col-resize appearance-none items-center justify-center border-0 bg-transparent p-0 outline-0 transition-opacity duration-200 ease-in-out before:absolute before:h-full before:w-[0.5px] before:rounded-full before:bg-border before:transition-[background-color] before:duration-200 before:ease-in-out before:content-[''] after:absolute after:z-1 after:h-full after:w-2.5 after:content-[''] data-disabled:cursor-default data-disabled:opacity-50 data-dragging:before:bg-muted-foreground/40 data-[orientation=vertical]:h-px data-[orientation=vertical]:min-h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:min-w-0 data-[orientation=vertical]:cursor-row-resize data-[orientation=vertical]:before:h-[0.5px] data-[orientation=vertical]:before:w-full data-[orientation=vertical]:after:h-2.5 data-[orientation=vertical]:after:w-full [@media(hover:hover)]:[&:not(:disabled):not([data-disabled]):hover]:before:bg-muted-foreground/40", 'z-2', local.class)}>
|
|
116
|
+
{void 0 === local.children && !local.asChild ? <index_jsx_Splitter.ResizeTriggerIndicator/> : local.children}
|
|
110
117
|
</Splitter.ResizeTrigger>;
|
|
111
118
|
}
|
|
112
119
|
function SidebarTrigger(props) {
|
|
@@ -126,7 +133,7 @@ function SidebarTrigger(props) {
|
|
|
126
133
|
if (event.defaultPrevented) return;
|
|
127
134
|
toggleSidebarPanel(splitter, config.panelId());
|
|
128
135
|
};
|
|
129
|
-
return <ark.button asChild={local.asChild} type={local.type ?? 'button'} aria-label={local['aria-label'] ?? 'Toggle sidebar'} aria-expanded={!collapsed()} data-scope="sidebar" data-part="trigger" data-side={config.side()} data-
|
|
136
|
+
return <ark.button asChild={local.asChild} type={local.type ?? 'button'} aria-label={local['aria-label'] ?? 'Toggle sidebar'} aria-expanded={!collapsed()} data-scope="sidebar" data-part="trigger" data-side={config.side()} data-state={collapsed() ? 'collapsed' : 'expanded'} class={cn('relative z-4 -mx-3.5 inline-flex size-7 flex-none translate-y-10 cursor-pointer items-center justify-center rounded-full border border-border bg-background p-0 text-muted-foreground shadow-sm outline-0 transition-[background-color,color,box-shadow] duration-200 ease-in-out', 'focus-visible:outline-offset-0.5 focus-visible:outline-2 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none', '[&>svg]:size-4 [&>svg]:transition-transform [&>svg]:duration-200 [&>svg]:ease-in-out data-[side=left]:data-[state=collapsed]:[&>svg]:rotate-180 data-[side=right]:data-[state=expanded]:[&>svg]:rotate-180', 'hover:bg-accent hover:text-accent-foreground', local.class)} onClick={handleClick} {...others} data-slot="sidebar-trigger">
|
|
130
137
|
{void 0 === local.children && !local.asChild ? <ChevronLeftIcon/> : local.children}
|
|
131
138
|
</ark.button>;
|
|
132
139
|
}
|
|
@@ -134,76 +141,76 @@ function SidebarLabel(props) {
|
|
|
134
141
|
const [local, others] = splitProps(props, [
|
|
135
142
|
'class'
|
|
136
143
|
]);
|
|
137
|
-
return <ark.span data-scope="sidebar" data-part="label"
|
|
144
|
+
return <ark.span data-scope="sidebar" data-part="label" class={cn('min-w-0 truncate group-data-[state=collapsed]/sidebar-panel:sr-only', local.class)} {...others} data-slot="sidebar-label"/>;
|
|
138
145
|
}
|
|
139
146
|
function SidebarHeader(props) {
|
|
140
147
|
const [local, others] = splitProps(props, [
|
|
141
148
|
'class'
|
|
142
149
|
]);
|
|
143
|
-
return <ark.header data-scope="sidebar" data-part="header"
|
|
150
|
+
return <ark.header data-scope="sidebar" data-part="header" class={cn('flex flex-none items-center gap-2 p-3 group-data-[state=collapsed]/sidebar-panel:justify-center group-data-[state=collapsed]/sidebar-panel:px-1 [&>*:only-child]:w-full group-data-[state=collapsed]/sidebar-panel:[&>*:only-child]:w-auto', local.class)} {...others} data-slot="sidebar-header"/>;
|
|
144
151
|
}
|
|
145
152
|
function SidebarContent(props) {
|
|
146
153
|
const [local, others] = splitProps(props, [
|
|
147
154
|
'class'
|
|
148
155
|
]);
|
|
149
|
-
return <ark.div data-scope="sidebar" data-part="content"
|
|
156
|
+
return <ark.div data-scope="sidebar" data-part="content" class={cn('flex min-h-0 flex-auto [scrollbar-gutter:stable] flex-col overflow-auto overscroll-contain group-data-[state=collapsed]/sidebar-panel:[scrollbar-width:none] group-data-[state=collapsed]/sidebar-panel:[scrollbar-gutter:auto] group-data-[state=collapsed]/sidebar-panel:overflow-x-hidden group-data-[state=collapsed]/sidebar-panel:overflow-y-auto', local.class)} {...others} data-slot="sidebar-content"/>;
|
|
150
157
|
}
|
|
151
158
|
function SidebarExpandedContent(props) {
|
|
152
159
|
const [local, others] = splitProps(props, [
|
|
153
160
|
'class'
|
|
154
161
|
]);
|
|
155
162
|
const { collapsed } = useSidebar();
|
|
156
|
-
return <ark.div data-scope="sidebar" data-part="expanded-content"
|
|
163
|
+
return <ark.div data-scope="sidebar" data-part="expanded-content" class={local.class} {...others} data-slot="sidebar-expanded-content" hidden={collapsed()}/>;
|
|
157
164
|
}
|
|
158
165
|
function SidebarCollapsedContent(props) {
|
|
159
166
|
const [local, others] = splitProps(props, [
|
|
160
167
|
'class'
|
|
161
168
|
]);
|
|
162
169
|
const { collapsed } = useSidebar();
|
|
163
|
-
return <ark.div data-scope="sidebar" data-part="collapsed-content"
|
|
170
|
+
return <ark.div data-scope="sidebar" data-part="collapsed-content" class={local.class} {...others} data-slot="sidebar-collapsed-content" hidden={!collapsed()}/>;
|
|
164
171
|
}
|
|
165
172
|
function SidebarFooter(props) {
|
|
166
173
|
const [local, others] = splitProps(props, [
|
|
167
174
|
'class'
|
|
168
175
|
]);
|
|
169
|
-
return <ark.footer data-scope="sidebar" data-part="footer"
|
|
176
|
+
return <ark.footer data-scope="sidebar" data-part="footer" class={cn('flex flex-none items-center gap-2 p-3 group-data-[state=collapsed]/sidebar-panel:justify-center group-data-[state=collapsed]/sidebar-panel:px-1', local.class)} {...others} data-slot="sidebar-footer"/>;
|
|
170
177
|
}
|
|
171
178
|
function SidebarGroup(props) {
|
|
172
179
|
const [local, others] = splitProps(props, [
|
|
173
180
|
'class'
|
|
174
181
|
]);
|
|
175
|
-
return <ark.section data-scope="sidebar" data-part="group"
|
|
182
|
+
return <ark.section data-scope="sidebar" data-part="group" class={cn('flex flex-col gap-1 p-3 group-data-[state=collapsed]/sidebar-panel:px-1', local.class)} {...others} data-slot="sidebar-group"/>;
|
|
176
183
|
}
|
|
177
184
|
function SidebarGroupHeader(props) {
|
|
178
185
|
const [local, others] = splitProps(props, [
|
|
179
186
|
'class'
|
|
180
187
|
]);
|
|
181
|
-
return <ark.div data-scope="sidebar" data-part="group-header"
|
|
188
|
+
return <ark.div data-scope="sidebar" data-part="group-header" class={cn('flex min-w-0 items-center gap-2', local.class)} {...others} data-slot="sidebar-group-header"/>;
|
|
182
189
|
}
|
|
183
190
|
function SidebarGroupLabel(props) {
|
|
184
191
|
const [local, others] = splitProps(props, [
|
|
185
192
|
'class'
|
|
186
193
|
]);
|
|
187
|
-
return <ark.h3 data-scope="sidebar" data-part="group-label"
|
|
194
|
+
return <ark.h3 data-scope="sidebar" data-part="group-label" class={cn('min-w-0 flex-1 truncate px-2 text-xs leading-4 font-medium text-muted-foreground group-data-[state=collapsed]/sidebar-panel:sr-only', local.class)} {...others} data-slot="sidebar-group-label"/>;
|
|
188
195
|
}
|
|
189
196
|
function SidebarGroupAction(props) {
|
|
190
197
|
const [local, others] = splitProps(props, [
|
|
191
198
|
'class',
|
|
192
199
|
'type'
|
|
193
200
|
]);
|
|
194
|
-
return <ark.button type={local.type ?? 'button'} data-scope="sidebar" data-part="group-action"
|
|
201
|
+
return <ark.button type={local.type ?? 'button'} data-scope="sidebar" data-part="group-action" class={cn('focus-visible:outline-offset-0.5 me-2 inline-flex size-control-xs flex-none cursor-pointer items-center justify-center rounded-md p-0 text-muted-foreground outline-0 transition-colors duration-200 ease-in-out hover:bg-accent hover:text-accent-foreground focus-visible:outline-2 focus-visible:outline-ring motion-reduce:transition-none @max-[7rem]:hidden [&>svg]:size-4', local.class)} {...others} data-slot="sidebar-group-action"/>;
|
|
195
202
|
}
|
|
196
203
|
function SidebarNavigationList(props) {
|
|
197
204
|
const [local, others] = splitProps(props, [
|
|
198
205
|
'class'
|
|
199
206
|
]);
|
|
200
|
-
return <ark.ul data-scope="sidebar" data-part="navigation-list"
|
|
207
|
+
return <ark.ul data-scope="sidebar" data-part="navigation-list" class={cn('flex w-full min-w-0 flex-col gap-1', local.class)} {...others} data-slot="sidebar-navigation-list"/>;
|
|
201
208
|
}
|
|
202
209
|
function SidebarNavigationItem(props) {
|
|
203
210
|
const [local, others] = splitProps(props, [
|
|
204
211
|
'class'
|
|
205
212
|
]);
|
|
206
|
-
return <ark.li data-scope="sidebar" data-part="navigation-item"
|
|
213
|
+
return <ark.li data-scope="sidebar" data-part="navigation-item" class={cn('relative min-w-0', local.class)} {...others} data-slot="sidebar-navigation-item"/>;
|
|
207
214
|
}
|
|
208
215
|
function SidebarNavigationButton(props) {
|
|
209
216
|
const [local, others] = splitProps(props, [
|
|
@@ -214,25 +221,25 @@ function SidebarNavigationButton(props) {
|
|
|
214
221
|
'size',
|
|
215
222
|
'type'
|
|
216
223
|
]);
|
|
217
|
-
return <ark.button asChild={local.asChild} type={local.type ?? 'button'} aria-current={local['aria-current'] ?? (local.active ? 'page' : void 0)} data-scope="sidebar" data-part="navigation-button" data-
|
|
224
|
+
return <ark.button asChild={local.asChild} type={local.type ?? 'button'} aria-current={local['aria-current'] ?? (local.active ? 'page' : void 0)} data-scope="sidebar" data-part="navigation-button" data-active={local.active ? '' : void 0} data-size={local.size ?? 'md'} class={cn('flex w-full min-w-0 cursor-pointer items-center gap-2 overflow-hidden rounded-md px-2 py-1 text-start text-sm leading-5 text-ellipsis whitespace-nowrap text-card-foreground outline-0 transition-colors duration-200 ease-in-out has-[+_[data-slot=sidebar-navigation-badge]]:pe-10 @max-[7rem]:has-[+_[data-slot=sidebar-navigation-badge]]:pe-2', 'focus-visible:outline-offset-0.5 focus-visible:outline-2 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:bg-accent data-active:font-medium data-active:text-accent-foreground motion-reduce:transition-none [&:not(:disabled):not([aria-disabled=true])]:hover:bg-accent [&:not(:disabled):not([aria-disabled=true])]:hover:text-accent-foreground', 'group-data-[state=collapsed]/sidebar-panel:mx-auto group-data-[state=collapsed]/sidebar-panel:min-h-control-md group-data-[state=collapsed]/sidebar-panel:w-control-md group-data-[state=collapsed]/sidebar-panel:justify-center group-data-[state=collapsed]/sidebar-panel:bg-transparent group-data-[state=collapsed]/sidebar-panel:px-0 group-data-[state=collapsed]/sidebar-panel:hover:bg-transparent', '[&>[data-sidebar-icon]]:shrink-0 [&>span:last-child]:min-w-0 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', '[&>[data-scope=select][data-part=indicator]]:ms-auto @max-[7rem]:[&>[data-scope=select][data-part=indicator]]:hidden', '[&>[data-slot=collapsible-indicator]]:ms-auto [&>[data-slot=collapsible-indicator]]:size-control-xs @max-[7rem]:[&>[data-slot=collapsible-indicator]]:hidden [&>[data-slot=collapsible-indicator]>svg]:size-3', '[&>[data-slot=menu-indicator]]:ms-auto [&>[data-slot=menu-indicator]]:size-control-xs [&>[data-slot=menu-indicator]]:leading-none [&>[data-slot=menu-indicator]]:text-muted-foreground @max-[7rem]:[&>[data-slot=menu-indicator]]:hidden [&>[data-slot=menu-indicator]>svg]:block [&>[data-slot=menu-indicator]>svg]:size-4', 'sm' === local.size && 'min-h-control-sm text-xs', (void 0 === local.size || 'md' === local.size) && 'min-h-control-md', 'lg' === local.size && 'min-h-control-lg', local.class)} {...others} data-slot="sidebar-navigation-button"/>;
|
|
218
225
|
}
|
|
219
226
|
function SidebarNavigationBadge(props) {
|
|
220
227
|
const [local, others] = splitProps(props, [
|
|
221
228
|
'class'
|
|
222
229
|
]);
|
|
223
|
-
return <ark.span data-scope="sidebar" data-part="navigation-badge"
|
|
230
|
+
return <ark.span data-scope="sidebar" data-part="navigation-badge" class={cn('pointer-events-none absolute end-2.5 top-1/2 z-1 box-border inline-grid size-5 -translate-y-1/2 place-items-center rounded-full bg-primary p-0 text-[0.5625rem] leading-none font-medium text-primary-foreground tabular-nums @max-[7rem]:hidden', local.class)} {...others} data-slot="sidebar-navigation-badge"/>;
|
|
224
231
|
}
|
|
225
232
|
function SidebarNavigationSubList(props) {
|
|
226
233
|
const [local, others] = splitProps(props, [
|
|
227
234
|
'class'
|
|
228
235
|
]);
|
|
229
|
-
return <ark.ul data-scope="sidebar" data-part="navigation-sub-list"
|
|
236
|
+
return <ark.ul data-scope="sidebar" data-part="navigation-sub-list" class={cn('ms-4 mt-1 flex w-auto min-w-0 flex-col gap-1 border-s border-border ps-2 group-data-[state=collapsed]/sidebar-panel:hidden', local.class)} {...others} data-slot="sidebar-navigation-sub-list"/>;
|
|
230
237
|
}
|
|
231
238
|
function SidebarNavigationSubItem(props) {
|
|
232
239
|
const [local, others] = splitProps(props, [
|
|
233
240
|
'class'
|
|
234
241
|
]);
|
|
235
|
-
return <ark.li data-scope="sidebar" data-part="navigation-sub-item"
|
|
242
|
+
return <ark.li data-scope="sidebar" data-part="navigation-sub-item" class={cn('relative min-w-0', local.class)} {...others} data-slot="sidebar-navigation-sub-item"/>;
|
|
236
243
|
}
|
|
237
244
|
function SidebarNavigationSubButton(props) {
|
|
238
245
|
const [local, others] = splitProps(props, [
|
|
@@ -242,7 +249,7 @@ function SidebarNavigationSubButton(props) {
|
|
|
242
249
|
'children',
|
|
243
250
|
'class'
|
|
244
251
|
]);
|
|
245
|
-
return <ark.a asChild={local.asChild} aria-current={local['aria-current'] ?? (local.active ? 'page' : void 0)} data-scope="sidebar" data-part="navigation-sub-button" data-
|
|
252
|
+
return <ark.a asChild={local.asChild} aria-current={local['aria-current'] ?? (local.active ? 'page' : void 0)} data-scope="sidebar" data-part="navigation-sub-button" data-active={local.active ? '' : void 0} class={cn('flex min-h-control-sm w-full min-w-0 cursor-pointer items-center gap-2 overflow-hidden rounded-md px-2 text-start text-sm leading-5 text-ellipsis whitespace-nowrap text-card-foreground outline-0 transition-[background-color,border-color,color,box-shadow] duration-200 ease-in-out has-[+_[data-slot=sidebar-navigation-badge]]:pe-10 @max-[7rem]:has-[+_[data-slot=sidebar-navigation-badge]]:pe-2', 'focus-visible:outline-offset-0.5 focus-visible:outline-2 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:bg-accent data-active:font-medium data-active:text-accent-foreground motion-reduce:transition-none [&:not(:disabled):not([aria-disabled=true])]:hover:bg-accent [&:not(:disabled):not([aria-disabled=true])]:hover:text-accent-foreground', '[&>[data-sidebar-icon]]:shrink-0 [&>span:last-child]:min-w-0 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0', local.class)} {...others} data-slot="sidebar-navigation-sub-button">
|
|
246
253
|
{'string' == typeof local.children ? <span data-slot="sidebar-navigation-sub-label">{local.children}</span> : local.children}
|
|
247
254
|
</ark.a>;
|
|
248
255
|
}
|
|
@@ -270,13 +277,13 @@ function SidebarInput(props) {
|
|
|
270
277
|
const [local, others] = splitProps(props, [
|
|
271
278
|
'class'
|
|
272
279
|
]);
|
|
273
|
-
return <Input.Root
|
|
280
|
+
return <Input.Root class={cn('w-full group-data-[state=collapsed]/sidebar-panel:hidden', local.class)} {...others} data-slot="sidebar-input"/>;
|
|
274
281
|
}
|
|
275
282
|
function SidebarSeparator(props) {
|
|
276
283
|
const [local, others] = splitProps(props, [
|
|
277
284
|
'class'
|
|
278
285
|
]);
|
|
279
|
-
return <Separator.Root
|
|
286
|
+
return <Separator.Root class={cn('border-border', local.class)} {...others} data-slot="sidebar-separator"/>;
|
|
280
287
|
}
|
|
281
288
|
const Sidebar = Object.assign(SidebarRoot, {
|
|
282
289
|
Root: SidebarRoot,
|