@assure-one/design-system 0.5.0 → 0.7.0
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.d.ts +131 -2
- package/dist/index.js +383 -47
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import * as React36 from 'react';
|
|
3
|
-
import { forwardRef, useState, useCallback, useId, useRef, useImperativeHandle, useEffect, createContext, useContext, useMemo } from 'react';
|
|
3
|
+
import { forwardRef, useState, useCallback, useId, useRef, useImperativeHandle, useEffect, createContext, Fragment as Fragment$1, useContext, useMemo } from 'react';
|
|
4
4
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
5
5
|
import { clsx } from 'clsx';
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
@@ -28,6 +28,7 @@ import { OTPInput as OTPInput$1, REGEXP_ONLY_DIGITS } from 'input-otp';
|
|
|
28
28
|
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
29
29
|
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
30
30
|
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
31
|
+
import { RemoveScroll } from 'react-remove-scroll';
|
|
31
32
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
32
33
|
import * as SliderPrimitive from '@radix-ui/react-slider';
|
|
33
34
|
import { useFormStatus } from 'react-dom';
|
|
@@ -5491,15 +5492,46 @@ function SearchSelect({
|
|
|
5491
5492
|
onCreate,
|
|
5492
5493
|
placeholder = "Search...",
|
|
5493
5494
|
className,
|
|
5494
|
-
disabled = false
|
|
5495
|
+
disabled = false,
|
|
5496
|
+
groupFilter = false,
|
|
5497
|
+
pinnedGroups,
|
|
5498
|
+
closeOnSelect = false,
|
|
5499
|
+
showGroupCounts = false,
|
|
5500
|
+
onCreateNew,
|
|
5501
|
+
createNewLabel = "Create new"
|
|
5495
5502
|
}) {
|
|
5496
5503
|
const [search, setSearch] = React36.useState("");
|
|
5497
5504
|
const [open, setOpen] = React36.useState(false);
|
|
5505
|
+
const [activeChip, setActiveChip] = React36.useState(null);
|
|
5498
5506
|
const selectedIds = React36.useMemo(() => new Set(selected.map((s) => s.id)), [selected]);
|
|
5499
5507
|
const filtered = React36.useMemo(
|
|
5500
5508
|
() => options.filter((opt) => !selectedIds.has(opt.id)),
|
|
5501
5509
|
[options, selectedIds]
|
|
5502
5510
|
);
|
|
5511
|
+
const groups = React36.useMemo(() => {
|
|
5512
|
+
const order = [];
|
|
5513
|
+
const byGroup = /* @__PURE__ */ new Map();
|
|
5514
|
+
for (const opt of filtered) {
|
|
5515
|
+
if (!byGroup.has(opt.group)) {
|
|
5516
|
+
byGroup.set(opt.group, []);
|
|
5517
|
+
order.push(opt.group);
|
|
5518
|
+
}
|
|
5519
|
+
byGroup.get(opt.group).push(opt);
|
|
5520
|
+
}
|
|
5521
|
+
return order.map((g) => [g, byGroup.get(g)]);
|
|
5522
|
+
}, [filtered]);
|
|
5523
|
+
const hasGroups = React36.useMemo(() => groups.some(([g]) => g != null), [groups]);
|
|
5524
|
+
const pinnedSet = React36.useMemo(() => new Set(pinnedGroups ?? []), [pinnedGroups]);
|
|
5525
|
+
const chips = React36.useMemo(() => {
|
|
5526
|
+
if (!groupFilter || !hasGroups) return [];
|
|
5527
|
+
return groups.map(([g]) => g).filter((g) => g != null && !pinnedSet.has(g));
|
|
5528
|
+
}, [groupFilter, hasGroups, groups, pinnedSet]);
|
|
5529
|
+
const visibleGroups = React36.useMemo(() => {
|
|
5530
|
+
if (chips.length > 0 && activeChip) {
|
|
5531
|
+
return groups.filter(([g]) => g === activeChip);
|
|
5532
|
+
}
|
|
5533
|
+
return groups;
|
|
5534
|
+
}, [groups, chips.length, activeChip]);
|
|
5503
5535
|
const trimmedSearch = search.trim();
|
|
5504
5536
|
const hasExactMatch = React36.useMemo(
|
|
5505
5537
|
() => options.some((opt) => opt.label.toLowerCase() === trimmedSearch.toLowerCase()),
|
|
@@ -5510,8 +5542,9 @@ function SearchSelect({
|
|
|
5510
5542
|
(option) => {
|
|
5511
5543
|
onSelect(option);
|
|
5512
5544
|
setSearch("");
|
|
5545
|
+
if (closeOnSelect) setOpen(false);
|
|
5513
5546
|
},
|
|
5514
|
-
[onSelect]
|
|
5547
|
+
[onSelect, closeOnSelect]
|
|
5515
5548
|
);
|
|
5516
5549
|
const handleCreate = React36.useCallback(() => {
|
|
5517
5550
|
if (onCreate && trimmedSearch) {
|
|
@@ -5520,8 +5553,17 @@ function SearchSelect({
|
|
|
5520
5553
|
setOpen(false);
|
|
5521
5554
|
}
|
|
5522
5555
|
}, [onCreate, trimmedSearch]);
|
|
5556
|
+
const inputRef = React36.useRef(null);
|
|
5557
|
+
const singleValue = closeOnSelect ? selected[0] ?? null : null;
|
|
5558
|
+
const showValue = singleValue !== null && !open;
|
|
5559
|
+
React36.useEffect(() => {
|
|
5560
|
+
if (open && closeOnSelect) {
|
|
5561
|
+
const raf = requestAnimationFrame(() => inputRef.current?.focus());
|
|
5562
|
+
return () => cancelAnimationFrame(raf);
|
|
5563
|
+
}
|
|
5564
|
+
}, [open, closeOnSelect]);
|
|
5523
5565
|
return /* @__PURE__ */ jsxs("div", { className: cn("relative w-full", className), children: [
|
|
5524
|
-
selected.length > 0 && /* @__PURE__ */ jsx("div", { className: "mb-2 flex flex-wrap gap-1.5", children: selected.map((item) => /* @__PURE__ */ jsxs(
|
|
5566
|
+
!closeOnSelect && selected.length > 0 && /* @__PURE__ */ jsx("div", { className: "mb-2 flex flex-wrap gap-1.5", children: selected.map((item) => /* @__PURE__ */ jsxs(
|
|
5525
5567
|
"span",
|
|
5526
5568
|
{
|
|
5527
5569
|
className: cn(
|
|
@@ -5564,7 +5606,7 @@ function SearchSelect({
|
|
|
5564
5606
|
}
|
|
5565
5607
|
},
|
|
5566
5608
|
children: [
|
|
5567
|
-
/* @__PURE__ */ jsx(PopoverAnchor, { asChild: true, children: /* @__PURE__ */
|
|
5609
|
+
/* @__PURE__ */ jsx(PopoverAnchor, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
5568
5610
|
"div",
|
|
5569
5611
|
{
|
|
5570
5612
|
className: cn(
|
|
@@ -5572,9 +5614,59 @@ function SearchSelect({
|
|
|
5572
5614
|
"transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
5573
5615
|
"motion-reduce:transition-none",
|
|
5574
5616
|
"focus-within:border-accent focus-within:[box-shadow:var(--shadow-focus-ring)]",
|
|
5617
|
+
showValue && "hover:bg-bg-2 gap-2 pr-2 pl-3",
|
|
5575
5618
|
disabled && "bg-bg-disabled cursor-not-allowed"
|
|
5576
5619
|
),
|
|
5577
|
-
children: [
|
|
5620
|
+
children: showValue && singleValue ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5621
|
+
/* @__PURE__ */ jsxs(
|
|
5622
|
+
"button",
|
|
5623
|
+
{
|
|
5624
|
+
type: "button",
|
|
5625
|
+
onClick: () => !disabled && setOpen(true),
|
|
5626
|
+
disabled,
|
|
5627
|
+
className: "flex h-full flex-1 items-center gap-2 text-left outline-none disabled:cursor-not-allowed",
|
|
5628
|
+
children: [
|
|
5629
|
+
singleValue.icon && /* @__PURE__ */ jsx(
|
|
5630
|
+
"span",
|
|
5631
|
+
{
|
|
5632
|
+
className: cn(
|
|
5633
|
+
"flex size-5 shrink-0 items-center justify-center rounded-full [&_svg]:size-3",
|
|
5634
|
+
singleValue.iconClassName
|
|
5635
|
+
),
|
|
5636
|
+
"aria-hidden": "true",
|
|
5637
|
+
children: singleValue.icon
|
|
5638
|
+
}
|
|
5639
|
+
),
|
|
5640
|
+
/* @__PURE__ */ jsxs("span", { className: "text-fg flex-1 truncate text-[13px]", children: [
|
|
5641
|
+
singleValue.label,
|
|
5642
|
+
singleValue.description && /* @__PURE__ */ jsxs("span", { className: "text-fg-4", children: [
|
|
5643
|
+
" \xB7 ",
|
|
5644
|
+
singleValue.description
|
|
5645
|
+
] })
|
|
5646
|
+
] })
|
|
5647
|
+
]
|
|
5648
|
+
}
|
|
5649
|
+
),
|
|
5650
|
+
/* @__PURE__ */ jsx(
|
|
5651
|
+
"button",
|
|
5652
|
+
{
|
|
5653
|
+
type: "button",
|
|
5654
|
+
onClick: () => onRemove(singleValue),
|
|
5655
|
+
disabled,
|
|
5656
|
+
className: cn(
|
|
5657
|
+
"text-fg-3 shrink-0 rounded-full p-0.5",
|
|
5658
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
5659
|
+
"motion-reduce:transition-none",
|
|
5660
|
+
"hover:bg-overlay-hover hover:text-fg",
|
|
5661
|
+
"disabled:text-fg-disabled disabled:cursor-not-allowed disabled:hover:bg-transparent",
|
|
5662
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
|
|
5663
|
+
),
|
|
5664
|
+
"aria-label": `Clear ${singleValue.label}`,
|
|
5665
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-3.5", "aria-hidden": "true" })
|
|
5666
|
+
}
|
|
5667
|
+
),
|
|
5668
|
+
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-fg-4 size-4 shrink-0", "aria-hidden": "true" })
|
|
5669
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5578
5670
|
/* @__PURE__ */ jsx(
|
|
5579
5671
|
SearchIcon,
|
|
5580
5672
|
{
|
|
@@ -5585,6 +5677,7 @@ function SearchSelect({
|
|
|
5585
5677
|
/* @__PURE__ */ jsx(
|
|
5586
5678
|
Command.Input,
|
|
5587
5679
|
{
|
|
5680
|
+
ref: inputRef,
|
|
5588
5681
|
value: search,
|
|
5589
5682
|
onValueChange: (v) => {
|
|
5590
5683
|
setSearch(v);
|
|
@@ -5602,7 +5695,7 @@ function SearchSelect({
|
|
|
5602
5695
|
)
|
|
5603
5696
|
}
|
|
5604
5697
|
)
|
|
5605
|
-
]
|
|
5698
|
+
] })
|
|
5606
5699
|
}
|
|
5607
5700
|
) }),
|
|
5608
5701
|
/* @__PURE__ */ jsx(
|
|
@@ -5610,56 +5703,156 @@ function SearchSelect({
|
|
|
5610
5703
|
{
|
|
5611
5704
|
align: "start",
|
|
5612
5705
|
sideOffset: 4,
|
|
5706
|
+
avoidCollisions: false,
|
|
5613
5707
|
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
5614
5708
|
onInteractOutside: (e) => {
|
|
5615
5709
|
const target = e.target;
|
|
5616
5710
|
if (target.closest("[cmdk-input]")) e.preventDefault();
|
|
5617
5711
|
},
|
|
5618
|
-
|
|
5619
|
-
|
|
5620
|
-
|
|
5621
|
-
|
|
5622
|
-
|
|
5712
|
+
style: {
|
|
5713
|
+
width: "var(--radix-popover-trigger-width)",
|
|
5714
|
+
maxHeight: "var(--radix-popover-content-available-height)"
|
|
5715
|
+
},
|
|
5716
|
+
className: cn("p-0", "flex flex-col", "min-w-[12rem] overflow-hidden"),
|
|
5717
|
+
children: /* @__PURE__ */ jsxs(RemoveScroll, { removeScrollBar: false, className: "contents", children: [
|
|
5718
|
+
chips.length > 0 && /* @__PURE__ */ jsx("div", { className: "border-rule flex flex-wrap gap-1 border-b p-1.5", children: [null, ...chips].map((chip) => {
|
|
5719
|
+
const active = activeChip === chip;
|
|
5720
|
+
return /* @__PURE__ */ jsx(
|
|
5721
|
+
"button",
|
|
5722
|
+
{
|
|
5723
|
+
type: "button",
|
|
5724
|
+
onClick: () => setActiveChip(chip),
|
|
5725
|
+
className: cn(
|
|
5726
|
+
"rounded-pill px-2.5 py-0.5 text-[12px] font-medium",
|
|
5727
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
5728
|
+
active ? "bg-pro-fg text-fg-on-pro" : "border-rule text-fg-2 hover:bg-bg-2 border bg-transparent"
|
|
5729
|
+
),
|
|
5730
|
+
children: chip ?? "All"
|
|
5731
|
+
},
|
|
5732
|
+
chip ?? "__all"
|
|
5733
|
+
);
|
|
5734
|
+
}) }),
|
|
5735
|
+
/* @__PURE__ */ jsxs(
|
|
5736
|
+
Command.List,
|
|
5623
5737
|
{
|
|
5624
|
-
value: option.label,
|
|
5625
|
-
onSelect: () => handleSelect(option),
|
|
5626
5738
|
className: cn(
|
|
5627
|
-
|
|
5628
|
-
|
|
5739
|
+
// No top padding: a sticky group heading pins at top-0, so any
|
|
5740
|
+
// top padding would leave a strip above it where the previous
|
|
5741
|
+
// group's last item peeks through. Top spacing comes from the
|
|
5742
|
+
// heading's own pt-2 instead.
|
|
5743
|
+
"scrollbar-thin min-h-0 flex-1 max-h-[min(20rem,60vh)] overflow-y-auto px-1 pb-1",
|
|
5744
|
+
// Quiet sentence-case section labels (only shown when grouped)
|
|
5745
|
+
"[&_[cmdk-group-heading]]:bg-surface [&_[cmdk-group-heading]]:sticky [&_[cmdk-group-heading]]:top-0 [&_[cmdk-group-heading]]:z-10",
|
|
5746
|
+
"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:pt-2 [&_[cmdk-group-heading]]:pb-1",
|
|
5747
|
+
"[&_[cmdk-group-heading]]:text-[11px] [&_[cmdk-group-heading]]:font-medium",
|
|
5748
|
+
"[&_[cmdk-group-heading]]:text-fg-3"
|
|
5749
|
+
),
|
|
5750
|
+
children: [
|
|
5751
|
+
filtered.length === 0 && !showCreate && /* @__PURE__ */ jsx(Command.Empty, { className: "text-fg-3 px-3 py-2 text-xs", children: search ? "No results found." : "No options available." }),
|
|
5752
|
+
visibleGroups.map(([group, groupOptions]) => {
|
|
5753
|
+
const baseHeading = activeChip ? void 0 : group || void 0;
|
|
5754
|
+
const heading = baseHeading && showGroupCounts && !trimmedSearch ? `${baseHeading} \xB7 ${groupOptions.length}` : baseHeading;
|
|
5755
|
+
return /* @__PURE__ */ jsx(Command.Group, { heading, children: groupOptions.map((option) => {
|
|
5756
|
+
const isRich = !!option.icon || !!option.description;
|
|
5757
|
+
return /* @__PURE__ */ jsx(
|
|
5758
|
+
Command.Item,
|
|
5759
|
+
{
|
|
5760
|
+
value: hasGroups && group ? `${option.label} ${group}` : option.label,
|
|
5761
|
+
onSelect: () => handleSelect(option),
|
|
5762
|
+
className: cn(
|
|
5763
|
+
"flex cursor-default items-center outline-none select-none",
|
|
5764
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
5765
|
+
"motion-reduce:transition-none",
|
|
5766
|
+
isRich ? "rounded-md text-fg gap-2.5 px-2 py-1.5" : "rounded-pill text-fg-2 gap-2 px-2 py-1.5 text-[13px]",
|
|
5767
|
+
"data-[selected=true]:bg-bg-2 data-[selected=true]:text-fg"
|
|
5768
|
+
),
|
|
5769
|
+
children: isRich ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5770
|
+
option.icon && /* @__PURE__ */ jsx(
|
|
5771
|
+
"span",
|
|
5772
|
+
{
|
|
5773
|
+
className: cn(
|
|
5774
|
+
"flex size-7 shrink-0 items-center justify-center rounded-full [&_svg]:size-3.5",
|
|
5775
|
+
option.iconClassName
|
|
5776
|
+
),
|
|
5777
|
+
"aria-hidden": "true",
|
|
5778
|
+
children: option.icon
|
|
5779
|
+
}
|
|
5780
|
+
),
|
|
5781
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
5782
|
+
/* @__PURE__ */ jsx("span", { className: "block truncate text-[13px] font-medium", children: option.label }),
|
|
5783
|
+
option.description && /* @__PURE__ */ jsx("span", { className: "text-fg-4 block truncate text-[11px]", children: option.description })
|
|
5784
|
+
] })
|
|
5785
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5786
|
+
option.color ? /* @__PURE__ */ jsx(
|
|
5787
|
+
"span",
|
|
5788
|
+
{
|
|
5789
|
+
className: "size-2 shrink-0 rounded-full",
|
|
5790
|
+
style: { backgroundColor: option.color },
|
|
5791
|
+
"aria-hidden": "true"
|
|
5792
|
+
}
|
|
5793
|
+
) : /* @__PURE__ */ jsx(
|
|
5794
|
+
CheckIcon,
|
|
5795
|
+
{
|
|
5796
|
+
className: "size-4 shrink-0 text-transparent",
|
|
5797
|
+
"aria-hidden": "true"
|
|
5798
|
+
}
|
|
5799
|
+
),
|
|
5800
|
+
/* @__PURE__ */ jsx("span", { className: "line-clamp-1", children: option.label })
|
|
5801
|
+
] })
|
|
5802
|
+
},
|
|
5803
|
+
option.id
|
|
5804
|
+
);
|
|
5805
|
+
}) }, group ?? "__ungrouped");
|
|
5806
|
+
}),
|
|
5807
|
+
showCreate && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5808
|
+
filtered.length > 0 && /* @__PURE__ */ jsx("div", { className: "bg-rule -mx-1 my-1 h-px", "aria-hidden": "true" }),
|
|
5809
|
+
/* @__PURE__ */ jsxs(
|
|
5810
|
+
Command.Item,
|
|
5811
|
+
{
|
|
5812
|
+
value: `__create_${trimmedSearch}`,
|
|
5813
|
+
onSelect: handleCreate,
|
|
5814
|
+
className: cn(
|
|
5815
|
+
"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-[13px] outline-none select-none",
|
|
5816
|
+
"text-pro-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
5817
|
+
"motion-reduce:transition-none",
|
|
5818
|
+
"data-[selected=true]:bg-pro-bg"
|
|
5819
|
+
),
|
|
5820
|
+
children: [
|
|
5821
|
+
/* @__PURE__ */ jsx(PlusIcon, { className: "size-4 shrink-0", "aria-hidden": "true" }),
|
|
5822
|
+
/* @__PURE__ */ jsxs("span", { className: "line-clamp-1", children: [
|
|
5823
|
+
"Create \u201C",
|
|
5824
|
+
trimmedSearch,
|
|
5825
|
+
"\u201D"
|
|
5826
|
+
] })
|
|
5827
|
+
]
|
|
5828
|
+
}
|
|
5829
|
+
)
|
|
5830
|
+
] })
|
|
5831
|
+
]
|
|
5832
|
+
}
|
|
5833
|
+
),
|
|
5834
|
+
onCreateNew && /* @__PURE__ */ jsxs(
|
|
5835
|
+
"button",
|
|
5836
|
+
{
|
|
5837
|
+
type: "button",
|
|
5838
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
5839
|
+
onClick: () => {
|
|
5840
|
+
onCreateNew();
|
|
5841
|
+
setOpen(false);
|
|
5842
|
+
},
|
|
5843
|
+
className: cn(
|
|
5844
|
+
"border-rule text-pro-fg flex w-full shrink-0 items-center gap-2 border-t px-3 py-2.5 text-[13px] font-medium",
|
|
5845
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
5629
5846
|
"motion-reduce:transition-none",
|
|
5630
|
-
"
|
|
5847
|
+
"hover:bg-pro-bg",
|
|
5848
|
+
"focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none"
|
|
5631
5849
|
),
|
|
5632
5850
|
children: [
|
|
5633
|
-
/* @__PURE__ */ jsx(
|
|
5634
|
-
|
|
5851
|
+
/* @__PURE__ */ jsx(PlusIcon, { className: "size-4 shrink-0", "aria-hidden": "true" }),
|
|
5852
|
+
createNewLabel
|
|
5635
5853
|
]
|
|
5636
|
-
}
|
|
5637
|
-
|
|
5638
|
-
)),
|
|
5639
|
-
showCreate && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5640
|
-
filtered.length > 0 && /* @__PURE__ */ jsx("div", { className: "bg-rule -mx-1 my-1 h-px", "aria-hidden": "true" }),
|
|
5641
|
-
/* @__PURE__ */ jsxs(
|
|
5642
|
-
Command.Item,
|
|
5643
|
-
{
|
|
5644
|
-
value: `__create_${trimmedSearch}`,
|
|
5645
|
-
onSelect: handleCreate,
|
|
5646
|
-
className: cn(
|
|
5647
|
-
"rounded-pill flex cursor-default items-center gap-2 px-2 py-1.5 text-[13px] outline-none select-none",
|
|
5648
|
-
"text-pro-fg transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
|
|
5649
|
-
"motion-reduce:transition-none",
|
|
5650
|
-
"data-[selected=true]:bg-pro-bg"
|
|
5651
|
-
),
|
|
5652
|
-
children: [
|
|
5653
|
-
/* @__PURE__ */ jsx(PlusIcon, { className: "size-4 shrink-0", "aria-hidden": "true" }),
|
|
5654
|
-
/* @__PURE__ */ jsxs("span", { className: "line-clamp-1", children: [
|
|
5655
|
-
"Create \u201C",
|
|
5656
|
-
trimmedSearch,
|
|
5657
|
-
"\u201D"
|
|
5658
|
-
] })
|
|
5659
|
-
]
|
|
5660
|
-
}
|
|
5661
|
-
)
|
|
5662
|
-
] })
|
|
5854
|
+
}
|
|
5855
|
+
)
|
|
5663
5856
|
] })
|
|
5664
5857
|
}
|
|
5665
5858
|
)
|
|
@@ -8310,6 +8503,149 @@ var KanbanCard = forwardRef(function KanbanCard2({ className, label, title, clie
|
|
|
8310
8503
|
] }) : children });
|
|
8311
8504
|
});
|
|
8312
8505
|
KanbanCard.displayName = "KanbanCard";
|
|
8506
|
+
var NotificationPanel = forwardRef(
|
|
8507
|
+
function NotificationPanel2({ className, children, ...props }, ref) {
|
|
8508
|
+
return /* @__PURE__ */ jsx("div", { ref, className: cn("bg-surface text-fg flex w-full flex-col", className), ...props, children });
|
|
8509
|
+
}
|
|
8510
|
+
);
|
|
8511
|
+
NotificationPanel.displayName = "NotificationPanel";
|
|
8512
|
+
var NotificationPanelHeader = forwardRef(
|
|
8513
|
+
function NotificationPanelHeader2({ title = "Notifications", unreadCount = 0, onMarkAllRead, onSettings, className, ...props }, ref) {
|
|
8514
|
+
return /* @__PURE__ */ jsxs(
|
|
8515
|
+
"div",
|
|
8516
|
+
{
|
|
8517
|
+
ref,
|
|
8518
|
+
className: cn("border-rule flex items-center justify-between border-b px-4 py-3", className),
|
|
8519
|
+
...props,
|
|
8520
|
+
children: [
|
|
8521
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8522
|
+
/* @__PURE__ */ jsx("h3", { className: "text-fg text-sm font-semibold", children: title }),
|
|
8523
|
+
unreadCount > 0 && /* @__PURE__ */ jsx("span", { className: "bg-accent/10 text-accent rounded-pill px-1.5 py-0.5 text-[11px] font-semibold tabular-nums", children: unreadCount > 99 ? "99+" : unreadCount })
|
|
8524
|
+
] }),
|
|
8525
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
8526
|
+
onMarkAllRead && unreadCount > 0 && /* @__PURE__ */ jsx(
|
|
8527
|
+
"button",
|
|
8528
|
+
{
|
|
8529
|
+
type: "button",
|
|
8530
|
+
onClick: onMarkAllRead,
|
|
8531
|
+
className: "text-fg-3 hover:text-fg text-xs font-medium",
|
|
8532
|
+
children: "Mark all read"
|
|
8533
|
+
}
|
|
8534
|
+
),
|
|
8535
|
+
onSettings && /* @__PURE__ */ jsx(
|
|
8536
|
+
"button",
|
|
8537
|
+
{
|
|
8538
|
+
type: "button",
|
|
8539
|
+
onClick: onSettings,
|
|
8540
|
+
"aria-label": "Notification settings",
|
|
8541
|
+
className: "text-fg-3 hover:text-fg hover:bg-bg-2 rounded-md p-1 [&_svg]:size-[15px]",
|
|
8542
|
+
children: /* @__PURE__ */ jsx(SettingsIcon, {})
|
|
8543
|
+
}
|
|
8544
|
+
)
|
|
8545
|
+
] })
|
|
8546
|
+
]
|
|
8547
|
+
}
|
|
8548
|
+
);
|
|
8549
|
+
}
|
|
8550
|
+
);
|
|
8551
|
+
NotificationPanelHeader.displayName = "NotificationPanelHeader";
|
|
8552
|
+
var FILTER_OPTIONS = ["all", "unread"];
|
|
8553
|
+
var NotificationFilter = forwardRef(
|
|
8554
|
+
function NotificationFilter2({ value, onValueChange, actions, className, ...props }, ref) {
|
|
8555
|
+
return /* @__PURE__ */ jsxs(
|
|
8556
|
+
"div",
|
|
8557
|
+
{
|
|
8558
|
+
ref,
|
|
8559
|
+
className: cn(
|
|
8560
|
+
"border-rule flex items-center justify-between gap-2 border-b px-3 py-2",
|
|
8561
|
+
className
|
|
8562
|
+
),
|
|
8563
|
+
...props,
|
|
8564
|
+
children: [
|
|
8565
|
+
/* @__PURE__ */ jsx("div", { className: "bg-bg-2 inline-flex rounded-md p-0.5 text-xs font-medium", children: FILTER_OPTIONS.map((option) => /* @__PURE__ */ jsx(
|
|
8566
|
+
"button",
|
|
8567
|
+
{
|
|
8568
|
+
type: "button",
|
|
8569
|
+
onClick: () => onValueChange(option),
|
|
8570
|
+
"aria-pressed": value === option,
|
|
8571
|
+
className: cn(
|
|
8572
|
+
"rounded-[6px] px-2.5 py-1 capitalize transition-colors",
|
|
8573
|
+
"focus-visible:ring-accent outline-none focus-visible:ring-2",
|
|
8574
|
+
value === option ? "bg-surface text-fg shadow-quiet" : "text-fg-3 hover:text-fg"
|
|
8575
|
+
),
|
|
8576
|
+
children: option
|
|
8577
|
+
},
|
|
8578
|
+
option
|
|
8579
|
+
)) }),
|
|
8580
|
+
actions
|
|
8581
|
+
]
|
|
8582
|
+
}
|
|
8583
|
+
);
|
|
8584
|
+
}
|
|
8585
|
+
);
|
|
8586
|
+
NotificationFilter.displayName = "NotificationFilter";
|
|
8587
|
+
var NotificationList = forwardRef(
|
|
8588
|
+
function NotificationList2({ className, children, ...props }, ref) {
|
|
8589
|
+
return /* @__PURE__ */ jsx(
|
|
8590
|
+
"div",
|
|
8591
|
+
{
|
|
8592
|
+
ref,
|
|
8593
|
+
className: cn("divide-rule-soft max-h-[460px] divide-y overflow-y-auto", className),
|
|
8594
|
+
...props,
|
|
8595
|
+
children
|
|
8596
|
+
}
|
|
8597
|
+
);
|
|
8598
|
+
}
|
|
8599
|
+
);
|
|
8600
|
+
NotificationList.displayName = "NotificationList";
|
|
8601
|
+
var NotificationItem = forwardRef(
|
|
8602
|
+
function NotificationItem2({ title, body, typeLabel, client, time, sender, icon, unread, className, ...props }, ref) {
|
|
8603
|
+
const meta = [typeLabel, client, time].filter(Boolean);
|
|
8604
|
+
return /* @__PURE__ */ jsxs(
|
|
8605
|
+
"button",
|
|
8606
|
+
{
|
|
8607
|
+
ref,
|
|
8608
|
+
type: "button",
|
|
8609
|
+
className: cn(
|
|
8610
|
+
"flex w-full gap-3 px-4 py-3 text-left outline-none",
|
|
8611
|
+
"transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
|
|
8612
|
+
"hover:bg-bg-2/60 focus-visible:bg-bg-2/60",
|
|
8613
|
+
unread && "bg-accent/[0.06]",
|
|
8614
|
+
className
|
|
8615
|
+
),
|
|
8616
|
+
...props,
|
|
8617
|
+
children: [
|
|
8618
|
+
sender ? /* @__PURE__ */ jsx(Avatar, { size: "sm", name: sender.name, src: sender.src, className: "mt-0.5" }) : /* @__PURE__ */ jsx(
|
|
8619
|
+
"div",
|
|
8620
|
+
{
|
|
8621
|
+
"aria-hidden": "true",
|
|
8622
|
+
className: "bg-bg-2 text-fg-3 mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-full [&_svg]:size-3.5",
|
|
8623
|
+
children: icon
|
|
8624
|
+
}
|
|
8625
|
+
),
|
|
8626
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
8627
|
+
unread && /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Unread. " }),
|
|
8628
|
+
/* @__PURE__ */ jsx("p", { className: cn("text-fg text-sm leading-snug", unread ? "font-semibold" : "font-medium"), children: title }),
|
|
8629
|
+
body && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 truncate text-xs", children: body }),
|
|
8630
|
+
meta.length > 0 && /* @__PURE__ */ jsx("div", { className: "text-fg-4 mt-1 flex flex-wrap items-center gap-1.5 text-[11px]", children: meta.map((part, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
8631
|
+
i > 0 && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }),
|
|
8632
|
+
/* @__PURE__ */ jsx(
|
|
8633
|
+
"span",
|
|
8634
|
+
{
|
|
8635
|
+
className: cn(
|
|
8636
|
+
i === 0 && typeLabel ? "font-medium tracking-wide uppercase" : "tabular-nums"
|
|
8637
|
+
),
|
|
8638
|
+
children: part
|
|
8639
|
+
}
|
|
8640
|
+
)
|
|
8641
|
+
] }, i)) })
|
|
8642
|
+
] })
|
|
8643
|
+
]
|
|
8644
|
+
}
|
|
8645
|
+
);
|
|
8646
|
+
}
|
|
8647
|
+
);
|
|
8648
|
+
NotificationItem.displayName = "NotificationItem";
|
|
8313
8649
|
var Toolbar = forwardRef(function Toolbar2({ className, children, ...props }, ref) {
|
|
8314
8650
|
return /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center gap-2", className), ...props, children });
|
|
8315
8651
|
});
|
|
@@ -8437,6 +8773,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
|
|
|
8437
8773
|
});
|
|
8438
8774
|
KbdHint.displayName = "KbdHint";
|
|
8439
8775
|
|
|
8440
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StarRating, Stat, Stepper, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, displayToIso, filterChipVariants, inputVariants, isoToDisplay, labelVariants, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarState, useToast };
|
|
8776
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StarRating, Stat, Stepper, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, displayToIso, filterChipVariants, inputVariants, isoToDisplay, labelVariants, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarState, useToast };
|
|
8441
8777
|
//# sourceMappingURL=index.js.map
|
|
8442
8778
|
//# sourceMappingURL=index.js.map
|