@mvn-ui/react 0.1.1 → 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/index.css +250 -28
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +71 -79
- package/dist/index.d.ts +71 -79
- package/dist/index.js +641 -394
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +638 -396
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import React49__default, { createContext, forwardRef, useRef, useState, useEffec
|
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
|
-
import { Loader2Icon, XIcon, EyeOffIcon, EyeIcon, ChevronDownIcon, ChevronUpIcon, CheckIcon, MinusIcon, CircleIcon, X, InboxIcon, ChevronRightIcon, ChevronsUpDownIcon,
|
|
8
|
+
import { Loader2Icon, XIcon, EyeOffIcon, EyeIcon, ChevronDownIcon, ChevronUpIcon, CheckIcon, MinusIcon, CircleIcon, X, InboxIcon, ChevronRightIcon, ChevronsUpDownIcon, CalendarIcon, ArrowLeft, ArrowRight, Calendar as Calendar$1, ChevronLeft, ChevronRight, ChevronDown, Star, RotateCcw, MoreHorizontalIcon, ChevronLeftIcon, ChevronsLeftIcon, ChevronsRightIcon, GripVerticalIcon, PanelLeftIcon, FileDown, SearchIcon, TextAlignJustify, Scaling, Pin, ListFilter, Minus, Plus } from 'lucide-react';
|
|
9
9
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
10
10
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
11
11
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
@@ -795,7 +795,28 @@ Textarea.displayName = "Textarea";
|
|
|
795
795
|
|
|
796
796
|
// src/components/ui/select/index.tsx
|
|
797
797
|
init_utils();
|
|
798
|
-
var Select =
|
|
798
|
+
var Select = React49.forwardRef(
|
|
799
|
+
({ children, value, onValueChange, ...props }, _ref) => {
|
|
800
|
+
const [internalValue, setInternalValue] = React49.useState(value ?? "");
|
|
801
|
+
React49.useEffect(() => {
|
|
802
|
+
setInternalValue(value ?? "");
|
|
803
|
+
}, [value]);
|
|
804
|
+
const handleValueChange = (newValue) => {
|
|
805
|
+
setInternalValue(newValue);
|
|
806
|
+
onValueChange?.(newValue);
|
|
807
|
+
};
|
|
808
|
+
return /* @__PURE__ */ jsx(
|
|
809
|
+
SelectPrimitive.Root,
|
|
810
|
+
{
|
|
811
|
+
value: internalValue,
|
|
812
|
+
onValueChange: handleValueChange,
|
|
813
|
+
...props,
|
|
814
|
+
children
|
|
815
|
+
}
|
|
816
|
+
);
|
|
817
|
+
}
|
|
818
|
+
);
|
|
819
|
+
Select.displayName = "Select";
|
|
799
820
|
var SelectGroup = SelectPrimitive.Group;
|
|
800
821
|
var SelectValue = SelectPrimitive.Value;
|
|
801
822
|
var triggerVariants = cva(
|
|
@@ -1157,7 +1178,7 @@ var toggleGroupVariants = cva(
|
|
|
1157
1178
|
}
|
|
1158
1179
|
);
|
|
1159
1180
|
var toggleGroupItemVariants = cva(
|
|
1160
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:
|
|
1181
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md border-b border-line-strong font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:border-primary data-[state=on]:text-primary hover:bg-surface-3 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
1161
1182
|
{
|
|
1162
1183
|
variants: {
|
|
1163
1184
|
size: {
|
|
@@ -1172,15 +1193,7 @@ var toggleGroupItemVariants = cva(
|
|
|
1172
1193
|
}
|
|
1173
1194
|
);
|
|
1174
1195
|
var ToggleGroup = React49.forwardRef(
|
|
1175
|
-
({
|
|
1176
|
-
className,
|
|
1177
|
-
size,
|
|
1178
|
-
items,
|
|
1179
|
-
itemClassName,
|
|
1180
|
-
renderItem,
|
|
1181
|
-
children,
|
|
1182
|
-
...props
|
|
1183
|
-
}, ref) => {
|
|
1196
|
+
({ className, size, items, itemClassName, renderItem, children, ...props }, ref) => {
|
|
1184
1197
|
const defaultRenderItem = React49.useCallback(
|
|
1185
1198
|
(item) => /* @__PURE__ */ jsxs(
|
|
1186
1199
|
ToggleGroupPrimitive.Item,
|
|
@@ -1273,21 +1286,18 @@ Slider.displayName = SliderPrimitive.Root.displayName;
|
|
|
1273
1286
|
|
|
1274
1287
|
// src/components/ui/input-group/index.tsx
|
|
1275
1288
|
init_utils();
|
|
1276
|
-
var inputGroupVariants = cva(
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
default: "h-10 text-[0.9375rem]",
|
|
1283
|
-
lg: "h-12 text-base"
|
|
1284
|
-
}
|
|
1285
|
-
},
|
|
1286
|
-
defaultVariants: {
|
|
1287
|
-
size: "default"
|
|
1289
|
+
var inputGroupVariants = cva("flex items-stretch w-full", {
|
|
1290
|
+
variants: {
|
|
1291
|
+
size: {
|
|
1292
|
+
sm: "h-8 text-sm",
|
|
1293
|
+
default: "h-10 text-[0.9375rem]",
|
|
1294
|
+
lg: "h-12 text-base"
|
|
1288
1295
|
}
|
|
1296
|
+
},
|
|
1297
|
+
defaultVariants: {
|
|
1298
|
+
size: "default"
|
|
1289
1299
|
}
|
|
1290
|
-
);
|
|
1300
|
+
});
|
|
1291
1301
|
var InputGroup = React49.forwardRef(
|
|
1292
1302
|
({
|
|
1293
1303
|
className,
|
|
@@ -1329,9 +1339,8 @@ var InputGroup = React49.forwardRef(
|
|
|
1329
1339
|
return React49.cloneElement(child, {
|
|
1330
1340
|
className: cn(
|
|
1331
1341
|
child.props.className,
|
|
1332
|
-
leftAddon && "rounded-l-none border-l-0",
|
|
1333
|
-
rightAddon && "rounded-r-none border-r-0"
|
|
1334
|
-
(leftElement || rightElement) && "rounded-none"
|
|
1342
|
+
(leftAddon || leftElement) && "rounded-l-none border-l-0",
|
|
1343
|
+
(rightAddon || rightElement) && "rounded-r-none border-r-0"
|
|
1335
1344
|
)
|
|
1336
1345
|
});
|
|
1337
1346
|
}
|
|
@@ -1459,7 +1468,7 @@ function deleteValueByPath(obj, path) {
|
|
|
1459
1468
|
|
|
1460
1469
|
// src/components/ui/form/form-instance.ts
|
|
1461
1470
|
var externalMounts = /* @__PURE__ */ new WeakMap();
|
|
1462
|
-
function createFormInstance() {
|
|
1471
|
+
function createFormInstance(name) {
|
|
1463
1472
|
const store = {
|
|
1464
1473
|
values: {},
|
|
1465
1474
|
errors: {}
|
|
@@ -1484,7 +1493,10 @@ function createFormInstance() {
|
|
|
1484
1493
|
};
|
|
1485
1494
|
subscribers.forEach((fn) => fn && fn(snapshot));
|
|
1486
1495
|
fieldMeta.forEach((meta) => meta.onStoreChange && meta.onStoreChange());
|
|
1487
|
-
if (ext)
|
|
1496
|
+
if (ext)
|
|
1497
|
+
ext.forEach(
|
|
1498
|
+
(handler) => handler.onStoreChange && handler.onStoreChange()
|
|
1499
|
+
);
|
|
1488
1500
|
}
|
|
1489
1501
|
function scheduleNotify() {
|
|
1490
1502
|
if (pendingNotify) return;
|
|
@@ -1515,8 +1527,8 @@ function createFormInstance() {
|
|
|
1515
1527
|
if (options && options.clone === false) return store.values;
|
|
1516
1528
|
return cloneDeep(store.values);
|
|
1517
1529
|
},
|
|
1518
|
-
getFieldValue(
|
|
1519
|
-
const path = toNamePath(
|
|
1530
|
+
getFieldValue(name2) {
|
|
1531
|
+
const path = toNamePath(name2);
|
|
1520
1532
|
return getValueByPath(store.values, path);
|
|
1521
1533
|
},
|
|
1522
1534
|
setFieldsValue(vals, options) {
|
|
@@ -1582,24 +1594,27 @@ function createFormInstance() {
|
|
|
1582
1594
|
instance.validateFields(names).catch((validationError) => {
|
|
1583
1595
|
if (validationError && validationError.errorFields) {
|
|
1584
1596
|
mounts.forEach((handler) => {
|
|
1585
|
-
if (handler.onFieldsChange)
|
|
1597
|
+
if (handler.onFieldsChange)
|
|
1598
|
+
handler.onFieldsChange(validationError.errorFields);
|
|
1586
1599
|
});
|
|
1587
1600
|
try {
|
|
1588
1601
|
const ext = externalMounts.get(instance);
|
|
1589
1602
|
if (ext) {
|
|
1590
1603
|
ext.forEach((handler) => {
|
|
1591
|
-
if (handler.onFieldsChange)
|
|
1604
|
+
if (handler.onFieldsChange)
|
|
1605
|
+
handler.onFieldsChange(validationError.errorFields);
|
|
1592
1606
|
});
|
|
1593
1607
|
}
|
|
1594
1608
|
} catch (error) {
|
|
1595
1609
|
}
|
|
1596
|
-
if (instance.onFieldsChange)
|
|
1610
|
+
if (instance.onFieldsChange)
|
|
1611
|
+
instance.onFieldsChange(validationError.errorFields);
|
|
1597
1612
|
}
|
|
1598
1613
|
});
|
|
1599
1614
|
}
|
|
1600
1615
|
},
|
|
1601
|
-
setFieldValue(
|
|
1602
|
-
const path = toNamePath(
|
|
1616
|
+
setFieldValue(name2, value) {
|
|
1617
|
+
const path = toNamePath(name2);
|
|
1603
1618
|
setValueByPath(store.values, path, value);
|
|
1604
1619
|
const key = namePathToString(path);
|
|
1605
1620
|
delete store.errors[key];
|
|
@@ -1724,16 +1739,21 @@ function createFormInstance() {
|
|
|
1724
1739
|
return Promise.resolve({ ...store.values });
|
|
1725
1740
|
});
|
|
1726
1741
|
},
|
|
1727
|
-
submit() {
|
|
1728
|
-
|
|
1742
|
+
async submit() {
|
|
1743
|
+
try {
|
|
1744
|
+
await instance.validateFields();
|
|
1729
1745
|
mounts.forEach((handler) => handler.onSubmit && handler.onSubmit());
|
|
1730
1746
|
try {
|
|
1731
1747
|
const ext = externalMounts.get(instance);
|
|
1732
|
-
if (ext)
|
|
1748
|
+
if (ext)
|
|
1749
|
+
ext.forEach(
|
|
1750
|
+
(external_handler) => external_handler.onSubmit && external_handler.onSubmit()
|
|
1751
|
+
);
|
|
1733
1752
|
} catch (error) {
|
|
1734
1753
|
}
|
|
1735
|
-
}
|
|
1736
|
-
|
|
1754
|
+
} catch (validate_error) {
|
|
1755
|
+
return await Promise.reject(validate_error);
|
|
1756
|
+
}
|
|
1737
1757
|
},
|
|
1738
1758
|
resetFields(names) {
|
|
1739
1759
|
let changed = false;
|
|
@@ -1747,8 +1767,8 @@ function createFormInstance() {
|
|
|
1747
1767
|
scheduleNotify();
|
|
1748
1768
|
return;
|
|
1749
1769
|
}
|
|
1750
|
-
names.forEach((
|
|
1751
|
-
const path = toNamePath(
|
|
1770
|
+
names.forEach((name2) => {
|
|
1771
|
+
const path = toNamePath(name2);
|
|
1752
1772
|
const key = namePathToString(path);
|
|
1753
1773
|
if (getValueByPath(store.values, path) !== void 0) {
|
|
1754
1774
|
changed = true;
|
|
@@ -1762,8 +1782,8 @@ function createFormInstance() {
|
|
|
1762
1782
|
if (changed) version += 1;
|
|
1763
1783
|
scheduleNotify();
|
|
1764
1784
|
},
|
|
1765
|
-
getFieldError(
|
|
1766
|
-
const path = toNamePath(
|
|
1785
|
+
getFieldError(name2) {
|
|
1786
|
+
const path = toNamePath(name2);
|
|
1767
1787
|
const key = namePathToString(path);
|
|
1768
1788
|
return store.errors[key] || [];
|
|
1769
1789
|
},
|
|
@@ -1773,8 +1793,8 @@ function createFormInstance() {
|
|
|
1773
1793
|
return { name: meta.namePath, errors: store.errors[key] || [] };
|
|
1774
1794
|
});
|
|
1775
1795
|
},
|
|
1776
|
-
registerField(
|
|
1777
|
-
const path = toNamePath(
|
|
1796
|
+
registerField(name2, meta) {
|
|
1797
|
+
const path = toNamePath(name2);
|
|
1778
1798
|
const key = namePathToString(path);
|
|
1779
1799
|
fieldMeta.set(key, {
|
|
1780
1800
|
namePath: path,
|
|
@@ -1785,8 +1805,8 @@ function createFormInstance() {
|
|
|
1785
1805
|
getValueFromEvent: meta.getValueFromEvent
|
|
1786
1806
|
});
|
|
1787
1807
|
},
|
|
1788
|
-
unregisterField(
|
|
1789
|
-
const path = toNamePath(
|
|
1808
|
+
unregisterField(name2) {
|
|
1809
|
+
const path = toNamePath(name2);
|
|
1790
1810
|
const key = namePathToString(path);
|
|
1791
1811
|
fieldMeta.delete(key);
|
|
1792
1812
|
if (!preserveOnUnmount) {
|
|
@@ -1810,15 +1830,15 @@ function createFormInstance() {
|
|
|
1810
1830
|
return () => subscribers.delete(fn);
|
|
1811
1831
|
},
|
|
1812
1832
|
INTERNAL: {
|
|
1813
|
-
name
|
|
1833
|
+
name,
|
|
1814
1834
|
itemRef: (nameArr) => (node) => {
|
|
1815
1835
|
const key = namePathToString(nameArr);
|
|
1816
1836
|
if (node) itemsRef[key] = node;
|
|
1817
1837
|
else delete itemsRef[key];
|
|
1818
1838
|
}
|
|
1819
1839
|
},
|
|
1820
|
-
getFieldInstance(
|
|
1821
|
-
const key = namePathToString(toNamePath(
|
|
1840
|
+
getFieldInstance(name2) {
|
|
1841
|
+
const key = namePathToString(toNamePath(name2));
|
|
1822
1842
|
return itemsRef[key];
|
|
1823
1843
|
}
|
|
1824
1844
|
};
|
|
@@ -1827,16 +1847,19 @@ function createFormInstance() {
|
|
|
1827
1847
|
instance.preserveOnUnmount = preserveOnUnmount;
|
|
1828
1848
|
};
|
|
1829
1849
|
instance.preserveOnUnmount = preserveOnUnmount;
|
|
1850
|
+
if (name && instance.INTERNAL) instance.INTERNAL.name = name;
|
|
1830
1851
|
return instance;
|
|
1831
1852
|
}
|
|
1832
1853
|
|
|
1833
1854
|
// src/components/ui/form/form-context.tsx
|
|
1834
1855
|
var FormContext = createContext(null);
|
|
1835
|
-
function useForm() {
|
|
1856
|
+
function useForm(name) {
|
|
1836
1857
|
const ref = useRef();
|
|
1837
1858
|
if (!ref.current) {
|
|
1838
|
-
const instance = createFormInstance();
|
|
1859
|
+
const instance = createFormInstance(name);
|
|
1839
1860
|
ref.current = instance;
|
|
1861
|
+
} else if (name && ref.current.INTERNAL) {
|
|
1862
|
+
ref.current.INTERNAL.name = name;
|
|
1840
1863
|
}
|
|
1841
1864
|
return ref.current;
|
|
1842
1865
|
}
|
|
@@ -1998,7 +2021,7 @@ var Form = forwardRef(function Form2(props, ref) {
|
|
|
1998
2021
|
};
|
|
1999
2022
|
let unregisterMount;
|
|
2000
2023
|
if (form.registerMount) {
|
|
2001
|
-
const mountId = Math.random().toString(36).slice(2);
|
|
2024
|
+
const mountId = form.INTERNAL?.name ?? Math.random().toString(36).slice(2);
|
|
2002
2025
|
if (preserve !== void 0) {
|
|
2003
2026
|
if (form.setPreserve) form.setPreserve(!!preserve);
|
|
2004
2027
|
else form.preserveOnUnmount = !!preserve;
|
|
@@ -2010,7 +2033,7 @@ var Form = forwardRef(function Form2(props, ref) {
|
|
|
2010
2033
|
map = /* @__PURE__ */ new Map();
|
|
2011
2034
|
externalMounts.set(form, map);
|
|
2012
2035
|
}
|
|
2013
|
-
const mountId = Math.random().toString(36).slice(2);
|
|
2036
|
+
const mountId = form.INTERNAL?.name ?? Math.random().toString(36).slice(2);
|
|
2014
2037
|
map.set(mountId, mountHandlers);
|
|
2015
2038
|
if (preserve !== void 0) {
|
|
2016
2039
|
if (form.setPreserve) form.setPreserve(!!preserve);
|
|
@@ -2085,7 +2108,7 @@ var FormItem = (props) => {
|
|
|
2085
2108
|
const requiredIndicator = requiredMark === void 0 ? /* @__PURE__ */ jsx("span", { className: "text-destructive mr-1", "aria-hidden": "true", children: "*" }) : /* @__PURE__ */ jsx("span", { className: "mr-1", "aria-hidden": "true", children: requiredMark });
|
|
2086
2109
|
if (!children || !React49__default.isValidElement(children)) return null;
|
|
2087
2110
|
const childProps = {};
|
|
2088
|
-
|
|
2111
|
+
childProps[valuePropName] = fieldValue;
|
|
2089
2112
|
const childClass = children.props.className;
|
|
2090
2113
|
if (childClass || props.className) {
|
|
2091
2114
|
childProps.className = [childClass, props.className].filter(Boolean).join(" ");
|
|
@@ -4291,13 +4314,20 @@ PaginationEllipsis.displayName = "PaginationEllipsis";
|
|
|
4291
4314
|
|
|
4292
4315
|
// src/components/ui/tabs/index.tsx
|
|
4293
4316
|
init_utils();
|
|
4294
|
-
var
|
|
4317
|
+
var TabsContext = React49.createContext({
|
|
4318
|
+
destroyInactiveTabs: true
|
|
4319
|
+
});
|
|
4320
|
+
var Tabs = React49.forwardRef(({ destroyInactiveTabs = true, ...props }, ref) => /* @__PURE__ */ jsx(TabsContext.Provider, { value: { destroyInactiveTabs }, children: /* @__PURE__ */ jsx(TabsPrimitive.Root, { ref, ...props }) }));
|
|
4321
|
+
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
4295
4322
|
var TabsList = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4296
4323
|
TabsPrimitive.List,
|
|
4297
4324
|
{
|
|
4298
4325
|
ref,
|
|
4299
4326
|
className: cn(
|
|
4300
|
-
"
|
|
4327
|
+
"flex items-stretch gap-0 text-muted-foreground",
|
|
4328
|
+
"data-[orientation=horizontal]:w-full data-[orientation=horizontal]:border-b data-[orientation=vertical]:border-border",
|
|
4329
|
+
"data-[orientation=vertical]:w-56 data-[orientation=vertical]:border-r data-[orientation=vertical]:border-border",
|
|
4330
|
+
"data-[orientation=vertical]:flex-col data-[orientation=vertical]:shrink-0",
|
|
4301
4331
|
className
|
|
4302
4332
|
),
|
|
4303
4333
|
...props
|
|
@@ -4309,27 +4339,34 @@ var TabsTrigger = React49.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
4309
4339
|
{
|
|
4310
4340
|
ref,
|
|
4311
4341
|
className: cn(
|
|
4312
|
-
"inline-flex items-center justify-center whitespace-nowrap
|
|
4313
|
-
"
|
|
4314
|
-
"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
|
|
4315
|
-
className
|
|
4316
|
-
),
|
|
4317
|
-
...props
|
|
4318
|
-
}
|
|
4319
|
-
));
|
|
4320
|
-
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
4321
|
-
var TabsContent = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4322
|
-
TabsPrimitive.Content,
|
|
4323
|
-
{
|
|
4324
|
-
ref,
|
|
4325
|
-
className: cn(
|
|
4342
|
+
"inline-flex min-w-0 items-center justify-center whitespace-nowrap text-sm font-medium",
|
|
4343
|
+
"transition-all duration-150 text-muted-foreground hover:text-primary",
|
|
4326
4344
|
"ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
4327
|
-
"
|
|
4345
|
+
"data-[orientation=horizontal]:flex-1 data-[orientation=horizontal]:px-4 data-[orientation=horizontal]:py-3 data-[orientation=horizontal]:border-b-2 data-[orientation=horizontal]:border-border",
|
|
4346
|
+
"data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start data-[orientation=vertical]:px-3 data-[orientation=vertical]:py-2 data-[orientation=vertical]:border-l-2 data-[orientation=vertical]:border-border",
|
|
4347
|
+
"data-[state=active]:text-primary data-[state=active]:font-semibold data-[state=active]:bg-muted/60 data-[state=active]:border-primary",
|
|
4348
|
+
"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed",
|
|
4328
4349
|
className
|
|
4329
4350
|
),
|
|
4330
4351
|
...props
|
|
4331
4352
|
}
|
|
4332
4353
|
));
|
|
4354
|
+
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
4355
|
+
var TabsContent = React49.forwardRef(({ className, ...props }, ref) => {
|
|
4356
|
+
const { destroyInactiveTabs } = React49.useContext(TabsContext);
|
|
4357
|
+
return /* @__PURE__ */ jsx(
|
|
4358
|
+
TabsPrimitive.Content,
|
|
4359
|
+
{
|
|
4360
|
+
ref,
|
|
4361
|
+
forceMount: destroyInactiveTabs ? void 0 : true,
|
|
4362
|
+
className: cn(
|
|
4363
|
+
"ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=inactive]:hidden",
|
|
4364
|
+
className
|
|
4365
|
+
),
|
|
4366
|
+
...props
|
|
4367
|
+
}
|
|
4368
|
+
);
|
|
4369
|
+
});
|
|
4333
4370
|
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
4334
4371
|
function SimpleTabs({
|
|
4335
4372
|
items,
|
|
@@ -4340,10 +4377,12 @@ function SimpleTabs({
|
|
|
4340
4377
|
tabsListClassName,
|
|
4341
4378
|
tabsTriggerClassName,
|
|
4342
4379
|
tabsContentClassName,
|
|
4343
|
-
orientation = "horizontal"
|
|
4380
|
+
orientation = "horizontal",
|
|
4381
|
+
destroyInactiveTabs = true
|
|
4344
4382
|
}) {
|
|
4345
|
-
const defaultTabsListClassName = orientation === "vertical" ? "
|
|
4346
|
-
const defaultTabsContentClassName = orientation === "vertical" ? "
|
|
4383
|
+
const defaultTabsListClassName = orientation === "vertical" ? "bg-background/60 p-2" : "w-full";
|
|
4384
|
+
const defaultTabsContentClassName = orientation === "vertical" ? "ml-0 flex-1 min-w-0" : "w-full";
|
|
4385
|
+
const rootLayoutClassName = orientation === "vertical" ? "flex flex-row w-full max-w-full items-start gap-6" : "flex w-full flex-col gap-6";
|
|
4347
4386
|
return /* @__PURE__ */ jsxs(
|
|
4348
4387
|
Tabs,
|
|
4349
4388
|
{
|
|
@@ -4351,20 +4390,15 @@ function SimpleTabs({
|
|
|
4351
4390
|
value,
|
|
4352
4391
|
onValueChange,
|
|
4353
4392
|
orientation,
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
className
|
|
4357
|
-
),
|
|
4393
|
+
destroyInactiveTabs,
|
|
4394
|
+
className: cn(rootLayoutClassName, className),
|
|
4358
4395
|
children: [
|
|
4359
4396
|
/* @__PURE__ */ jsx(TabsList, { className: cn(defaultTabsListClassName, tabsListClassName), children: items.map((item) => /* @__PURE__ */ jsx(
|
|
4360
4397
|
TabsTrigger,
|
|
4361
4398
|
{
|
|
4362
4399
|
value: item.value,
|
|
4363
4400
|
disabled: item.disabled,
|
|
4364
|
-
className: cn(
|
|
4365
|
-
orientation === "vertical" && "mb-1 w-full justify-start",
|
|
4366
|
-
tabsTriggerClassName
|
|
4367
|
-
),
|
|
4401
|
+
className: cn(tabsTriggerClassName),
|
|
4368
4402
|
children: item.label
|
|
4369
4403
|
},
|
|
4370
4404
|
item.value
|
|
@@ -4667,6 +4701,8 @@ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
|
4667
4701
|
|
|
4668
4702
|
// src/components/ui/sidebar/index.tsx
|
|
4669
4703
|
init_utils();
|
|
4704
|
+
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
4705
|
+
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
4670
4706
|
var SIDEBAR_WIDTH = "16rem";
|
|
4671
4707
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
4672
4708
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
@@ -4678,395 +4714,601 @@ function useSidebar() {
|
|
|
4678
4714
|
}
|
|
4679
4715
|
return context;
|
|
4680
4716
|
}
|
|
4681
|
-
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4692
|
-
|
|
4693
|
-
|
|
4694
|
-
|
|
4695
|
-
(
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4717
|
+
function SidebarProvider({
|
|
4718
|
+
defaultOpen = true,
|
|
4719
|
+
open: openProp,
|
|
4720
|
+
onOpenChange: setOpenProp,
|
|
4721
|
+
className,
|
|
4722
|
+
style,
|
|
4723
|
+
children,
|
|
4724
|
+
...props
|
|
4725
|
+
}) {
|
|
4726
|
+
const [_open, _setOpen] = React49.useState(defaultOpen);
|
|
4727
|
+
const open = openProp ?? _open;
|
|
4728
|
+
const setOpen = React49.useCallback(
|
|
4729
|
+
(value) => {
|
|
4730
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
4731
|
+
if (setOpenProp) {
|
|
4732
|
+
setOpenProp(openState);
|
|
4733
|
+
} else {
|
|
4734
|
+
_setOpen(openState);
|
|
4735
|
+
}
|
|
4736
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
4737
|
+
},
|
|
4738
|
+
[setOpenProp, open]
|
|
4739
|
+
);
|
|
4740
|
+
const toggleSidebar = React49.useCallback(() => {
|
|
4741
|
+
return setOpen((open2) => !open2);
|
|
4742
|
+
}, [setOpen]);
|
|
4743
|
+
React49.useEffect(() => {
|
|
4744
|
+
const handleKeyDown = (event) => {
|
|
4745
|
+
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
4746
|
+
event.preventDefault();
|
|
4747
|
+
toggleSidebar();
|
|
4748
|
+
}
|
|
4749
|
+
};
|
|
4750
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
4751
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
4752
|
+
}, [toggleSidebar]);
|
|
4753
|
+
const state = open ? "expanded" : "collapsed";
|
|
4754
|
+
const contextValue = React49.useMemo(
|
|
4755
|
+
() => ({
|
|
4756
|
+
state,
|
|
4757
|
+
open,
|
|
4758
|
+
setOpen,
|
|
4759
|
+
toggleSidebar
|
|
4760
|
+
}),
|
|
4761
|
+
[state, open, setOpen, toggleSidebar]
|
|
4762
|
+
);
|
|
4763
|
+
return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx(
|
|
4764
|
+
"div",
|
|
4765
|
+
{
|
|
4766
|
+
"data-slot": "sidebar-wrapper",
|
|
4767
|
+
style: {
|
|
4768
|
+
"--sidebar-width": SIDEBAR_WIDTH,
|
|
4769
|
+
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
4770
|
+
...style
|
|
4702
4771
|
},
|
|
4703
|
-
|
|
4704
|
-
|
|
4705
|
-
|
|
4706
|
-
|
|
4707
|
-
|
|
4708
|
-
|
|
4709
|
-
|
|
4710
|
-
|
|
4711
|
-
|
|
4712
|
-
|
|
4713
|
-
|
|
4714
|
-
|
|
4715
|
-
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
};
|
|
4724
|
-
window.addEventListener("keydown", handleKeyDown);
|
|
4725
|
-
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
4726
|
-
}, [toggleSidebar]);
|
|
4727
|
-
const state = open ? "expanded" : "collapsed";
|
|
4728
|
-
const contextValue = React49.useMemo(
|
|
4729
|
-
() => ({
|
|
4730
|
-
state,
|
|
4731
|
-
open,
|
|
4732
|
-
setOpen,
|
|
4733
|
-
isMobile,
|
|
4734
|
-
openMobile,
|
|
4735
|
-
setOpenMobile,
|
|
4736
|
-
toggleSidebar
|
|
4737
|
-
}),
|
|
4738
|
-
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
4739
|
-
);
|
|
4740
|
-
return /* @__PURE__ */ jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
4772
|
+
className: cn(
|
|
4773
|
+
"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-full w-full",
|
|
4774
|
+
className
|
|
4775
|
+
),
|
|
4776
|
+
...props,
|
|
4777
|
+
children
|
|
4778
|
+
}
|
|
4779
|
+
) }) });
|
|
4780
|
+
}
|
|
4781
|
+
function Sidebar({
|
|
4782
|
+
side = "left",
|
|
4783
|
+
variant = "sidebar",
|
|
4784
|
+
collapsible = "offcanvas",
|
|
4785
|
+
className,
|
|
4786
|
+
children,
|
|
4787
|
+
...props
|
|
4788
|
+
}) {
|
|
4789
|
+
const { state } = useSidebar();
|
|
4790
|
+
if (collapsible === "none") {
|
|
4791
|
+
return /* @__PURE__ */ jsx(
|
|
4741
4792
|
"div",
|
|
4742
4793
|
{
|
|
4743
|
-
|
|
4744
|
-
"--sidebar-width": SIDEBAR_WIDTH,
|
|
4745
|
-
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
4746
|
-
...style
|
|
4747
|
-
},
|
|
4794
|
+
"data-slot": "sidebar",
|
|
4748
4795
|
className: cn(
|
|
4749
|
-
"
|
|
4796
|
+
"bg-sidebar text-sidebar-foreground flex h-full w-[var(--sidebar-width)] flex-col",
|
|
4750
4797
|
className
|
|
4751
4798
|
),
|
|
4752
|
-
ref,
|
|
4753
4799
|
...props,
|
|
4754
4800
|
children
|
|
4755
4801
|
}
|
|
4756
|
-
)
|
|
4802
|
+
);
|
|
4757
4803
|
}
|
|
4758
|
-
|
|
4759
|
-
|
|
4760
|
-
|
|
4761
|
-
(
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
return /* @__PURE__ */ jsx(
|
|
4804
|
+
const isCollapsed = state === "collapsed";
|
|
4805
|
+
const isIconMode = collapsible === "icon";
|
|
4806
|
+
const isCollapsedIcon = isCollapsed && isIconMode;
|
|
4807
|
+
return /* @__PURE__ */ jsx(
|
|
4808
|
+
"div",
|
|
4809
|
+
{
|
|
4810
|
+
className: "group peer text-sidebar-foreground hidden md:block relative",
|
|
4811
|
+
"data-state": state,
|
|
4812
|
+
"data-collapsible": isCollapsed ? collapsible : "",
|
|
4813
|
+
"data-variant": variant,
|
|
4814
|
+
"data-side": side,
|
|
4815
|
+
"data-slot": "sidebar",
|
|
4816
|
+
children: /* @__PURE__ */ jsx(
|
|
4772
4817
|
"div",
|
|
4773
4818
|
{
|
|
4819
|
+
"data-slot": "sidebar-container",
|
|
4774
4820
|
className: cn(
|
|
4775
|
-
"
|
|
4821
|
+
"relative z-10 h-full transition-[width] duration-200 ease-linear flex flex-col",
|
|
4822
|
+
// Width handling
|
|
4823
|
+
isCollapsed && collapsible === "offcanvas" && "w-0 overflow-hidden",
|
|
4824
|
+
isCollapsedIcon && "w-[var(--sidebar-width-icon)]",
|
|
4825
|
+
!isCollapsed && "w-[var(--sidebar-width)]",
|
|
4826
|
+
// Border/padding for variants
|
|
4827
|
+
variant === "floating" || variant === "inset" ? "p-2" : "border-r border-sidebar-border",
|
|
4776
4828
|
className
|
|
4777
4829
|
),
|
|
4778
|
-
ref,
|
|
4779
4830
|
...props,
|
|
4780
|
-
children
|
|
4831
|
+
children: /* @__PURE__ */ jsx(
|
|
4832
|
+
"div",
|
|
4833
|
+
{
|
|
4834
|
+
"data-sidebar": "sidebar",
|
|
4835
|
+
"data-slot": "sidebar-inner",
|
|
4836
|
+
"data-collapsible": isCollapsedIcon ? "icon" : void 0,
|
|
4837
|
+
className: cn(
|
|
4838
|
+
"bg-sidebar flex h-full w-full flex-col",
|
|
4839
|
+
variant === "floating" && "rounded-lg border border-sidebar-border shadow-sm",
|
|
4840
|
+
// When in icon mode, center content and add consistent padding
|
|
4841
|
+
isCollapsedIcon && "overflow-hidden items-center py-2"
|
|
4842
|
+
),
|
|
4843
|
+
children
|
|
4844
|
+
}
|
|
4845
|
+
)
|
|
4781
4846
|
}
|
|
4782
|
-
)
|
|
4783
|
-
}
|
|
4784
|
-
if (isMobile) {
|
|
4785
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4786
|
-
openMobile && /* @__PURE__ */ jsx(
|
|
4787
|
-
"div",
|
|
4788
|
-
{
|
|
4789
|
-
className: "fixed inset-0 z-40 bg-overlay-heavy",
|
|
4790
|
-
onClick: () => setOpenMobile(false)
|
|
4791
|
-
}
|
|
4792
|
-
),
|
|
4793
|
-
/* @__PURE__ */ jsx(
|
|
4794
|
-
"div",
|
|
4795
|
-
{
|
|
4796
|
-
ref,
|
|
4797
|
-
className: cn(
|
|
4798
|
-
"fixed inset-y-0 z-50 hidden w-[--sidebar-width] flex-col bg-surface-1 text-foreground border-r border-line-soft transition-transform duration-200",
|
|
4799
|
-
side === "left" ? "left-0" : "right-0",
|
|
4800
|
-
openMobile && "flex translate-x-0",
|
|
4801
|
-
!openMobile && (side === "left" ? "-translate-x-full" : "translate-x-full"),
|
|
4802
|
-
className
|
|
4803
|
-
),
|
|
4804
|
-
...props,
|
|
4805
|
-
children
|
|
4806
|
-
}
|
|
4807
|
-
)
|
|
4808
|
-
] });
|
|
4847
|
+
)
|
|
4809
4848
|
}
|
|
4810
|
-
|
|
4811
|
-
|
|
4812
|
-
|
|
4813
|
-
|
|
4814
|
-
|
|
4815
|
-
|
|
4816
|
-
|
|
4817
|
-
"data-side": side,
|
|
4818
|
-
className: cn(
|
|
4819
|
-
"group/sidebar relative flex h-full w-[--sidebar-width] flex-col bg-surface-1 text-foreground border-r border-line-soft transition-all duration-200",
|
|
4820
|
-
state === "collapsed" && collapsible === "icon" && "w-[--sidebar-width-icon]",
|
|
4821
|
-
variant === "floating" && "m-2 rounded-lg border border-line-soft shadow-md",
|
|
4822
|
-
variant === "inset" && "m-2 mr-0 rounded-l-lg border border-line-soft shadow-sm",
|
|
4823
|
-
className
|
|
4824
|
-
),
|
|
4825
|
-
...props,
|
|
4826
|
-
children
|
|
4827
|
-
}
|
|
4828
|
-
);
|
|
4829
|
-
}
|
|
4830
|
-
);
|
|
4831
|
-
Sidebar.displayName = "Sidebar";
|
|
4832
|
-
var SidebarTrigger = React49.forwardRef(({ className, onClick, ...props }, ref) => {
|
|
4849
|
+
);
|
|
4850
|
+
}
|
|
4851
|
+
function SidebarTrigger({
|
|
4852
|
+
className,
|
|
4853
|
+
onClick,
|
|
4854
|
+
...props
|
|
4855
|
+
}) {
|
|
4833
4856
|
const { toggleSidebar } = useSidebar();
|
|
4834
4857
|
return /* @__PURE__ */ jsxs(
|
|
4835
4858
|
Button,
|
|
4836
4859
|
{
|
|
4837
|
-
|
|
4860
|
+
"data-sidebar": "trigger",
|
|
4861
|
+
"data-slot": "sidebar-trigger",
|
|
4838
4862
|
variant: "ghost",
|
|
4839
4863
|
size: "icon",
|
|
4840
|
-
className: cn("
|
|
4864
|
+
className: cn("size-7", className),
|
|
4841
4865
|
onClick: (event) => {
|
|
4842
4866
|
onClick?.(event);
|
|
4843
4867
|
toggleSidebar();
|
|
4844
4868
|
},
|
|
4845
4869
|
...props,
|
|
4846
4870
|
children: [
|
|
4847
|
-
/* @__PURE__ */ jsx(PanelLeftIcon, {
|
|
4871
|
+
/* @__PURE__ */ jsx(PanelLeftIcon, {}),
|
|
4848
4872
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
4849
4873
|
]
|
|
4850
4874
|
}
|
|
4851
4875
|
);
|
|
4852
|
-
}
|
|
4853
|
-
|
|
4854
|
-
var SidebarRail = React49.forwardRef(({ className, ...props }, ref) => {
|
|
4876
|
+
}
|
|
4877
|
+
function SidebarRail({ className, ...props }) {
|
|
4855
4878
|
const { toggleSidebar } = useSidebar();
|
|
4856
4879
|
return /* @__PURE__ */ jsx(
|
|
4857
4880
|
"button",
|
|
4858
4881
|
{
|
|
4859
|
-
|
|
4882
|
+
"data-sidebar": "rail",
|
|
4883
|
+
"data-slot": "sidebar-rail",
|
|
4860
4884
|
"aria-label": "Toggle Sidebar",
|
|
4861
4885
|
tabIndex: -1,
|
|
4862
4886
|
onClick: toggleSidebar,
|
|
4863
4887
|
title: "Toggle Sidebar",
|
|
4864
4888
|
className: cn(
|
|
4865
|
-
"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear
|
|
4889
|
+
"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex",
|
|
4890
|
+
"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
|
|
4891
|
+
"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
|
|
4892
|
+
"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full",
|
|
4893
|
+
"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
|
|
4894
|
+
"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
|
|
4866
4895
|
className
|
|
4867
4896
|
),
|
|
4868
4897
|
...props
|
|
4869
4898
|
}
|
|
4870
4899
|
);
|
|
4871
|
-
}
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
"
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
|
|
4882
|
-
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
|
|
4891
|
-
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
4898
|
-
|
|
4899
|
-
|
|
4900
|
-
)
|
|
4901
|
-
|
|
4902
|
-
|
|
4903
|
-
({ className, ...props }, ref) => {
|
|
4904
|
-
return /* @__PURE__ */ jsx(
|
|
4905
|
-
"div",
|
|
4906
|
-
{
|
|
4907
|
-
ref,
|
|
4908
|
-
className: cn("flex flex-col gap-2 p-4 border-t border-line-soft", className),
|
|
4909
|
-
...props
|
|
4910
|
-
}
|
|
4911
|
-
);
|
|
4912
|
-
}
|
|
4913
|
-
);
|
|
4914
|
-
SidebarFooter.displayName = "SidebarFooter";
|
|
4915
|
-
var SidebarContent = React49.forwardRef(
|
|
4916
|
-
({ className, ...props }, ref) => {
|
|
4917
|
-
return /* @__PURE__ */ jsx(
|
|
4918
|
-
"div",
|
|
4919
|
-
{
|
|
4920
|
-
ref,
|
|
4921
|
-
className: cn("flex flex-1 flex-col gap-4 overflow-auto p-4", className),
|
|
4922
|
-
...props
|
|
4923
|
-
}
|
|
4924
|
-
);
|
|
4925
|
-
}
|
|
4926
|
-
);
|
|
4927
|
-
SidebarContent.displayName = "SidebarContent";
|
|
4928
|
-
var SidebarGroup = React49.forwardRef(
|
|
4929
|
-
({ className, ...props }, ref) => {
|
|
4930
|
-
return /* @__PURE__ */ jsx(
|
|
4931
|
-
"div",
|
|
4932
|
-
{
|
|
4933
|
-
ref,
|
|
4934
|
-
className: cn("flex flex-col gap-2", className),
|
|
4935
|
-
...props
|
|
4936
|
-
}
|
|
4937
|
-
);
|
|
4938
|
-
}
|
|
4939
|
-
);
|
|
4940
|
-
SidebarGroup.displayName = "SidebarGroup";
|
|
4941
|
-
var SidebarGroupLabel = React49.forwardRef(({ className, ...props }, ref) => {
|
|
4900
|
+
}
|
|
4901
|
+
function SidebarInset({ className, ...props }) {
|
|
4902
|
+
return /* @__PURE__ */ jsx(
|
|
4903
|
+
"main",
|
|
4904
|
+
{
|
|
4905
|
+
"data-slot": "sidebar-inset",
|
|
4906
|
+
className: cn(
|
|
4907
|
+
"bg-background relative flex w-full flex-1 flex-col",
|
|
4908
|
+
"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
|
|
4909
|
+
className
|
|
4910
|
+
),
|
|
4911
|
+
...props
|
|
4912
|
+
}
|
|
4913
|
+
);
|
|
4914
|
+
}
|
|
4915
|
+
function SidebarInput({
|
|
4916
|
+
className,
|
|
4917
|
+
...props
|
|
4918
|
+
}) {
|
|
4919
|
+
return /* @__PURE__ */ jsx(
|
|
4920
|
+
Input,
|
|
4921
|
+
{
|
|
4922
|
+
"data-slot": "sidebar-input",
|
|
4923
|
+
"data-sidebar": "input",
|
|
4924
|
+
className: cn("bg-background h-8 w-full shadow-none", className),
|
|
4925
|
+
...props
|
|
4926
|
+
}
|
|
4927
|
+
);
|
|
4928
|
+
}
|
|
4929
|
+
function SidebarHeader({ className, ...props }) {
|
|
4930
|
+
const { state } = useSidebar();
|
|
4931
|
+
const isCollapsed = state === "collapsed";
|
|
4942
4932
|
return /* @__PURE__ */ jsx(
|
|
4943
4933
|
"div",
|
|
4944
4934
|
{
|
|
4945
|
-
|
|
4935
|
+
"data-slot": "sidebar-header",
|
|
4936
|
+
"data-sidebar": "header",
|
|
4946
4937
|
className: cn(
|
|
4947
|
-
"
|
|
4938
|
+
"flex flex-col gap-2 p-2",
|
|
4939
|
+
isCollapsed && "items-center",
|
|
4948
4940
|
className
|
|
4949
4941
|
),
|
|
4950
4942
|
...props
|
|
4951
4943
|
}
|
|
4952
4944
|
);
|
|
4953
|
-
}
|
|
4954
|
-
|
|
4955
|
-
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
|
|
4962
|
-
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
className
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4945
|
+
}
|
|
4946
|
+
function SidebarFooter({ className, ...props }) {
|
|
4947
|
+
const { state } = useSidebar();
|
|
4948
|
+
const isCollapsed = state === "collapsed";
|
|
4949
|
+
return /* @__PURE__ */ jsx(
|
|
4950
|
+
"div",
|
|
4951
|
+
{
|
|
4952
|
+
"data-slot": "sidebar-footer",
|
|
4953
|
+
"data-sidebar": "footer",
|
|
4954
|
+
className: cn(
|
|
4955
|
+
"flex flex-col gap-2 p-2 mt-auto",
|
|
4956
|
+
isCollapsed && "items-center",
|
|
4957
|
+
className
|
|
4958
|
+
),
|
|
4959
|
+
...props
|
|
4960
|
+
}
|
|
4961
|
+
);
|
|
4962
|
+
}
|
|
4963
|
+
function SidebarSeparator({
|
|
4964
|
+
className,
|
|
4965
|
+
...props
|
|
4966
|
+
}) {
|
|
4967
|
+
return /* @__PURE__ */ jsx(
|
|
4968
|
+
Separator5,
|
|
4969
|
+
{
|
|
4970
|
+
"data-slot": "sidebar-separator",
|
|
4971
|
+
"data-sidebar": "separator",
|
|
4972
|
+
className: cn("bg-sidebar-border mx-2 w-auto", className),
|
|
4973
|
+
...props
|
|
4974
|
+
}
|
|
4975
|
+
);
|
|
4976
|
+
}
|
|
4977
|
+
function SidebarContent({ className, ...props }) {
|
|
4978
|
+
const { state } = useSidebar();
|
|
4979
|
+
const isCollapsed = state === "collapsed";
|
|
4980
|
+
return /* @__PURE__ */ jsx(
|
|
4981
|
+
"div",
|
|
4982
|
+
{
|
|
4983
|
+
"data-slot": "sidebar-content",
|
|
4984
|
+
"data-sidebar": "content",
|
|
4985
|
+
className: cn(
|
|
4986
|
+
"flex min-h-0 flex-1 flex-col gap-2 overflow-auto",
|
|
4987
|
+
isCollapsed && "items-center",
|
|
4988
|
+
className
|
|
4989
|
+
),
|
|
4990
|
+
...props
|
|
4991
|
+
}
|
|
4992
|
+
);
|
|
4993
|
+
}
|
|
4994
|
+
function SidebarGroup({ className, ...props }) {
|
|
4995
|
+
const { state } = useSidebar();
|
|
4996
|
+
const isCollapsed = state === "collapsed";
|
|
4997
|
+
return /* @__PURE__ */ jsx(
|
|
4998
|
+
"div",
|
|
4999
|
+
{
|
|
5000
|
+
"data-slot": "sidebar-group",
|
|
5001
|
+
"data-sidebar": "group",
|
|
5002
|
+
className: cn(
|
|
5003
|
+
"relative flex w-full min-w-0 flex-col p-2",
|
|
5004
|
+
isCollapsed && "items-center",
|
|
5005
|
+
className
|
|
5006
|
+
),
|
|
5007
|
+
...props
|
|
5008
|
+
}
|
|
5009
|
+
);
|
|
5010
|
+
}
|
|
5011
|
+
function SidebarGroupLabel({
|
|
5012
|
+
className,
|
|
5013
|
+
asChild = false,
|
|
5014
|
+
...props
|
|
5015
|
+
}) {
|
|
5016
|
+
const Comp = asChild ? Slot : "div";
|
|
5017
|
+
const { state } = useSidebar();
|
|
5018
|
+
const isCollapsed = state === "collapsed";
|
|
5019
|
+
return /* @__PURE__ */ jsx(
|
|
5020
|
+
Comp,
|
|
5021
|
+
{
|
|
5022
|
+
"data-slot": "sidebar-group-label",
|
|
5023
|
+
"data-sidebar": "group-label",
|
|
5024
|
+
className: cn(
|
|
5025
|
+
"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
5026
|
+
isCollapsed && "h-0 opacity-0 overflow-hidden -mt-2",
|
|
5027
|
+
className
|
|
5028
|
+
),
|
|
5029
|
+
...props
|
|
5030
|
+
}
|
|
5031
|
+
);
|
|
5032
|
+
}
|
|
5033
|
+
function SidebarGroupAction({
|
|
5034
|
+
className,
|
|
5035
|
+
asChild = false,
|
|
5036
|
+
...props
|
|
5037
|
+
}) {
|
|
5038
|
+
const Comp = asChild ? Slot : "button";
|
|
5039
|
+
const { state } = useSidebar();
|
|
5040
|
+
const isCollapsed = state === "collapsed";
|
|
5041
|
+
if (isCollapsed) {
|
|
5042
|
+
return null;
|
|
4975
5043
|
}
|
|
5044
|
+
return /* @__PURE__ */ jsx(
|
|
5045
|
+
Comp,
|
|
5046
|
+
{
|
|
5047
|
+
"data-slot": "sidebar-group-action",
|
|
5048
|
+
"data-sidebar": "group-action",
|
|
5049
|
+
className: cn(
|
|
5050
|
+
"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
5051
|
+
// Increases the hit area of the button on mobile.
|
|
5052
|
+
"after:absolute after:-inset-2 md:after:hidden",
|
|
5053
|
+
className
|
|
5054
|
+
),
|
|
5055
|
+
...props
|
|
5056
|
+
}
|
|
5057
|
+
);
|
|
5058
|
+
}
|
|
5059
|
+
function SidebarGroupContent({
|
|
5060
|
+
className,
|
|
5061
|
+
...props
|
|
5062
|
+
}) {
|
|
5063
|
+
return /* @__PURE__ */ jsx(
|
|
5064
|
+
"div",
|
|
5065
|
+
{
|
|
5066
|
+
"data-slot": "sidebar-group-content",
|
|
5067
|
+
"data-sidebar": "group-content",
|
|
5068
|
+
className: cn("w-full text-sm", className),
|
|
5069
|
+
...props
|
|
5070
|
+
}
|
|
5071
|
+
);
|
|
5072
|
+
}
|
|
5073
|
+
function SidebarMenu({ className, ...props }) {
|
|
5074
|
+
const { state } = useSidebar();
|
|
5075
|
+
const isCollapsed = state === "collapsed";
|
|
5076
|
+
return /* @__PURE__ */ jsx(
|
|
5077
|
+
"ul",
|
|
5078
|
+
{
|
|
5079
|
+
"data-slot": "sidebar-menu",
|
|
5080
|
+
"data-sidebar": "menu",
|
|
5081
|
+
className: cn(
|
|
5082
|
+
"flex w-full min-w-0 flex-col gap-2 p-2",
|
|
5083
|
+
isCollapsed && "items-center",
|
|
5084
|
+
className
|
|
5085
|
+
),
|
|
5086
|
+
...props
|
|
5087
|
+
}
|
|
5088
|
+
);
|
|
5089
|
+
}
|
|
5090
|
+
function SidebarMenuItem({ className, ...props }) {
|
|
5091
|
+
return /* @__PURE__ */ jsx(
|
|
5092
|
+
"li",
|
|
5093
|
+
{
|
|
5094
|
+
"data-slot": "sidebar-menu-item",
|
|
5095
|
+
"data-sidebar": "menu-item",
|
|
5096
|
+
className: cn("group/menu-item relative", className),
|
|
5097
|
+
...props
|
|
5098
|
+
}
|
|
5099
|
+
);
|
|
5100
|
+
}
|
|
5101
|
+
var sidebarMenuButtonStyle = cn(
|
|
5102
|
+
"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-all duration-150",
|
|
5103
|
+
"hover:bg-muted focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
5104
|
+
"data-[active=true]:bg-muted data-[active=true]:text-primary [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0"
|
|
4976
5105
|
);
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
4980
|
-
|
|
4981
|
-
|
|
4982
|
-
variant: {
|
|
4983
|
-
default: "text-foreground hover:text-foreground",
|
|
4984
|
-
outline: "border border-line-soft bg-background shadow-sm hover:bg-surface-2"
|
|
4985
|
-
},
|
|
4986
|
-
size: {
|
|
4987
|
-
default: "h-10",
|
|
4988
|
-
sm: "h-8 text-xs",
|
|
4989
|
-
lg: "h-12"
|
|
4990
|
-
},
|
|
4991
|
-
isActive: {
|
|
4992
|
-
true: "bg-surface-2 text-foreground font-semibold"
|
|
4993
|
-
}
|
|
5106
|
+
var sidebarMenuButtonVariants = cva(sidebarMenuButtonStyle, {
|
|
5107
|
+
variants: {
|
|
5108
|
+
variant: {
|
|
5109
|
+
default: "hover:bg-muted hover:text-foreground",
|
|
5110
|
+
outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-muted hover:text-foreground hover:shadow-[0_0_0_1px_hsl(var(--border))]"
|
|
4994
5111
|
},
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
5112
|
+
size: {
|
|
5113
|
+
default: "h-8 text-sm",
|
|
5114
|
+
sm: "h-7 text-xs",
|
|
5115
|
+
lg: "h-12 text-sm"
|
|
4998
5116
|
}
|
|
5117
|
+
},
|
|
5118
|
+
defaultVariants: {
|
|
5119
|
+
variant: "default",
|
|
5120
|
+
size: "default"
|
|
4999
5121
|
}
|
|
5000
|
-
);
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
5007
|
-
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5122
|
+
});
|
|
5123
|
+
function SidebarMenuButton({
|
|
5124
|
+
asChild = false,
|
|
5125
|
+
isActive = false,
|
|
5126
|
+
variant = "default",
|
|
5127
|
+
size = "default",
|
|
5128
|
+
tooltip,
|
|
5129
|
+
className,
|
|
5130
|
+
children,
|
|
5131
|
+
...props
|
|
5132
|
+
}) {
|
|
5133
|
+
const Comp = asChild ? Slot : "button";
|
|
5134
|
+
const { state } = useSidebar();
|
|
5135
|
+
const isCollapsed = state === "collapsed";
|
|
5136
|
+
const button = /* @__PURE__ */ jsx(
|
|
5137
|
+
Comp,
|
|
5138
|
+
{
|
|
5139
|
+
"data-slot": "sidebar-menu-button",
|
|
5140
|
+
"data-sidebar": "menu-button",
|
|
5141
|
+
"data-size": size,
|
|
5142
|
+
"data-active": isActive,
|
|
5143
|
+
className: cn(
|
|
5144
|
+
sidebarMenuButtonVariants({ variant, size }),
|
|
5145
|
+
// When collapsed in icon mode, make button square and center icon
|
|
5146
|
+
isCollapsed && "w-8 h-8 p-2 justify-center [&>span]:hidden [&>:not(svg)]:hidden [&>svg:not(:first-child)]:hidden",
|
|
5147
|
+
className
|
|
5148
|
+
),
|
|
5149
|
+
...props,
|
|
5150
|
+
children
|
|
5151
|
+
}
|
|
5152
|
+
);
|
|
5153
|
+
if (!isCollapsed || !tooltip) {
|
|
5154
|
+
return button;
|
|
5155
|
+
}
|
|
5156
|
+
return /* @__PURE__ */ jsx(SimpleTooltip, { content: tooltip, side: "right", delayDuration: 0, children: button });
|
|
5157
|
+
}
|
|
5158
|
+
function SidebarMenuAction({
|
|
5159
|
+
className,
|
|
5160
|
+
asChild = false,
|
|
5161
|
+
showOnHover = false,
|
|
5162
|
+
...props
|
|
5163
|
+
}) {
|
|
5164
|
+
const Comp = asChild ? Slot : "button";
|
|
5165
|
+
const { state } = useSidebar();
|
|
5166
|
+
const isCollapsed = state === "collapsed";
|
|
5167
|
+
if (isCollapsed) {
|
|
5168
|
+
return null;
|
|
5019
5169
|
}
|
|
5020
|
-
);
|
|
5021
|
-
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
5022
|
-
var SidebarMenuAction = React49.forwardRef(({ className, ...props }, ref) => {
|
|
5023
5170
|
return /* @__PURE__ */ jsx(
|
|
5024
|
-
|
|
5171
|
+
Comp,
|
|
5025
5172
|
{
|
|
5026
|
-
|
|
5173
|
+
"data-slot": "sidebar-menu-action",
|
|
5174
|
+
"data-sidebar": "menu-action",
|
|
5027
5175
|
className: cn(
|
|
5028
|
-
"flex
|
|
5176
|
+
"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
5177
|
+
// Increases the hit area of the button on mobile.
|
|
5178
|
+
"after:absolute after:-inset-2 md:after:hidden",
|
|
5179
|
+
"peer-data-[size=sm]/menu-button:top-1",
|
|
5180
|
+
"peer-data-[size=default]/menu-button:top-1.5",
|
|
5181
|
+
"peer-data-[size=lg]/menu-button:top-2.5",
|
|
5182
|
+
showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
|
|
5029
5183
|
className
|
|
5030
5184
|
),
|
|
5031
5185
|
...props
|
|
5032
5186
|
}
|
|
5033
5187
|
);
|
|
5034
|
-
}
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
...props
|
|
5044
|
-
}
|
|
5045
|
-
);
|
|
5188
|
+
}
|
|
5189
|
+
function SidebarMenuBadge({
|
|
5190
|
+
className,
|
|
5191
|
+
...props
|
|
5192
|
+
}) {
|
|
5193
|
+
const { state } = useSidebar();
|
|
5194
|
+
const isCollapsed = state === "collapsed";
|
|
5195
|
+
if (isCollapsed) {
|
|
5196
|
+
return null;
|
|
5046
5197
|
}
|
|
5047
|
-
|
|
5048
|
-
|
|
5049
|
-
|
|
5050
|
-
|
|
5051
|
-
|
|
5198
|
+
return /* @__PURE__ */ jsx(
|
|
5199
|
+
"div",
|
|
5200
|
+
{
|
|
5201
|
+
"data-slot": "sidebar-menu-badge",
|
|
5202
|
+
"data-sidebar": "menu-badge",
|
|
5203
|
+
className: cn(
|
|
5204
|
+
"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none",
|
|
5205
|
+
"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
|
|
5206
|
+
"peer-data-[size=sm]/menu-button:top-1",
|
|
5207
|
+
"peer-data-[size=default]/menu-button:top-1.5",
|
|
5208
|
+
"peer-data-[size=lg]/menu-button:top-2.5",
|
|
5209
|
+
className
|
|
5210
|
+
),
|
|
5211
|
+
...props
|
|
5212
|
+
}
|
|
5213
|
+
);
|
|
5214
|
+
}
|
|
5215
|
+
function SidebarMenuSkeleton({
|
|
5216
|
+
className,
|
|
5217
|
+
showIcon = false,
|
|
5218
|
+
...props
|
|
5219
|
+
}) {
|
|
5220
|
+
const width = React49.useMemo(() => {
|
|
5221
|
+
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
5222
|
+
}, []);
|
|
5223
|
+
return /* @__PURE__ */ jsxs(
|
|
5224
|
+
"div",
|
|
5225
|
+
{
|
|
5226
|
+
"data-slot": "sidebar-menu-skeleton",
|
|
5227
|
+
"data-sidebar": "menu-skeleton",
|
|
5228
|
+
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
5229
|
+
...props,
|
|
5230
|
+
children: [
|
|
5231
|
+
showIcon && /* @__PURE__ */ jsx(
|
|
5232
|
+
Skeleton,
|
|
5233
|
+
{
|
|
5234
|
+
className: "size-4 rounded-md",
|
|
5235
|
+
"data-sidebar": "menu-skeleton-icon"
|
|
5236
|
+
}
|
|
5237
|
+
),
|
|
5238
|
+
/* @__PURE__ */ jsx(
|
|
5239
|
+
Skeleton,
|
|
5240
|
+
{
|
|
5241
|
+
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
5242
|
+
"data-sidebar": "menu-skeleton-text",
|
|
5243
|
+
style: {
|
|
5244
|
+
"--skeleton-width": width
|
|
5245
|
+
}
|
|
5246
|
+
}
|
|
5247
|
+
)
|
|
5248
|
+
]
|
|
5249
|
+
}
|
|
5250
|
+
);
|
|
5251
|
+
}
|
|
5252
|
+
function SidebarMenuSub({ className, ...props }) {
|
|
5253
|
+
const { state } = useSidebar();
|
|
5254
|
+
const isCollapsed = state === "collapsed";
|
|
5255
|
+
if (isCollapsed) {
|
|
5256
|
+
return null;
|
|
5052
5257
|
}
|
|
5053
|
-
);
|
|
5054
|
-
SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
|
|
5055
|
-
var SidebarMenuSubButton = React49.forwardRef(({ className, isActive, ...props }, ref) => {
|
|
5056
5258
|
return /* @__PURE__ */ jsx(
|
|
5057
|
-
"
|
|
5259
|
+
"ul",
|
|
5058
5260
|
{
|
|
5059
|
-
|
|
5261
|
+
"data-slot": "sidebar-menu-sub",
|
|
5262
|
+
"data-sidebar": "menu-sub",
|
|
5060
5263
|
className: cn(
|
|
5061
|
-
"flex w-
|
|
5062
|
-
isActive && "bg-surface-2 font-medium",
|
|
5264
|
+
"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-2 border-l p-2",
|
|
5063
5265
|
className
|
|
5064
5266
|
),
|
|
5065
5267
|
...props
|
|
5066
5268
|
}
|
|
5067
5269
|
);
|
|
5068
|
-
}
|
|
5069
|
-
|
|
5270
|
+
}
|
|
5271
|
+
function SidebarMenuSubItem({
|
|
5272
|
+
className,
|
|
5273
|
+
...props
|
|
5274
|
+
}) {
|
|
5275
|
+
return /* @__PURE__ */ jsx(
|
|
5276
|
+
"li",
|
|
5277
|
+
{
|
|
5278
|
+
"data-slot": "sidebar-menu-sub-item",
|
|
5279
|
+
"data-sidebar": "menu-sub-item",
|
|
5280
|
+
className: cn("group/menu-sub-item relative", className),
|
|
5281
|
+
...props
|
|
5282
|
+
}
|
|
5283
|
+
);
|
|
5284
|
+
}
|
|
5285
|
+
function SidebarMenuSubButton({
|
|
5286
|
+
asChild = false,
|
|
5287
|
+
size = "md",
|
|
5288
|
+
isActive = false,
|
|
5289
|
+
className,
|
|
5290
|
+
...props
|
|
5291
|
+
}) {
|
|
5292
|
+
const Comp = asChild ? Slot : "a";
|
|
5293
|
+
return /* @__PURE__ */ jsx(
|
|
5294
|
+
Comp,
|
|
5295
|
+
{
|
|
5296
|
+
"data-slot": "sidebar-menu-sub-button",
|
|
5297
|
+
"data-sidebar": "menu-sub-button",
|
|
5298
|
+
"data-size": size,
|
|
5299
|
+
"data-active": isActive,
|
|
5300
|
+
className: cn(
|
|
5301
|
+
"text-sidebar-foreground ring-sidebar-ring hover:bg-muted hover:text-foreground active:bg-muted [&>svg]:text-muted-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden ",
|
|
5302
|
+
"transition-all duration-150 focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
5303
|
+
"data-[active=true]:bg-muted data-[active=true]:text-primary",
|
|
5304
|
+
size === "sm" && "text-xs",
|
|
5305
|
+
size === "md" && "text-sm",
|
|
5306
|
+
className
|
|
5307
|
+
),
|
|
5308
|
+
...props
|
|
5309
|
+
}
|
|
5310
|
+
);
|
|
5311
|
+
}
|
|
5070
5312
|
|
|
5071
5313
|
// src/components/ui/table/index.tsx
|
|
5072
5314
|
init_utils();
|
|
@@ -6577,7 +6819,7 @@ function SimpleTable({
|
|
|
6577
6819
|
manualFiltering = false,
|
|
6578
6820
|
lazyLoadIndicatorType = "overlay",
|
|
6579
6821
|
maxHeight = 500,
|
|
6580
|
-
maxWidth
|
|
6822
|
+
maxWidth,
|
|
6581
6823
|
maxRecords,
|
|
6582
6824
|
loadingText,
|
|
6583
6825
|
pagingPosition = "right",
|
|
@@ -10261,6 +10503,6 @@ var TypographyGroup = {
|
|
|
10261
10503
|
// src/index.ts
|
|
10262
10504
|
init_utils();
|
|
10263
10505
|
|
|
10264
|
-
export { Accordion, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Blockquote, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleItem, CollapsibleTrigger, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, DatePicker, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DotsSpinner, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, Field, Form, FormItem, FormList, H1, H2, H3, H4, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, InlineCode, Input, InputGroup, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item9 as Item, ItemGroup, ItemList, ItemSeparator, Label, Lead, List3 as List, ListItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Muted, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, P, Pagination, PaginationContent, PaginationEllipsis, PaginationFirst, PaginationItem, PaginationLast, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, ProductCard, ProfileCard, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator5 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarTrigger, SimpleAvatar, SimpleCard, SimpleCarousel, SimpleTable, SimpleTabs, SimpleTooltip, Skeleton, SkeletonCard, Slider, Small, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toast, ToastProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Typography, TypographyGroup, alertVariants, avatarVariants, badgeVariants, buttonVariants, cardVariants, checkboxVariants, cn, composeRules, emailRule, emptyVariants, fieldVariants, getInitials, inputGroupVariants, inputVariants, itemVariants, labelVariants, maxLengthRule, maxValueRule, minLengthRule, minValueRule, navigationMenuTriggerStyle, numberRule, patternRule, progressVariants, radioGroupVariants, requiredRule, separatorVariants, skeletonVariants, spinnerVariants, tableVariants, textareaVariants, toastVariants, toggleGroupVariants, toggleVariants, urlRule, useCarousel, useForm, useSidebar, useToast, useWatch };
|
|
10506
|
+
export { Accordion, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarImage, Badge, Blockquote, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Collapsible, CollapsibleContent, CollapsibleItem, CollapsibleTrigger, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, DatePicker, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DotsSpinner, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, Field, Form, FormItem, FormList, H1, H2, H3, H4, HoverCard, HoverCardContent, HoverCardTrigger, IconButton, InlineCode, Input, InputGroup, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item9 as Item, ItemGroup, ItemList, ItemSeparator, Label, Lead, List3 as List, ListItem, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Muted, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, P, Pagination, PaginationContent, PaginationEllipsis, PaginationFirst, PaginationItem, PaginationLast, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, ProductCard, ProfileCard, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator5 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SimpleAvatar, SimpleCard, SimpleCarousel, SimpleTable, SimpleTabs, SimpleTooltip, Skeleton, SkeletonCard, Slider, Small, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toast, ToastProvider, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Typography, TypographyGroup, alertVariants, avatarVariants, badgeVariants, buttonVariants, cardVariants, checkboxVariants, cn, composeRules, emailRule, emptyVariants, fieldVariants, getInitials, inputGroupVariants, inputVariants, itemVariants, labelVariants, maxLengthRule, maxValueRule, minLengthRule, minValueRule, navigationMenuTriggerStyle, numberRule, patternRule, progressVariants, radioGroupVariants, requiredRule, separatorVariants, skeletonVariants, spinnerVariants, tableVariants, textareaVariants, toastVariants, toggleGroupVariants, toggleVariants, urlRule, useCarousel, useForm, useSidebar, useToast, useWatch };
|
|
10265
10507
|
//# sourceMappingURL=index.mjs.map
|
|
10266
10508
|
//# sourceMappingURL=index.mjs.map
|