@assure-one/design-system 1.42.0 → 1.43.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/{brand-scope-B7w3-y9E.d.ts → brand-scope-BOKu4iOc.d.ts} +1 -1
- package/dist/{chunk-YMRSFVW7.js → chunk-5AL4W32Z.js} +335 -225
- package/dist/chunk-5AL4W32Z.js.map +1 -0
- package/dist/{chunk-H53VF62B.js → chunk-L5IQK3GV.js} +108 -50
- package/dist/chunk-L5IQK3GV.js.map +1 -0
- package/dist/{chunk-AF3QYJ24.js → chunk-TBDTXAFH.js} +6 -4
- package/dist/chunk-TBDTXAFH.js.map +1 -0
- package/dist/{chunk-M2HMZ2RW.js → chunk-VK6SW34V.js} +36 -14
- package/dist/chunk-VK6SW34V.js.map +1 -0
- package/dist/css/components.css +1 -1
- package/dist/{data-table-view-BN3GgNdp.d.ts → data-table-view-BWhKeUiw.d.ts} +2 -2
- package/dist/{design-system-provider-CrBRFQjR.d.ts → design-system-provider-Coe2S3Lh.d.ts} +1 -1
- package/dist/icons/index.d.ts +5 -1
- package/dist/icons/index.js +1 -1
- package/dist/index.d.ts +246 -53
- package/dist/index.js +530 -236
- package/dist/index.js.map +1 -1
- package/dist/legacy/index.d.ts +3 -3
- package/dist/legacy/index.js +3 -3
- package/dist/next/index.d.ts +2 -2
- package/dist/styles.css +1 -1
- package/dist/suite/index.d.ts +3 -3
- package/dist/suite/index.js +3 -3
- package/dist/{types-aBQCboFH.d.ts → types-DlqmlVyZ.d.ts} +11 -1
- package/docs/components.md +6 -3
- package/docs/components.registry.json +84 -17
- package/package.json +1 -1
- package/dist/chunk-AF3QYJ24.js.map +0 -1
- package/dist/chunk-H53VF62B.js.map +0 -1
- package/dist/chunk-M2HMZ2RW.js.map +0 -1
- package/dist/chunk-YMRSFVW7.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { stateAttributes, slot, chipAnatomy, Pressable, CONTROL_GAP_CLASSES, EN_MESSAGES, microInteractions, listItemClasses, groupHeadingClasses, useDsMessages, withPortalContainer, Backdrop, sheetAnatomy, deprecate, OverlaySurface, DismissButton, DEFAULT_OVERLAY_MESSAGES, DISMISS_GLYPH_CLASSES, OverlayBody, OverlayTitle, OverlayDescription, Input, Textarea, Select, FileUpload, FileChip, Button, Checkbox, Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, sidebarAnatomy, Slot, Avatar, DropdownMenu, DropdownMenuTrigger, sidebarBrandSwitcherAnatomy, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem, buttonBase, CONTROL_SIZE_CLASSES, useFieldControl, useId as useId$1, useControllableState,
|
|
2
|
-
import { cn, XIcon, CheckIcon, EyeIcon, DownloadIcon, PhoneIcon, MailIcon, GlobeIcon, HomeIcon, ChevronLeftIcon, ChevronRightIcon, ReceiptIcon, RotateCcwIcon, CreditCardIcon, LockIcon, FileTextIcon, PlayIcon, InfoIcon, ClockIcon, PenSignIcon, TrashIcon, PlusIcon, CheckCircleSolidIcon, HelpCircleIcon, MinusIcon, PanelLeftCloseIcon, PanelLeftIcon, ChevronDownIcon } from './chunk-
|
|
1
|
+
import { stateAttributes, slot, chipAnatomy, Pressable, CONTROL_GAP_CLASSES, EN_MESSAGES, microInteractions, listItemClasses, groupHeadingClasses, useDsMessages, withPortalContainer, Backdrop, sheetAnatomy, deprecate, OverlaySurface, DismissButton, DEFAULT_OVERLAY_MESSAGES, DISMISS_GLYPH_CLASSES, OverlayBody, OverlayTitle, OverlayDescription, Input, Textarea, Select, FileUpload, FileChip, Button, Checkbox, Tooltip, TooltipTrigger, TooltipContent, useMergedRefs, TooltipProvider, sidebarAnatomy, Slot, Avatar, DropdownMenu, DropdownMenuTrigger, sidebarBrandSwitcherAnatomy, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem, buttonBase, CONTROL_SIZE_CLASSES, useFieldControl, useId as useId$1, useControllableState, Popover, PopoverAnchor, comboboxAnatomy, Spinner, IconButton, PopoverContent, LIST_SEPARATOR, listItemAttributes, optionElementId, FormBridge, useLinkComponent, useImageComponent, OverlayHeader, OverlayFooter, LIST_ITEM_INDICATOR_WELL } from './chunk-VK6SW34V.js';
|
|
2
|
+
import { cn, XIcon, CheckIcon, EyeIcon, DownloadIcon, PhoneIcon, MailIcon, GlobeIcon, HomeIcon, ChevronLeftIcon, ChevronRightIcon, ReceiptIcon, RotateCcwIcon, CreditCardIcon, LockIcon, FileTextIcon, PlayIcon, InfoIcon, ClockIcon, PenSignIcon, TrashIcon, PlusIcon, CheckCircleSolidIcon, HelpCircleIcon, MinusIcon, PanelLeftCloseIcon, PanelLeftIcon, ChevronsLeftIcon, ChevronsRightIcon, ChevronDownIcon } from './chunk-TBDTXAFH.js';
|
|
3
3
|
import { parseHexColor, contrastRatio, WHITE, formatHexColor, darkenUntilContrast } from './chunk-EUHGZA6Q.js';
|
|
4
4
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
5
5
|
import * as React6 from 'react';
|
|
@@ -194,7 +194,7 @@ var Chip = forwardRef(function Chip2({
|
|
|
194
194
|
onClick: onRemove,
|
|
195
195
|
className: cn(
|
|
196
196
|
"ds:inline-flex ds:size-6 ds:shrink-0 ds:items-center ds:justify-center ds:rounded-full ds:bg-transparent ds:p-0 ds:text-inherit",
|
|
197
|
-
"ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:motion-reduce:transition-none",
|
|
197
|
+
"ds:transition-colors ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none",
|
|
198
198
|
REMOVE_HOVER[style.intent]
|
|
199
199
|
),
|
|
200
200
|
children: /* @__PURE__ */ jsx(XIcon, { "aria-hidden": "true" })
|
|
@@ -890,7 +890,7 @@ function Combobox(props) {
|
|
|
890
890
|
ChevronDownIcon,
|
|
891
891
|
{
|
|
892
892
|
className: cn(
|
|
893
|
-
"ds:transition-transform ds:duration-[var(--motion-duration-feedback)] ds:motion-reduce:transition-none",
|
|
893
|
+
"ds:transition-transform ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none",
|
|
894
894
|
open && "ds:rotate-180"
|
|
895
895
|
)
|
|
896
896
|
}
|
|
@@ -1825,6 +1825,8 @@ var ProposalPackageCard = forwardRef(
|
|
|
1825
1825
|
"data-selected": selected || void 0,
|
|
1826
1826
|
className: cn(
|
|
1827
1827
|
"ds:border-rule ds:bg-surface ds:relative ds:flex ds:flex-col ds:rounded-[14px] ds:border ds:p-4",
|
|
1828
|
+
// Selecting a package eases its accent edge in, as ProposalAddOn does.
|
|
1829
|
+
"ds:transition-[border-color,box-shadow] ds:duration-[var(--motion-duration-feedback)] ds:ease-[var(--motion-ease-enter)] ds:motion-reduce:transition-none",
|
|
1828
1830
|
"ds:data-[selected]:border-[var(--av-accent,var(--color-accent))] ds:data-[selected]:shadow-[0_0_0_1px_var(--av-accent,var(--color-accent))]",
|
|
1829
1831
|
className
|
|
1830
1832
|
),
|
|
@@ -3309,6 +3311,7 @@ var Sidebar = React6.forwardRef(function Sidebar2({
|
|
|
3309
3311
|
...props
|
|
3310
3312
|
}, ref) {
|
|
3311
3313
|
const isFloating = variant === "floating";
|
|
3314
|
+
const isFlush = variant === "flush";
|
|
3312
3315
|
const ctx = React6.useContext(SidebarContext);
|
|
3313
3316
|
const state = collapsible && ctx ? ctx.state : "expanded";
|
|
3314
3317
|
const peekLockCount = collapsible && ctx && peekEnabled ? ctx.peekLockCount : 0;
|
|
@@ -3326,6 +3329,29 @@ var Sidebar = React6.forwardRef(function Sidebar2({
|
|
|
3326
3329
|
}
|
|
3327
3330
|
}, []);
|
|
3328
3331
|
React6.useEffect(() => () => clearTimers(), [clearTimers]);
|
|
3332
|
+
const internalRef = React6.useRef(null);
|
|
3333
|
+
const mergedRef = useMergedRefs(ref, internalRef);
|
|
3334
|
+
React6.useEffect(() => {
|
|
3335
|
+
if (!isFlush) return;
|
|
3336
|
+
const el = internalRef.current;
|
|
3337
|
+
if (!el) return;
|
|
3338
|
+
let timer;
|
|
3339
|
+
const onScroll = () => {
|
|
3340
|
+
el.dataset.scrolling = "true";
|
|
3341
|
+
if (el.scrollTop > 0) el.dataset.scrolled = "true";
|
|
3342
|
+
else delete el.dataset.scrolled;
|
|
3343
|
+
window.clearTimeout(timer);
|
|
3344
|
+
timer = window.setTimeout(() => {
|
|
3345
|
+
delete el.dataset.scrolling;
|
|
3346
|
+
}, 800);
|
|
3347
|
+
};
|
|
3348
|
+
if (el.scrollTop > 0) el.dataset.scrolled = "true";
|
|
3349
|
+
el.addEventListener("scroll", onScroll, { passive: true });
|
|
3350
|
+
return () => {
|
|
3351
|
+
el.removeEventListener("scroll", onScroll);
|
|
3352
|
+
window.clearTimeout(timer);
|
|
3353
|
+
};
|
|
3354
|
+
}, [isFlush]);
|
|
3329
3355
|
React6.useEffect(() => {
|
|
3330
3356
|
if (state === "expanded") {
|
|
3331
3357
|
clearTimers();
|
|
@@ -3356,7 +3382,10 @@ var Sidebar = React6.forwardRef(function Sidebar2({
|
|
|
3356
3382
|
};
|
|
3357
3383
|
const overlay = state === "rail" && (peek || peekLockCount > 0);
|
|
3358
3384
|
const labelsHidden = state === "rail" && !peek && peekLockCount === 0;
|
|
3359
|
-
const
|
|
3385
|
+
const railWidth = "var(--shell-sidebar-w-rail, var(--ds-layout-shell-sidebar-rail-width))";
|
|
3386
|
+
const fullWidth = "var(--shell-sidebar-w, var(--ds-layout-shell-sidebar-width))";
|
|
3387
|
+
const effectiveWidth = labelsHidden ? railWidth : fullWidth;
|
|
3388
|
+
const overlayMarginRight = isFloating ? `calc(0.625rem + ${railWidth} - ${fullWidth})` : `calc(${railWidth} - ${fullWidth})`;
|
|
3360
3389
|
return (
|
|
3361
3390
|
// Hover-peek is *enhancement only*: the canonical way to toggle the
|
|
3362
3391
|
// sidebar is <SidebarTrigger> (button) or the Mod+\ shortcut, both
|
|
@@ -3367,7 +3396,7 @@ var Sidebar = React6.forwardRef(function Sidebar2({
|
|
|
3367
3396
|
/* @__PURE__ */ jsx(
|
|
3368
3397
|
"aside",
|
|
3369
3398
|
{
|
|
3370
|
-
ref,
|
|
3399
|
+
ref: mergedRef,
|
|
3371
3400
|
"data-state": state,
|
|
3372
3401
|
"data-peek": peek ? "true" : void 0,
|
|
3373
3402
|
"data-overlay": overlay ? "true" : void 0,
|
|
@@ -3377,7 +3406,11 @@ var Sidebar = React6.forwardRef(function Sidebar2({
|
|
|
3377
3406
|
...slot(sidebarAnatomy, "root"),
|
|
3378
3407
|
onMouseEnter: handleEnter,
|
|
3379
3408
|
onMouseLeave: handleLeave,
|
|
3380
|
-
style: {
|
|
3409
|
+
style: {
|
|
3410
|
+
width: effectiveWidth,
|
|
3411
|
+
...overlay ? { marginRight: overlayMarginRight } : null,
|
|
3412
|
+
...style
|
|
3413
|
+
},
|
|
3381
3414
|
className: cn(
|
|
3382
3415
|
"ds:group/sidebar group/sidebar ds:scrollbar-thin ds:flex ds:shrink-0 ds:flex-col ds:overflow-y-auto ds:px-3 ds:pt-4 ds:pb-4",
|
|
3383
3416
|
// Classic: full-height column flush to the left edge with a right
|
|
@@ -3392,16 +3425,28 @@ var Sidebar = React6.forwardRef(function Sidebar2({
|
|
|
3392
3425
|
// movement) but well short of `--duration-slow` (which feels
|
|
3393
3426
|
// sluggish). `will-change` hints the compositor so the column
|
|
3394
3427
|
// doesn't repaint every frame mid-transition.
|
|
3395
|
-
"ds:transition-[width,box-shadow] ds:duration-[var(--motion-duration-spatial)] ds:ease-[var(--motion-ease-move)] ds:motion-reduce:transition-none",
|
|
3428
|
+
"ds:transition-[width,margin-right,box-shadow] ds:duration-[var(--motion-duration-spatial)] ds:ease-[var(--motion-ease-move)] ds:motion-reduce:transition-none",
|
|
3396
3429
|
"ds:[will-change:width]",
|
|
3397
3430
|
// Overlay (hover-peek OR programmatic peek-lock): float above the
|
|
3398
|
-
// canvas without reflowing layout
|
|
3399
|
-
//
|
|
3400
|
-
|
|
3431
|
+
// canvas without reflowing layout (the negative margin above keeps
|
|
3432
|
+
// the rail's footprint). Driven by `data-overlay` so a single rule
|
|
3433
|
+
// handles both transient sources.
|
|
3434
|
+
"ds:data-[overlay=true]:relative",
|
|
3401
3435
|
"ds:data-[overlay=true]:z-[var(--z-overlay)] ds:data-[overlay=true]:shadow-pop",
|
|
3402
3436
|
// Padding is held constant across states so icons keep their
|
|
3403
3437
|
// horizontal anchor when the column widens — peek expands the
|
|
3404
3438
|
// labels rightward rather than shifting the icons leftward.
|
|
3439
|
+
isFlush && // Overlay scrollbar: hidden at rest, revealed while `data-scrolling`
|
|
3440
|
+
// is set by the effect above and faded back out ~800ms after the
|
|
3441
|
+
// last scroll event. `scrollbar-color` is the standard property
|
|
3442
|
+
// modern engines read; the `::-webkit-scrollbar-thumb` rule is the
|
|
3443
|
+
// older-Safari fallback, kept in lockstep with it rather than
|
|
3444
|
+
// relying on either alone.
|
|
3445
|
+
cn(
|
|
3446
|
+
"ds:[scrollbar-color:transparent_transparent] ds:data-[scrolling=true]:[scrollbar-color:var(--color-rule-strong)_transparent]",
|
|
3447
|
+
"ds:[&::-webkit-scrollbar-thumb]:bg-transparent ds:data-[scrolling=true]:[&::-webkit-scrollbar-thumb]:bg-[var(--color-rule-strong)]",
|
|
3448
|
+
"ds:[&::-webkit-scrollbar-thumb]:transition-colors ds:[&::-webkit-scrollbar-thumb]:duration-[var(--duration-normal)] ds:motion-reduce:[&::-webkit-scrollbar-thumb]:transition-none"
|
|
3449
|
+
),
|
|
3405
3450
|
className
|
|
3406
3451
|
),
|
|
3407
3452
|
...props,
|
|
@@ -3477,7 +3522,7 @@ var SidebarPinButton = React6.forwardRef(
|
|
|
3477
3522
|
{
|
|
3478
3523
|
ref,
|
|
3479
3524
|
type: "button",
|
|
3480
|
-
"aria-label": isPinned ? unpinLabel ?? messages.
|
|
3525
|
+
"aria-label": isPinned ? unpinLabel ?? messages.collapse : pinLabel ?? messages.expand,
|
|
3481
3526
|
"aria-pressed": isPinned,
|
|
3482
3527
|
onClick: (e) => {
|
|
3483
3528
|
onClick?.(e);
|
|
@@ -3497,44 +3542,12 @@ var SidebarPinButton = React6.forwardRef(
|
|
|
3497
3542
|
className
|
|
3498
3543
|
),
|
|
3499
3544
|
...props,
|
|
3500
|
-
children: /* @__PURE__ */ jsx(
|
|
3545
|
+
children: isPinned ? /* @__PURE__ */ jsx(ChevronsLeftIcon, { size: 16 }) : /* @__PURE__ */ jsx(ChevronsRightIcon, { size: 16 })
|
|
3501
3546
|
}
|
|
3502
3547
|
);
|
|
3503
3548
|
}
|
|
3504
3549
|
);
|
|
3505
3550
|
SidebarPinButton.displayName = "SidebarPinButton";
|
|
3506
|
-
function PinGlyph({
|
|
3507
|
-
size = 16,
|
|
3508
|
-
filled = false,
|
|
3509
|
-
className
|
|
3510
|
-
}) {
|
|
3511
|
-
return /* @__PURE__ */ jsxs(
|
|
3512
|
-
"svg",
|
|
3513
|
-
{
|
|
3514
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3515
|
-
width: size,
|
|
3516
|
-
height: size,
|
|
3517
|
-
viewBox: "0 0 24 24",
|
|
3518
|
-
fill: "none",
|
|
3519
|
-
stroke: "currentColor",
|
|
3520
|
-
strokeWidth: 2,
|
|
3521
|
-
strokeLinecap: "round",
|
|
3522
|
-
strokeLinejoin: "round",
|
|
3523
|
-
"aria-hidden": "true",
|
|
3524
|
-
className,
|
|
3525
|
-
children: [
|
|
3526
|
-
/* @__PURE__ */ jsx("path", { d: "M12 17v5" }),
|
|
3527
|
-
/* @__PURE__ */ jsx(
|
|
3528
|
-
"path",
|
|
3529
|
-
{
|
|
3530
|
-
d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",
|
|
3531
|
-
fill: filled ? "currentColor" : "none"
|
|
3532
|
-
}
|
|
3533
|
-
)
|
|
3534
|
-
]
|
|
3535
|
-
}
|
|
3536
|
-
);
|
|
3537
|
-
}
|
|
3538
3551
|
var SidebarBrand = React6.forwardRef(
|
|
3539
3552
|
function SidebarBrand2({ className, ...props }, ref) {
|
|
3540
3553
|
return /* @__PURE__ */ jsx(
|
|
@@ -3544,6 +3557,13 @@ var SidebarBrand = React6.forwardRef(
|
|
|
3544
3557
|
...slot(sidebarAnatomy, "brand"),
|
|
3545
3558
|
className: cn(
|
|
3546
3559
|
"ds:flex ds:min-w-0 ds:items-center ds:gap-2 ds:px-2.5 ds:pt-1 ds:pb-4",
|
|
3560
|
+
// Flush: pinned to the top of the scrolling column so the nav rows
|
|
3561
|
+
// pass behind it instead of over it. `data-scrolled` is only ever
|
|
3562
|
+
// set while flush (see <Sidebar>), so the hairline needs no variant
|
|
3563
|
+
// check of its own — one derived attribute, one rule.
|
|
3564
|
+
"ds:group-data-[variant=flush]/sidebar:bg-bg-2 ds:group-data-[variant=flush]/sidebar:sticky ds:group-data-[variant=flush]/sidebar:top-0 ds:group-data-[variant=flush]/sidebar:z-[var(--z-sticky)]",
|
|
3565
|
+
"ds:group-data-[variant=flush]/sidebar:border-b ds:group-data-[variant=flush]/sidebar:border-transparent ds:group-data-[variant=flush]/sidebar:transition-colors ds:group-data-[variant=flush]/sidebar:duration-[var(--duration-normal)] ds:group-data-[variant=flush]/sidebar:ease-[var(--ease-out-quart)] ds:group-data-[variant=flush]/sidebar:motion-reduce:transition-none",
|
|
3566
|
+
"ds:group-data-[scrolled=true]/sidebar:border-rule",
|
|
3547
3567
|
className
|
|
3548
3568
|
),
|
|
3549
3569
|
...props
|
|
@@ -3631,7 +3651,11 @@ var SidebarSection = React6.forwardRef(
|
|
|
3631
3651
|
...slot(sidebarAnatomy, "section-label"),
|
|
3632
3652
|
className: cn(
|
|
3633
3653
|
"ds:font-mono ds:text-[11px] ds:tracking-[0.14em] ds:uppercase",
|
|
3634
|
-
tone === "muted" ? "ds:text-fg-3" : "ds:text-brand"
|
|
3654
|
+
tone === "muted" ? "ds:text-fg-3" : "ds:text-brand",
|
|
3655
|
+
// Flush: the `overline` type role (size/leading/tracking/
|
|
3656
|
+
// weight together) at a flat fg-4 — grouping reads as
|
|
3657
|
+
// quiet structural chrome, not a tone-coded eyebrow.
|
|
3658
|
+
"ds:group-data-[variant=flush]/sidebar:font-sans ds:group-data-[variant=flush]/sidebar:text-overline ds:group-data-[variant=flush]/sidebar:text-fg-4"
|
|
3635
3659
|
),
|
|
3636
3660
|
children: label
|
|
3637
3661
|
}
|
|
@@ -3681,6 +3705,13 @@ var SidebarLink = React6.forwardRef(
|
|
|
3681
3705
|
"ds:hover:bg-bg-3 ds:hover:text-fg",
|
|
3682
3706
|
"ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:focus-visible:outline-none",
|
|
3683
3707
|
"ds:data-[active=true]:bg-brand-bg ds:data-[active=true]:text-brand ds:data-[active=true]:font-medium",
|
|
3708
|
+
// Flush: icons read fg-3 at rest and lift to fg on hover/active —
|
|
3709
|
+
// the row's own bg-brand-bg tint (above) and the 2px edge
|
|
3710
|
+
// indicator (below) already carry "active", so the icon doesn't
|
|
3711
|
+
// also need brand-colored ink. Placed before the rail rule below
|
|
3712
|
+
// so a collapsed rail keeps winning on the combined flush+rail
|
|
3713
|
+
// case (equal specificity, source order decides).
|
|
3714
|
+
"ds:group-data-[variant=flush]/sidebar:[&_svg]:text-fg-3 ds:group-data-[variant=flush]/sidebar:hover:[&_svg]:text-fg ds:group-data-[variant=flush]/sidebar:data-[active=true]:[&_svg]:text-fg",
|
|
3684
3715
|
// In rail, the icon itself carries the active state rather
|
|
3685
3716
|
// than just the rule bar — color is more legible than a 2px
|
|
3686
3717
|
// vertical mark at the column's left edge when labels are
|
|
@@ -3704,6 +3735,13 @@ var SidebarLink = React6.forwardRef(
|
|
|
3704
3735
|
// a full pill highlight for active instead of the left rail bar.
|
|
3705
3736
|
"ds:group-data-[variant=floating]/sidebar:gap-3 ds:group-data-[variant=floating]/sidebar:rounded-lg ds:group-data-[variant=floating]/sidebar:py-2",
|
|
3706
3737
|
"ds:group-data-[variant=floating]/sidebar:data-[active=true]:before:hidden",
|
|
3738
|
+
// Flush row anatomy: 32px rows on the control radius (this already
|
|
3739
|
+
// matches the base py-1.5 at the body-sm role's leading — only the
|
|
3740
|
+
// radius and icon geometry actually move), 16px icons at full
|
|
3741
|
+
// opacity (the fg-3→fg color lift above already carries the
|
|
3742
|
+
// dimming, so the base opacity-85 would double it up), and labels
|
|
3743
|
+
// on the body-sm role instead of a hardcoded pixel size.
|
|
3744
|
+
"ds:group-data-[variant=flush]/sidebar:rounded-control ds:group-data-[variant=flush]/sidebar:[&_svg]:size-4 ds:group-data-[variant=flush]/sidebar:[&_svg]:opacity-100 ds:group-data-[variant=flush]/sidebar:text-body-sm",
|
|
3707
3745
|
className
|
|
3708
3746
|
),
|
|
3709
3747
|
...props,
|
|
@@ -3871,6 +3909,8 @@ var SidebarLinkGroup = React6.forwardRef(
|
|
|
3871
3909
|
"ds:hover:bg-bg-3 ds:hover:text-fg",
|
|
3872
3910
|
"ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:focus-visible:outline-none",
|
|
3873
3911
|
"ds:data-[active=true]:bg-brand-bg ds:data-[active=true]:text-brand ds:data-[active=true]:font-medium",
|
|
3912
|
+
// Flush — match SidebarLink: icon fg-3 lifting to fg on hover/active.
|
|
3913
|
+
"ds:group-data-[variant=flush]/sidebar:[&_svg]:text-fg-3 ds:group-data-[variant=flush]/sidebar:hover:[&_svg]:text-fg ds:group-data-[variant=flush]/sidebar:data-[active=true]:[&_svg]:text-fg",
|
|
3874
3914
|
// In rail, color carries active state since the chevron is hidden.
|
|
3875
3915
|
"ds:group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:text-brand ds:group-data-[labels=hide]/sidebar:data-[active=true]:[&_svg]:opacity-100",
|
|
3876
3916
|
// Active rail mark — anchored to body row's left edge.
|
|
@@ -3882,6 +3922,9 @@ var SidebarLinkGroup = React6.forwardRef(
|
|
|
3882
3922
|
// Floating variant — match SidebarLink: taller hit area, pill active.
|
|
3883
3923
|
"ds:group-data-[variant=floating]/sidebar:gap-3 ds:group-data-[variant=floating]/sidebar:rounded-lg ds:group-data-[variant=floating]/sidebar:py-2",
|
|
3884
3924
|
"ds:group-data-[variant=floating]/sidebar:data-[active=true]:before:hidden",
|
|
3925
|
+
// Flush — match SidebarLink: 32px row on the control radius, 16px
|
|
3926
|
+
// full-opacity icons, body-sm label instead of a hardcoded pixel size.
|
|
3927
|
+
"ds:group-data-[variant=flush]/sidebar:rounded-control ds:group-data-[variant=flush]/sidebar:[&_svg]:size-4 ds:group-data-[variant=flush]/sidebar:[&_svg]:opacity-100 ds:group-data-[variant=flush]/sidebar:text-body-sm",
|
|
3885
3928
|
classNames?.link
|
|
3886
3929
|
);
|
|
3887
3930
|
const labelSpan = /* @__PURE__ */ jsx(
|
|
@@ -4107,7 +4150,17 @@ var SidebarBrandSwitcher = React6.forwardRef(
|
|
|
4107
4150
|
{
|
|
4108
4151
|
ref,
|
|
4109
4152
|
...slot(sidebarBrandSwitcherAnatomy, "root"),
|
|
4110
|
-
className: cn(
|
|
4153
|
+
className: cn(
|
|
4154
|
+
"ds:flex ds:min-w-0 ds:items-center ds:gap-2 ds:px-2.5 ds:pt-1 ds:pb-4",
|
|
4155
|
+
// Flush — mirrors <SidebarBrand>: pinned to the top of the
|
|
4156
|
+
// scrolling column, with a hairline that appears once the list
|
|
4157
|
+
// has scrolled. `data-scrolled` is only ever set while flush, so
|
|
4158
|
+
// the hairline rule needs no variant check of its own.
|
|
4159
|
+
"ds:group-data-[variant=flush]/sidebar:bg-bg-2 ds:group-data-[variant=flush]/sidebar:sticky ds:group-data-[variant=flush]/sidebar:top-0 ds:group-data-[variant=flush]/sidebar:z-[var(--z-sticky)]",
|
|
4160
|
+
"ds:group-data-[variant=flush]/sidebar:border-b ds:group-data-[variant=flush]/sidebar:border-transparent ds:group-data-[variant=flush]/sidebar:transition-colors ds:group-data-[variant=flush]/sidebar:duration-[var(--duration-normal)] ds:group-data-[variant=flush]/sidebar:ease-[var(--ease-out-quart)] ds:group-data-[variant=flush]/sidebar:motion-reduce:transition-none",
|
|
4161
|
+
"ds:group-data-[scrolled=true]/sidebar:border-rule",
|
|
4162
|
+
className
|
|
4163
|
+
),
|
|
4111
4164
|
children: [
|
|
4112
4165
|
/* @__PURE__ */ jsxs(DropdownMenu, { open, onOpenChange: setOpen, children: [
|
|
4113
4166
|
/* @__PURE__ */ jsxs(
|
|
@@ -4122,7 +4175,11 @@ var SidebarBrandSwitcher = React6.forwardRef(
|
|
|
4122
4175
|
// children — same hover affordance, no glyph drift.
|
|
4123
4176
|
"ds:group/brand-trigger ds:-ml-2 ds:flex ds:min-w-0 ds:flex-1 ds:items-center ds:gap-2 ds:rounded-md ds:py-1.5 ds:pr-1.5 ds:pl-2",
|
|
4124
4177
|
"ds:text-fg ds:transition-colors ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:motion-reduce:transition-none",
|
|
4125
|
-
|
|
4178
|
+
// `aria-expanded` twin: a TooltipTrigger asChild ancestor can
|
|
4179
|
+
// clobber this trigger's own `data-state` with the tooltip's
|
|
4180
|
+
// (see toggle-group.tsx's note on the same bug), but never
|
|
4181
|
+
// sets `aria-expanded`.
|
|
4182
|
+
"ds:hover:bg-bg-3 ds:data-[state=open]:bg-bg-3 ds:aria-expanded:bg-bg-3",
|
|
4126
4183
|
"ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
|
|
4127
4184
|
triggerClassName
|
|
4128
4185
|
),
|
|
@@ -4137,6 +4194,7 @@ var SidebarBrandSwitcher = React6.forwardRef(
|
|
|
4137
4194
|
"ds:ml-auto ds:size-3.5 ds:shrink-0 ds:text-fg-4",
|
|
4138
4195
|
"ds:transition-transform ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:motion-reduce:transition-none",
|
|
4139
4196
|
"ds:group-data-[state=open]/brand-trigger:rotate-180",
|
|
4197
|
+
"ds:group-aria-expanded/brand-trigger:rotate-180",
|
|
4140
4198
|
"ds:group-data-[labels=hide]/sidebar:hidden",
|
|
4141
4199
|
iconClassName
|
|
4142
4200
|
)
|
|
@@ -4339,5 +4397,5 @@ var BrandScope = forwardRef(function BrandScope2({ product, children, ...props }
|
|
|
4339
4397
|
BrandScope.displayName = "BrandScope";
|
|
4340
4398
|
|
|
4341
4399
|
export { AgreementPaneHeading, AgreementViewer, AssureAuditBrandIcon, AssureBooksBrandIcon, AssureProBrandIcon, AssureTaxBrandIcon, BRAND_PRODUCTS, BrandScope, BrandScopeProvider, Chip, ClientSelect, CmdkCompatContext, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComingSoon, DEFAULT_COMBOBOX_MESSAGES, Grid, Logo, PlainLink, ProposalAddOn, ProposalBillingTerms, ProposalConsentGate, ProposalCustomPage, ProposalNote, ProposalPackageCard, ProposalPaymentCapture, ProposalPricingSummary, ProposalServiceRow, ProposalSignatureBlock, ProposalSignerList, QUESTION_TYPES, QUESTION_TYPE_CONTRACT_VERSION, Questions, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarBrand, SidebarBrandSwitcher, SidebarBrandSwitcherTile, SidebarBrandText, SidebarDrawer, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarPinButton, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, assetPath, brandLabel, brandScope, chipVariants, getAssetBasePath, resolveChipStyle, setAssetBasePath, sidebarLinkBadgeVariants, useBrandScope, useSidebarPeekLock, useSidebarState };
|
|
4342
|
-
//# sourceMappingURL=chunk-
|
|
4343
|
-
//# sourceMappingURL=chunk-
|
|
4400
|
+
//# sourceMappingURL=chunk-L5IQK3GV.js.map
|
|
4401
|
+
//# sourceMappingURL=chunk-L5IQK3GV.js.map
|