@lessly/ui 0.3.2 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +72 -1
- package/dist/index.js +161 -0
- package/dist/styles.css +4 -0
- package/dist/tailwind-preset.d.ts +1 -0
- package/dist/tailwind-preset.js +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -848,4 +848,75 @@ declare function AppShell({ sidebar, topBar, children, className }: AppShellProp
|
|
|
848
848
|
/** Alias of AppShell — reads better in app router files. */
|
|
849
849
|
declare const AuthenticatedLayout: typeof AppShell;
|
|
850
850
|
|
|
851
|
-
|
|
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 React$1.HTMLAttributes<HTMLDivElement> {
|
|
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
|
+
* Drawer content rendered below the card body — the org surface's accordion
|
|
890
|
+
* drawer in the integration prototype (the per-product grants roster, inline
|
|
891
|
+
* requests, "+ Grant to a product"). The caller owns expand/collapse: pass
|
|
892
|
+
* children only while open. Omitted = the flat card, unchanged.
|
|
893
|
+
*/
|
|
894
|
+
children?: React$1.ReactNode;
|
|
895
|
+
}
|
|
896
|
+
declare const ConnectionCard: React$1.ForwardRefExoticComponent<ConnectionCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
897
|
+
|
|
898
|
+
type RequestSurface = 'org' | 'product';
|
|
899
|
+
type RequestState = 'available' | 'pending' | 'granted';
|
|
900
|
+
interface RequestRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
901
|
+
surface: RequestSurface;
|
|
902
|
+
/** Provider display name, e.g. "Google Ads". */
|
|
903
|
+
name: string;
|
|
904
|
+
state: RequestState;
|
|
905
|
+
/** Provider mark; falls back to a monogram box derived from `name`. */
|
|
906
|
+
glyph?: React$1.ReactNode;
|
|
907
|
+
/** Secondary line — requester + resource (org), or availability (product). */
|
|
908
|
+
subtitle?: React$1.ReactNode;
|
|
909
|
+
/** The granted resource label; renders a <SegmentChip> when `state` is `granted`. */
|
|
910
|
+
grantedResource?: React$1.ReactNode;
|
|
911
|
+
/** Approve an org-side request. */
|
|
912
|
+
onApprove?: () => void;
|
|
913
|
+
/** Deny an org-side request. */
|
|
914
|
+
onDeny?: () => void;
|
|
915
|
+
/** Request an available connection from the product side. */
|
|
916
|
+
onRequest?: () => void;
|
|
917
|
+
/** Override the trailing controls entirely. */
|
|
918
|
+
action?: React$1.ReactNode;
|
|
919
|
+
}
|
|
920
|
+
declare const RequestRow: React$1.ForwardRefExoticComponent<RequestRowProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
921
|
+
|
|
922
|
+
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,163 @@ 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-text-teal/40 bg-bg-teal-subtle text-text-teal",
|
|
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, children, 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
|
+
children && /* @__PURE__ */ jsx62("div", { "data-slot": "drawer", className: "border-t border-border-subtle", children })
|
|
3168
|
+
] });
|
|
3169
|
+
}
|
|
3170
|
+
);
|
|
3171
|
+
ConnectionCard.displayName = "ConnectionCard";
|
|
3172
|
+
|
|
3173
|
+
// src/components/request-row.tsx
|
|
3174
|
+
import * as React53 from "react";
|
|
3175
|
+
import { Fragment as Fragment4, jsx as jsx63, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
3176
|
+
function monogram2(name) {
|
|
3177
|
+
return name.replace(/[^a-zA-Z0-9 ]/g, " ").split(/\s+/).filter(Boolean).slice(0, 2).map((w) => w[0].toUpperCase()).join("");
|
|
3178
|
+
}
|
|
3179
|
+
var RequestRow = React53.forwardRef(
|
|
3180
|
+
({ surface, name, state: state2, glyph, subtitle, grantedResource, onApprove, onDeny, onRequest, action, className, ...props }, ref) => {
|
|
3181
|
+
let controls = action;
|
|
3182
|
+
if (controls === void 0) {
|
|
3183
|
+
if (surface === "org" && state2 === "pending") {
|
|
3184
|
+
controls = /* @__PURE__ */ jsxs33(Fragment4, { children: [
|
|
3185
|
+
/* @__PURE__ */ jsx63(Button, { variant: "outline", size: "sm", onClick: onDeny, children: "Deny" }),
|
|
3186
|
+
/* @__PURE__ */ jsx63(Button, { size: "sm", onClick: onApprove, children: "Approve" })
|
|
3187
|
+
] });
|
|
3188
|
+
} else if (state2 === "available") {
|
|
3189
|
+
controls = /* @__PURE__ */ jsx63(Button, { size: "sm", onClick: onRequest, children: "Request" });
|
|
3190
|
+
} else if (state2 === "pending") {
|
|
3191
|
+
controls = /* @__PURE__ */ jsxs33(Badge, { variant: "secondary", className: "gap-1.5", children: [
|
|
3192
|
+
/* @__PURE__ */ jsx63(StatusDot, { status: "neutral", size: "sm" }),
|
|
3193
|
+
"Pending"
|
|
3194
|
+
] });
|
|
3195
|
+
} else if (state2 === "granted") {
|
|
3196
|
+
controls = /* @__PURE__ */ jsx63(SegmentChip, { kind: "granted", resource: grantedResource ?? "a segment" });
|
|
3197
|
+
}
|
|
3198
|
+
}
|
|
3199
|
+
return /* @__PURE__ */ jsxs33(
|
|
3200
|
+
"div",
|
|
3201
|
+
{
|
|
3202
|
+
ref,
|
|
3203
|
+
className: cn(
|
|
3204
|
+
"flex items-center gap-3 border-b border-border-subtle px-4 py-3 last:border-b-0",
|
|
3205
|
+
className
|
|
3206
|
+
),
|
|
3207
|
+
...props,
|
|
3208
|
+
children: [
|
|
3209
|
+
/* @__PURE__ */ jsx63(
|
|
3210
|
+
"div",
|
|
3211
|
+
{
|
|
3212
|
+
"aria-hidden": "true",
|
|
3213
|
+
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",
|
|
3214
|
+
children: glyph ?? monogram2(name)
|
|
3215
|
+
}
|
|
3216
|
+
),
|
|
3217
|
+
/* @__PURE__ */ jsxs33("div", { className: "min-w-0", children: [
|
|
3218
|
+
/* @__PURE__ */ jsx63("p", { className: "truncate text-sm font-semibold text-text-primary", children: name }),
|
|
3219
|
+
subtitle && /* @__PURE__ */ jsx63("p", { className: "truncate text-xs text-text-tertiary", children: subtitle })
|
|
3220
|
+
] }),
|
|
3221
|
+
/* @__PURE__ */ jsx63("div", { className: "ml-auto flex shrink-0 items-center gap-2", children: controls })
|
|
3222
|
+
]
|
|
3223
|
+
}
|
|
3224
|
+
);
|
|
3225
|
+
}
|
|
3226
|
+
);
|
|
3227
|
+
RequestRow.displayName = "RequestRow";
|
|
3071
3228
|
export {
|
|
3072
3229
|
Accordion,
|
|
3073
3230
|
AccordionContent,
|
|
@@ -3129,6 +3286,7 @@ export {
|
|
|
3129
3286
|
CommandSeparator,
|
|
3130
3287
|
CommandShortcut,
|
|
3131
3288
|
ConfirmDialog,
|
|
3289
|
+
ConnectionCard,
|
|
3132
3290
|
ContextMenu,
|
|
3133
3291
|
ContextMenuCheckboxItem,
|
|
3134
3292
|
ContextMenuContent,
|
|
@@ -3244,9 +3402,11 @@ export {
|
|
|
3244
3402
|
Progress,
|
|
3245
3403
|
RadioGroup2 as RadioGroup,
|
|
3246
3404
|
RadioGroupItem,
|
|
3405
|
+
RequestRow,
|
|
3247
3406
|
ScrollArea,
|
|
3248
3407
|
ScrollBar,
|
|
3249
3408
|
SectionIntro,
|
|
3409
|
+
SegmentChip,
|
|
3250
3410
|
Select,
|
|
3251
3411
|
Separator4 as Separator,
|
|
3252
3412
|
Sheet,
|
|
@@ -3295,6 +3455,7 @@ export {
|
|
|
3295
3455
|
cn,
|
|
3296
3456
|
isKnownExtensionIcon,
|
|
3297
3457
|
navigationMenuTriggerStyle,
|
|
3458
|
+
segmentChipVariants,
|
|
3298
3459
|
statusDotVariants,
|
|
3299
3460
|
toast,
|
|
3300
3461
|
toggleVariants,
|
package/dist/styles.css
CHANGED
|
@@ -77,6 +77,9 @@
|
|
|
77
77
|
--color-bg-teal-subtle: #091918;
|
|
78
78
|
--color-bg-violet-subtle: #12091a;
|
|
79
79
|
--color-bg-rose-subtle: #1a090b;
|
|
80
|
+
/* Vendored from design-system semantic `text.teal` (teal.300 dark / teal.600 light) —
|
|
81
|
+
the themed counterpart of the raw teal-* scale; used by SegmentChip `granted`. */
|
|
82
|
+
--color-text-teal: #70eada;
|
|
80
83
|
--color-text-primary: #eeeff0;
|
|
81
84
|
--color-text-secondary: #a5a9b5;
|
|
82
85
|
--color-text-tertiary: #8a93a8;
|
|
@@ -136,6 +139,7 @@
|
|
|
136
139
|
--color-bg-teal-subtle: #ebf3f2;
|
|
137
140
|
--color-bg-violet-subtle: #efebf3;
|
|
138
141
|
--color-bg-rose-subtle: #f4ebed;
|
|
142
|
+
--color-text-teal: #107469;
|
|
139
143
|
--color-text-primary: #0e1015;
|
|
140
144
|
--color-text-secondary: #393d4b;
|
|
141
145
|
--color-text-tertiary: #535a6e;
|
package/dist/tailwind-preset.js
CHANGED
|
@@ -372,6 +372,7 @@ var lesslyPreset = {
|
|
|
372
372
|
"bg-danger": "var(--color-bg-danger)",
|
|
373
373
|
"bg-danger-subtle": "var(--color-bg-danger-subtle)",
|
|
374
374
|
"bg-teal-subtle": "var(--color-bg-teal-subtle)",
|
|
375
|
+
"text-teal": "var(--color-text-teal)",
|
|
375
376
|
"bg-violet-subtle": "var(--color-bg-violet-subtle)",
|
|
376
377
|
"bg-rose-subtle": "var(--color-bg-rose-subtle)",
|
|
377
378
|
"text-primary": "var(--color-text-primary)",
|