@lessly/ui 0.3.1 → 0.4.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 +69 -6
- package/dist/index.js +160 -0
- package/dist/styles.css +10 -10
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -760,11 +760,10 @@ type NavRowProps = NavRowOwnProps & Omit<React$1.ComponentPropsWithoutRef<'butto
|
|
|
760
760
|
/** Nav row primitive (rail and menu variants). Composes an icon, label and trailing slot
|
|
761
761
|
* into a button, or into a single child via `asChild` (e.g. a router `<Link>`).
|
|
762
762
|
*
|
|
763
|
-
* Rail rows are designed for the `bg-surface` canvas
|
|
764
|
-
*
|
|
765
|
-
*
|
|
766
|
-
*
|
|
767
|
-
* `bg-surface` canvas in light theme. */
|
|
763
|
+
* Rail rows are designed for the `bg-surface` canvas. In the light theme `--hov-bg` is an
|
|
764
|
+
* opaque `#ffffff` plate, so a rail `NavRow` has no hover contrast on a surface that is
|
|
765
|
+
* already white — notably a `--menu-bg` plate. Use the `menu` variant there; its
|
|
766
|
+
* `--menu-hov` is tuned for that surface. */
|
|
768
767
|
declare const NavRow: React$1.ForwardRefExoticComponent<NavRowProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
769
768
|
|
|
770
769
|
type NavSectionLabelProps = React$1.HTMLAttributes<HTMLDivElement>;
|
|
@@ -849,4 +848,68 @@ declare function AppShell({ sidebar, topBar, children, className }: AppShellProp
|
|
|
849
848
|
/** Alias of AppShell — reads better in app router files. */
|
|
850
849
|
declare const AuthenticatedLayout: typeof AppShell;
|
|
851
850
|
|
|
852
|
-
|
|
851
|
+
declare const segmentChipVariants: (props?: ({
|
|
852
|
+
kind?: "granted" | "own" | "pending" | "available" | null | undefined;
|
|
853
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
854
|
+
interface SegmentChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, 'children' | 'resource'>, VariantProps<typeof segmentChipVariants> {
|
|
855
|
+
/** The resource this segment points at, e.g. "a GitHub repo", "Ads account 123-456". */
|
|
856
|
+
resource: React$1.ReactNode;
|
|
857
|
+
/** Override the leading icon; defaults to a glyph derived from `kind`. */
|
|
858
|
+
icon?: LucideIcon;
|
|
859
|
+
/** Hide the leading icon entirely. */
|
|
860
|
+
hideIcon?: boolean;
|
|
861
|
+
}
|
|
862
|
+
declare const SegmentChip: React$1.ForwardRefExoticComponent<SegmentChipProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
863
|
+
|
|
864
|
+
type ConnectionScope = 'org' | 'org/product' | 'product';
|
|
865
|
+
type ConnectionAuth = 'app' | 'oauth' | 'token';
|
|
866
|
+
type ConnectionStatus = 'connected' | 'error' | 'disconnected';
|
|
867
|
+
interface ConnectionCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
868
|
+
/** Display name, e.g. "GitHub — apliteni". */
|
|
869
|
+
name: string;
|
|
870
|
+
scope: ConnectionScope;
|
|
871
|
+
auth: ConnectionAuth;
|
|
872
|
+
status: ConnectionStatus;
|
|
873
|
+
/** Provider mark; falls back to a monogram box derived from `name`. */
|
|
874
|
+
glyph?: React$1.ReactNode;
|
|
875
|
+
/** Override the default status label (e.g. "Token expired" for `error`). */
|
|
876
|
+
statusLabel?: string;
|
|
877
|
+
/** How many products hold a segment of this connection. */
|
|
878
|
+
grantedCount?: number;
|
|
879
|
+
/** Footer action — typically a <Button> ("Manage", "Reconnect", "Connect"). */
|
|
880
|
+
action?: React$1.ReactNode;
|
|
881
|
+
/**
|
|
882
|
+
* Blast-radius disclosure. Some providers (GitHub, ClickUp) grant all-or-nothing
|
|
883
|
+
* access to the whole external org — there is no per-repo/per-space permission, so
|
|
884
|
+
* a product's segment is enforced by Lessly's gateway, not the provider. When set,
|
|
885
|
+
* a warning notice is shown, e.g. "Full org access — all repositories."
|
|
886
|
+
*/
|
|
887
|
+
access?: React$1.ReactNode;
|
|
888
|
+
}
|
|
889
|
+
declare const ConnectionCard: React$1.ForwardRefExoticComponent<ConnectionCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
890
|
+
|
|
891
|
+
type RequestSurface = 'org' | 'product';
|
|
892
|
+
type RequestState = 'available' | 'pending' | 'granted';
|
|
893
|
+
interface RequestRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
894
|
+
surface: RequestSurface;
|
|
895
|
+
/** Provider display name, e.g. "Google Ads". */
|
|
896
|
+
name: string;
|
|
897
|
+
state: RequestState;
|
|
898
|
+
/** Provider mark; falls back to a monogram box derived from `name`. */
|
|
899
|
+
glyph?: React$1.ReactNode;
|
|
900
|
+
/** Secondary line — requester + resource (org), or availability (product). */
|
|
901
|
+
subtitle?: React$1.ReactNode;
|
|
902
|
+
/** The granted resource label; renders a <SegmentChip> when `state` is `granted`. */
|
|
903
|
+
grantedResource?: React$1.ReactNode;
|
|
904
|
+
/** Approve an org-side request. */
|
|
905
|
+
onApprove?: () => void;
|
|
906
|
+
/** Deny an org-side request. */
|
|
907
|
+
onDeny?: () => void;
|
|
908
|
+
/** Request an available connection from the product side. */
|
|
909
|
+
onRequest?: () => void;
|
|
910
|
+
/** Override the trailing controls entirely. */
|
|
911
|
+
action?: React$1.ReactNode;
|
|
912
|
+
}
|
|
913
|
+
declare const RequestRow: React$1.ForwardRefExoticComponent<RequestRowProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
914
|
+
|
|
915
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppShell, type AppShellProps, AppSidebar, type AppSidebarProps, AspectRatio, AuthenticatedLayout, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, type CarouselContextProps, CarouselItem, CarouselNext, type CarouselOptions, type CarouselPlugin, CarouselPrevious, type CarouselProps, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ConfirmDialog, type ConfirmDialogProps, type ConnectionAuth, ConnectionCard, type ConnectionCardProps, type ConnectionScope, type ConnectionStatus, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, type CopyButtonProps, DatePicker, type DatePickerProps, type DeltaDirection, type DeltaTone, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DocsLink, type DocsLinkProps, 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, EmptyState, type EmptyStateProps, ExtensionIcon, type ExtensionIconProps, ExtensionLink, type ExtensionLinkProps, type ExtensionLinkUiMode, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, InlineError, type InlineErrorProps, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Label, MenuDivider, MenuPopup, type MenuPopupProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, type NavItem, type NavLinkComponent, NavRow, type NavRowProps, type NavRowVariant, NavSectionLabel, type NavSectionLabelProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, type PaginationLinkProps, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, RequestRow, type RequestRowProps, type RequestState, type RequestSurface, type ResolvedTheme, ScrollArea, ScrollBar, SectionIntro, type SectionIntroProps, SegmentChip, type SegmentChipProps, Select, type SelectOption, type SelectProps, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SidebarNav, SidebarNavLink, type SidebarNavLinkProps, type SidebarNavProps, Skeleton, Slider, StatCard, type StatCardProps, StatusDot, type StatusDotProps, Switch, type SwitchProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, type Theme, ThemeToggle, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type UseSidebarOptions, type UseSidebarResult, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuUser, alertVariants, badgeVariants, buttonVariants, cn, isKnownExtensionIcon, navigationMenuTriggerStyle, segmentChipVariants, statusDotVariants, toggleVariants, useCarousel, useFormField, useIsMobile, useSidebar, useTheme };
|
package/dist/index.js
CHANGED
|
@@ -3068,6 +3068,162 @@ function AppShell({ sidebar, topBar, children, className }) {
|
|
|
3068
3068
|
] }) });
|
|
3069
3069
|
}
|
|
3070
3070
|
var AuthenticatedLayout = AppShell;
|
|
3071
|
+
|
|
3072
|
+
// src/components/segment-chip.tsx
|
|
3073
|
+
import * as React51 from "react";
|
|
3074
|
+
import { cva as cva9 } from "class-variance-authority";
|
|
3075
|
+
import { Link2 as Link22, KeyRound, Clock, Plus } from "lucide-react";
|
|
3076
|
+
import { jsx as jsx61, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3077
|
+
var segmentChipVariants = cva9(
|
|
3078
|
+
"inline-flex items-center gap-1.5 rounded-lg border px-2.5 py-1 text-sm font-medium leading-tight",
|
|
3079
|
+
{
|
|
3080
|
+
variants: {
|
|
3081
|
+
kind: {
|
|
3082
|
+
granted: "border-dashed border-teal-800 bg-bg-teal-subtle text-teal-300",
|
|
3083
|
+
own: "border-border-warning bg-bg-warning-subtle text-text-warning",
|
|
3084
|
+
pending: "border-dashed border-border-default bg-bg-secondary text-text-tertiary",
|
|
3085
|
+
available: "border-border-subtle bg-transparent text-text-secondary"
|
|
3086
|
+
}
|
|
3087
|
+
},
|
|
3088
|
+
defaultVariants: { kind: "granted" }
|
|
3089
|
+
}
|
|
3090
|
+
);
|
|
3091
|
+
var kindIcons = {
|
|
3092
|
+
granted: Link22,
|
|
3093
|
+
own: KeyRound,
|
|
3094
|
+
pending: Clock,
|
|
3095
|
+
available: Plus
|
|
3096
|
+
};
|
|
3097
|
+
var SegmentChip = React51.forwardRef(
|
|
3098
|
+
({ kind, resource, icon, hideIcon = false, className, ...props }, ref) => {
|
|
3099
|
+
const Icon = icon ?? kindIcons[kind ?? "granted"];
|
|
3100
|
+
return /* @__PURE__ */ jsxs31("span", { ref, className: cn(segmentChipVariants({ kind }), className), ...props, children: [
|
|
3101
|
+
!hideIcon && /* @__PURE__ */ jsx61(Icon, { className: "size-3.5 shrink-0 opacity-90", "aria-hidden": "true" }),
|
|
3102
|
+
resource
|
|
3103
|
+
] });
|
|
3104
|
+
}
|
|
3105
|
+
);
|
|
3106
|
+
SegmentChip.displayName = "SegmentChip";
|
|
3107
|
+
|
|
3108
|
+
// src/components/connection-card.tsx
|
|
3109
|
+
import * as React52 from "react";
|
|
3110
|
+
import { AlertTriangle } from "lucide-react";
|
|
3111
|
+
import { Fragment as Fragment3, jsx as jsx62, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
3112
|
+
var authLabels = { app: "App", oauth: "OAuth", token: "token" };
|
|
3113
|
+
var statusMeta = {
|
|
3114
|
+
connected: { label: "Connected", badge: "success", dot: "success" },
|
|
3115
|
+
error: { label: "Needs attention", badge: "destructive", dot: "danger" },
|
|
3116
|
+
disconnected: { label: "Not connected", badge: "secondary", dot: "neutral" }
|
|
3117
|
+
};
|
|
3118
|
+
function monogram(name) {
|
|
3119
|
+
return name.replace(/[^a-zA-Z0-9 ]/g, " ").split(/\s+/).filter(Boolean).slice(0, 2).map((w) => w[0].toUpperCase()).join("");
|
|
3120
|
+
}
|
|
3121
|
+
var ConnectionCard = React52.forwardRef(
|
|
3122
|
+
({ name, scope, auth, status, glyph, statusLabel, grantedCount, action, access, className, ...props }, ref) => {
|
|
3123
|
+
const meta = statusMeta[status];
|
|
3124
|
+
const connected = status !== "disconnected";
|
|
3125
|
+
return /* @__PURE__ */ jsxs32(Card, { ref, className: cn(status === "disconnected" && "border-dashed border-border-default", className), ...props, children: [
|
|
3126
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-3 p-4", children: [
|
|
3127
|
+
/* @__PURE__ */ jsx62(
|
|
3128
|
+
"div",
|
|
3129
|
+
{
|
|
3130
|
+
"aria-hidden": "true",
|
|
3131
|
+
className: "flex size-8 shrink-0 items-center justify-center rounded-lg border border-border-subtle bg-bg-elevated text-sm font-bold text-text-secondary",
|
|
3132
|
+
children: glyph ?? monogram(name)
|
|
3133
|
+
}
|
|
3134
|
+
),
|
|
3135
|
+
/* @__PURE__ */ jsxs32("div", { className: "min-w-0", children: [
|
|
3136
|
+
/* @__PURE__ */ jsx62("p", { className: "truncate text-sm font-semibold text-text-primary", children: name }),
|
|
3137
|
+
/* @__PURE__ */ jsxs32("div", { className: "mt-0.5 flex flex-wrap gap-1", children: [
|
|
3138
|
+
/* @__PURE__ */ jsx62(Badge, { variant: "secondary", children: scope }),
|
|
3139
|
+
/* @__PURE__ */ jsx62(Badge, { variant: "secondary", children: authLabels[auth] })
|
|
3140
|
+
] })
|
|
3141
|
+
] }),
|
|
3142
|
+
/* @__PURE__ */ jsx62("div", { className: "ml-auto shrink-0", children: connected ? /* @__PURE__ */ jsxs32(Badge, { variant: meta.badge, className: "gap-1.5", children: [
|
|
3143
|
+
/* @__PURE__ */ jsx62(StatusDot, { status: meta.dot, size: "sm" }),
|
|
3144
|
+
statusLabel ?? meta.label
|
|
3145
|
+
] }) : action })
|
|
3146
|
+
] }),
|
|
3147
|
+
access && /* @__PURE__ */ jsxs32(
|
|
3148
|
+
"div",
|
|
3149
|
+
{
|
|
3150
|
+
role: "note",
|
|
3151
|
+
className: "flex items-start gap-2 border-t border-border-subtle bg-bg-warning-subtle px-4 py-2.5 text-xs font-medium text-text-warning",
|
|
3152
|
+
children: [
|
|
3153
|
+
/* @__PURE__ */ jsx62(AlertTriangle, { className: "mt-0.5 size-3.5 shrink-0", "aria-hidden": "true" }),
|
|
3154
|
+
/* @__PURE__ */ jsx62("span", { children: access })
|
|
3155
|
+
]
|
|
3156
|
+
}
|
|
3157
|
+
),
|
|
3158
|
+
(grantedCount !== void 0 || connected && action) && /* @__PURE__ */ jsxs32("div", { className: "flex items-center justify-between border-t border-border-subtle px-4 py-3", children: [
|
|
3159
|
+
/* @__PURE__ */ jsx62("span", { className: "text-sm text-text-secondary", children: grantedCount !== void 0 ? /* @__PURE__ */ jsxs32(Fragment3, { children: [
|
|
3160
|
+
"Granted to ",
|
|
3161
|
+
/* @__PURE__ */ jsx62("span", { className: "font-semibold text-text-primary", children: grantedCount }),
|
|
3162
|
+
" ",
|
|
3163
|
+
grantedCount === 1 ? "product" : "products"
|
|
3164
|
+
] }) : /* @__PURE__ */ jsx62("span", { className: "text-text-tertiary", children: "Not granted to any product yet" }) }),
|
|
3165
|
+
connected && action
|
|
3166
|
+
] })
|
|
3167
|
+
] });
|
|
3168
|
+
}
|
|
3169
|
+
);
|
|
3170
|
+
ConnectionCard.displayName = "ConnectionCard";
|
|
3171
|
+
|
|
3172
|
+
// src/components/request-row.tsx
|
|
3173
|
+
import * as React53 from "react";
|
|
3174
|
+
import { Fragment as Fragment4, jsx as jsx63, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
3175
|
+
function monogram2(name) {
|
|
3176
|
+
return name.replace(/[^a-zA-Z0-9 ]/g, " ").split(/\s+/).filter(Boolean).slice(0, 2).map((w) => w[0].toUpperCase()).join("");
|
|
3177
|
+
}
|
|
3178
|
+
var RequestRow = React53.forwardRef(
|
|
3179
|
+
({ surface, name, state: state2, glyph, subtitle, grantedResource, onApprove, onDeny, onRequest, action, className, ...props }, ref) => {
|
|
3180
|
+
let controls = action;
|
|
3181
|
+
if (controls === void 0) {
|
|
3182
|
+
if (surface === "org" && state2 === "pending") {
|
|
3183
|
+
controls = /* @__PURE__ */ jsxs33(Fragment4, { children: [
|
|
3184
|
+
/* @__PURE__ */ jsx63(Button, { variant: "outline", size: "sm", onClick: onDeny, children: "Deny" }),
|
|
3185
|
+
/* @__PURE__ */ jsx63(Button, { size: "sm", onClick: onApprove, children: "Approve" })
|
|
3186
|
+
] });
|
|
3187
|
+
} else if (state2 === "available") {
|
|
3188
|
+
controls = /* @__PURE__ */ jsx63(Button, { size: "sm", onClick: onRequest, children: "Request" });
|
|
3189
|
+
} else if (state2 === "pending") {
|
|
3190
|
+
controls = /* @__PURE__ */ jsxs33(Badge, { variant: "secondary", className: "gap-1.5", children: [
|
|
3191
|
+
/* @__PURE__ */ jsx63(StatusDot, { status: "neutral", size: "sm" }),
|
|
3192
|
+
"Pending"
|
|
3193
|
+
] });
|
|
3194
|
+
} else if (state2 === "granted") {
|
|
3195
|
+
controls = /* @__PURE__ */ jsx63(SegmentChip, { kind: "granted", resource: grantedResource ?? "a segment" });
|
|
3196
|
+
}
|
|
3197
|
+
}
|
|
3198
|
+
return /* @__PURE__ */ jsxs33(
|
|
3199
|
+
"div",
|
|
3200
|
+
{
|
|
3201
|
+
ref,
|
|
3202
|
+
className: cn(
|
|
3203
|
+
"flex items-center gap-3 border-b border-border-subtle px-4 py-3 last:border-b-0",
|
|
3204
|
+
className
|
|
3205
|
+
),
|
|
3206
|
+
...props,
|
|
3207
|
+
children: [
|
|
3208
|
+
/* @__PURE__ */ jsx63(
|
|
3209
|
+
"div",
|
|
3210
|
+
{
|
|
3211
|
+
"aria-hidden": "true",
|
|
3212
|
+
className: "flex size-8 shrink-0 items-center justify-center rounded-lg border border-border-subtle bg-bg-elevated text-sm font-bold text-text-secondary",
|
|
3213
|
+
children: glyph ?? monogram2(name)
|
|
3214
|
+
}
|
|
3215
|
+
),
|
|
3216
|
+
/* @__PURE__ */ jsxs33("div", { className: "min-w-0", children: [
|
|
3217
|
+
/* @__PURE__ */ jsx63("p", { className: "truncate text-sm font-semibold text-text-primary", children: name }),
|
|
3218
|
+
subtitle && /* @__PURE__ */ jsx63("p", { className: "truncate text-xs text-text-tertiary", children: subtitle })
|
|
3219
|
+
] }),
|
|
3220
|
+
/* @__PURE__ */ jsx63("div", { className: "ml-auto flex shrink-0 items-center gap-2", children: controls })
|
|
3221
|
+
]
|
|
3222
|
+
}
|
|
3223
|
+
);
|
|
3224
|
+
}
|
|
3225
|
+
);
|
|
3226
|
+
RequestRow.displayName = "RequestRow";
|
|
3071
3227
|
export {
|
|
3072
3228
|
Accordion,
|
|
3073
3229
|
AccordionContent,
|
|
@@ -3129,6 +3285,7 @@ export {
|
|
|
3129
3285
|
CommandSeparator,
|
|
3130
3286
|
CommandShortcut,
|
|
3131
3287
|
ConfirmDialog,
|
|
3288
|
+
ConnectionCard,
|
|
3132
3289
|
ContextMenu,
|
|
3133
3290
|
ContextMenuCheckboxItem,
|
|
3134
3291
|
ContextMenuContent,
|
|
@@ -3244,9 +3401,11 @@ export {
|
|
|
3244
3401
|
Progress,
|
|
3245
3402
|
RadioGroup2 as RadioGroup,
|
|
3246
3403
|
RadioGroupItem,
|
|
3404
|
+
RequestRow,
|
|
3247
3405
|
ScrollArea,
|
|
3248
3406
|
ScrollBar,
|
|
3249
3407
|
SectionIntro,
|
|
3408
|
+
SegmentChip,
|
|
3250
3409
|
Select,
|
|
3251
3410
|
Separator4 as Separator,
|
|
3252
3411
|
Sheet,
|
|
@@ -3295,6 +3454,7 @@ export {
|
|
|
3295
3454
|
cn,
|
|
3296
3455
|
isKnownExtensionIcon,
|
|
3297
3456
|
navigationMenuTriggerStyle,
|
|
3457
|
+
segmentChipVariants,
|
|
3298
3458
|
statusDotVariants,
|
|
3299
3459
|
toast,
|
|
3300
3460
|
toggleVariants,
|
package/dist/styles.css
CHANGED
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
--spacing: 0.25rem;
|
|
60
60
|
}
|
|
61
61
|
:root {
|
|
62
|
-
--color-bg-primary: #
|
|
62
|
+
--color-bg-primary: #191b24;
|
|
63
63
|
--color-bg-secondary: #12141b;
|
|
64
|
-
--color-bg-surface: #
|
|
65
|
-
--color-bg-elevated: #
|
|
66
|
-
--color-bg-sunken: #
|
|
64
|
+
--color-bg-surface: #1f222d;
|
|
65
|
+
--color-bg-elevated: #252936;
|
|
66
|
+
--color-bg-sunken: #0e1015;
|
|
67
67
|
--color-bg-brand: #06297d;
|
|
68
|
-
--color-bg-brand-subtle: #
|
|
68
|
+
--color-bg-brand-subtle: #1f2541;
|
|
69
69
|
--color-bg-brand-bright: #165ff2;
|
|
70
70
|
--color-bg-brand-hover: #08349b;
|
|
71
71
|
--color-bg-success: #13703c;
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
--color-bg-rose-subtle: #1a090b;
|
|
80
80
|
--color-text-primary: #eeeff0;
|
|
81
81
|
--color-text-secondary: #a5a9b5;
|
|
82
|
-
--color-text-tertiary: #
|
|
82
|
+
--color-text-tertiary: #8a93a8;
|
|
83
83
|
--color-text-disabled: #60687f;
|
|
84
84
|
--color-text-inverse: #0e1015;
|
|
85
85
|
--color-text-on-brand: #f6f7f7;
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
--color-icon-success: #2eda76;
|
|
100
100
|
--color-icon-warning: #efb042;
|
|
101
101
|
--color-icon-danger: #f06a6a;
|
|
102
|
-
--color-border-subtle: #
|
|
102
|
+
--color-border-subtle: #2a2e3b;
|
|
103
103
|
--color-border-default: #60687f;
|
|
104
104
|
--color-border-strong: #737c95;
|
|
105
105
|
--color-border-brand: #165ff2;
|
|
@@ -118,10 +118,10 @@
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
.light {
|
|
121
|
-
--color-bg-primary: #
|
|
121
|
+
--color-bg-primary: #f6f7f7;
|
|
122
122
|
--color-bg-secondary: #eeeff0;
|
|
123
|
-
--color-bg-surface: #
|
|
124
|
-
--color-bg-elevated: #
|
|
123
|
+
--color-bg-surface: #f2f3f4;
|
|
124
|
+
--color-bg-elevated: #edeef0;
|
|
125
125
|
--color-bg-sunken: #e1e2e4;
|
|
126
126
|
--color-bg-brand: #06297d;
|
|
127
127
|
--color-bg-brand-subtle: #e4ecfe;
|