| null>(null);
+
+ useEffect(() => {
+ return () => {
+ if (resetTimerRef.current !== null) clearTimeout(resetTimerRef.current);
+ };
+ }, []);
async function onCopy() {
const res = await copy(text);
- if (res) {
- setIsCopied(true);
- if (resetIcon) {
- setTimeout(() => {
- setIsCopied(false);
- }, resetTimeout);
- }
+ if (!res) return;
+ setCopied(true);
+ if (resetIcon) {
+ if (resetTimerRef.current !== null) clearTimeout(resetTimerRef.current);
+ resetTimerRef.current = setTimeout(() => {
+ setCopied(false);
+ resetTimerRef.current = null;
+ }, resetTimeout);
}
}
return (
-
- {isCopied ? (
-
- ) : (
-
- )}
-
+ <>
+
+
+
+
+
+
+
+ {copied ? 'Copied' : ''}
+
+ >
);
}
diff --git a/packages/raystack/components/data-table/data-table.module.css b/packages/raystack/components/data-table/data-table.module.css
index 42583f19c..21243cb63 100644
--- a/packages/raystack/components/data-table/data-table.module.css
+++ b/packages/raystack/components/data-table/data-table.module.css
@@ -102,6 +102,8 @@
.contentRoot table {
border-collapse: separate;
border-spacing: 0;
+ /* Align digits across rows/columns for numeric data. */
+ font-variant-numeric: tabular-nums;
}
.contentRoot thead {
@@ -120,6 +122,16 @@
cursor: pointer;
}
+.row.clickable:active {
+ background: var(--rs-color-background-neutral-secondary);
+}
+
+.row[data-state="selected"],
+.row[data-state="selected"]:hover,
+.row[data-state="selected"].clickable:active {
+ background: var(--rs-color-background-accent-primary);
+}
+
.head {
position: sticky;
top: 0;
@@ -192,6 +204,13 @@
box-sizing: border-box;
}
+/* Let virtualized cells (tableStyles.cell paints an opaque background) show
+ the row's hover/selected/pressed color, like `.cell { background: inherit }`
+ already does for | s. `.virtualRow .virtualCell` outspecifies `.cell`. */
+.virtualRow .virtualCell {
+ background: inherit;
+}
+
.virtualSectionHeader {
position: absolute;
width: 100%;
@@ -254,3 +273,24 @@
flex: 1;
min-width: 0;
}
+
+/* Scrolled-under edge for the virtualized sticky group anchor. The anchor is
+ permanently stuck and coincides with the first natural group header at
+ scroll 0, so "scrolled > 0" is exactly "content is underneath it".
+ (.stickySectionHeader is intentionally NOT gated: its many instances stick
+ at per-element offsets a scroll() timeline can't express — revisit with
+ @container scroll-state(stuck: top) when support matures.) */
+@supports (animation-timeline: scroll()) {
+ .stickyGroupAnchor {
+ box-shadow: 0 0.5px 0 0 transparent;
+ animation: anchor-edge linear both;
+ animation-timeline: scroll(nearest block);
+ animation-range: 0px 24px;
+ }
+}
+
+@keyframes anchor-edge {
+ to {
+ box-shadow: 0 0.5px 0 0 var(--rs-color-border-base-primary);
+ }
+}
diff --git a/packages/raystack/components/data-view/__tests__/data-view.test.tsx b/packages/raystack/components/data-view/__tests__/data-view.test.tsx
index 052ce042b..011df6145 100644
--- a/packages/raystack/components/data-view/__tests__/data-view.test.tsx
+++ b/packages/raystack/components/data-view/__tests__/data-view.test.tsx
@@ -230,6 +230,65 @@ describe('DataView', () => {
await user.click(screen.getByText('John Doe'));
expect(onRowClick).toHaveBeenCalledWith(mockData[0]);
});
+
+ it('exposes clickable rows as focusable rows', () => {
+ render(
+
+
+
+ );
+ // Clickable rows keep role="row" (so cells stay associated) and become
+ // keyboard-focusable via tabIndex.
+ const row = screen.getByText('John Doe').closest('[role="row"]');
+ expect(row).not.toBeNull();
+ expect(row).toHaveAttribute('tabindex', '0');
+ (row as HTMLElement).focus();
+ expect(row).toHaveFocus();
+ });
+
+ it('activates the row with Enter and Space', async () => {
+ const user = userEvent.setup();
+ const onRowClick = vi.fn();
+ render(
+
+
+
+ );
+ const row = screen
+ .getByText('John Doe')
+ .closest('[role="row"]') as HTMLElement;
+ row.focus();
+
+ await user.keyboard('{Enter}');
+ expect(onRowClick).toHaveBeenCalledWith(mockData[0]);
+
+ await user.keyboard(' ');
+ expect(onRowClick).toHaveBeenCalledTimes(2);
+ });
+
+ it('keeps rows inert without onRowClick', () => {
+ render(
+
+
+
+ );
+ const cell = screen.getByText('John Doe');
+ // The structural role stays; there is no button and no tab stop.
+ expect(cell.closest('[role="button"]')).toBeNull();
+ const row = cell.closest('[role="row"]');
+ expect(row).not.toBeNull();
+ expect(row).not.toHaveAttribute('tabindex');
+ });
});
describe('Zero / Empty State', () => {
diff --git a/packages/raystack/components/data-view/components/list.tsx b/packages/raystack/components/data-view/components/list.tsx
index e8dccbf53..2446c08ce 100644
--- a/packages/raystack/components/data-view/components/list.tsx
+++ b/packages/raystack/components/data-view/components/list.tsx
@@ -3,7 +3,14 @@
import type { Header, Row } from '@tanstack/react-table';
import { flexRender } from '@tanstack/react-table';
import { cx } from 'class-variance-authority';
-import { CSSProperties, useCallback, useEffect, useMemo, useRef } from 'react';
+import {
+ CSSProperties,
+ KeyboardEvent,
+ useCallback,
+ useEffect,
+ useMemo,
+ useRef
+} from 'react';
import { Badge } from '../../badge';
import { Skeleton } from '../../skeleton';
@@ -346,9 +353,26 @@ export function DataViewList({
const composedStyle: CSSProperties = isVirtual
? { ...style, gridTemplateColumns }
: (style ?? {});
+ const handleRowActivate = () => onRowClick?.(row.original);
+ const handleRowKeyDown = (event: KeyboardEvent) => {
+ // Only act on keys aimed at the row itself; ignore events bubbling up
+ // from interactive children (buttons, links) so they don't also
+ // trigger row activation.
+ if (event.target !== event.currentTarget) return;
+ // Enter and Space both activate, matching a native button.
+ if (event.key === 'Enter' || event.key === ' ') {
+ event.preventDefault(); // Space would otherwise scroll the page.
+ handleRowActivate();
+ }
+ };
return (
({
classNames.row
)}
style={composedStyle}
- onClick={() => onRowClick?.(row.original)}
+ onClick={handleRowActivate}
>
{renderRowCells(row)}
diff --git a/packages/raystack/components/data-view/components/ordering.tsx b/packages/raystack/components/data-view/components/ordering.tsx
index 1fcaed09e..850954f13 100644
--- a/packages/raystack/components/data-view/components/ordering.tsx
+++ b/packages/raystack/components/data-view/components/ordering.tsx
@@ -1,6 +1,6 @@
'use client';
-import { TextAlignBottomIcon, TextAlignTopIcon } from '@radix-ui/react-icons';
+import { TextAlignBottomIcon } from '@radix-ui/react-icons';
import { Flex } from '../../flex';
import { IconButton } from '../../icon-button';
@@ -68,13 +68,10 @@ export function Ordering({ columnList, onChange, value }: OrderingProps) {
size={4}
disabled={columnList.length === 0}
>
- {value.order === SortOrders?.ASC ? (
-
- ) : (
-
- )}
+
diff --git a/packages/raystack/components/data-view/data-view.module.css b/packages/raystack/components/data-view/data-view.module.css
index b61bbe31f..95d046c4e 100644
--- a/packages/raystack/components/data-view/data-view.module.css
+++ b/packages/raystack/components/data-view/data-view.module.css
@@ -52,6 +52,20 @@
.display-popover-sort-icon {
height: var(--rs-space-6);
width: var(--rs-space-6);
+ /* Flip around the icon's own visual centre, not the SVG viewBox origin,
+ so scaleY reads as a clean flip in place instead of a shift. */
+ transform-box: fill-box;
+ transform-origin: center;
+}
+
+.display-popover-sort-icon[data-order="desc"] {
+ transform: scaleY(-1);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .display-popover-sort-icon {
+ transition: transform var(--rs-duration-fast) var(--rs-ease-out);
+ }
}
.flex-1 {
@@ -205,6 +219,19 @@
background: var(--rs-color-background-base-primary-hover);
}
+.listRow.clickable:active,
+.listRowVirtual.clickable:active {
+ background: var(--rs-color-background-neutral-secondary);
+}
+
+/* Inset ring: .listRoot scrolls (overflow: auto), so an outward outline
+ would clip at the container edge. */
+.listRow.clickable:focus-visible,
+.listRowVirtual.clickable:focus-visible {
+ outline: var(--rs-focus-ring);
+ outline-offset: var(--rs-focus-ring-offset-inset);
+}
+
.listRowDivider {
border-bottom: 0.5px solid var(--rs-color-border-base-primary);
}
@@ -326,3 +353,33 @@
width: 100%;
box-sizing: border-box;
}
+
+/* Scrolled-under edges: header hairline and group-anchor hairline appear only
+ once content scrolls beneath them. See table.module.css for rationale. */
+@supports (animation-timeline: scroll()) {
+ .listHeader {
+ border-bottom-color: transparent;
+ animation: list-header-edge linear both;
+ animation-timeline: scroll(nearest block);
+ animation-range: 0px 24px;
+ }
+
+ .listGroupAnchor {
+ box-shadow: 0 0.5px 0 0 transparent;
+ animation: list-anchor-edge linear both;
+ animation-timeline: scroll(nearest block);
+ animation-range: 0px 24px;
+ }
+}
+
+@keyframes list-header-edge {
+ to {
+ border-bottom-color: var(--rs-color-border-base-primary);
+ }
+}
+
+@keyframes list-anchor-edge {
+ to {
+ box-shadow: 0 0.5px 0 0 var(--rs-color-border-base-primary);
+ }
+}
diff --git a/packages/raystack/components/dialog/dialog.module.css b/packages/raystack/components/dialog/dialog.module.css
index eb1562737..21fe23c74 100644
--- a/packages/raystack/components/dialog/dialog.module.css
+++ b/packages/raystack/components/dialog/dialog.module.css
@@ -2,7 +2,7 @@
background-color: var(--rs-color-overlay-black-a5);
position: fixed;
inset: 0;
- transition: opacity 150ms cubic-bezier(0.45, 1.005, 0, 1.005);
+ transition: opacity var(--rs-duration-normal) var(--rs-ease-out);
z-index: var(--rs-z-index-portal);
}
@@ -24,7 +24,7 @@
position: fixed;
top: 0;
left: 50%;
- transition: opacity 150ms;
+ transition: opacity var(--rs-duration-normal) var(--rs-ease-out);
/* translateY is the smaller of 160px (desired top offset) and
calc(50vh - 50%) (the y-coord that vertically centers the dialog,
where the inner 50% resolves to the element's own height). On tall
@@ -36,7 +36,7 @@
.dialogContent.showNestedAnimation {
transform: translate(-50%, min(160px, calc(50vh - 50%)))
scale(calc(1 - 0.1 * var(--nested-dialogs, 0)));
- translate: 0 calc(0px + 1.25rem * var(--nested-dialogs, 0));
+ translate: 0 calc(1.25rem * var(--nested-dialogs, 0));
}
.dialogContent:focus {
@@ -50,10 +50,9 @@
background-color: var(--rs-color-overlay-black-a1);
}
-.dialogContent.showNestedAnimation[data-starting-style],
-.dialogContent.showNestedAnimation[data-ending-style] {
+.dialogContent[data-starting-style],
+.dialogContent[data-ending-style] {
opacity: 0;
- transform: translate(-50%, min(160px, calc(50vh - 50%))) scale(0.9);
}
.closeButton {
@@ -78,8 +77,13 @@
@media (prefers-reduced-motion: no-preference) {
.dialogContent {
transition:
- opacity 150ms,
- transform 150ms ease;
+ opacity var(--rs-duration-normal) var(--rs-ease-out),
+ transform var(--rs-duration-normal) var(--rs-ease-out);
+ }
+
+ .dialogContent.showNestedAnimation[data-starting-style],
+ .dialogContent.showNestedAnimation[data-ending-style] {
+ transform: translate(-50%, min(160px, calc(50vh - 50%))) scale(0.9);
}
}
@@ -119,3 +123,11 @@
.footer {
padding: var(--rs-space-5) var(--rs-space-7);
}
+
+/* Reduced transparency: drop the blur, compensate with a heavier solid scrim */
+@media (prefers-reduced-transparency: reduce) {
+ .overlayBlur {
+ backdrop-filter: none;
+ background-color: var(--rs-color-overlay-black-a9);
+ }
+}
diff --git a/packages/raystack/components/drawer/drawer-content.tsx b/packages/raystack/components/drawer/drawer-content.tsx
index 10f4e9811..95d2a386c 100644
--- a/packages/raystack/components/drawer/drawer-content.tsx
+++ b/packages/raystack/components/drawer/drawer-content.tsx
@@ -4,6 +4,7 @@ import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';
import { Cross1Icon } from '@radix-ui/react-icons';
import { cva, cx, type VariantProps } from 'class-variance-authority';
import { ReactNode } from 'react';
+import { IconButton } from '../icon-button';
import styles from './drawer.module.css';
const drawerPopup = cva(styles.drawerPopup, {
@@ -60,6 +61,7 @@ export function DrawerContent({
}
>
diff --git a/packages/raystack/components/drawer/drawer.module.css b/packages/raystack/components/drawer/drawer.module.css
index ccf1ed7a0..f8304e1ef 100644
--- a/packages/raystack/components/drawer/drawer.module.css
+++ b/packages/raystack/components/drawer/drawer.module.css
@@ -1,11 +1,10 @@
.backdrop {
position: fixed;
inset: 0;
- min-height: 100dvh;
z-index: var(--rs-z-index-portal);
background-color: var(--rs-color-overlay-black-a5);
opacity: calc(1 - var(--drawer-swipe-progress, 0));
- transition: opacity 450ms cubic-bezier(0.32, 0.72, 0, 1);
+ transition: opacity var(--rs-duration-drawer) var(--rs-ease-drawer);
}
.backdrop[data-starting-style],
@@ -18,7 +17,10 @@
}
.backdrop[data-ending-style] {
- transition-duration: calc(var(--drawer-swipe-strength, 1) * 400ms);
+ transition-duration: calc(
+ var(--drawer-swipe-strength, 1) *
+ var(--rs-duration-drawer)
+ );
}
.viewport {
@@ -57,16 +59,23 @@
color: var(--rs-color-foreground-base-primary);
overflow-y: auto;
overscroll-behavior: contain;
- touch-action: auto;
will-change: transform;
+ box-shadow: var(--rs-shadow-floating);
+ transition: opacity var(--rs-duration-drawer) var(--rs-ease-drawer);
}
.drawerPopup:focus {
outline: none;
}
+.drawerPopup[data-starting-style],
+.drawerPopup[data-ending-style] {
+ opacity: 0;
+}
+
.drawerPopup[data-swiping] {
user-select: none;
+ transition: none;
}
/* Right side drawer */
@@ -76,13 +85,11 @@
transform: translateX(var(--drawer-swipe-movement-x));
}
-.drawerPopup-right[data-starting-style],
-.drawerPopup-right[data-ending-style] {
- transform: translateX(100%);
-}
-
.drawerPopup-right[data-ending-style] {
- transition-duration: calc(var(--drawer-swipe-strength, 1) * 400ms);
+ transition-duration: calc(
+ var(--drawer-swipe-strength, 1) *
+ var(--rs-duration-drawer)
+ );
}
/* Left side drawer */
@@ -92,13 +99,11 @@
transform: translateX(var(--drawer-swipe-movement-x));
}
-.drawerPopup-left[data-starting-style],
-.drawerPopup-left[data-ending-style] {
- transform: translateX(-100%);
-}
-
.drawerPopup-left[data-ending-style] {
- transition-duration: calc(var(--drawer-swipe-strength, 1) * 400ms);
+ transition-duration: calc(
+ var(--drawer-swipe-strength, 1) *
+ var(--rs-duration-drawer)
+ );
}
/* Top side drawer */
@@ -108,13 +113,11 @@
transform: translateY(var(--drawer-swipe-movement-y));
}
-.drawerPopup-top[data-starting-style],
-.drawerPopup-top[data-ending-style] {
- transform: translateY(-100%);
-}
-
.drawerPopup-top[data-ending-style] {
- transition-duration: calc(var(--drawer-swipe-strength, 1) * 400ms);
+ transition-duration: calc(
+ var(--drawer-swipe-strength, 1) *
+ var(--rs-duration-drawer)
+ );
}
/* Bottom side drawer */
@@ -124,13 +127,11 @@
transform: translateY(var(--drawer-swipe-movement-y));
}
-.drawerPopup-bottom[data-starting-style],
.drawerPopup-bottom[data-ending-style] {
- transform: translateY(100%);
-}
-
-.drawerPopup-bottom[data-ending-style] {
- transition-duration: calc(var(--drawer-swipe-strength, 1) * 400ms);
+ transition-duration: calc(
+ var(--drawer-swipe-strength, 1) *
+ var(--rs-duration-drawer)
+ );
}
.content {
@@ -138,28 +139,11 @@
height: 100%;
}
+/* Positioning only — IconButton supplies the chrome, states and focus ring. */
.close {
- all: unset;
position: absolute;
top: var(--rs-space-3);
right: var(--rs-space-3);
- display: inline-flex;
- align-items: center;
- justify-content: center;
- border-radius: var(--rs-radius-2);
- color: var(--rs-color-foreground-base-secondary);
- padding: var(--rs-space-2);
- cursor: pointer;
-}
-
-.close:hover {
- background-color: var(--rs-color-background-base-primary-hover);
- color: var(--rs-color-foreground-base-primary);
-}
-
-.close:focus-visible {
- outline: 2px solid var(--rs-color-border-base-focus);
- outline-offset: -1px;
}
.header {
@@ -202,6 +186,33 @@
.drawerPopup-left,
.drawerPopup-top,
.drawerPopup-bottom {
- transition: transform 450ms cubic-bezier(0.32, 0.72, 0, 1);
+ transition: transform var(--rs-duration-drawer) var(--rs-ease-drawer);
+ }
+
+ /* Normal motion slides an opaque panel; the base opacity fade is the
+ reduced-motion fallback only. */
+ .drawerPopup[data-starting-style],
+ .drawerPopup[data-ending-style] {
+ opacity: 1;
+ }
+
+ .drawerPopup-right[data-starting-style],
+ .drawerPopup-right[data-ending-style] {
+ transform: translateX(100%);
+ }
+
+ .drawerPopup-left[data-starting-style],
+ .drawerPopup-left[data-ending-style] {
+ transform: translateX(-100%);
+ }
+
+ .drawerPopup-top[data-starting-style],
+ .drawerPopup-top[data-ending-style] {
+ transform: translateY(-100%);
+ }
+
+ .drawerPopup-bottom[data-starting-style],
+ .drawerPopup-bottom[data-ending-style] {
+ transform: translateY(100%);
}
}
diff --git a/packages/raystack/components/empty-state/empty-state.module.css b/packages/raystack/components/empty-state/empty-state.module.css
index 6f2c89130..14d3c2753 100644
--- a/packages/raystack/components/empty-state/empty-state.module.css
+++ b/packages/raystack/components/empty-state/empty-state.module.css
@@ -24,7 +24,6 @@
}
.icon svg {
- border-color: currentColor;
height: 100%;
width: 100%;
}
@@ -50,7 +49,7 @@
font-weight: var(--rs-font-weight-medium);
line-height: var(--rs-line-height-large);
letter-spacing: var(--rs-letter-spacing-large);
- text-wrap: wrap;
+ text-wrap: balance;
max-width: 360px;
}
@@ -61,7 +60,7 @@
font-weight: var(--rs-font-weight-regular);
line-height: var(--rs-line-height-regular);
letter-spacing: var(--rs-letter-spacing-regular);
- text-wrap: wrap;
+ text-wrap: pretty;
max-width: 360px;
}
@@ -86,9 +85,6 @@
}
.iconLarge svg {
- height: 100%;
- width: 100%;
- border-color: currentColor;
padding: var(--rs-space-4);
}
@@ -97,3 +93,17 @@
height: 100%;
padding: var(--rs-space-9) var(--rs-space-5);
}
+
+@keyframes empty-state-enter-rise {
+ from {
+ opacity: 0;
+ translate: 0 var(--rs-space-2);
+ }
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .emptyState,
+ .emptyStateContent {
+ animation: empty-state-enter-rise var(--rs-duration-moderate) var(--rs-ease-out);
+ }
+}
diff --git a/packages/raystack/components/field/__tests__/field.test.tsx b/packages/raystack/components/field/__tests__/field.test.tsx
index d4cfab9ea..03b298a25 100644
--- a/packages/raystack/components/field/__tests__/field.test.tsx
+++ b/packages/raystack/components/field/__tests__/field.test.tsx
@@ -72,12 +72,14 @@ describe('Field', () => {
expect(screen.getByText('Enter a valid email')).toBeInTheDocument();
});
- it('does not render description when error is present', () => {
+ it('hides the description while an error is showing', () => {
render(
content
);
+ // The description is unmounted when an error is present so it does not
+ // leak into the input's aria-describedby alongside the error.
expect(screen.queryByText('Enter email')).not.toBeInTheDocument();
expect(screen.getByText('Invalid email')).toBeInTheDocument();
});
diff --git a/packages/raystack/components/field/field-root.tsx b/packages/raystack/components/field/field-root.tsx
index cf50d97da..473f151fc 100644
--- a/packages/raystack/components/field/field-root.tsx
+++ b/packages/raystack/components/field/field-root.tsx
@@ -46,15 +46,19 @@ export function FieldRoot({
>
{label && {label}}
{children}
- {error && (
-
- {error}
-
- )}
- {!error && description && (
-
- {description}
-
+ {(description || error) && (
+
+ {description && !error && (
+
+ {description}
+
+ )}
+ {error && (
+
+ {error}
+
+ )}
+
)}
diff --git a/packages/raystack/components/field/field.module.css b/packages/raystack/components/field/field.module.css
index 567c18446..18dfd0d59 100644
--- a/packages/raystack/components/field/field.module.css
+++ b/packages/raystack/components/field/field.module.css
@@ -28,11 +28,36 @@
margin: 0;
}
+/* Description and error share one slot, stacked in the same grid cell. When an
+ error appears it crossfades in over the description (which fades out), so the
+ hint is replaced smoothly instead of popping. Reduced motion swaps instantly. */
+.helperSlot {
+ display: grid;
+}
+
+.helperSlot > * {
+ grid-area: 1 / 1;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .helperSlot > * {
+ transition:
+ opacity var(--rs-duration-fast) var(--rs-ease-out),
+ visibility var(--rs-duration-fast) var(--rs-ease-out);
+ }
+
+ @starting-style {
+ .helperSlot .error {
+ opacity: 0;
+ }
+ }
+}
+
.input {
width: 100%;
padding: 0 var(--rs-space-3);
border-radius: var(--rs-radius-2);
- border: 1px solid var(--rs-color-border-base-tertiary);
+ border: 0.5px solid var(--rs-color-border-base-tertiary);
background: var(--rs-color-background-base-primary);
font-weight: var(--rs-font-weight-regular);
font-size: var(--rs-font-size-small);
@@ -40,22 +65,20 @@
letter-spacing: var(--rs-letter-spacing-small);
outline: none;
box-sizing: border-box;
- transition: all 0.2s ease;
+ transition: var(--rs-transition-interactive);
height: var(--rs-space-9);
}
-.input:hover {
- border-color: var(--rs-color-border-base-focus);
- background: var(--rs-color-background-base-primary-hover);
-}
-
.input:focus {
border-color: var(--rs-color-border-accent-emphasis);
- background-color: var(--rs-color-background-base-primary);
}
.input[data-invalid] {
- border-color: var(--rs-color-border-danger-primary);
+ border-color: var(--rs-color-border-danger-emphasis);
+}
+
+.input[data-invalid]:focus {
+ border-color: var(--rs-color-border-danger-emphasis-hover);
}
.input[data-disabled] {
diff --git a/packages/raystack/components/filter-chip/filter-chip.module.css b/packages/raystack/components/filter-chip/filter-chip.module.css
index 5ba007416..fe1f30461 100644
--- a/packages/raystack/components/filter-chip/filter-chip.module.css
+++ b/packages/raystack/components/filter-chip/filter-chip.module.css
@@ -93,10 +93,27 @@
background: var(--rs-color-background-base-primary-hover);
}
+/* Mirrors the chip dismiss button so the two siblings feel identical. */
+.removeIconContainer:active {
+ transform: scale(var(--rs-scale-pressed-strong));
+}
+
+/* Remove button sits inside the clipped chip: keep the ring inside. */
+.removeIconContainer:focus-visible {
+ outline: var(--rs-focus-ring);
+ outline-offset: var(--rs-focus-ring-offset-inset);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .removeIconContainer {
+ transition: transform var(--rs-duration-press) var(--rs-ease-out);
+ }
+}
+
.removeIcon {
cursor: pointer;
color: var(--rs-color-foreground-base-primary);
- transition: color 0.2s ease-in-out;
+ transition: color var(--rs-duration-normal) var(--rs-ease-out);
width: var(--rs-space-4);
height: var(--rs-space-4);
}
@@ -209,6 +226,14 @@ button.selectValue:hover {
display: none;
}
+/* The DatePicker reserves an (invisible) error line below its input so
+ appearing errors don't shift layout. Inside the 24px chip row that
+ reserved line inflates the wrapper and pushes the input off-center;
+ the chip signals date errors with the danger border below instead. */
+.dateFieldWrapper [class*="datePickerError"] {
+ display: none;
+}
+
.dateFieldWrapper [class*="input-error-wrapper"] {
border: 1px solid var(--rs-color-border-danger-primary);
}
diff --git a/packages/raystack/components/floating-actions/floating-actions.module.css b/packages/raystack/components/floating-actions/floating-actions.module.css
index 3d39ad781..f6d26ebb4 100644
--- a/packages/raystack/components/floating-actions/floating-actions.module.css
+++ b/packages/raystack/components/floating-actions/floating-actions.module.css
@@ -8,6 +8,31 @@
background: var(--rs-color-background-base-primary);
border-radius: var(--rs-radius-2);
box-shadow: var(--rs-shadow-lifted);
+ transition: opacity var(--rs-duration-normal) var(--rs-ease-out);
+}
+
+@starting-style {
+ .root {
+ opacity: 0;
+ }
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .root {
+ transition:
+ opacity var(--rs-duration-normal) var(--rs-ease-out),
+ transform var(--rs-duration-normal) var(--rs-ease-out);
+ }
+
+ @starting-style {
+ .root[data-variant="floating"][data-side="bottom"] {
+ transform: translateY(var(--rs-space-3));
+ }
+
+ .root[data-variant="floating"][data-side="top"] {
+ transform: translateY(calc(-1 * var(--rs-space-3)));
+ }
+ }
}
/* ===== Floating variant ===== */
@@ -31,8 +56,9 @@
}
.root[data-variant="floating"][data-align="center"] {
- left: 50%;
- transform: translateX(-50%);
+ left: 0;
+ right: 0;
+ margin-inline: auto;
}
.root[data-variant="floating"][data-align="end"] {
diff --git a/packages/raystack/components/headline/headline.module.css b/packages/raystack/components/headline/headline.module.css
index 0d7b9f809..59f138b6e 100644
--- a/packages/raystack/components/headline/headline.module.css
+++ b/packages/raystack/components/headline/headline.module.css
@@ -5,7 +5,6 @@
font-family: var(--rs-font-title);
font-weight: var(--rs-font-weight-regular);
color: var(--rs-color-foreground-base-primary);
- width: 100%;
}
.headline-t1 {
@@ -30,7 +29,7 @@
}
.headline-align-left {
- text-align: left;
+ text-align: start;
}
.headline-align-center {
@@ -38,7 +37,7 @@
}
.headline-align-right {
- text-align: right;
+ text-align: end;
}
.headline-truncate {
diff --git a/packages/raystack/components/icon-button/icon-button.module.css b/packages/raystack/components/icon-button/icon-button.module.css
index 2f45dcdf6..63b4151b4 100644
--- a/packages/raystack/components/icon-button/icon-button.module.css
+++ b/packages/raystack/components/icon-button/icon-button.module.css
@@ -8,21 +8,41 @@
border: none;
color: var(--rs-color-foreground-base-secondary);
cursor: pointer;
- transition: var(--rs-transition-interactive);
padding: var(--rs-space-1);
}
-.iconButton:hover:not(:disabled),
-.iconButton:active:not(:disabled) {
+.iconButton:hover:not(:disabled) {
background-color: var(--rs-color-background-base-primary-hover);
color: var(--rs-color-foreground-base-primary);
}
+.iconButton:active:not(:disabled) {
+ background-color: var(--rs-color-background-neutral-secondary);
+ color: var(--rs-color-foreground-base-primary);
+ transform: scale(var(--rs-scale-pressed));
+}
+
+/* The scale applies unconditionally (an instant state change); only the
+ eased tween is motion, so only the transitions are gated. Mirrors button. */
+@media (prefers-reduced-motion: no-preference) {
+ .iconButton {
+ transition: var(--rs-transition-interactive);
+ }
+
+ .iconButton:active {
+ transition: var(--rs-transition-pressed);
+ }
+}
+
.iconButton:disabled {
opacity: 0.5;
cursor: not-allowed;
}
+.iconButton:focus-visible {
+ outline: var(--rs-focus-ring);
+}
+
.iconButton-size-1 {
width: var(--rs-space-4);
height: var(--rs-space-4);
diff --git a/packages/raystack/components/image/__tests__/image.test.tsx b/packages/raystack/components/image/__tests__/image.test.tsx
index 5c95b994c..92d17a448 100644
--- a/packages/raystack/components/image/__tests__/image.test.tsx
+++ b/packages/raystack/components/image/__tests__/image.test.tsx
@@ -124,6 +124,18 @@ describe('Image', () => {
fireEvent.error(img);
expect(img.src).toContain('/fallback.jpg');
});
+
+ it('assigns the fallback src exactly once, even if the fallback also errors', () => {
+ render();
+ const img = screen.getByRole('img') as HTMLImageElement;
+
+ fireEvent.error(img);
+ expect(img.src).toContain('/fallback.jpg');
+
+ // The fallback itself fails to load — must not re-assign it again.
+ fireEvent.error(img);
+ expect(img.src).toContain('/fallback.jpg');
+ });
});
describe('Loading Attributes', () => {
diff --git a/packages/raystack/components/image/image.module.css b/packages/raystack/components/image/image.module.css
index fea2c7db5..cb9774b5c 100644
--- a/packages/raystack/components/image/image.module.css
+++ b/packages/raystack/components/image/image.module.css
@@ -2,6 +2,10 @@
display: block;
max-width: 100%;
height: auto;
+ /* Hairline media edge so pale images keep a shape on light surfaces.
+ Outline, not inset shadow — the decoded image paints over a shadow. */
+ outline: 0.5px solid var(--rs-color-overlay-base-a2);
+ outline-offset: -0.5px;
}
.image-contain {
@@ -31,3 +35,19 @@
.image-radius-full {
border-radius: var(--rs-radius-full);
}
+
+/* Load fade: hidden only after JS confirms an in-flight load, so SSR/no-JS
+ images are never invisible. Cached images skip this entirely. */
+.image-loading {
+ opacity: 0;
+}
+
+.image-loaded {
+ opacity: 1;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .image-loaded {
+ transition: opacity var(--rs-duration-fast) var(--rs-ease-out);
+ }
+}
diff --git a/packages/raystack/components/image/image.tsx b/packages/raystack/components/image/image.tsx
index 9bae64407..e250b2a18 100644
--- a/packages/raystack/components/image/image.tsx
+++ b/packages/raystack/components/image/image.tsx
@@ -1,7 +1,8 @@
'use client';
-import { cva, type VariantProps } from 'class-variance-authority';
-import { ComponentProps, SyntheticEvent } from 'react';
+import { cva, cx, type VariantProps } from 'class-variance-authority';
+import { ComponentProps, SyntheticEvent, useRef, useState } from 'react';
+import { useIsomorphicLayoutEffect } from '~/hooks';
import styles from './image.module.css';
@@ -36,6 +37,8 @@ export function Image({
radius,
fallback,
onError,
+ onLoad,
+ src,
width,
height,
style,
@@ -43,9 +46,33 @@ export function Image({
decoding = 'async',
...props
}: ImageProps) {
+ const imgRef = useRef(null);
+ const hasFallenBackRef = useRef(false);
+ const [loadState, setLoadState] = useState<'static' | 'loading' | 'loaded'>(
+ 'static'
+ );
+
+ useIsomorphicLayoutEffect(() => {
+ hasFallenBackRef.current = false;
+ const node = imgRef.current;
+ // Already-decoded (cached/SSR-painted) images stay visible — no fade.
+ setLoadState(node && !node.complete ? 'loading' : 'static');
+ }, [src]);
+
+ const handleLoad = (event: SyntheticEvent) => {
+ setLoadState(prev => (prev === 'loading' ? 'loaded' : prev));
+ onLoad?.(event);
+ };
+
const handleError = (event: SyntheticEvent) => {
- if (fallback) {
+ if (fallback && !hasFallenBackRef.current) {
+ // One-shot: if the fallback itself errors, never re-assign it.
+ hasFallenBackRef.current = true;
event.currentTarget.src = fallback;
+ } else {
+ // No fallback (or the fallback failed): show the alt/broken rendering
+ // instead of holding the img invisible.
+ setLoadState('static');
}
onError?.(event);
};
@@ -58,9 +85,20 @@ export function Image({
return (
-
+
{children}
);
diff --git a/packages/raystack/components/meter/meter.module.css b/packages/raystack/components/meter/meter.module.css
index 15d9be392..9d48fd127 100644
--- a/packages/raystack/components/meter/meter.module.css
+++ b/packages/raystack/components/meter/meter.module.css
@@ -5,12 +5,6 @@
width: 100%;
}
-.header {
- display: flex;
- align-items: center;
- justify-content: space-between;
-}
-
.label {
font-family: var(--rs-font-body);
font-size: var(--rs-font-size-mini);
@@ -42,6 +36,8 @@
.indicator {
height: 100%;
background-color: var(--rs-color-background-accent-emphasis);
+ transform: scaleX(calc(var(--rs-meter-percentage, 0) / 100));
+ transform-origin: left;
}
/* Circular variant — viewBox is 72×72, SVG scales to container size */
@@ -53,7 +49,10 @@
.circularSvg {
--rs-meter-track-size: var(--rs-space-2);
- --rs-meter-radius: calc((var(--rs-space-14) - var(--rs-meter-track-size) * 2) / 2);
+ --rs-meter-radius: calc(
+ (var(--rs-space-14) - var(--rs-meter-track-size) * 2) /
+ 2
+ );
--rs-meter-circumference: calc(2 * 3.14159265 * var(--rs-meter-radius));
width: var(--rs-space-14);
height: var(--rs-space-14);
@@ -86,11 +85,11 @@
@media (prefers-reduced-motion: no-preference) {
.indicator {
- transition: width 500ms;
+ transition: transform var(--rs-duration-moderate) linear;
}
.circularIndicatorCircle {
- transition: stroke-dashoffset 500ms;
+ transition: stroke-dashoffset var(--rs-duration-moderate) linear;
}
}
diff --git a/packages/raystack/components/navbar/navbar.module.css b/packages/raystack/components/navbar/navbar.module.css
index 6c513efad..940d8fba7 100644
--- a/packages/raystack/components/navbar/navbar.module.css
+++ b/packages/raystack/components/navbar/navbar.module.css
@@ -11,7 +11,7 @@
@media (prefers-reduced-motion: no-preference) {
.root {
- transition: transform 0.2s ease-in-out;
+ transition: transform var(--rs-duration-normal) var(--rs-ease-in-out);
}
}
@@ -47,3 +47,18 @@
grid-column: 3;
justify-self: end;
}
+
+/* Reduced motion: hide-on-scroll degrades to a quick fade instead of a slide */
+@media (prefers-reduced-motion: reduce) {
+ .root {
+ transition:
+ opacity var(--rs-duration-fast) var(--rs-ease-out),
+ visibility var(--rs-duration-fast) var(--rs-ease-out);
+ }
+
+ .root[data-hidden="true"] {
+ transform: none;
+ opacity: 0;
+ visibility: hidden;
+ }
+}
diff --git a/packages/raystack/components/number-field/number-field.module.css b/packages/raystack/components/number-field/number-field.module.css
index a612349be..169c52a20 100644
--- a/packages/raystack/components/number-field/number-field.module.css
+++ b/packages/raystack/components/number-field/number-field.module.css
@@ -19,10 +19,11 @@
height: var(--rs-space-7);
flex-shrink: 0;
background: var(--rs-color-background-base-secondary);
- border: 0.5px solid var(--rs-color-border-base-primary);
+ border: 0.5px solid var(--rs-color-border-base-tertiary);
color: var(--rs-color-foreground-base-primary);
cursor: pointer;
padding: 0;
+ transition: var(--rs-transition-interactive);
}
.decrement {
@@ -38,6 +39,19 @@
background: var(--rs-color-background-base-primary-hover);
}
+/* Steppers have their own border: hug it with the ring so they don't read as
+ two separate lines. */
+.decrement:focus-visible,
+.increment:focus-visible {
+ outline: var(--rs-focus-ring);
+ outline-offset: var(--rs-focus-ring-offset-inset-border);
+}
+
+.decrement:active:not([data-disabled]),
+.increment:active:not([data-disabled]) {
+ background: var(--rs-color-background-neutral-secondary);
+}
+
.decrement[data-disabled],
.increment[data-disabled] {
pointer-events: none;
@@ -50,7 +64,7 @@
min-width: 0;
flex: 1 0 0;
background: var(--rs-color-background-base-primary);
- border: 0.5px solid var(--rs-color-border-base-primary);
+ border: 0.5px solid var(--rs-color-border-base-tertiary);
font-family: var(--rs-font-body);
font-size: var(--rs-font-size-small);
font-weight: var(--rs-font-weight-regular);
@@ -59,10 +73,24 @@
color: var(--rs-color-foreground-base-primary);
text-align: center;
font-variant-numeric: tabular-nums;
+ transition: var(--rs-transition-interactive);
outline: none;
padding: 0 var(--rs-space-2);
}
+.input:focus {
+ border-color: var(--rs-color-border-accent-emphasis);
+ background-color: var(--rs-color-background-base-primary);
+}
+
+.input[data-invalid] {
+ border-color: var(--rs-color-border-danger-emphasis);
+}
+
+.input[data-invalid]:focus {
+ border-color: var(--rs-color-border-danger-emphasis-hover);
+}
+
.input[data-disabled] {
pointer-events: none;
opacity: 0.5;
diff --git a/packages/raystack/components/otp-field/__tests__/otp-field.test.tsx b/packages/raystack/components/otp-field/__tests__/otp-field.test.tsx
index b69013bec..cfc6dc44f 100644
--- a/packages/raystack/components/otp-field/__tests__/otp-field.test.tsx
+++ b/packages/raystack/components/otp-field/__tests__/otp-field.test.tsx
@@ -1,6 +1,7 @@
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';
+import { Field } from '../../field';
import { OTPField } from '../otp-field';
import styles from '../otp-field.module.css';
@@ -144,6 +145,17 @@ describe('OTPField', () => {
expect(first).toHaveValue('a');
});
+ it('marks the root data-invalid inside an errored Field (drives the shake)', () => {
+ render(
+
+
+
+ );
+
+ expect(screen.getByTestId('root')).toHaveAttribute('data-invalid');
+ expect(screen.getByTestId('slot-0')).toHaveAttribute('data-invalid');
+ });
+
it('accepts both letters and digits when alphanumeric', async () => {
const user = userEvent.setup();
render();
diff --git a/packages/raystack/components/otp-field/otp-field.module.css b/packages/raystack/components/otp-field/otp-field.module.css
index 0718b6e94..88dc446c7 100644
--- a/packages/raystack/components/otp-field/otp-field.module.css
+++ b/packages/raystack/components/otp-field/otp-field.module.css
@@ -4,6 +4,33 @@
gap: var(--rs-space-3);
}
+/* Failed validation shakes the row once; the red borders remain the durable
+ signal, so reduced-motion users lose nothing. */
+@media (prefers-reduced-motion: no-preference) {
+ .otp-field[data-invalid] {
+ animation: otp-field-shake var(--rs-duration-slow) var(--rs-ease-out);
+ }
+}
+
+@keyframes otp-field-shake {
+ 0%,
+ 100% {
+ transform: translateX(0);
+ }
+ 20% {
+ transform: translateX(-4px);
+ }
+ 40% {
+ transform: translateX(4px);
+ }
+ 60% {
+ transform: translateX(-3px);
+ }
+ 80% {
+ transform: translateX(3px);
+ }
+}
+
.otp-field-input {
width: var(--rs-space-7);
height: var(--rs-space-9);
@@ -38,27 +65,23 @@
color: var(--rs-color-foreground-base-tertiary);
}
-.otp-field-input:hover:not(:focus):not(:disabled):not([data-disabled]):not(
- [data-readonly]
- ):not([data-invalid]) {
- border-color: var(--rs-color-border-base-focus);
-}
-
.otp-field-input:focus:not([data-readonly]):not([data-invalid]) {
border-color: var(--rs-color-border-accent-emphasis);
+ box-shadow: var(--rs-focus-ring-shadow);
}
.otp-field-input[data-invalid] {
border-color: var(--rs-color-border-danger-emphasis);
}
-.otp-field-input[data-invalid]:hover:not(:disabled):not([data-disabled]):not(
- [data-readonly]
- ),
.otp-field-input[data-invalid]:focus:not([data-readonly]) {
border-color: var(--rs-color-border-danger-emphasis-hover);
}
+.otp-field-input[data-invalid]:focus:not([data-readonly]) {
+ box-shadow: 0 0 0 1.5px var(--rs-color-border-danger-primary);
+}
+
.otp-field-input[data-disabled],
.otp-field-input:disabled {
opacity: 0.5;
@@ -66,12 +89,6 @@
color: var(--rs-color-foreground-base-tertiary);
}
-.otp-field-input[data-disabled]:hover,
-.otp-field-input:disabled:hover {
- border-color: var(--rs-color-border-base-tertiary);
- background: var(--rs-color-background-base-primary);
-}
-
.otp-field-input[data-readonly] {
cursor: default;
}
diff --git a/packages/raystack/components/popover/popover.module.css b/packages/raystack/components/popover/popover.module.css
index 85880bd4a..f683d007b 100644
--- a/packages/raystack/components/popover/popover.module.css
+++ b/packages/raystack/components/popover/popover.module.css
@@ -14,23 +14,26 @@
background-color: var(--rs-color-background-base-primary);
border-radius: var(--rs-radius-2);
box-shadow: var(--rs-shadow-soft);
- border: 1px solid var(--rs-color-border-base-primary);
+ border: 0.5px solid var(--rs-color-border-base-primary);
color: var(--rs-color-foreground-base-primary);
+ transform-origin: var(--transform-origin);
+ transition: opacity var(--rs-duration-normal) var(--rs-ease-out);
}
-@keyframes slideUpAndFade {
- from {
- opacity: 0;
- transform: translateY(var(--rs-space-1));
- }
- to {
- opacity: 1;
- transform: translateY(0);
- }
+.popover[data-starting-style],
+.popover[data-ending-style] {
+ opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
.popover {
- animation: slideUpAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1);
+ transition:
+ opacity var(--rs-duration-normal) var(--rs-ease-out),
+ transform var(--rs-duration-normal) var(--rs-ease-out);
+ }
+
+ .popover[data-starting-style],
+ .popover[data-ending-style] {
+ transform: scale(0.97);
}
}
diff --git a/packages/raystack/components/preview-card/preview-card.module.css b/packages/raystack/components/preview-card/preview-card.module.css
index 9dd1760d7..3a7cec22b 100644
--- a/packages/raystack/components/preview-card/preview-card.module.css
+++ b/packages/raystack/components/preview-card/preview-card.module.css
@@ -1,6 +1,10 @@
+/* Default mode (no PreviewCard.Viewport): Base UI positions the positioner
+ via transform (floating-ui). Don't transition that transform, or the card
+ eases toward every reposition and swims behind its anchor. The popup owns
+ the entrance (scale below); the positioner only fades — like popover/menu/tooltip. */
.positioner {
- --easing: cubic-bezier(0.22, 1, 0.36, 1);
- --animation-duration: 0.35s;
+ --easing: var(--rs-ease-out);
+ --animation-duration: var(--rs-duration-moderate);
z-index: var(--rs-z-index-portal);
height: var(--positioner-height);
@@ -16,7 +20,7 @@
background-color: var(--rs-color-background-base-primary);
border-radius: var(--rs-radius-2);
border: 0.5px solid var(--rs-color-border-base-primary);
- box-shadow: var(--rs-shadow-lifted);
+ box-shadow: var(--rs-shadow-soft);
color: var(--rs-color-foreground-base-primary);
transform-origin: var(--transform-origin);
@@ -29,7 +33,6 @@
.popup[data-starting-style],
.popup[data-ending-style] {
opacity: 0;
- transform: scale(0.9);
}
.arrow svg {
@@ -80,40 +83,50 @@
.viewport[data-activation-direction~="left"]
[data-current][data-starting-style] {
- translate: -30% 0;
opacity: 0;
}
.viewport[data-activation-direction~="right"]
[data-current][data-starting-style] {
- translate: 30% 0;
opacity: 0;
}
.viewport[data-activation-direction~="left"]
[data-previous][data-ending-style] {
- translate: 30% 0;
opacity: 0;
}
.viewport[data-activation-direction~="right"]
[data-previous][data-ending-style] {
- translate: -30% 0;
opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
- .positioner {
+ .popup {
+ transition:
+ opacity var(--animation-duration) var(--easing),
+ transform var(--animation-duration) var(--easing);
+ }
+
+ .popup[data-starting-style],
+ .popup[data-ending-style] {
+ transform: scale(0.9);
+ }
+
+ /* Viewport-morph mode: Base UI switches to inset positioning
+ (adaptiveOrigin) and drives --popup-width/--popup-height, so animating
+ inset + width/height IS the morph. Layout cost is confined to this popup
+ subtree for the duration of the morph. */
+ .positioner:has(.viewport) {
transition:
top var(--animation-duration) var(--easing),
left var(--animation-duration) var(--easing),
right var(--animation-duration) var(--easing),
bottom var(--animation-duration) var(--easing),
- transform var(--animation-duration) var(--easing),
opacity var(--animation-duration) var(--easing);
}
- .popup {
+ .popup:has(.viewport) {
transition:
width var(--animation-duration) var(--easing),
height var(--animation-duration) var(--easing),
@@ -127,4 +140,24 @@
translate var(--animation-duration) var(--easing),
opacity calc(var(--animation-duration) / 2) var(--easing);
}
+
+ .viewport[data-activation-direction~="left"]
+ [data-current][data-starting-style] {
+ translate: -30% 0;
+ }
+
+ .viewport[data-activation-direction~="right"]
+ [data-current][data-starting-style] {
+ translate: 30% 0;
+ }
+
+ .viewport[data-activation-direction~="left"]
+ [data-previous][data-ending-style] {
+ translate: 30% 0;
+ }
+
+ .viewport[data-activation-direction~="right"]
+ [data-previous][data-ending-style] {
+ translate: -30% 0;
+ }
}
diff --git a/packages/raystack/components/progress/progress-track.tsx b/packages/raystack/components/progress/progress-track.tsx
index 2f1e63af1..576d6bd5c 100644
--- a/packages/raystack/components/progress/progress-track.tsx
+++ b/packages/raystack/components/progress/progress-track.tsx
@@ -35,7 +35,10 @@ export function ProgressTrack({
return (
-
+
{children}
);
diff --git a/packages/raystack/components/progress/progress.module.css b/packages/raystack/components/progress/progress.module.css
index 622a2f03a..58258d304 100644
--- a/packages/raystack/components/progress/progress.module.css
+++ b/packages/raystack/components/progress/progress.module.css
@@ -5,12 +5,6 @@
width: 100%;
}
-.header {
- display: flex;
- align-items: center;
- justify-content: space-between;
-}
-
.label {
font-family: var(--rs-font-body);
font-size: var(--rs-font-size-mini);
@@ -42,6 +36,8 @@
.indicator {
height: 100%;
background-color: var(--rs-color-background-accent-emphasis);
+ transform: scaleX(calc(var(--rs-progress-percentage, 0) / 100));
+ transform-origin: left;
}
/* Circular variant — viewBox is 72×72, SVG scales to container size */
@@ -53,7 +49,10 @@
.circularSvg {
--rs-progress-track-size: var(--rs-space-2);
- --rs-progress-radius: calc((var(--rs-space-14) - var(--rs-progress-track-size) * 2) / 2);
+ --rs-progress-radius: calc(
+ (var(--rs-space-14) - var(--rs-progress-track-size) * 2) /
+ 2
+ );
--rs-progress-circumference: calc(2 * 3.14159265 * var(--rs-progress-radius));
width: var(--rs-space-14);
height: var(--rs-space-14);
@@ -86,11 +85,11 @@
@media (prefers-reduced-motion: no-preference) {
.indicator {
- transition: width 500ms;
+ transition: transform var(--rs-duration-moderate) linear;
}
.circularIndicatorCircle {
- transition: stroke-dashoffset 500ms;
+ transition: stroke-dashoffset var(--rs-duration-moderate) linear;
}
}
@@ -103,3 +102,50 @@
text-align: center;
white-space: nowrap;
}
+
+/* Indeterminate (value={null}). Static fallback: dimmed centered bar / partial arc. */
+.indicator[data-indeterminate] {
+ transform: scaleX(0.4);
+ transform-origin: center;
+ opacity: 0.6;
+}
+
+.circularSvg[data-indeterminate] .circularIndicatorCircle {
+ stroke-dashoffset: calc(var(--rs-progress-circumference) * 0.75);
+ opacity: 0.6;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .indicator[data-indeterminate] {
+ opacity: 1;
+ transform-origin: left;
+ transition: none;
+ animation: progress-indeterminate-sweep 1.2s var(--rs-ease-in-out) infinite;
+ }
+
+ .circularSvg[data-indeterminate] {
+ animation: progress-indeterminate-rotate 1.2s linear infinite;
+ }
+
+ .circularSvg[data-indeterminate] .circularIndicatorCircle {
+ opacity: 1;
+ }
+}
+
+@keyframes progress-indeterminate-sweep {
+ from {
+ transform: translateX(-45%) scaleX(0.4);
+ }
+ to {
+ transform: translateX(105%) scaleX(0.4);
+ }
+}
+
+@keyframes progress-indeterminate-rotate {
+ from {
+ transform: rotate(-90deg);
+ }
+ to {
+ transform: rotate(270deg);
+ }
+}
diff --git a/packages/raystack/components/radio/radio.module.css b/packages/raystack/components/radio/radio.module.css
index c509526d3..617706a64 100644
--- a/packages/raystack/components/radio/radio.module.css
+++ b/packages/raystack/components/radio/radio.module.css
@@ -20,6 +20,9 @@
justify-content: center;
cursor: pointer;
box-sizing: border-box;
+ transition:
+ background-color var(--rs-duration-fast) var(--rs-ease-out),
+ border-color var(--rs-duration-fast) var(--rs-ease-out);
}
/* Group-level size — low specificity via :where() so item-level size wins */
@@ -44,6 +47,28 @@
background: var(--rs-color-background-base-primary-hover);
}
+.radioitem:focus-visible {
+ outline: var(--rs-focus-ring);
+}
+
+/* Checked = accent fill: offset the ring so it clears it. */
+.radioitem[data-checked]:focus-visible {
+ outline-offset: var(--rs-focus-ring-offset-accent);
+}
+
+.radioitem:active:not([data-disabled]) {
+ transform: scale(var(--rs-scale-pressed-strong));
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .radioitem {
+ transition:
+ background-color var(--rs-duration-fast) var(--rs-ease-out),
+ border-color var(--rs-duration-fast) var(--rs-ease-out),
+ transform var(--rs-duration-press) var(--rs-ease-out);
+ }
+}
+
.radioitem[data-checked] {
border: 1px solid var(--rs-color-background-accent-emphasis);
background: var(--rs-color-background-accent-emphasis);
@@ -74,6 +99,26 @@
width: 100%;
height: 100%;
position: relative;
+ transition: opacity var(--rs-duration-fast) var(--rs-ease-out);
+}
+
+.indicator[data-starting-style],
+.indicator[data-ending-style],
+.indicator[data-unchecked] {
+ opacity: 0;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .indicator {
+ transition:
+ opacity var(--rs-duration-fast) var(--rs-ease-out),
+ transform var(--rs-duration-fast) var(--rs-ease-out);
+ }
+
+ .indicator[data-starting-style],
+ .indicator[data-ending-style] {
+ transform: scale(0.8);
+ }
}
.indicator::after {
@@ -96,7 +141,3 @@
width: var(--rs-radius-3);
height: var(--rs-radius-3);
}
-
-.radioitem[data-disabled] .indicator::after {
- background: var(--rs-color-foreground-base-emphasis);
-}
diff --git a/packages/raystack/components/radio/radio.tsx b/packages/raystack/components/radio/radio.tsx
index 87b4e0454..386c2a05d 100644
--- a/packages/raystack/components/radio/radio.tsx
+++ b/packages/raystack/components/radio/radio.tsx
@@ -69,7 +69,7 @@ function RadioItem({ className, size, ...props }: RadioItemProps) {
{...props}
className={radioVariants({ size, className })}
>
-
+
);
}
diff --git a/packages/raystack/components/scroll-area/scroll-area.module.css b/packages/raystack/components/scroll-area/scroll-area.module.css
index 10395305f..a2400ee9f 100644
--- a/packages/raystack/components/scroll-area/scroll-area.module.css
+++ b/packages/raystack/components/scroll-area/scroll-area.module.css
@@ -1,6 +1,8 @@
:root {
- --rs-scrollbar-size-default: var(--rs-space-2);
- --rs-scrollbar-size-hover: 6px;
+ --rs-scrollbar-size: 6px; /* track + hit area, and the expanded thumb */
+ --rs-scrollbar-thumb-rest: var(
+ --rs-space-2
+ ); /* 4px — visible thumb at rest */
}
.root {
@@ -25,42 +27,83 @@
background: transparent;
pointer-events: auto;
position: relative;
- transition: opacity 150ms ease-out;
+ transition: opacity var(--rs-duration-fast) var(--rs-ease-out);
}
+/* Constant track = constant hit area; the track is transparent so hover never
+ changes layout (no content reflow). The visible bar is the thumb's ::before,
+ which is thinner at rest and grows to fill the track on hover. */
.scrollbar[data-orientation="vertical"] {
- width: var(--rs-scrollbar-size-default);
-}
-
-.scrollbar[data-orientation="vertical"]:hover {
- width: var(--rs-scrollbar-size-hover);
+ width: var(--rs-scrollbar-size);
}
.scrollbar[data-orientation="horizontal"] {
flex-direction: column;
- height: var(--rs-scrollbar-size-default);
-}
-
-.scrollbar[data-orientation="horizontal"]:hover {
- height: var(--rs-scrollbar-size-hover);
+ height: var(--rs-scrollbar-size);
}
.thumb {
flex: 1;
- background: var(--rs-color-overlay-base-a5);
- border-radius: var(--rs-radius-2);
- transition: opacity 150ms ease-out;
- opacity: 1;
+ position: relative;
pointer-events: auto;
touch-action: none;
+ opacity: 1;
+}
+
+/* The drawn bar. The thumb stays the full-size hit area; this pseudo is what
+ you see. It's a pseudo because Base UI writes an inline transform on the
+ thumb to position it — so the thumb's own transform can't be used to size it,
+ and animating the thumb's transform would make it lag while scrolling. */
+.thumb::before {
+ content: "";
+ position: absolute;
+ background: var(--rs-color-overlay-base-a5);
+ border-radius: var(--rs-radius-2);
+ transition: background-color var(--rs-duration-fast) var(--rs-ease-out);
+}
+
+/* Vertical: bar hugs the outer (right) edge and grows inward. */
+.scrollbar[data-orientation="vertical"] .thumb::before {
+ top: 0;
+ bottom: 0;
+ right: 0;
+ width: var(--rs-scrollbar-thumb-rest);
+}
+
+.scrollbar[data-orientation="vertical"]:hover .thumb::before,
+.scrollbar[data-orientation="vertical"]:active .thumb::before {
+ width: var(--rs-scrollbar-size);
+}
+
+/* Horizontal: bar hugs the bottom edge and grows upward. */
+.scrollbar[data-orientation="horizontal"] .thumb::before {
+ left: 0;
+ right: 0;
+ bottom: 0;
+ height: var(--rs-scrollbar-thumb-rest);
+}
+
+.scrollbar[data-orientation="horizontal"]:hover .thumb::before,
+.scrollbar[data-orientation="horizontal"]:active .thumb::before {
+ height: var(--rs-scrollbar-size);
+}
+
+/* Deepen the bar one overlay step per state. Base UI exposes no data-pressed;
+ pointer capture holds :active for the whole drag. */
+.scrollbar:hover .thumb::before {
+ background: var(--rs-color-overlay-base-a6);
+}
+
+.scrollbar:active .thumb::before {
+ background: var(--rs-color-overlay-base-a7);
}
@media (prefers-reduced-motion: no-preference) {
- .scrollbar {
+ .thumb::before {
transition:
- width 150ms ease-out,
- height 150ms ease-out,
- opacity 150ms ease-out;
+ background-color var(--rs-duration-fast) var(--rs-ease-out),
+ width var(--rs-duration-fast) var(--rs-ease-out),
+ height var(--rs-duration-fast) var(--rs-ease-out);
}
}
diff --git a/packages/raystack/components/search/search.module.css b/packages/raystack/components/search/search.module.css
index 42a453902..83dbf1f1a 100644
--- a/packages/raystack/components/search/search.module.css
+++ b/packages/raystack/components/search/search.module.css
@@ -11,10 +11,23 @@
display: flex;
align-items: center;
justify-content: center;
+ opacity: 1;
+ visibility: visible;
}
+@media (prefers-reduced-motion: no-preference) {
+ .clearButtonWrapper {
+ transition:
+ opacity var(--rs-duration-fast) var(--rs-ease-out),
+ visibility var(--rs-duration-fast) var(--rs-ease-out);
+ }
+}
+
+/* visibility rides the transition so the button stays hittable only while
+ fading, then drops out of hit-testing, tab order and the a11y tree. */
.container:has(input:placeholder-shown) .clearButtonWrapper {
- display: none;
+ opacity: 0;
+ visibility: hidden;
}
.clearButton {
diff --git a/packages/raystack/components/select/__tests__/select.test.tsx b/packages/raystack/components/select/__tests__/select.test.tsx
index d9362f78f..ebf572071 100644
--- a/packages/raystack/components/select/__tests__/select.test.tsx
+++ b/packages/raystack/components/select/__tests__/select.test.tsx
@@ -1,4 +1,4 @@
-import { fireEvent, render, screen } from '@testing-library/react';
+import { fireEvent, render, screen, within } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';
import { Select } from '../select';
@@ -168,6 +168,36 @@ describe('Select', () => {
await flushMicrotasks();
expect(handleValueChange).toHaveBeenCalledWith([]);
});
+
+ it('renders a checkbox indicator that reflects selection state', async () => {
+ const user = userEvent.setup();
+ render();
+ await openSelect(user);
+
+ const options = screen.getAllByRole('option');
+ // One checkbox per item (the hidden native input is aria-hidden).
+ expect(within(options[1]).getAllByRole('checkbox')).toHaveLength(1);
+
+ const checkbox = within(options[1]).getByRole('checkbox');
+ expect(checkbox).toHaveAttribute('aria-checked', 'false');
+
+ await user.click(options[1]);
+ await flushMicrotasks();
+ expect(
+ within(screen.getAllByRole('option')[1]).getByRole('checkbox')
+ ).toHaveAttribute('aria-checked', 'true');
+ });
+
+ it('fires onValueChange exactly once per click on an option', async () => {
+ const handleValueChange = vi.fn();
+ render();
+ const user = userEvent.setup();
+ await openSelect(user);
+
+ await user.click(screen.getAllByRole('option')[1]);
+ await flushMicrotasks();
+ expect(handleValueChange).toHaveBeenCalledTimes(1);
+ });
});
describe('Keyboard Navigation', () => {
diff --git a/packages/raystack/components/select/select.module.css b/packages/raystack/components/select/select.module.css
index 5f68685e1..cb77edb4d 100644
--- a/packages/raystack/components/select/select.module.css
+++ b/packages/raystack/components/select/select.module.css
@@ -1,6 +1,5 @@
.positioner {
z-index: var(--rs-z-index-portal);
- background-color: var(--rs-color-background-base-primary);
}
.content {
@@ -14,12 +13,31 @@
box-shadow: var(--rs-shadow-soft);
border: 0.5px solid var(--rs-color-border-base-primary);
min-width: var(--anchor-width);
- transition: var(--rs-transition-interactive);
+ transform-origin: var(--transform-origin);
+ transition: opacity var(--rs-duration-fast) var(--rs-ease-out);
max-height: 320px;
position: relative;
overflow: auto;
}
+.content[data-starting-style],
+.content[data-ending-style] {
+ opacity: 0;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .content {
+ transition:
+ opacity var(--rs-duration-fast) var(--rs-ease-out),
+ transform var(--rs-duration-fast) var(--rs-ease-out);
+ }
+
+ .content[data-starting-style],
+ .content[data-ending-style] {
+ transform: scale(0.97);
+ }
+}
+
.menuitem {
display: flex;
align-items: center;
@@ -38,10 +56,6 @@
background: var(--rs-color-background-base-primary-hover);
}
-/* .content:not([data-multiselectable="true"]) .menuitem[data-selected] {
- background: var(--rs-color-background-neutral-secondary);
-} */
-
.menuitem[data-disabled] {
opacity: 0.5;
pointer-events: none;
@@ -75,7 +89,7 @@
@media (prefers-reduced-motion: no-preference) {
.trigger {
- transition: all 0.2s ease;
+ transition: var(--rs-transition-interactive);
}
}
@@ -134,11 +148,15 @@
color: var(--rs-color-foreground-base-primary);
}
+.trigger:active:not([data-disabled]):not(:disabled) {
+ background-color: var(--rs-color-background-neutral-secondary);
+}
+
.trigger:focus-visible {
- outline: 1px solid var(--rs-color-border-accent-emphasis);
+ outline: var(--rs-focus-ring);
}
-.trigger:focus {
+.trigger:focus:not(:focus-visible) {
outline: none;
}
@@ -154,6 +172,8 @@
letter-spacing: var(--rs-letter-spacing-small);
}
+/* Static up/down caret — the pop-up-button affordance ("pick a value").
+ It does not rotate on open; the menu appearing is the feedback. */
.triggerIcon {
width: var(--rs-space-5);
height: var(--rs-space-5);
@@ -162,19 +182,6 @@
color: var(--rs-color-foreground-base-secondary);
}
-.content[data-variant="text"] {
- margin-top: var(--rs-space-2);
- padding: var(--rs-space-1);
- border: 0.5px solid var(--rs-color-border-base-primary);
- box-shadow: var(--rs-shadow-soft);
-}
-
-.content[data-variant="text"] .menuitem {
- padding: var(--rs-space-1) var(--rs-space-2);
- min-height: var(--rs-space-7) !important;
- font-size: var(--rs-font-size-small);
-}
-
.triggerContent {
flex: 1;
overflow: hidden;
@@ -227,11 +234,6 @@
color: var(--rs-color-foreground-base-tertiary);
}
-.placeholder:hover,
-[data-placeholder]:hover {
- color: var(--rs-color-foreground-base-tertiary);
-}
-
.trigger[data-disabled] {
opacity: 0.5;
pointer-events: none;
diff --git a/packages/raystack/components/side-panel/side-panel.module.css b/packages/raystack/components/side-panel/side-panel.module.css
index f4526ee63..1fd61cc17 100644
--- a/packages/raystack/components/side-panel/side-panel.module.css
+++ b/packages/raystack/components/side-panel/side-panel.module.css
@@ -1,7 +1,7 @@
.side-panel {
width: 400px;
background: var(--rs-color-background-base-primary);
- overflow: scroll;
+ overflow: auto;
}
.side-panel-left {
diff --git a/packages/raystack/components/sidebar/__tests__/sidebar.test.tsx b/packages/raystack/components/sidebar/__tests__/sidebar.test.tsx
index 80361d48b..8a645d1f8 100644
--- a/packages/raystack/components/sidebar/__tests__/sidebar.test.tsx
+++ b/packages/raystack/components/sidebar/__tests__/sidebar.test.tsx
@@ -1,4 +1,5 @@
import { fireEvent, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';
import { Sidebar } from '../sidebar';
import styles from '../sidebar.module.css';
@@ -275,10 +276,11 @@ describe('Sidebar', () => {
expect(item).toHaveTextContent('Custom Item');
});
- it('hides text when collapsed and sets aria-label for screen readers', () => {
+ it('keeps text mounted and sets aria-label when collapsed', () => {
render();
- expect(screen.queryByText(DASHBOARD_ITEM_TEXT)).not.toBeInTheDocument();
+ // The label stays mounted so it can collapse with the sidebar (CSS hides
+ // it); the item is named via aria-label so screen readers still get it.
const dashboardLink = screen.getByRole('listitem', {
name: DASHBOARD_ITEM_TEXT
});
@@ -566,6 +568,35 @@ describe('Sidebar', () => {
expect(screen.getByText('Audit')).toBeInTheDocument();
});
+ it('marks the keyboard-focused More item with data-highlighted', async () => {
+ const user = userEvent.setup();
+ render(
+
+
+ Logs
+ Audit
+
+
+ );
+
+ const trigger = screen.getByText('More items').closest('button');
+ expect(trigger).toBeInTheDocument();
+ if (!trigger) return;
+ trigger.focus();
+ await user.keyboard('{Enter}');
+
+ const items = await screen.findAllByRole('menuitem');
+ expect(items.length).toBeGreaterThan(0);
+ await user.keyboard('{ArrowDown}');
+
+ // The CSS keys the keyboard highlight off [data-highlighted]; exactly
+ // one item should carry it as focus moves through the menu.
+ const highlighted = items.filter(el =>
+ el.hasAttribute('data-highlighted')
+ );
+ expect(highlighted).toHaveLength(1);
+ });
+
it('sets aria-label for collapsed More trigger', () => {
render(
diff --git a/packages/raystack/components/sidebar/sidebar-item.tsx b/packages/raystack/components/sidebar/sidebar-item.tsx
index 2c35e86a5..6f39e9da1 100644
--- a/packages/raystack/components/sidebar/sidebar-item.tsx
+++ b/packages/raystack/components/sidebar/sidebar-item.tsx
@@ -62,11 +62,11 @@ export function SidebarItem({
fallbackText={shouldShowFallback ? children : undefined}
className={classNames?.leadingIcon}
/>
- {!isCollapsed && (
-
- {children}
-
- )}
+ {/* Kept mounted so it can collapse with the sidebar (max-width → 0)
+ instead of popping out; CSS hides it when closed. */}
+
+ {children}
+
>
);
diff --git a/packages/raystack/components/sidebar/sidebar-more.tsx b/packages/raystack/components/sidebar/sidebar-more.tsx
index 00aded595..22a238fb1 100644
--- a/packages/raystack/components/sidebar/sidebar-more.tsx
+++ b/packages/raystack/components/sidebar/sidebar-more.tsx
@@ -50,11 +50,9 @@ export function SidebarMore({
leadingIcon={triggerIcon}
className={classNames?.leadingIcon}
/>
- {!isCollapsed && (
-
- {label}
-
- )}
+ {/* Kept mounted so it can collapse with the sidebar (max-width → 0)
+ instead of popping out; CSS hides it when closed. */}
+ {label}
);
diff --git a/packages/raystack/components/sidebar/sidebar.module.css b/packages/raystack/components/sidebar/sidebar.module.css
index b82b03cec..f8603a116 100644
--- a/packages/raystack/components/sidebar/sidebar.module.css
+++ b/packages/raystack/components/sidebar/sidebar.module.css
@@ -57,12 +57,18 @@
align-items: flex-start;
}
-.root[data-closed] .main {
- align-items: flex-start;
+.root [data-collapse-hidden] {
+ /* Cap width so the collapse animates to 0; 240px = the sidebar's open width,
+ so wider consumer content is already clipped by the sidebar itself. */
+ max-width: 240px;
}
.root[data-closed] [data-collapse-hidden] {
- display: none;
+ max-width: 0;
+ min-width: 0;
+ overflow: hidden;
+ opacity: 0;
+ visibility: hidden;
}
.footer {
@@ -82,12 +88,6 @@
color: var(--rs-color-foreground-base-secondary);
cursor: pointer;
text-decoration: none;
- transition:
- background-color 0.2s ease,
- color 0.2s ease,
- border-color 0.2s ease,
- box-shadow 0.2s ease,
- opacity 0.2s ease;
box-sizing: border-box;
}
@@ -98,10 +98,6 @@
text-align: left;
}
-.root[data-closed] .nav-item {
- justify-content: flex-start;
-}
-
.nav-item:hover {
background-color: var(--rs-color-background-base-primary-hover);
color: var(--rs-color-foreground-base-primary);
@@ -113,6 +109,11 @@
color: var(--rs-color-foreground-base-primary);
}
+.nav-item:active:not([data-disabled="true"]) {
+ background-color: var(--rs-color-background-neutral-secondary);
+ color: var(--rs-color-foreground-base-primary);
+}
+
/* keep item highlighted when menu is open */
.more-trigger[aria-expanded="true"] {
background-color: var(--rs-color-background-base-primary-hover);
@@ -153,7 +154,10 @@
text-align: left;
}
-.more-menu-item:hover {
+/* data-highlighted is the menu's arrow-key focus; keep it identical to hover
+ so pointer and keyboard highlight can't drift apart. */
+.more-menu-item:hover,
+.more-menu-item[data-highlighted] {
background-color: var(--rs-color-background-base-primary-hover);
color: var(--rs-color-foreground-base-primary);
}
@@ -201,13 +205,16 @@
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
- transition: opacity 0.2s ease;
+ /* Cap the width so the collapse can animate to 0 (width: auto can't
+ transition). 200px clears any real label; the sidebar caps them narrower. */
+ max-width: 200px;
}
.root[data-closed] .nav-text {
- width: 0;
+ max-width: 0;
+ min-width: 0;
opacity: 0;
- display: none;
+ visibility: hidden;
}
.resizeHandle {
@@ -216,8 +223,8 @@
right: 0;
width: var(--rs-space-2);
height: 100%;
- cursor: ew-resize;
- transition: background-color 0.2s ease;
+ cursor: pointer;
+ transition: background-color var(--rs-duration-normal) var(--rs-ease-out);
transform: translateX(50%);
}
@@ -229,10 +236,16 @@
background-color: var(--rs-color-border-base-primary);
}
+/* Inset ring: the handle straddles the sidebar edge (translateX(50%)), so an
+ outward ring would sit partly outside the sidebar and risk clipping. */
+.resizeHandle:focus-visible {
+ outline: var(--rs-focus-ring);
+ outline-offset: var(--rs-focus-ring-offset-inset);
+}
+
.root[data-position="right"] .resizeHandle {
left: 0;
right: auto;
- cursor: ew-resize;
transform: translateX(-50%);
}
@@ -247,10 +260,6 @@
margin-top: var(--rs-space-4);
}
-.root[data-closed] .nav-group {
- align-items: flex-start;
-}
-
.nav-group-header {
display: flex;
height: var(--rs-space-7);
@@ -299,12 +308,16 @@
text-align: left;
}
+.nav-group-trigger:focus-visible {
+ outline: var(--rs-focus-ring);
+ outline-offset: var(--rs-focus-ring-offset-inset);
+}
+
.nav-group-chevron {
width: var(--rs-space-4);
height: var(--rs-space-4);
color: var(--rs-color-foreground-base-secondary);
transform: rotate(-90deg);
- transition: transform 0.2s ease;
flex-shrink: 0;
}
@@ -319,7 +332,7 @@
padding: var(--rs-space-2) var(--rs-space-3);
color: var(--rs-color-foreground-base-secondary);
opacity: 0;
- transition: opacity 0.2s ease;
+ transition: opacity var(--rs-duration-normal) var(--rs-ease-out);
}
.nav-group-header:hover .nav-group-trailing-icon {
@@ -340,7 +353,6 @@
.nav-group-panel {
height: var(--accordion-panel-height);
overflow: hidden;
- transition: height 0.2s ease;
}
.nav-group-panel[data-starting-style],
@@ -381,11 +393,29 @@
}
@media (prefers-reduced-motion: no-preference) {
- .root,
- .nav-item,
- .nav-text,
- .resizeHandle,
+ .root {
+ transition: width var(--rs-duration-normal) var(--rs-ease-out);
+ }
+
+ .nav-group-chevron {
+ transition: transform var(--rs-duration-normal) var(--rs-ease-out);
+ }
+
.nav-group-panel {
- transition: width 0.2s ease;
+ transition: height var(--rs-duration-normal) var(--rs-ease-out);
+ }
+
+ .nav-text {
+ transition:
+ max-width var(--rs-duration-normal) var(--rs-ease-out),
+ opacity var(--rs-duration-normal) var(--rs-ease-out),
+ visibility var(--rs-duration-normal) var(--rs-ease-out);
+ }
+
+ .root [data-collapse-hidden] {
+ transition:
+ max-width var(--rs-duration-normal) var(--rs-ease-out),
+ opacity var(--rs-duration-normal) var(--rs-ease-out),
+ visibility var(--rs-duration-normal) var(--rs-ease-out);
}
}
diff --git a/packages/raystack/components/skeleton/skeleton.module.css b/packages/raystack/components/skeleton/skeleton.module.css
index 9467e91b0..2b4fd3458 100644
--- a/packages/raystack/components/skeleton/skeleton.module.css
+++ b/packages/raystack/components/skeleton/skeleton.module.css
@@ -37,6 +37,6 @@
@media (prefers-reduced-motion: no-preference) {
.animate::after {
- animation: shimmer var(--skeleton-duration) infinite;
+ animation: shimmer var(--skeleton-duration) linear infinite;
}
}
diff --git a/packages/raystack/components/slider/slider.module.css b/packages/raystack/components/slider/slider.module.css
index 40b98b19b..8a237ce0d 100644
--- a/packages/raystack/components/slider/slider.module.css
+++ b/packages/raystack/components/slider/slider.module.css
@@ -49,12 +49,13 @@
outline: none;
}
-.thumb:focus-visible {
+.thumb :focus-visible {
outline: none;
}
-.thumb:hover {
- border-color: var(--rs-color-border-accent-emphasis-hover);
+.thumb:has(:focus-visible) .thumbLarge,
+.thumb:has(:focus-visible) .thumbSmall {
+ outline: var(--rs-focus-ring);
}
.thumbLarge {
@@ -92,6 +93,23 @@
background-color: var(--rs-color-background-base-secondary);
}
+/* Grabbing: the thumb grows slightly and lifts. Scale lives on the child
+ so the thumb's track position (set inline by Base UI) is never animated. */
+.thumb:active .thumbLarge,
+.thumb:active .thumbSmall {
+ transform: scale(1.08);
+ box-shadow: var(--rs-shadow-lifted);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .thumbLarge,
+ .thumbSmall {
+ transition:
+ transform var(--rs-duration-press) var(--rs-ease-out),
+ box-shadow var(--rs-duration-press) var(--rs-ease-out);
+ }
+}
+
.label {
position: absolute;
top: calc(-1 * (var(--rs-space-8) + 1px));
diff --git a/packages/raystack/components/spinner/spinner.module.css b/packages/raystack/components/spinner/spinner.module.css
index 029907e55..13c2a3172 100644
--- a/packages/raystack/components/spinner/spinner.module.css
+++ b/packages/raystack/components/spinner/spinner.module.css
@@ -16,41 +16,49 @@
.pole:nth-child(1) {
transform: rotate(0deg);
animation-delay: 0s;
+ opacity: 0.8;
}
.pole:nth-child(2) {
transform: rotate(-45deg);
- animation-delay: -0.15s;
+ animation-delay: -0.1125s;
+ opacity: 0.7;
}
.pole:nth-child(3) {
transform: rotate(-90deg);
- animation-delay: -0.3s;
+ animation-delay: -0.225s;
+ opacity: 0.6;
}
.pole:nth-child(4) {
transform: rotate(-135deg);
- animation-delay: -0.45s;
+ animation-delay: -0.3375s;
+ opacity: 0.5;
}
.pole:nth-child(5) {
transform: rotate(-180deg);
- animation-delay: -0.6s;
+ animation-delay: -0.45s;
+ opacity: 0.4;
}
.pole:nth-child(6) {
transform: rotate(-225deg);
- animation-delay: -0.75s;
+ animation-delay: -0.5625s;
+ opacity: 0.3;
}
.pole:nth-child(7) {
transform: rotate(-270deg);
- animation-delay: -0.9s;
+ animation-delay: -0.675s;
+ opacity: 0.2;
}
.pole:nth-child(8) {
transform: rotate(-315deg);
- animation-delay: -1.05s;
+ animation-delay: -0.7875s;
+ opacity: 0.1;
}
@keyframes spin {
@@ -90,7 +98,7 @@
@media (prefers-reduced-motion: no-preference) {
.pole {
- animation: spin 1.2s linear infinite;
+ animation: spin 0.9s linear infinite;
}
}
diff --git a/packages/raystack/components/switch/switch.module.css b/packages/raystack/components/switch/switch.module.css
index edde474bf..b50da087a 100644
--- a/packages/raystack/components/switch/switch.module.css
+++ b/packages/raystack/components/switch/switch.module.css
@@ -9,6 +9,16 @@
cursor: pointer;
background: var(--rs-color-background-neutral-secondary);
border-radius: var(--rs-radius-full);
+ transition: background-color var(--rs-duration-normal) var(--rs-ease-out);
+}
+
+.switch:focus-visible {
+ outline: var(--rs-focus-ring);
+}
+
+/* Checked = accent track: offset the ring so it clears it. */
+.switch[data-checked]:focus-visible {
+ outline-offset: var(--rs-focus-ring-offset-accent);
}
.switch.large {
@@ -55,7 +65,7 @@
@media (prefers-reduced-motion: no-preference) {
.thumb {
- transition: transform 200ms ease-in-out;
+ transition: transform var(--rs-duration-normal) var(--rs-ease-in-out);
}
}
@@ -73,3 +83,20 @@
.switch.small[data-checked] .thumb {
transform: translateX(var(--rs-space-4));
}
+
+/* Pressed: the thumb stretches toward the track center (iOS behavior).
+ transform-origin only affects the scale; the translateX values must
+ exactly mirror the resting rules above. */
+.switch:active:not([data-disabled]) .thumb {
+ transform: translateX(var(--rs-space-1)) scaleX(1.15);
+ transform-origin: left center;
+}
+
+.switch[data-checked]:active:not([data-disabled]) .thumb {
+ transform: translateX(var(--rs-space-5)) scaleX(1.15);
+ transform-origin: right center;
+}
+
+.switch.small[data-checked]:active:not([data-disabled]) .thumb {
+ transform: translateX(var(--rs-space-4)) scaleX(1.15);
+}
diff --git a/packages/raystack/components/table/table.module.css b/packages/raystack/components/table/table.module.css
index 93a463865..a7eb49e84 100644
--- a/packages/raystack/components/table/table.module.css
+++ b/packages/raystack/components/table/table.module.css
@@ -6,6 +6,8 @@
overflow: visible;
color: var(--rs-color-foreground-base-primary);
border-collapse: collapse;
+ /* Align digits across rows/columns for numeric data. */
+ font-variant-numeric: tabular-nums;
}
.header {
@@ -66,3 +68,32 @@
line-height: var(--rs-line-height-small);
letter-spacing: var(--rs-letter-spacing-small);
}
+
+/* Row state hooks. `.row` is applied by Table.Row; visuals only kick in when
+ the consumer sets data-state="selected" or the `interactive` prop. Cells
+ inherit so the row color shows through the opaque .cell background. */
+.row {
+ background: var(--rs-color-background-base-primary);
+}
+
+.row > .cell {
+ background: inherit;
+}
+
+.row-interactive {
+ cursor: pointer;
+}
+
+.row-interactive:hover {
+ background: var(--rs-color-background-base-primary-hover);
+}
+
+.row-interactive:active {
+ background: var(--rs-color-background-neutral-secondary);
+}
+
+.row[data-state="selected"],
+.row[data-state="selected"]:hover,
+.row[data-state="selected"]:active {
+ background: var(--rs-color-background-accent-primary);
+}
diff --git a/packages/raystack/components/table/table.tsx b/packages/raystack/components/table/table.tsx
index a92065fd4..ded5b687e 100644
--- a/packages/raystack/components/table/table.tsx
+++ b/packages/raystack/components/table/table.tsx
@@ -25,8 +25,19 @@ function TableBody({ ...props }: ComponentProps<'tbody'>) {
}
TableBody.displayName = 'Table.Body';
-function TableRow({ ...props }: ComponentProps<'tr'>) {
- return ;
+const row = cva(styles['row'], {
+ variants: {
+ interactive: {
+ true: styles['row-interactive']
+ }
+ }
+});
+function TableRow({
+ className,
+ interactive,
+ ...props
+}: ComponentProps<'tr'> & VariantProps) {
+ return ;
}
TableRow.displayName = 'Table.Row';
diff --git a/packages/raystack/components/tabs/tabs.module.css b/packages/raystack/components/tabs/tabs.module.css
index b8d447a1f..f8f969607 100644
--- a/packages/raystack/components/tabs/tabs.module.css
+++ b/packages/raystack/components/tabs/tabs.module.css
@@ -50,7 +50,7 @@
color: var(--rs-color-foreground-base-secondary);
cursor: pointer;
border-radius: var(--rs-radius-2);
- transition: color 0.2s ease;
+ transition: color var(--rs-duration-normal) var(--rs-ease-out);
flex: 1;
text-align: center;
text-overflow: ellipsis;
@@ -79,6 +79,24 @@
pointer-events: none;
}
+.trigger:focus-visible {
+ outline: var(--rs-focus-ring);
+}
+
+/* Pressed: the label dips inward. No background box on any variant, so the
+ press never competes with the indicator chip that glides in on release. */
+.trigger:active:not([data-disabled]):not([data-active]) {
+ transform: scale(var(--rs-scale-pressed));
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .trigger {
+ transition:
+ color var(--rs-duration-normal) var(--rs-ease-out),
+ transform var(--rs-duration-press) var(--rs-ease-out);
+ }
+}
+
.trigger-icon {
display: inline-flex;
width: var(--rs-space-5);
@@ -94,8 +112,9 @@
background-color: var(--rs-color-background-base-primary);
border-radius: var(--rs-radius-2);
box-shadow: var(--rs-shadow-feather);
- top: var(--active-tab-top, 0);
- left: var(--active-tab-left, 0);
+ top: 0;
+ left: 0;
+ translate: var(--active-tab-left, 0) var(--active-tab-top, 0);
width: var(--active-tab-width, 0);
height: var(--active-tab-height, 0);
z-index: 0;
@@ -104,10 +123,9 @@
@media (prefers-reduced-motion: no-preference) {
.indicator {
transition:
- top 0.25s cubic-bezier(0.4, 0, 0.2, 1),
- left 0.25s cubic-bezier(0.4, 0, 0.2, 1),
- width 0.25s cubic-bezier(0.4, 0, 0.2, 1),
- height 0.25s cubic-bezier(0.4, 0, 0.2, 1);
+ translate var(--rs-duration-moderate) var(--rs-ease-in-out),
+ width var(--rs-duration-moderate) var(--rs-ease-in-out),
+ height var(--rs-duration-moderate) var(--rs-ease-in-out);
}
}
@@ -127,30 +145,39 @@
box-shadow: none;
}
-.variant-standalone .indicator,
+/* Standalone: the indicator is the active chip fill, gliding between tabs. */
+.variant-standalone .indicator {
+ background-color: var(--rs-color-background-neutral-primary);
+ border: 0.5px solid var(--rs-color-border-base-secondary);
+ box-sizing: border-box;
+ box-shadow: none;
+}
+
+/* Plain: the indicator is a 1px underline sliding along the bottom edge. */
.variant-plain .indicator {
- display: none;
+ height: 1px;
+ translate: var(--active-tab-left, 0px)
+ calc(var(--active-tab-top, 0px) + var(--active-tab-height, 0px) - 1px);
+ background-color: var(--rs-color-border-base-emphasis);
+ border-radius: 0;
+ box-shadow: none;
}
/* Standalone variant: chip-like tabs with independent borders */
.variant-standalone .trigger {
/* Chip look: no outer padding and visible border */
border: 0.5px solid var(--rs-color-border-base-primary);
- background: transparent;
}
.variant-standalone .trigger[data-active] {
- background: var(--rs-color-background-neutral-primary);
- border: 0.5px solid var(--rs-color-border-base-secondary);
+ border-color: transparent;
}
/* Plain variant: text-like tabs with larger gaps */
.variant-plain .list {
gap: var(--rs-space-6);
- background-color: transparent;
padding: 0;
border-radius: 0;
- box-shadow: none;
justify-content: center;
}
@@ -160,7 +187,3 @@
/* Reserve underline space to prevent layout/typography shifting when active */
border-bottom: 1px solid transparent;
}
-
-.variant-plain .trigger[data-active] {
- border-bottom-color: var(--rs-color-border-base-emphasis);
-}
\ No newline at end of file
diff --git a/packages/raystack/components/text-area/text-area.module.css b/packages/raystack/components/text-area/text-area.module.css
index 20c9523d7..a329e7cf5 100644
--- a/packages/raystack/components/text-area/text-area.module.css
+++ b/packages/raystack/components/text-area/text-area.module.css
@@ -16,15 +16,10 @@
@media (prefers-reduced-motion: no-preference) {
.textarea {
- transition: all 0.2s ease;
+ transition: var(--rs-transition-interactive);
}
}
-.textarea:hover {
- border-color: var(--rs-color-border-base-focus);
- background: var(--rs-color-background-base-primary-hover);
-}
-
.textarea:focus:not(:disabled) {
border-color: var(--rs-color-border-accent-emphasis);
background: var(--rs-color-background-base-primary);
@@ -39,8 +34,7 @@
}
.textarea:disabled,
-.textarea[data-disabled],
-.disabled {
+.textarea[data-disabled] {
opacity: 0.5;
cursor: not-allowed;
}
@@ -53,10 +47,6 @@
border-color: var(--rs-color-border-danger-emphasis);
}
-.textarea[data-invalid]:hover {
- border-color: var(--rs-color-border-danger-emphasis-hover);
-}
-
.textarea[data-invalid]:focus {
border-color: var(--rs-color-border-danger-emphasis-hover);
}
@@ -71,19 +61,15 @@
}
/* Variant styles */
-.variant-default {
- border: 0.5px solid var(--rs-color-border-base-tertiary);
-}
-
.variant-borderless {
border-color: transparent;
}
-.variant-borderless:hover {
- border-color: transparent;
-}
-
.variant-borderless:focus:not(:disabled) {
border-color: transparent;
outline: none;
}
+
+.variant-borderless:focus-visible:not(:disabled) {
+ box-shadow: var(--rs-focus-ring-shadow);
+}
diff --git a/packages/raystack/components/text/__tests__/text.test.tsx b/packages/raystack/components/text/__tests__/text.test.tsx
index 725e7bf5f..b02fcfc10 100644
--- a/packages/raystack/components/text/__tests__/text.test.tsx
+++ b/packages/raystack/components/text/__tests__/text.test.tsx
@@ -169,7 +169,7 @@ describe('Text', () => {
expect(container.firstChild).toHaveClass(styles['text-strike-through']);
expect(container.firstChild).toHaveClass(styles['text-underline']);
expect(container.firstChild).toHaveClass(
- styles['text-italic-strike-through']
+ styles['text-underline-strike-through']
);
});
});
diff --git a/packages/raystack/components/text/text.module.css b/packages/raystack/components/text/text.module.css
index eaa577886..755e1d77b 100644
--- a/packages/raystack/components/text/text.module.css
+++ b/packages/raystack/components/text/text.module.css
@@ -138,7 +138,7 @@
text-decoration-line: line-through;
}
-.text-italic-strike-through {
+.text-underline-strike-through {
text-decoration-line: underline line-through;
}
diff --git a/packages/raystack/components/text/text.tsx b/packages/raystack/components/text/text.tsx
index 63470d466..fcd72a99f 100644
--- a/packages/raystack/components/text/text.tsx
+++ b/packages/raystack/components/text/text.tsx
@@ -62,7 +62,7 @@ export const textVariants = cva(styles.text, {
{
strikeThrough: true,
underline: true,
- className: styles['text-italic-strike-through']
+ className: styles['text-underline-strike-through']
}
]
});
diff --git a/packages/raystack/components/theme-provider/__tests__/theme.test.tsx b/packages/raystack/components/theme-provider/__tests__/theme.test.tsx
index 3484fc2a9..18aba7ff8 100644
--- a/packages/raystack/components/theme-provider/__tests__/theme.test.tsx
+++ b/packages/raystack/components/theme-provider/__tests__/theme.test.tsx
@@ -5,6 +5,7 @@ import {
screen,
waitFor
} from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { useState } from 'react';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { ThemeSwitcher } from '../switcher';
@@ -819,16 +820,16 @@ describe('ThemeSwitcher', () => {
expect(icon).toBeInTheDocument();
});
- it('applies custom size', () => {
+ it('applies custom size to the button box', () => {
render(
);
- const icon = document.querySelector('svg');
- expect(icon).toHaveAttribute('width', '40');
- expect(icon).toHaveAttribute('height', '40');
+ // size drives the button box; the icon fills it via IconButton's CSS.
+ const button = document.querySelector('button');
+ expect(button).toHaveStyle({ width: '40px', height: '40px' });
});
});
@@ -858,4 +859,43 @@ describe('ThemeSwitcher', () => {
expect(localStorageMock.setItem).toHaveBeenCalledWith('theme', 'light');
});
});
+
+ describe('Accessibility', () => {
+ it('renders a button with an accessible name', () => {
+ render(
+
+
+
+ );
+
+ expect(
+ screen.getByRole('button', { name: /switch to dark theme/i })
+ ).toBeInTheDocument();
+ });
+
+ it('toggles the theme with Enter and Space', async () => {
+ const user = userEvent.setup();
+
+ render(
+
+
+
+ );
+
+ const button = screen.getByRole('button', { name: /theme/i });
+ button.focus();
+
+ await user.keyboard('{Enter}');
+ expect(localStorageMock.setItem).toHaveBeenLastCalledWith(
+ 'theme',
+ 'dark'
+ );
+
+ await user.keyboard(' ');
+ expect(localStorageMock.setItem).toHaveBeenLastCalledWith(
+ 'theme',
+ 'light'
+ );
+ });
+ });
});
diff --git a/packages/raystack/components/theme-provider/switcher.tsx b/packages/raystack/components/theme-provider/switcher.tsx
index 6498ac42a..effb175bd 100644
--- a/packages/raystack/components/theme-provider/switcher.tsx
+++ b/packages/raystack/components/theme-provider/switcher.tsx
@@ -2,7 +2,7 @@
import { MoonIcon, SunIcon } from '@radix-ui/react-icons';
-import { Box } from '../box';
+import { IconButton } from '../icon-button';
import { useTheme } from './theme';
enum Theme {
@@ -11,19 +11,27 @@ enum Theme {
}
type Props = { size?: number };
+
export function ThemeSwitcher({ size = 30, ...props }: Props) {
const { theme, setTheme } = useTheme();
+ const isDark = theme === Theme.DARK;
+
const onClickHandler = () => {
- setTheme(theme === Theme.DARK ? Theme.LIGHT : Theme.DARK);
+ setTheme(isDark ? Theme.LIGHT : Theme.DARK);
};
return (
-
- {theme === Theme.DARK ? (
-
- ) : (
-
- )}
-
+
+ {/* size drives the button box; IconButton's CSS sizes the icon to fill
+ the padded content area, so the icons don't set their own dimensions. */}
+ {isDark ? : }
+
);
}
+
+ThemeSwitcher.displayName = 'ThemeSwitcher';
diff --git a/packages/raystack/components/toast/toast.module.css b/packages/raystack/components/toast/toast.module.css
index c41c10948..3c531dbdc 100644
--- a/packages/raystack/components/toast/toast.module.css
+++ b/packages/raystack/components/toast/toast.module.css
@@ -66,7 +66,7 @@
cursor: default;
z-index: calc(1000 - var(--toast-index));
- transition: opacity 500ms;
+ transition: opacity var(--rs-duration-slow) var(--rs-ease-out);
}
/* ===== Vertical position: bottom ===== */
@@ -167,6 +167,10 @@
transform: translateY(calc(-100% - var(--rs-space-7)));
}
+.root[data-starting-style] {
+ opacity: 0;
+}
+
/* ===== Limited state ===== */
.root[data-limited] {
opacity: 0;
@@ -207,7 +211,7 @@
/* ===== Content (stacking visibility) ===== */
.content {
- transition: opacity 250ms;
+ transition: opacity var(--rs-duration-moderate) var(--rs-ease-out);
}
.content[data-behind] {
@@ -294,8 +298,13 @@
@media (prefers-reduced-motion: no-preference) {
.root {
transition:
- transform 500ms cubic-bezier(0.22, 1, 0.36, 1),
- opacity 500ms,
- height 150ms;
+ transform var(--rs-duration-slow) var(--rs-ease-out),
+ opacity var(--rs-duration-slow) var(--rs-ease-out),
+ height var(--rs-duration-fast) var(--rs-ease-out);
}
}
+
+/* Track the finger 1:1 while dragging; transitions resume on release. */
+.root[data-swiping] {
+ transition: none;
+}
diff --git a/packages/raystack/components/toggle/toggle.module.css b/packages/raystack/components/toggle/toggle.module.css
index 7cc8a4d12..158470ebd 100644
--- a/packages/raystack/components/toggle/toggle.module.css
+++ b/packages/raystack/components/toggle/toggle.module.css
@@ -6,7 +6,7 @@
color: var(--rs-color-foreground-base-secondary);
cursor: pointer;
padding: var(--rs-space-1);
- transition: color 0.2s ease;
+ transition: color var(--rs-duration-normal) var(--rs-ease-out);
background-color: var(--rs-color-background-base-secondary);
border: 0.5px solid var(--rs-color-border-base-primary);
border-radius: var(--rs-radius-1);
@@ -24,21 +24,78 @@
height: 100%;
}
-.toggle:hover,
+@media (prefers-reduced-motion: no-preference) {
+ .toggleContent {
+ transition:
+ background-color var(--rs-duration-fast) var(--rs-ease-out),
+ box-shadow var(--rs-duration-fast) var(--rs-ease-out);
+ }
+
+ .group .toggle {
+ /* color entry matches .toggle's own transition (line 9) so both are
+ driven by the same token */
+ transition:
+ color var(--rs-duration-normal) var(--rs-ease-out),
+ background-color var(--rs-duration-fast) var(--rs-ease-out),
+ box-shadow var(--rs-duration-fast) var(--rs-ease-out);
+ }
+}
+
+.toggle:hover {
+ color: var(--rs-color-foreground-base-primary);
+}
+.toggle:hover .toggleContent {
+ background-color: var(--rs-color-background-base-primary-hover);
+}
+
.toggle[data-pressed] {
color: var(--rs-color-foreground-base-primary);
}
-.toggle:hover .toggleContent,
.toggle[data-pressed] .toggleContent {
- background-color: var(--rs-color-background-base-primary-hover);
+ background-color: var(--rs-color-background-neutral-secondary);
+ box-shadow: var(--rs-shadow-inset);
+}
+.toggle[data-pressed]:hover .toggleContent {
+ background-color: var(--rs-color-background-neutral-secondary-hover);
}
.toggle[data-disabled] {
opacity: 0.5;
- pointer-events: none;
+ pointer-events: initial;
cursor: not-allowed;
}
+.toggle[data-disabled]:not([data-pressed]):hover {
+ color: var(--rs-color-foreground-base-secondary);
+}
+
+.toggle[data-disabled]:not([data-pressed]):hover .toggleContent {
+ background-color: transparent;
+ box-shadow: none;
+}
+
+/* A disabled toggle must not react to hover even when it is on (pressed):
+ hold the pressed resting fill instead of the hover-deepened one. */
+.toggle[data-disabled][data-pressed]:hover .toggleContent {
+ background-color: var(--rs-color-background-neutral-secondary);
+}
+
+.group .toggle[data-disabled]:not([data-pressed]):hover {
+ background-color: transparent;
+ box-shadow: none;
+}
+
+.toggle:focus-visible {
+ outline: var(--rs-focus-ring);
+}
+
+/* Inside a group the container clips overflow and items sit 1px apart, and the
+ toggle has its own border: hug it with the ring so it stays inside the item
+ and doesn't read as two separate lines. */
+.group .toggle:focus-visible {
+ outline-offset: var(--rs-focus-ring-offset-inset-border);
+}
+
.size-1 {
width: var(--rs-space-4);
height: var(--rs-space-4);
@@ -79,8 +136,7 @@
}
.group .toggle:hover {
- background-color: var(--rs-color-background-base-primary);
- box-shadow: var(--rs-shadow-inset);
+ background-color: var(--rs-color-background-base-primary-hover);
}
.group .toggle[data-pressed] {
@@ -88,6 +144,15 @@
box-shadow: var(--rs-shadow-inset);
}
+/* In a group the container carries the pressed fill, so keep the inner content
+ transparent — otherwise the standalone content fill paints a second, darker
+ box inside the 2px padding (a halo) and doubles the inset shadow. */
+.group .toggle[data-pressed] .toggleContent,
+.group .toggle[data-pressed]:hover .toggleContent {
+ background-color: transparent;
+ box-shadow: none;
+}
+
/* Vertical group */
.group[data-orientation="vertical"] {
flex-direction: column;
@@ -95,6 +160,6 @@
.group[data-disabled] {
opacity: 0.5;
- pointer-events: none;
+ pointer-events: initial;
cursor: not-allowed;
}
diff --git a/packages/raystack/components/toolbar/toolbar.module.css b/packages/raystack/components/toolbar/toolbar.module.css
index e9b76ca5f..02b1b44af 100644
--- a/packages/raystack/components/toolbar/toolbar.module.css
+++ b/packages/raystack/components/toolbar/toolbar.module.css
@@ -37,5 +37,5 @@
}
.group {
padding: 0;
- background-color: none;
+ background-color: transparent;
}
diff --git a/packages/raystack/components/tooltip/tooltip.module.css b/packages/raystack/components/tooltip/tooltip.module.css
index 545d1a8ee..8e8c3d15e 100644
--- a/packages/raystack/components/tooltip/tooltip.module.css
+++ b/packages/raystack/components/tooltip/tooltip.module.css
@@ -1,7 +1,3 @@
-.trigger {
- width: fit-content;
- display: flex;
-}
.positioner {
z-index: var(--rs-z-index-portal);
}
@@ -13,7 +9,7 @@
border-radius: var(--rs-radius-2);
background: var(--rs-color-background-base-primary);
border: 0.5px solid var(--rs-color-border-base-primary);
- box-shadow: var(--rs-shadow-lifted);
+ box-shadow: var(--rs-shadow-soft);
color: var(--rs-color-foreground-base-primary);
font-size: var(--rs-font-size-mini);
font-weight: var(--rs-font-weight-medium);
@@ -21,7 +17,7 @@
letter-spacing: var(--rs-letter-spacing-mini);
width: fit-content;
max-width: 400px;
- transform-origin: var(--transform-origin);
+ transition: opacity var(--rs-duration-fast) var(--rs-ease-out);
}
.arrow svg {
@@ -55,106 +51,68 @@
transform: translateY(-50%) translateX(-100%) rotate(90deg);
}
-@keyframes fade {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
+.content[data-starting-style],
+.content[data-ending-style] {
+ opacity: 0;
}
-@keyframes slideUpAndFade {
- from {
- opacity: 0;
- transform: translateY(var(--rs-space-1));
- }
+
+/* Base UI sets data-instant (focus/click/dismiss and grouped-trigger moves):
+ skip the animation but keep the transition machinery. */
+.content[data-instant] {
+ transition-duration: 0ms;
}
-@keyframes slideRightAndFade {
- from {
- opacity: 0;
- transform: translateX(calc(-1 * var(--rs-space-1)));
+
+@media (prefers-reduced-motion: no-preference) {
+ .content {
+ transition:
+ opacity var(--rs-duration-fast) var(--rs-ease-out),
+ transform var(--rs-duration-fast) var(--rs-ease-out);
}
-}
-@keyframes slideDownAndFade {
- from {
- opacity: 0;
+ /* Per-side directional offset — same vectors as the old keyframes */
+ .content[data-side="top"][data-starting-style],
+ .content[data-side="top"][data-ending-style] {
transform: translateY(calc(-1 * var(--rs-space-1)));
}
-}
-@keyframes slideLeftAndFade {
- from {
- opacity: 0;
+ .content[data-side="right"][data-starting-style],
+ .content[data-side="right"][data-ending-style] {
transform: translateX(var(--rs-space-1));
}
-}
-@keyframes slideDownRightAndFade {
- from {
- opacity: 0;
+ .content[data-side="bottom"][data-starting-style],
+ .content[data-side="bottom"][data-ending-style] {
+ transform: translateY(var(--rs-space-1));
+ }
+
+ .content[data-side="left"][data-starting-style],
+ .content[data-side="left"][data-ending-style] {
+ transform: translateX(calc(-1 * var(--rs-space-1)));
+ }
+
+ /* Aligned variants get a diagonal offset — same vectors as before.
+ Higher specificity (0,4,0) than the side rules (0,3,0), so they win
+ when data-align is start/end. */
+ .content[data-side="top"][data-align="start"][data-starting-style],
+ .content[data-side="top"][data-align="start"][data-ending-style] {
transform: translate(
calc(-1 * var(--rs-space-1)),
calc(-1 * var(--rs-space-1))
);
}
-}
-@keyframes slideDownLeftAndFade {
- from {
- opacity: 0;
+ .content[data-side="top"][data-align="end"][data-starting-style],
+ .content[data-side="top"][data-align="end"][data-ending-style] {
transform: translate(var(--rs-space-1), calc(-1 * var(--rs-space-1)));
}
-}
-@keyframes slideUpRightAndFade {
- from {
- opacity: 0;
+ .content[data-side="bottom"][data-align="start"][data-starting-style],
+ .content[data-side="bottom"][data-align="start"][data-ending-style] {
transform: translate(calc(-1 * var(--rs-space-1)), var(--rs-space-1));
}
-}
-@keyframes slideUpLeftAndFade {
- from {
- opacity: 0;
+ .content[data-side="bottom"][data-align="end"][data-starting-style],
+ .content[data-side="bottom"][data-align="end"][data-ending-style] {
transform: translate(var(--rs-space-1), var(--rs-space-1));
}
}
-
-@media (prefers-reduced-motion: no-preference) {
- .content {
- animation-duration: 400ms;
- }
-
- .content[data-open][data-side="top"]:not([data-instant]) {
- animation-name: slideDownAndFade;
- }
-
- .content[data-open][data-side="right"]:not([data-instant]) {
- animation-name: slideLeftAndFade;
- }
-
- .content[data-open][data-side="bottom"]:not([data-instant]) {
- animation-name: slideUpAndFade;
- }
-
- .content[data-open][data-side="left"]:not([data-instant]) {
- animation-name: slideRightAndFade;
- }
-
- .content[data-side="top"][data-align="start"]:not([data-instant]) {
- animation-name: slideDownRightAndFade;
- }
-
- .content[data-side="top"][data-align="end"]:not([data-instant]) {
- animation-name: slideDownLeftAndFade;
- }
-
- .content[data-side="bottom"][data-align="start"]:not([data-instant]) {
- animation-name: slideUpRightAndFade;
- }
-
- .content[data-side="bottom"][data-align="end"]:not([data-instant]) {
- animation-name: slideUpLeftAndFade;
- }
-}
diff --git a/packages/raystack/components/tour-beta/tour.module.css b/packages/raystack/components/tour-beta/tour.module.css
index aae323601..af1c792ec 100644
--- a/packages/raystack/components/tour-beta/tour.module.css
+++ b/packages/raystack/components/tour-beta/tour.module.css
@@ -10,7 +10,7 @@
@media (prefers-reduced-motion: no-preference) {
.overlay {
- animation: tour-fade-in 250ms ease;
+ animation: tour-fade-in var(--rs-duration-moderate) var(--rs-ease-out);
}
}
@@ -31,11 +31,11 @@
@media (prefers-reduced-motion: no-preference) {
.spotlight {
transition:
- left 300ms cubic-bezier(0.22, 1, 0.36, 1),
- top 300ms cubic-bezier(0.22, 1, 0.36, 1),
- width 300ms cubic-bezier(0.22, 1, 0.36, 1),
- height 300ms cubic-bezier(0.22, 1, 0.36, 1),
- border-radius 300ms cubic-bezier(0.22, 1, 0.36, 1);
+ left 300ms var(--rs-ease-out),
+ top 300ms var(--rs-ease-out),
+ width 300ms var(--rs-ease-out),
+ height 300ms var(--rs-ease-out),
+ border-radius 300ms var(--rs-ease-out);
}
}
@@ -52,7 +52,7 @@
otherwise the first open would animate in from the viewport origin. */
@media (prefers-reduced-motion: no-preference) {
.positioner:has(.popup:not([data-starting-style])) {
- transition: transform 350ms cubic-bezier(0.22, 1, 0.36, 1);
+ transition: transform var(--rs-duration-slow) var(--rs-ease-out);
}
}
@@ -72,9 +72,6 @@
line-height: var(--rs-line-height-small);
letter-spacing: var(--rs-letter-spacing-small);
transform-origin: var(--transform-origin);
- transition:
- opacity 200ms ease,
- scale 200ms ease;
}
.popup[data-starting-style],
@@ -83,6 +80,14 @@
scale: 0.96;
}
+@media (prefers-reduced-motion: no-preference) {
+ .popup {
+ transition:
+ opacity var(--rs-duration-normal) var(--rs-ease-out),
+ scale var(--rs-duration-normal) var(--rs-ease-out);
+ }
+}
+
.stepContent {
display: flex;
flex-direction: column;
@@ -91,7 +96,7 @@
@media (prefers-reduced-motion: no-preference) {
.stepContent {
- animation: tour-step-in 250ms cubic-bezier(0.22, 1, 0.36, 1);
+ animation: tour-step-in var(--rs-duration-moderate) var(--rs-ease-out);
}
}
diff --git a/packages/raystack/components/tour/tour-root.tsx b/packages/raystack/components/tour/tour-root.tsx
index 08d2a6c9b..f6873d774 100644
--- a/packages/raystack/components/tour/tour-root.tsx
+++ b/packages/raystack/components/tour/tour-root.tsx
@@ -26,8 +26,8 @@ import { usePrefersReducedMotion } from './use-prefers-reduced-motion';
import { resolveTourTarget, useTourTarget } from './use-tour-target';
import { rectsEqual } from './utils';
-// Must match the overlay's opacity transition in `tour.module.css`.
-const FADE_OUT_MS = 160;
+// Must match --rs-duration-fast — the .spotlightCover fade in tour.module.css.
+const FADE_OUT_MS = 150;
const REVEAL_TIMEOUT_MS = 2000;
diff --git a/packages/raystack/components/tour/tour.module.css b/packages/raystack/components/tour/tour.module.css
index ffef1540e..8da74bdc6 100644
--- a/packages/raystack/components/tour/tour.module.css
+++ b/packages/raystack/components/tour/tour.module.css
@@ -23,7 +23,7 @@
@media (prefers-reduced-motion: no-preference) {
.overlay {
- transition: opacity 200ms ease;
+ transition: opacity var(--rs-duration-normal) var(--rs-ease-out);
}
}
@@ -54,7 +54,7 @@
@media (prefers-reduced-motion: no-preference) {
.spotlightCover {
- transition: opacity 160ms ease;
+ transition: opacity var(--rs-duration-fast) var(--rs-ease-out);
}
}
@@ -72,7 +72,7 @@
origin. `fade` mode repositions the card while it is hidden, so no glide. */
@media (prefers-reduced-motion: no-preference) {
.positioner[data-transition="move"]:has(.popup:not([data-starting-style])) {
- transition: transform 460ms cubic-bezier(0.33, 0.7, 0, 1);
+ transition: transform var(--rs-duration-slow) var(--rs-ease-out);
}
}
@@ -92,21 +92,31 @@
line-height: var(--rs-line-height-small);
letter-spacing: var(--rs-letter-spacing-small);
transform-origin: var(--transform-origin);
- transition:
- opacity 200ms ease,
- scale 200ms ease;
+ transition: opacity var(--rs-duration-normal) var(--rs-ease-out);
}
.popup[data-starting-style],
.popup[data-ending-style] {
opacity: 0;
- scale: 0.96;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ .popup {
+ transition:
+ opacity var(--rs-duration-normal) var(--rs-ease-out),
+ scale var(--rs-duration-normal) var(--rs-ease-out);
+ }
+
+ .popup[data-starting-style],
+ .popup[data-ending-style] {
+ scale: 0.96;
+ }
}
/* Fade mode: the card is hidden until its target settles. Hiding is instant
(transition: none) so the reposition and content swap between steps are not
seen; revealing uses the .popup transition above for a soft fade-in in place. */
-.popup[data-transition="fade"][data-visible="false"] {
+.popup[data-visible="false"] {
opacity: 0;
scale: 0.98;
transition: none;
@@ -120,7 +130,7 @@
@media (prefers-reduced-motion: no-preference) {
.stepContent {
- animation: tour-step-in 250ms cubic-bezier(0.22, 1, 0.36, 1);
+ animation: tour-step-in var(--rs-duration-moderate) var(--rs-ease-out);
}
}
diff --git a/packages/raystack/package.json b/packages/raystack/package.json
index 059561808..64be055e9 100644
--- a/packages/raystack/package.json
+++ b/packages/raystack/package.json
@@ -97,8 +97,6 @@
"dotenv": "^17.2.2",
"identity-obj-proxy": "^3.0.0",
"jsdom": "^26.1.0",
- "np": "^8.0.4",
- "npm": "^9.7.1",
"parcel": "^2.9.2",
"postcss": "^8.4.24",
"postcss-import": "^16.1.0",
diff --git a/packages/raystack/styles/effects.css b/packages/raystack/styles/effects.css
index 2ebecd2ab..7e32c132b 100644
--- a/packages/raystack/styles/effects.css
+++ b/packages/raystack/styles/effects.css
@@ -1,35 +1,99 @@
+:root,
+[data-theme="light"] {
+ /* Shadows */
+ /* Example usage: box-shadow: var(--rs-shadow-feather); */
+ --rs-shadow-feather:
+ 0px 1px 1px 0px oklch(0 0 0 / 0.06), 0px 4px 4px -1px oklch(0 0 0 / 0.02); /* sm */
+ --rs-shadow-soft:
+ 0px 2px 4px 0px oklch(0 0 0 / 0.04), 0px 1px 2px 0px oklch(0 0 0 / 0.04); /* md */
+ --rs-shadow-lifted:
+ 0px 1px 1px 0px oklch(0 0 0 / 0.07), 0px 2px 5px 0px oklch(0 0 0 / 0.07), 0px 3px 8px 0px oklch(
+ 0 0 0 / 0.07
+ ); /* lg */
+ --rs-shadow-floating:
+ 0px 1px 1px 0px oklch(0 0 0 / 0.04), 0px 2px 8px 0px oklch(0 0 0 / 0.04), 0px 3px 17px 0px oklch(
+ 0 0 0 / 0.04
+ ), 0px 4px 30px 0px oklch(0 0 0 / 0.13); /* xl */
+ --rs-shadow-inset: 0px 1px 1px 0px oklch(0 0 0 / 0.04) inset;
+}
+
:root {
- /* Shadows */
- /* Example usage: box-shadow: var(--rs-shadow-feather); */
- --rs-shadow-feather: 0px 1px 1px 0px oklch(0 0 0 / 0.06), 0px 4px 4px -1px oklch(0 0 0 / 0.02); /* sm */
- --rs-shadow-soft: 0px 2px 4px 0px oklch(0 0 0 / 0.04), 0px 1px 2px 0px oklch(0 0 0 / 0.04); /* md */
- --rs-shadow-lifted: 0px 1px 1px 0px oklch(0 0 0 / 0.07), 0px 2px 5px 0px oklch(0 0 0 / 0.07), 0px 3px 8px 0px oklch(0 0 0 / 0.07); /* lg */
- --rs-shadow-floating: 0px 1px 1px 0px oklch(0 0 0 / 0.04), 0px 2px 8px 0px oklch(0 0 0 / 0.04), 0px 3px 17px 0px oklch(0 0 0 / 0.04), 0px 4px 30px 0px oklch(0 0 0 / 0.13); /* xl */
- --rs-shadow-inset: 0px 1px 1px 0px oklch(0 0 0 / 0.04) inset;
+ /* Transitions */
+ --rs-transition-interactive:
+ background-color var(--rs-duration-normal) var(--rs-ease-out),
+ border-color var(--rs-duration-normal) var(--rs-ease-out),
+ color var(--rs-duration-normal) var(--rs-ease-out),
+ box-shadow var(--rs-duration-normal) var(--rs-ease-out),
+ opacity var(--rs-duration-normal) var(--rs-ease-out);
+ /* Pressed states: acknowledge pointer-down near-instantly. Apply on
+ `:active`; releasing falls back to --rs-transition-interactive (200ms). */
+ --rs-transition-pressed:
+ background-color var(--rs-duration-press) var(--rs-ease-out),
+ border-color var(--rs-duration-press) var(--rs-ease-out),
+ color var(--rs-duration-press) var(--rs-ease-out),
+ box-shadow var(--rs-duration-press) var(--rs-ease-out),
+ opacity var(--rs-duration-press) var(--rs-ease-out),
+ transform var(--rs-duration-press) var(--rs-ease-out);
- /* Transitions */
- --rs-transition-interactive: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
+ /* Pressed scale: a control shrinks slightly under the finger. Smaller
+ targets need a larger delta to read, so there are two steps. */
+ --rs-scale-pressed: 0.98; /* buttons, tabs, larger controls */
+ --rs-scale-pressed-strong: 0.94; /* checkbox, radio, chip dismiss */
- /* Blurs */
- /* Example usage: backdrop-filter:: var(--rs-blur-sm); */
- --rs-blur-sm: blur(0.5px);
- --rs-blur-md: blur(1px);
- --rs-blur-lg: blur(2px);
- --rs-blur-xl: blur(4px);
-}
+ /* Focus ring: keyboard-focus indicator. The shadow variant is for
+ chromeless text-entry surfaces that have no border to ring. Accent by
+ default; a colored control (danger, success, …) overrides
+ `outline-color` in its own :focus-visible rule to match. */
+ --rs-focus-ring: 1px solid var(--rs-color-border-accent-emphasis);
+ /* Box-shadow form of the ring above, for borderless inputs with no border to
+ outline. Kept 1px + accent-emphasis so it matches the outline ring. */
+ --rs-focus-ring-shadow: 0 0 0 1px var(--rs-color-border-accent-emphasis);
-[data-theme="light"] {
- --rs-shadow-feather: 0px 1px 1px 0px oklch(0 0 0 / 0.06), 0px 4px 4px -1px oklch(0 0 0 / 0.02);
- --rs-shadow-soft: 0px 2px 4px 0px oklch(0 0 0 / 0.04), 0px 1px 2px 0px oklch(0 0 0 / 0.04);
- --rs-shadow-lifted: 0px 1px 1px 0px oklch(0 0 0 / 0.07), 0px 2px 5px 0px oklch(0 0 0 / 0.07), 0px 3px 8px 0px oklch(0 0 0 / 0.07);
- --rs-shadow-floating: 0px 1px 1px 0px oklch(0 0 0 / 0.04), 0px 2px 8px 0px oklch(0 0 0 / 0.04), 0px 3px 17px 0px oklch(0 0 0 / 0.04), 0px 4px 30px 0px oklch(0 0 0 / 0.13);
- --rs-shadow-inset: 0px 1px 1px 0px oklch(0 0 0 / 0.04) inset;
+ /* Ring offset: rings sit flush (0) by default. A control adds one of these
+ in its own :focus-visible rule when it needs to — accent-filled controls
+ push the ring out so it clears the same-colour fill; controls in a
+ clipped container pull it in so the ring isn't cut off. The -border
+ variant pulls in just 1px so the ring hugs a bordered control instead
+ of leaving a gap that reads as a double line. */
+ --rs-focus-ring-offset-accent: 2px;
+ --rs-focus-ring-offset-inset: -2px;
+ --rs-focus-ring-offset-inset-border: -1px;
+
+ /* Motion */
+ /* Example usage: transition: opacity var(--rs-duration-normal) var(--rs-ease-out); */
+ /* entrances, exits, value changes */
+ --rs-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
+ /* elements moving on screen */
+ --rs-ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
+ /* iOS-like drawer slide */
+ --rs-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
+ --rs-duration-press: 100ms; /* pressed/active feedback */
+ --rs-duration-fast: 150ms; /* tooltips, menus, small popups */
+ --rs-duration-normal: 200ms; /* popovers, dialogs, switches */
+ --rs-duration-moderate: 250ms; /* tabs indicator, preview card, tour steps */
+ --rs-duration-slow: 400ms; /* toasts */
+ --rs-duration-drawer: 450ms; /* drawer */
+
+ /* Blurs */
+ /* Example usage: backdrop-filter:: var(--rs-blur-sm); */
+ --rs-blur-sm: blur(0.5px);
+ --rs-blur-md: blur(1px);
+ --rs-blur-lg: blur(2px);
+ --rs-blur-xl: blur(4px);
}
[data-theme="dark"] {
- --rs-shadow-feather: 0px 1px 1px 0px oklch(0 0 0 / 0.3), 0px 4px 4px -1px oklch(0 0 0 / 0.25);
- --rs-shadow-soft: 0px 2px 4px 0px oklch(0 0 0 / 0.3), 0px 1px 2px 0px oklch(0 0 0 / 0.25);
- --rs-shadow-lifted: 0px 1px 1px 0px oklch(0 0 0 / 0.35), 0px 2px 5px 0px oklch(0 0 0 / 0.35), 0px 3px 8px 0px oklch(0 0 0 / 0.35);
- --rs-shadow-floating: 0px 1px 1px 0px oklch(0 0 0 / 0.3), 0px 2px 8px 0px oklch(0 0 0 / 0.3), 0px 3px 17px 0px oklch(0 0 0 / 0.3), 0px 4px 30px 0px oklch(0 0 0 / 0.4);
+ --rs-shadow-feather:
+ 0px 1px 1px 0px oklch(0 0 0 / 0.3), 0px 4px 4px -1px oklch(0 0 0 / 0.25);
+ --rs-shadow-soft:
+ 0px 2px 4px 0px oklch(0 0 0 / 0.3), 0px 1px 2px 0px oklch(0 0 0 / 0.25);
+ --rs-shadow-lifted:
+ 0px 1px 1px 0px oklch(0 0 0 / 0.35), 0px 2px 5px 0px oklch(0 0 0 / 0.35), 0px 3px 8px 0px oklch(
+ 0 0 0 / 0.35
+ );
+ --rs-shadow-floating:
+ 0px 1px 1px 0px oklch(0 0 0 / 0.3), 0px 2px 8px 0px oklch(0 0 0 / 0.3), 0px 3px 17px 0px oklch(
+ 0 0 0 / 0.3
+ ), 0px 4px 30px 0px oklch(0 0 0 / 0.4);
--rs-shadow-inset: 0px 1px 1px 0px oklch(0 0 0 / 0.25) inset;
}
diff --git a/packages/raystack/styles/primitives/accent.css b/packages/raystack/styles/primitives/accent.css
index fa3adebc9..60b3006f9 100644
--- a/packages/raystack/styles/primitives/accent.css
+++ b/packages/raystack/styles/primitives/accent.css
@@ -83,7 +83,8 @@
--rs-accent-10: oklch(0.8401 0.0988 178.42);
--rs-accent-11: oklch(0.5117 0.0955 175.6);
--rs-accent-12: oklch(0.3496 0.0505 181.31);
- --rs-accent-contrast: oklch(1 0 0);
+ /* mint-9/10 are light (L~0.87); needs dark text, not white */
+ --rs-accent-contrast: oklch(0 0 0);
}
[data-accent-color="mint"][data-theme="dark"] {
@@ -99,5 +100,6 @@
--rs-accent-10: oklch(0.9156 0.079 180);
--rs-accent-11: oklch(0.7954 0.1181 176.46);
--rs-accent-12: oklch(0.9306 0.057 168.28);
- --rs-accent-contrast: oklch(1 0 0);
+ /* mint-9/10 stay light in dark theme too; keep dark text */
+ --rs-accent-contrast: oklch(0 0 0);
}
diff --git a/packages/raystack/styles/typography.css b/packages/raystack/styles/typography.css
index bc329377d..3142c03b8 100644
--- a/packages/raystack/styles/typography.css
+++ b/packages/raystack/styles/typography.css
@@ -1,7 +1,7 @@
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Lora:wght@400;500&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Josefin+Sans:wght@400;500&display=swap");
-@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital@0;1&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;1,400;1,500&display=swap");
:root {
/* Fonts */
@@ -14,7 +14,8 @@
/* Font Families */
--rs-font-title: var(--rs-font-inter), sans-serif;
--rs-font-body: var(--rs-font-inter), sans-serif;
- --rs-font-mono: var(--rs-font-menlo), var(--rs-font-jetbrains-mono), monospace;
+ --rs-font-mono:
+ var(--rs-font-menlo), var(--rs-font-jetbrains-mono), monospace;
/* Font Weights */
--rs-font-weight-regular: 400;
@@ -29,17 +30,19 @@
/* Body Line Heights */
--rs-line-height-micro: 12px;
- --rs-line-height-mini: 16px;
+ --rs-line-height-mini: 14px;
--rs-line-height-small: 16px;
--rs-line-height-regular: 20px;
--rs-line-height-large: 24px;
- /* Body Letter spacing */
- --rs-letter-spacing-micro: 0.5px;
- --rs-letter-spacing-mini: 0.5px;
- --rs-letter-spacing-small: 0.4px;
- --rs-letter-spacing-regular: 0.25px;
- --rs-letter-spacing-large: 0.5px;
+ /* Body Letter spacing — tuned for Inter, which is spaced generously already.
+ Near-zero at small sizes, slightly negative as size grows. em-based so it
+ scales with font-size. */
+ --rs-letter-spacing-micro: 0.01em;
+ --rs-letter-spacing-mini: 0.005em;
+ --rs-letter-spacing-small: 0em;
+ --rs-letter-spacing-regular: -0.006em;
+ --rs-letter-spacing-large: -0.011em;
/* Title Font Sizes */
--rs-font-size-t1: 20px;
@@ -48,16 +51,16 @@
--rs-font-size-t4: 32px;
/* Title Line Heights */
- --rs-line-height-t1: 24px;
+ --rs-line-height-t1: 28px;
--rs-line-height-t2: 32px;
--rs-line-height-t3: 36px;
--rs-line-height-t4: 40px;
/* Title Letter Spacing */
- --rs-letter-spacing-t1: 0;
- --rs-letter-spacing-t2: 0;
- --rs-letter-spacing-t3: 0;
- --rs-letter-spacing-t4: 0;
+ --rs-letter-spacing-t1: -0.01em;
+ --rs-letter-spacing-t2: -0.013em;
+ --rs-letter-spacing-t3: -0.016em;
+ --rs-letter-spacing-t4: -0.02em;
/* Mono Font Sizes */
--rs-font-size-mono-mini: 11px;
@@ -79,6 +82,8 @@
}
[data-style="modern"] {
+ /* Re-declare (not just inherit from :root) so a modern theme nested inside a
+ traditional one resets to Inter instead of inheriting Lora/Josefin. */
--rs-font-title: var(--rs-font-inter), sans-serif;
--rs-font-body: var(--rs-font-inter), sans-serif;
font-family: var(--rs-font-body);
@@ -97,31 +102,39 @@ body {
/* Font Smoothing */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
+
+ /* Only weights 400 and 500 are loaded (see @import above). Fail visibly
+ on any missing weight or style instead of rendering a faked bold/italic. */
+ font-synthesis: none;
}
h1 {
font-family: var(--rs-font-title);
font-size: var(--rs-font-size-t4);
font-weight: var(--rs-font-weight-medium);
- line-height: var(--rs-line-height-t1);
+ line-height: var(--rs-line-height-t4);
+ text-wrap: balance;
}
h2 {
font-family: var(--rs-font-title);
font-size: var(--rs-font-size-t3);
font-weight: var(--rs-font-weight-medium);
- line-height: var(--rs-line-height-t1);
+ line-height: var(--rs-line-height-t3);
+ text-wrap: balance;
}
h3 {
font-family: var(--rs-font-title);
font-size: var(--rs-font-size-t2);
font-weight: var(--rs-font-weight-medium);
- line-height: var(--rs-line-height-t1);
+ line-height: var(--rs-line-height-t2);
+ text-wrap: balance;
}
h4 {
font-family: var(--rs-font-title);
font-size: var(--rs-font-size-t1);
font-weight: var(--rs-font-weight-medium);
line-height: var(--rs-line-height-t1);
+ text-wrap: balance;
}
/* CSS for the text cursor */
@@ -129,14 +142,3 @@ input,
textarea {
caret-color: var(--rs-color-border-accent-emphasis);
}
-
-/* Keyframe Animation */
-@keyframes dissolve-hide {
- 0%,
- 50% {
- opacity: 1;
- }
- 100% {
- opacity: 0;
- }
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5656053dd..3b3d44e4c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -42,6 +42,43 @@ importers:
specifier: '4.7'
version: 4.7.2
+ apps/playground:
+ dependencies:
+ '@raystack/apsara':
+ specifier: workspace:*
+ version: link:../../packages/raystack
+ apsara-before:
+ specifier: npm:@raystack/apsara@1.0.1
+ version: '@raystack/apsara@1.0.1(@date-fns/tz@1.2.0)(@types/react@19.2.2)(date-fns@4.1.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)'
+ next:
+ specifier: 16.0.7
+ version: 16.0.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ next-themes:
+ specifier: ^0.4.4
+ version: 0.4.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react:
+ specifier: ^19.2.1
+ version: 19.2.1
+ react-dom:
+ specifier: ^19.2.1
+ version: 19.2.1(react@19.2.1)
+ devDependencies:
+ '@raystack/tools-config':
+ specifier: workspace:*
+ version: link:../../packages/tools-config
+ '@types/node':
+ specifier: ^24.9.2
+ version: 24.10.0
+ '@types/react':
+ specifier: ^19.2.2
+ version: 19.2.2
+ '@types/react-dom':
+ specifier: ^19.2.2
+ version: 19.2.2(@types/react@19.2.2)
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+
apps/www:
dependencies:
'@radix-ui/react-icons':
@@ -263,12 +300,6 @@ importers:
jsdom:
specifier: ^26.1.0
version: 26.1.0
- np:
- specifier: ^8.0.4
- version: 8.0.4(typescript@5.4.3)
- npm:
- specifier: ^9.7.1
- version: 9.7.1
parcel:
specifier: ^2.9.2
version: 2.9.2(@swc/helpers@0.5.15)(postcss@8.4.24)(terser@5.39.0)(typescript@5.4.3)
@@ -1034,9 +1065,6 @@ packages:
'@types/react':
optional: true
- '@bconnorwhite/module@2.0.2':
- resolution: {integrity: sha512-ck1me5WMgZKp06gnJrVKEkytpehTTQbvsAMbF1nGPeHri/AZNhj87++PSE2LOxmZqM0EtGMaqeLdx7Lw7SUnTA==}
-
'@biomejs/biome@2.3.8':
resolution: {integrity: sha512-Qjsgoe6FEBxWAUzwFGFrB+1+M8y/y5kwmg5CHac+GSVOdmOIqsAiXM5QMVGZJ1eCUCLlPZtq4aFAQ0eawEUuUA==}
engines: {node: '>=14.21.3'}
@@ -1592,10 +1620,6 @@ packages:
cpu: [x64]
os: [win32]
- '@inquirer/figures@1.0.3':
- resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==}
- engines: {node: '>=18'}
-
'@isaacs/balanced-match@4.0.1':
resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
engines: {node: 20 || >=22}
@@ -2321,18 +2345,6 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
- '@pnpm/config.env-replace@1.1.0':
- resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==}
- engines: {node: '>=12.22.0'}
-
- '@pnpm/network.ca-file@1.0.2':
- resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==}
- engines: {node: '>=12.22.0'}
-
- '@pnpm/npm-conf@2.2.2':
- resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==}
- engines: {node: '>=12'}
-
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
@@ -3093,6 +3105,17 @@ packages:
'@types/react':
optional: true
+ '@raystack/apsara@1.0.1':
+ resolution: {integrity: sha512-w5f0dhInJVPih2Le1vA08IwQQtOPRNVBe7nyGqqpHan1Vqy5EFi2Q0zSOgnvq4E+3PzWOvnFLHi/rsfT3n6H4Q==}
+ engines: {node: '>=22'}
+ peerDependencies:
+ '@types/react': ^19
+ react: ^19
+ react-dom: ^19
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@rollup/plugin-commonjs@25.0.2':
resolution: {integrity: sha512-NGTwaJxIO0klMs+WSFFtBP7b9TdTJ3K76HZkewT8/+yHzMiUGVQgaPtLQxNVYIgT5F7lxkEyVID+yS3K7bhCow==}
engines: {node: '>=14.0.0'}
@@ -3242,18 +3265,6 @@ packages:
cpu: [x64]
os: [win32]
- '@samverschueren/stream-to-observable@0.3.1':
- resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==}
- engines: {node: '>=6'}
- peerDependencies:
- rxjs: '*'
- zen-observable: '*'
- peerDependenciesMeta:
- rxjs:
- optional: true
- zen-observable:
- optional: true
-
'@secretlint/config-creator@9.3.4':
resolution: {integrity: sha512-GRMYfHJ+rewwB26CC3USVObqSQ/mDLXzXcUMJw/wJisPr3HDZmdsYlcsNnaAcGN+EZmvqSDkgSibQm1hyZpzbg==}
engines: {node: ^14.13.1 || >=16.0.0}
@@ -3344,14 +3355,6 @@ packages:
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
- '@sindresorhus/is@4.6.0':
- resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
- engines: {node: '>=10'}
-
- '@sindresorhus/is@5.6.0':
- resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
- engines: {node: '>=14.16'}
-
'@sindresorhus/merge-streams@2.3.0':
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
engines: {node: '>=18'}
@@ -3578,9 +3581,6 @@ packages:
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- '@swc/helpers@0.5.12':
- resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==}
-
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
@@ -3590,14 +3590,6 @@ packages:
'@swc/types@0.1.9':
resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==}
- '@szmarczak/http-timer@4.0.6':
- resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
- engines: {node: '>=10'}
-
- '@szmarczak/http-timer@5.0.1':
- resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
- engines: {node: '>=14.16'}
-
'@tanstack/match-sorter-utils@8.8.4':
resolution: {integrity: sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==}
engines: {node: '>=12'}
@@ -3701,9 +3693,6 @@ packages:
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
- '@types/cacheable-request@6.0.3':
- resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
-
'@types/chai@5.2.2':
resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
@@ -3731,15 +3720,9 @@ packages:
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
- '@types/http-cache-semantics@4.0.4':
- resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
-
'@types/inquirer@6.5.0':
resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==}
- '@types/keyv@3.1.4':
- resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
-
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
@@ -3786,9 +3769,6 @@ packages:
'@types/resolve@1.20.2':
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
- '@types/responselike@1.0.3':
- resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
-
'@types/sarif@2.1.7':
resolution: {integrity: sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==}
@@ -3810,6 +3790,7 @@ packages:
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+ deprecated: Potential CWE-502 - Update to 1.3.1 or higher
'@vitest/expect@3.2.4':
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
@@ -3935,44 +3916,16 @@ packages:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
- aggregate-error@4.0.1:
- resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==}
- engines: {node: '>=12'}
-
ajv@8.17.1:
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
- all-package-names@2.0.897:
- resolution: {integrity: sha512-ZWd7bk4fK2Doei5nLP28ytHa5hTD+qr8bWuJQh1Bbi36Ij4RVXSL6tM0zEni85usEhX0iQ32IuYlyoYM0sKFyQ==}
- hasBin: true
-
ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
- ansi-escapes@3.2.0:
- resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==}
- engines: {node: '>=4'}
-
ansi-escapes@4.3.2:
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
engines: {node: '>=8'}
- ansi-escapes@5.0.0:
- resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==}
- engines: {node: '>=12'}
-
- ansi-regex@2.1.1:
- resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
- engines: {node: '>=0.10.0'}
-
- ansi-regex@3.0.1:
- resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==}
- engines: {node: '>=4'}
-
- ansi-regex@4.1.1:
- resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
- engines: {node: '>=6'}
-
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@@ -3981,10 +3934,6 @@ packages:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
- ansi-styles@2.2.1:
- resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
- engines: {node: '>=0.10.0'}
-
ansi-styles@3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
@@ -4001,18 +3950,6 @@ packages:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
- any-observable@0.3.0:
- resolution: {integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==}
- engines: {node: '>=6'}
- peerDependencies:
- rxjs: '*'
- zenObservable: '*'
- peerDependenciesMeta:
- rxjs:
- optional: true
- zenObservable:
- optional: true
-
any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
@@ -4099,10 +4036,6 @@ packages:
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- big-integer@1.6.52:
- resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
- engines: {node: '>=0.6'}
-
binaryextensions@6.11.0:
resolution: {integrity: sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==}
engines: {node: '>=4'}
@@ -4120,14 +4053,6 @@ packages:
resolution: {integrity: sha512-JtIQYts08AFAYGF4eSh3pUt3NQkYV/e75pRtQmAVTLNWR/1L7Bsswxlgzgk8nmLEM+gFszsIlA9BgD3XnSqp3g==}
engines: {node: '>=10'}
- boxen@7.1.1:
- resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==}
- engines: {node: '>=14.16'}
-
- bplist-parser@0.2.0:
- resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
- engines: {node: '>= 5.10.0'}
-
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@@ -4168,13 +4093,6 @@ packages:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
engines: {node: '>=6'}
- builtins@1.0.3:
- resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==}
-
- bundle-name@3.0.0:
- resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
- engines: {node: '>=12'}
-
bundle-name@4.1.0:
resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
engines: {node: '>=18'}
@@ -4183,22 +4101,6 @@ packages:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
- cacheable-lookup@5.0.4:
- resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
- engines: {node: '>=10.6.0'}
-
- cacheable-lookup@7.0.0:
- resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
- engines: {node: '>=14.16'}
-
- cacheable-request@10.2.14:
- resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
- engines: {node: '>=14.16'}
-
- cacheable-request@7.0.4:
- resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
- engines: {node: '>=8'}
-
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
@@ -4215,10 +4117,6 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- callsites@4.2.0:
- resolution: {integrity: sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==}
- engines: {node: '>=12.20'}
-
camel-case@3.0.0:
resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==}
@@ -4226,16 +4124,9 @@ packages:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
- camelcase@7.0.1:
- resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
- engines: {node: '>=14.16'}
-
caniuse-api@3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
- caniuse-lite@1.0.30001642:
- resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==}
-
caniuse-lite@1.0.30001701:
resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==}
@@ -4246,10 +4137,6 @@ packages:
resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==}
engines: {node: '>=18'}
- chalk@1.1.3:
- resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
- engines: {node: '>=0.10.0'}
-
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -4262,10 +4149,6 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
- chalk@5.3.0:
- resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
- engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
-
change-case@3.1.0:
resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==}
@@ -4306,10 +4189,6 @@ packages:
resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
engines: {node: '>=6.0'}
- ci-info@3.9.0:
- resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
- engines: {node: '>=8'}
-
class-variance-authority@0.7.1:
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
@@ -4317,22 +4196,10 @@ packages:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
- clean-stack@4.2.0:
- resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==}
- engines: {node: '>=12'}
-
cli-boxes@2.2.1:
resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==}
engines: {node: '>=6'}
- cli-boxes@3.0.0:
- resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
- engines: {node: '>=10'}
-
- cli-cursor@2.1.0:
- resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}
- engines: {node: '>=4'}
-
cli-cursor@3.1.0:
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
engines: {node: '>=8'}
@@ -4341,21 +4208,10 @@ packages:
resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
engines: {node: '>=6'}
- cli-truncate@0.2.1:
- resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==}
- engines: {node: '>=0.10.0'}
-
- cli-width@2.2.1:
- resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==}
-
cli-width@3.0.0:
resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
engines: {node: '>= 10'}
- cli-width@4.1.0:
- resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
- engines: {node: '>= 12'}
-
client-only@0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
@@ -4363,9 +4219,6 @@ packages:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
- clone-response@1.0.3:
- resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
-
clone@1.0.4:
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
engines: {node: '>=0.8'}
@@ -4391,10 +4244,6 @@ packages:
code-block-writer@13.0.3:
resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
- code-point-at@1.1.0:
- resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==}
- engines: {node: '>=0.10.0'}
-
collapse-white-space@2.1.0:
resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
@@ -4437,9 +4286,6 @@ packages:
comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
- commander-version@1.1.0:
- resolution: {integrity: sha512-9aNW4N6q6EPDUszLRH6k9IwO6OoGYh3HRgUF/fA7Zs+Mz1v1x5akSqT7QGB8JsGY7AG7qMA7oRRB/4yyn33FYA==}
-
commander@10.0.1:
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
engines: {node: '>=14'}
@@ -4459,10 +4305,6 @@ packages:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
- commander@6.2.1:
- resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
- engines: {node: '>= 6'}
-
commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
@@ -4487,13 +4329,6 @@ packages:
engines: {node: '>=18'}
hasBin: true
- config-chain@1.1.13:
- resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
-
- configstore@6.0.0:
- resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==}
- engines: {node: '>=12'}
-
constant-case@2.0.0:
resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==}
@@ -4527,18 +4362,10 @@ packages:
create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
- crypto-random-string@4.0.0:
- resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==}
- engines: {node: '>=12'}
-
css-declaration-sorter@6.4.1:
resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==}
engines: {node: ^10 || ^12 || >=14}
@@ -4619,9 +4446,6 @@ packages:
date-fns-jalali@4.1.0-0:
resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==}
- date-fns@1.30.1:
- resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==}
-
date-fns@4.1.0:
resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
@@ -4672,18 +4496,10 @@ packages:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
- default-browser-id@3.0.0:
- resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
- engines: {node: '>=12'}
-
default-browser-id@5.0.0:
resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==}
engines: {node: '>=18'}
- default-browser@4.0.0:
- resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==}
- engines: {node: '>=14.16'}
-
default-browser@5.2.1:
resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
engines: {node: '>=18'}
@@ -4691,10 +4507,6 @@ packages:
defaults@1.0.4:
resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
- defer-to-connect@2.0.1:
- resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
- engines: {node: '>=10'}
-
define-data-property@1.1.4:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
@@ -4711,10 +4523,6 @@ packages:
resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==}
engines: {node: '>=8'}
- del@7.1.0:
- resolution: {integrity: sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==}
- engines: {node: '>=14.16'}
-
delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
@@ -4785,14 +4593,6 @@ packages:
dot-case@3.0.4:
resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
- dot-prop@6.0.1:
- resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
- engines: {node: '>=10'}
-
- dot-prop@7.2.0:
- resolution: {integrity: sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
dotenv-expand@5.1.0:
resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==}
@@ -4828,10 +4628,6 @@ packages:
electron-to-chromium@1.5.109:
resolution: {integrity: sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==}
- elegant-spinner@1.0.1:
- resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==}
- engines: {node: '>=0.10.0'}
-
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -4912,10 +4708,6 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
- escape-goat@4.0.0:
- resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==}
- engines: {node: '>=12'}
-
escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
@@ -4969,18 +4761,6 @@ packages:
eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
- execa@5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
-
- execa@7.2.0:
- resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
- engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
-
- exit-hook@3.2.0:
- resolution: {integrity: sha512-aIQN7Q04HGAV/I5BszisuHTZHXNoC23WtLkxdCLuYZMdWviRD0TMIt2bnUBi9MrHaF/hH8b3gwG9iaAUHKnJGA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
expand-template@2.0.3:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
@@ -5039,14 +4819,6 @@ packages:
fflate@0.8.2:
resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
- figures@1.7.0:
- resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==}
- engines: {node: '>=0.10.0'}
-
- figures@2.0.0:
- resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==}
- engines: {node: '>=4'}
-
figures@3.2.0:
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
engines: {node: '>=8'}
@@ -5055,18 +4827,10 @@ packages:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
- find-up@4.1.0:
- resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
- engines: {node: '>=8'}
-
find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
- find-up@6.3.0:
- resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
@@ -5077,10 +4841,6 @@ packages:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
- form-data-encoder@2.1.4:
- resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
- engines: {node: '>= 14.17'}
-
form-data@4.0.1:
resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
engines: {node: '>= 6'}
@@ -5227,34 +4987,25 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
- get-stream@5.2.0:
- resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
- engines: {node: '>=8'}
-
- get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
-
github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
github-slugger@2.0.0:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
- github-url-from-git@1.5.0:
- resolution: {integrity: sha512-WWOec4aRI7YAykQ9+BHmzjyNlkfJFG8QLXnDTsLz/kZefq7qkzdfo4p6fkYYMIq1aj+gZcQs/1HQhQh3DPPxlQ==}
-
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
hasBin: true
glob@11.0.3:
resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==}
engines: {node: 20 || >=22}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
hasBin: true
glob@11.1.0:
@@ -5265,16 +5016,12 @@ packages:
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
glob@8.1.0:
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
engines: {node: '>=12'}
- deprecated: Glob versions prior to v9 are no longer supported
-
- global-dirs@3.0.1:
- resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==}
- engines: {node: '>=10'}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
@@ -5288,10 +5035,6 @@ packages:
resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==}
engines: {node: '>=8'}
- globby@13.2.2:
- resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
globby@14.1.0:
resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==}
engines: {node: '>=18'}
@@ -5303,17 +5046,6 @@ packages:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
- got@11.8.6:
- resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
- engines: {node: '>=10.19.0'}
-
- got@12.6.1:
- resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
- engines: {node: '>=14.16'}
-
- graceful-fs@4.2.10:
- resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
-
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
@@ -5328,10 +5060,6 @@ packages:
harmony-reflect@1.6.2:
resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==}
- has-ansi@2.0.0:
- resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
- engines: {node: '>=0.10.0'}
-
has-bigints@1.0.2:
resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
@@ -5362,10 +5090,6 @@ packages:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
- has-yarn@3.0.0:
- resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
@@ -5392,10 +5116,6 @@ packages:
resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
engines: {node: '>=10'}
- hosted-git-info@6.1.1:
- resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
hosted-git-info@7.0.2:
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -5442,21 +5162,10 @@ packages:
htmlparser2@7.2.0:
resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==}
- http-cache-semantics@4.1.1:
- resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
-
http-proxy-agent@7.0.2:
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
engines: {node: '>= 14'}
- http2-wrapper@1.0.3:
- resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==}
- engines: {node: '>=10.19.0'}
-
- http2-wrapper@2.2.1:
- resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
- engines: {node: '>=10.19.0'}
-
https-proxy-agent@7.0.5:
resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
engines: {node: '>= 14'}
@@ -5465,14 +5174,6 @@ packages:
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
engines: {node: '>= 14'}
- human-signals@2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
-
- human-signals@4.3.1:
- resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
- engines: {node: '>=14.18.0'}
-
iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
@@ -5497,10 +5198,6 @@ packages:
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- ignore-walk@6.0.5:
- resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
ignore@5.3.1:
resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
engines: {node: '>= 4'}
@@ -5526,31 +5223,10 @@ packages:
resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==}
engines: {node: '>=8'}
- import-lazy@4.0.0:
- resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
- engines: {node: '>=8'}
-
- import-local@3.1.0:
- resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
- engines: {node: '>=8'}
- hasBin: true
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- indent-string@3.2.0:
- resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==}
- engines: {node: '>=4'}
-
indent-string@4.0.0:
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'}
- indent-string@5.0.0:
- resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
- engines: {node: '>=12'}
-
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
@@ -5561,20 +5237,9 @@ packages:
ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- ini@2.0.0:
- resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==}
- engines: {node: '>=10'}
-
inline-style-parser@0.2.4:
resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
- inquirer-autosubmit-prompt@0.2.0:
- resolution: {integrity: sha512-mzNrusCk5L6kSzlN0Ioddn8yzrhYNLli+Sn2ZxMuLechMYAzakiFCIULxsxlQb5YKzthLGfrFACcWoAvM7p04Q==}
-
- inquirer@6.5.2:
- resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==}
- engines: {node: '>=6.0.0'}
-
inquirer@7.3.3:
resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==}
engines: {node: '>=8.0.0'}
@@ -5583,10 +5248,6 @@ packages:
resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==}
engines: {node: '>=12.0.0'}
- inquirer@9.3.5:
- resolution: {integrity: sha512-SVRCRovA7KaT6nqWB2mCNpTvU4cuZ0hOXo5KPyiyOcNNUIZwq/JKtvXuDJNaxfuJKabBYRu1ecHze0YEwDYoRQ==}
- engines: {node: '>=18'}
-
internal-slot@1.0.7:
resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
engines: {node: '>= 0.4'}
@@ -5623,10 +5284,6 @@ packages:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
- is-ci@3.0.1:
- resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
- hasBin: true
-
is-core-module@2.14.0:
resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
engines: {node: '>= 0.4'}
@@ -5638,11 +5295,6 @@ packages:
is-decimal@2.0.1:
resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
- is-docker@2.2.1:
- resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
- engines: {node: '>=8'}
- hasBin: true
-
is-docker@3.0.0:
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -5652,14 +5304,6 @@ packages:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
- is-fullwidth-code-point@1.0.0:
- resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==}
- engines: {node: '>=0.10.0'}
-
- is-fullwidth-code-point@2.0.0:
- resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==}
- engines: {node: '>=4'}
-
is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
@@ -5676,18 +5320,10 @@ packages:
engines: {node: '>=14.16'}
hasBin: true
- is-installed-globally@0.4.0:
- resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==}
- engines: {node: '>=10'}
-
is-interactive@1.0.0:
resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
engines: {node: '>=8'}
- is-interactive@2.0.0:
- resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
- engines: {node: '>=12'}
-
is-json@2.0.1:
resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==}
@@ -5701,13 +5337,6 @@ packages:
is-module@1.0.0:
resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
- is-name-taken@2.0.0:
- resolution: {integrity: sha512-W+FUWF5g7ONVJTx3rldZeVizmPzrMMUdscpSQ96vyYerx+4b2NcqaujLJJDWruGzE0FjzGZO9RFIipOGxx/WIw==}
-
- is-npm@6.0.0:
- resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
is-number-object@1.0.7:
resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
engines: {node: '>= 0.4'}
@@ -5716,30 +5345,14 @@ packages:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
- is-obj@2.0.0:
- resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
- engines: {node: '>=8'}
-
- is-observable@1.1.0:
- resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==}
- engines: {node: '>=4'}
-
is-path-cwd@2.2.0:
resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==}
engines: {node: '>=6'}
- is-path-cwd@3.0.0:
- resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
is-path-inside@3.0.3:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
- is-path-inside@4.0.0:
- resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==}
- engines: {node: '>=12'}
-
is-plain-obj@4.1.0:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
engines: {node: '>=12'}
@@ -5747,9 +5360,6 @@ packages:
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
- is-promise@2.2.2:
- resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
-
is-reference@1.2.1:
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
@@ -5757,10 +5367,6 @@ packages:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
- is-scoped@3.0.0:
- resolution: {integrity: sha512-ezxLUq30kiTvP0w/5n9tj4qTOKlrA07Oty1hwTQ+lcqw11x6uc8sp7VRb2OVGRzKfCHZ2A22T5Zsau/Q2Akb0g==}
- engines: {node: '>=12'}
-
is-set@2.0.3:
resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
engines: {node: '>= 0.4'}
@@ -5769,18 +5375,6 @@ packages:
resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
engines: {node: '>= 0.4'}
- is-stream@1.1.0:
- resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
- engines: {node: '>=0.10.0'}
-
- is-stream@2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
-
- is-stream@3.0.0:
- resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
is-string@1.0.7:
resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
engines: {node: '>= 0.4'}
@@ -5789,24 +5383,13 @@ packages:
resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
engines: {node: '>= 0.4'}
- is-typedarray@1.0.0:
- resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
-
is-unicode-supported@0.1.0:
resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
engines: {node: '>=10'}
- is-unicode-supported@1.3.0:
- resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
- engines: {node: '>=12'}
-
is-upper-case@1.1.2:
resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==}
- is-url-superb@6.1.0:
- resolution: {integrity: sha512-LXdhGlYqUPdvEyIhWPEEwYYK3yrUiPcBjmFGlZNv1u5GtIL5qQRf7ddDyPNAvsMFqdzS923FROpTQU97tLe3JQ==}
- engines: {node: '>=12'}
-
is-weakmap@2.0.2:
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
engines: {node: '>= 0.4'}
@@ -5815,18 +5398,10 @@ packages:
resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==}
engines: {node: '>= 0.4'}
- is-wsl@2.2.0:
- resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
- engines: {node: '>=8'}
-
is-wsl@3.1.0:
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
engines: {node: '>=16'}
- is-yarn-global@0.4.1:
- resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==}
- engines: {node: '>=12'}
-
isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
@@ -5837,10 +5412,6 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- issue-regex@4.1.0:
- resolution: {integrity: sha512-X3HBmm7+Th+l4/kMtqwcHHgELD0Lfl0Ina6S3+grr+mKmTxsrM84NAO1UuRPIxIbGLIl3TCEu45S1kdu21HYbQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
istextorbinary@9.5.0:
resolution: {integrity: sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==}
engines: {node: '>=4'}
@@ -5901,9 +5472,6 @@ packages:
engines: {node: '>=6'}
hasBin: true
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
@@ -5938,17 +5506,10 @@ packages:
keytar@7.9.0:
resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==}
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
kleur@3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
- latest-version@7.0.0:
- resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==}
- engines: {node: '>=14.16'}
-
lefthook-darwin-arm64@1.11.12:
resolution: {integrity: sha512-nB3rZVGoign6lhlbdfT1/knk4fV4Kx7kgbho8oSFcpw/o2qRQpLqmclCWUTtf+Pyj4vCzE7hiee/m+uQtvu19w==}
cpu: [arm64]
@@ -6149,28 +5710,6 @@ packages:
linkify-it@5.0.0:
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
- listr-input@0.2.1:
- resolution: {integrity: sha512-oa8iVG870qJq+OuuMK3DjGqFcwsK1SDu+kULp9kEq09TY231aideIZenr3lFOQdASpAr6asuyJBbX62/a3IIhg==}
- engines: {node: '>=6'}
-
- listr-silent-renderer@1.1.1:
- resolution: {integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==}
- engines: {node: '>=4'}
-
- listr-update-renderer@0.5.0:
- resolution: {integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==}
- engines: {node: '>=6'}
- peerDependencies:
- listr: ^0.14.2
-
- listr-verbose-renderer@0.5.0:
- resolution: {integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==}
- engines: {node: '>=4'}
-
- listr@0.14.3:
- resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==}
- engines: {node: '>=6'}
-
lmdb@2.7.11:
resolution: {integrity: sha512-x9bD4hVp7PFLUoELL8RglbNXhAMt5CYhkmss+CEau9KlNoilsTzNi9QDsPZb3KMpOGZXG6jmXhW3bBxE2XVztw==}
hasBin: true
@@ -6183,18 +5722,10 @@ packages:
resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
engines: {node: '>= 12.13.0'}
- locate-path@5.0.0:
- resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
- engines: {node: '>=8'}
-
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
- locate-path@7.2.0:
- resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
lodash.camelcase@4.3.0:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
@@ -6203,6 +5734,7 @@ packages:
lodash.get@4.4.2:
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
+ deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
lodash.includes@4.3.0:
resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
@@ -6210,10 +5742,6 @@ packages:
lodash.isboolean@3.0.3:
resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
- lodash.isequal@4.5.0:
- resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
- deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
-
lodash.isinteger@4.0.4:
resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
@@ -6241,31 +5769,16 @@ packages:
lodash.uniq@4.5.0:
resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
- lodash.zip@4.2.0:
- resolution: {integrity: sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==}
-
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
lodash@4.18.1:
resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
- log-symbols@1.0.2:
- resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==}
- engines: {node: '>=0.10.0'}
-
log-symbols@4.1.0:
resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
engines: {node: '>=10'}
- log-symbols@5.1.0:
- resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
- engines: {node: '>=12'}
-
- log-update@2.3.0:
- resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==}
- engines: {node: '>=4'}
-
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
@@ -6281,14 +5794,6 @@ packages:
lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
- lowercase-keys@2.0.0:
- resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==}
- engines: {node: '>=8'}
-
- lowercase-keys@3.0.0:
- resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -6303,10 +5808,6 @@ packages:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
- lru-cache@7.18.3:
- resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
- engines: {node: '>=12'}
-
lucide-react@0.548.0:
resolution: {integrity: sha512-63b16z63jM9yc1MwxajHeuu0FRZFsDtljtDjYm26Kd86UQ5HQzu9ksEtoUUw4RBuewodw/tGFmvipePvRsKeDA==}
peerDependencies:
@@ -6401,13 +5902,6 @@ packages:
mdurl@2.0.0:
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
- meow@12.1.1:
- resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
- engines: {node: '>=16.10'}
-
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -6538,30 +6032,14 @@ packages:
engines: {node: '>=4'}
hasBin: true
- mimic-fn@1.2.0:
- resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
- engines: {node: '>=4'}
-
mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
- mimic-fn@4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
-
- mimic-response@1.0.1:
- resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
- engines: {node: '>=4'}
-
mimic-response@3.1.0:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
- mimic-response@4.0.0:
- resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
min-indent@1.0.1:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
@@ -6626,16 +6104,9 @@ packages:
msgpackr@1.8.5:
resolution: {integrity: sha512-mpPs3qqTug6ahbblkThoUY2DQdNXcm4IapwOS3Vm/87vmpzLVelvp9h3It1y9l1VPpiFLV11vfOXnmeEwiIXwg==}
- mute-stream@0.0.7:
- resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==}
-
mute-stream@0.0.8:
resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
- mute-stream@1.0.0:
- resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
@@ -6659,10 +6130,6 @@ packages:
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
- new-github-release-url@2.0.0:
- resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
next-themes@0.4.4:
resolution: {integrity: sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ==}
peerDependencies:
@@ -6678,6 +6145,7 @@ packages:
next@16.0.7:
resolution: {integrity: sha512-3mBRJyPxT4LOxAJI6IsXeFtKfiJUbjCLgvXO02fV8Wy/lIhPvP94Fe7dGhUgHXcQy4sSuYwQNcOLhIfOm0rL0A==}
engines: {node: '>=20.9.0'}
+ deprecated: This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/security-update-2025-12-11 for more details.
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
@@ -6741,10 +6209,6 @@ packages:
resolution: {integrity: sha512-Pzr3rol8fvhG/oJjIq2NTVB0vmdNNlz22FENhhPojYRZ4/ee08CfK4YuKmuL54V9MLhI1kpzxfOJ/63LzmZzDg==}
engines: {node: '>=14'}
- normalize-package-data@3.0.3:
- resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
- engines: {node: '>=10'}
-
normalize-package-data@6.0.2:
resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -6753,112 +6217,16 @@ packages:
resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
engines: {node: '>=10'}
- normalize-url@8.0.1:
- resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
- engines: {node: '>=14.16'}
-
- np@8.0.4:
- resolution: {integrity: sha512-a4s1yESHcIwsrk/oaTekfbhb1R/2z2yyfVLX6Atl54w/9+QR01qeYyK3vMWgJ0UY+kYsGzQXausgvUX0pkmIMg==}
- engines: {git: '>=2.11.0', node: '>=16.6.0', npm: '>=7.19.0', yarn: '>=1.7.0'}
- hasBin: true
-
- npm-name@7.1.1:
- resolution: {integrity: sha512-lyOwsFndLoozriMEsaqJ5lXvhCATYOEhDvxlom8TNvB9a/htDXuLgpVhMUOBd9zCewUXCyBXAPxrGr2TK2adgQ==}
- engines: {node: '>=12'}
-
- npm-run-path@4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
-
- npm-run-path@5.3.0:
- resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
npm-to-yarn@3.0.1:
resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- npm@9.7.1:
- resolution: {integrity: sha512-kxMviaiLX4Lfnjy2dt7EWB87v5QdLiGpy04S2ORdKLmPqFhgy8g4cgJjQfnWob4mJIaNHjBO+hk45CvLlsZZ8g==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
- hasBin: true
- bundledDependencies:
- - '@isaacs/string-locale-compare'
- - '@npmcli/arborist'
- - '@npmcli/config'
- - '@npmcli/map-workspaces'
- - '@npmcli/package-json'
- - '@npmcli/run-script'
- - abbrev
- - archy
- - cacache
- - chalk
- - ci-info
- - cli-columns
- - cli-table3
- - columnify
- - fastest-levenshtein
- - fs-minipass
- - glob
- - graceful-fs
- - hosted-git-info
- - ini
- - init-package-json
- - is-cidr
- - json-parse-even-better-errors
- - libnpmaccess
- - libnpmdiff
- - libnpmexec
- - libnpmfund
- - libnpmhook
- - libnpmorg
- - libnpmpack
- - libnpmpublish
- - libnpmsearch
- - libnpmteam
- - libnpmversion
- - make-fetch-happen
- - minimatch
- - minipass
- - minipass-pipeline
- - ms
- - node-gyp
- - nopt
- - npm-audit-report
- - npm-install-checks
- - npm-package-arg
- - npm-pick-manifest
- - npm-profile
- - npm-registry-fetch
- - npm-user-validate
- - npmlog
- - p-map
- - pacote
- - parse-conflict-json
- - proc-log
- - qrcode-terminal
- - read
- - semver
- - sigstore
- - ssri
- - tar
- - text-table
- - tiny-relative-date
- - treeverse
- - validate-npm-package-name
- - which
- - write-file-atomic
-
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
nullthrows@1.1.1:
resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
- number-is-nan@1.0.1:
- resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
- engines: {node: '>=0.10.0'}
-
nwsapi@2.2.16:
resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==}
@@ -6889,18 +6257,10 @@ packages:
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- onetime@2.0.1:
- resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==}
- engines: {node: '>=4'}
-
onetime@5.1.2:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
engines: {node: '>=6'}
- onetime@6.0.0:
- resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
- engines: {node: '>=12'}
-
oniguruma-parser@0.12.1:
resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
@@ -6911,10 +6271,6 @@ packages:
resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==}
engines: {node: '>=18'}
- open@9.1.0:
- resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
- engines: {node: '>=14.16'}
-
ora@5.4.1:
resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
engines: {node: '>=10'}
@@ -6925,64 +6281,25 @@ packages:
ordered-binary@1.5.3:
resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==}
- org-regex@1.0.0:
- resolution: {integrity: sha512-7bqkxkEJwzJQUAlyYniqEZ3Ilzjh0yoa62c7gL6Ijxj5bEpPL+8IE1Z0PFj0ywjjXQcdrwR51g9MIcLezR0hKQ==}
- engines: {node: '>=8'}
-
os-tmpdir@1.0.2:
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
engines: {node: '>=0.10.0'}
- ow@1.1.1:
- resolution: {integrity: sha512-sJBRCbS5vh1Jp9EOgwp1Ws3c16lJrUkJYlvWTYC03oyiYVwS/ns7lKRWow4w4XjDyTrA2pplQv4B2naWSR6yDA==}
- engines: {node: '>=14.16'}
-
oxc-transform@0.51.0:
resolution: {integrity: sha512-5hmju6LD5cGXWzvweduIg9hCcBKWMIq2ILvwwiKEgb03cxPoKYsx65FfITJPVOkBzHFYRGri2AXo/mY1DJRmJQ==}
- p-cancelable@2.1.1:
- resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
- engines: {node: '>=8'}
-
- p-cancelable@3.0.0:
- resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
- engines: {node: '>=12.20'}
-
p-finally@1.0.0:
resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
engines: {node: '>=4'}
- p-limit@2.3.0:
- resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
- engines: {node: '>=6'}
-
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
- p-limit@4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- p-locate@4.1.0:
- resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
- engines: {node: '>=8'}
-
p-locate@5.0.0:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
- p-locate@6.0.0:
- resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- p-lock@2.1.0:
- resolution: {integrity: sha512-pi2yT8gNhVrV4LgsUvJWQy58TXH1HG2+NXDby9+UrsS/9fXb0FJH9aCxbdHJ0EAQ6XC7ggSP6GAzuR5puDArUQ==}
-
- p-map@2.1.0:
- resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
- engines: {node: '>=6'}
-
p-map@3.0.0:
resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==}
engines: {node: '>=8'}
@@ -6991,14 +6308,6 @@ packages:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
- p-map@5.5.0:
- resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==}
- engines: {node: '>=12'}
-
- p-memoize@7.1.1:
- resolution: {integrity: sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA==}
- engines: {node: '>=14.16'}
-
p-queue@6.6.2:
resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
engines: {node: '>=8'}
@@ -7007,24 +6316,9 @@ packages:
resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
engines: {node: '>=8'}
- p-timeout@6.1.2:
- resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==}
- engines: {node: '>=14.16'}
-
- p-try@2.2.0:
- resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
- engines: {node: '>=6'}
-
package-json-from-dist@1.0.0:
resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
- package-json@8.1.1:
- resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==}
- engines: {node: '>=14.16'}
-
- package-name-conflict@1.0.3:
- resolution: {integrity: sha512-DPBNWSUWC0wPofXeNThao0uP4a93J7r90UyhagmJS0QcacTTkorZwXYsOop70phn1hKdcf/2e9lJIhazS8bx5A==}
-
pako@0.2.9:
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
@@ -7043,12 +6337,6 @@ packages:
parse-entities@4.0.1:
resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
- parse-json-object@1.1.0:
- resolution: {integrity: sha512-4w5s6uJY1tW9REY8UwUOyaZKSKsrbQrMEzlV/Le/g5t4iMWuuyK83pZZ0OZimSOL9iyv2ORvRSgz71Ekd7iD3g==}
-
- parse-json-object@2.0.1:
- resolution: {integrity: sha512-/oF7PUUBjCqHmMEE6xIQeX5ZokQ9+miudACzPt4KBU2qi6CxZYPdisPXx4ad7wpZJYi2ZpcW2PacLTU3De3ebw==}
-
parse-json@5.2.0:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
@@ -7082,10 +6370,6 @@ packages:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
- path-exists@5.0.0:
- resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
@@ -7094,10 +6378,6 @@ packages:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
@@ -7156,14 +6436,6 @@ packages:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
- pkg-dir@4.2.0:
- resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
- engines: {node: '>=8'}
-
- pkg-dir@7.0.0:
- resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==}
- engines: {node: '>=14.16'}
-
pluralize@2.0.0:
resolution: {integrity: sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==}
@@ -7430,6 +6702,7 @@ packages:
prebuild-install@7.1.3:
resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
engines: {node: '>=10'}
+ deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
hasBin: true
prettier@2.8.8:
@@ -7450,10 +6723,6 @@ packages:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
- progress@2.0.3:
- resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
- engines: {node: '>=0.4.0'}
-
promise.series@0.2.0:
resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==}
engines: {node: '>=0.12'}
@@ -7465,9 +6734,6 @@ packages:
property-information@7.0.0:
resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==}
- proto-list@1.2.4:
- resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
-
psl@1.15.0:
resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
@@ -7482,10 +6748,6 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
- pupa@3.1.0:
- resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==}
- engines: {node: '>=12.20'}
-
qs@6.14.0:
resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
engines: {node: '>=0.6'}
@@ -7496,10 +6758,6 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- quick-lru@5.1.1:
- resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
- engines: {node: '>=10'}
-
radix-ui@1.4.3:
resolution: {integrity: sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==}
peerDependencies:
@@ -7607,20 +6865,6 @@ packages:
read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
- read-file-safe@1.0.10:
- resolution: {integrity: sha512-qW25fd2uMX3dV6Ui/R0jYK1MhTpjx8FO/VHaHTXzwWsGnkNwLRcqYfCXd9qDM+NZ273DPUvP2RaimYuLSu1K/g==}
-
- read-json-safe@1.0.5:
- resolution: {integrity: sha512-SJyNY/U9+vW35FPus22Qvv1oilnR7PCfN2E70uKQEGaJS313A5/cz9Yhv7ZtWzZ+XIwrtEPxXf10BOyYemHehA==}
-
- read-pkg-up@9.1.0:
- resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- read-pkg@7.1.0:
- resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==}
- engines: {node: '>=12.20'}
-
read-pkg@8.1.0:
resolution: {integrity: sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==}
engines: {node: '>=16'}
@@ -7689,22 +6933,10 @@ packages:
registry-auth-token@3.3.2:
resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==}
- registry-auth-token@4.2.2:
- resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==}
- engines: {node: '>=6.0.0'}
-
- registry-auth-token@5.0.2:
- resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==}
- engines: {node: '>=14'}
-
registry-url@3.1.0:
resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==}
engines: {node: '>=0.10.0'}
- registry-url@6.0.1:
- resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==}
- engines: {node: '>=12'}
-
regjsgen@0.8.0:
resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
@@ -7753,13 +6985,6 @@ packages:
reselect@5.1.1:
resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==}
- resolve-alpn@1.2.1:
- resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
-
- resolve-cwd@3.0.0:
- resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
- engines: {node: '>=8'}
-
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -7772,17 +6997,6 @@ packages:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
- responselike@2.0.1:
- resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==}
-
- responselike@3.0.0:
- resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
- engines: {node: '>=14.16'}
-
- restore-cursor@2.0.0:
- resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==}
- engines: {node: '>=4'}
-
restore-cursor@3.1.0:
resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
engines: {node: '>=8'}
@@ -7842,10 +7056,6 @@ packages:
rrweb-cssom@0.8.0:
resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==}
- run-applescript@5.0.0:
- resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
- engines: {node: '>=12'}
-
run-applescript@7.0.0:
resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
engines: {node: '>=18'}
@@ -7854,10 +7064,6 @@ packages:
resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
engines: {node: '>=0.12.0'}
- run-async@3.0.0:
- resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
- engines: {node: '>=0.12.0'}
-
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -7887,10 +7093,6 @@ packages:
scheduler@0.27.0:
resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
- scoped-regex@3.0.0:
- resolution: {integrity: sha512-yEsN6TuxZhZ1Tl9iB81frTNS292m0I/IG7+w8lTvfcJQP2x3vnpOoevjBoE3Np5A6KnZM2+RtVenihj9t6NiYg==}
- engines: {node: '>=12'}
-
scroll-into-view-if-needed@3.1.0:
resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
@@ -7899,10 +7101,6 @@ packages:
engines: {node: ^14.13.1 || >=16.0.0}
hasBin: true
- semver-diff@4.0.0:
- resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==}
- engines: {node: '>=12'}
-
semver@5.7.2:
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
hasBin: true
@@ -8006,18 +7204,10 @@ packages:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
- slash@4.0.0:
- resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
- engines: {node: '>=12'}
-
slash@5.1.0:
resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
engines: {node: '>=14.16'}
- slice-ansi@0.0.4:
- resolution: {integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==}
- engines: {node: '>=0.10.0'}
-
slice-ansi@4.0.0:
resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
engines: {node: '>=10'}
@@ -8092,14 +7282,6 @@ packages:
string-hash@1.1.3:
resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==}
- string-width@1.0.2:
- resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==}
- engines: {node: '>=0.10.0'}
-
- string-width@2.1.1:
- resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==}
- engines: {node: '>=4'}
-
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -8114,18 +7296,6 @@ packages:
stringify-entities@4.0.4:
resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
- strip-ansi@3.0.1:
- resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
- engines: {node: '>=0.10.0'}
-
- strip-ansi@4.0.0:
- resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
- engines: {node: '>=4'}
-
- strip-ansi@5.2.0:
- resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
- engines: {node: '>=6'}
-
strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -8134,14 +7304,6 @@ packages:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
engines: {node: '>=12'}
- strip-final-newline@2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
-
- strip-final-newline@3.0.0:
- resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
- engines: {node: '>=12'}
-
strip-indent@3.0.0:
resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
engines: {node: '>=8'}
@@ -8189,10 +7351,6 @@ packages:
engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
- supports-color@2.0.0:
- resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
- engines: {node: '>=0.8.0'}
-
supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -8229,14 +7387,6 @@ packages:
swap-case@1.1.2:
resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==}
- symbol-observable@1.2.0:
- resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==}
- engines: {node: '>=0.10.0'}
-
- symbol-observable@4.0.0:
- resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==}
- engines: {node: '>=0.10'}
-
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
@@ -8265,10 +7415,6 @@ packages:
resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
engines: {node: '>=8'}
- terminal-link@3.0.0:
- resolution: {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==}
- engines: {node: '>=12'}
-
terser@5.39.0:
resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==}
engines: {node: '>=10'}
@@ -8329,10 +7475,6 @@ packages:
title-case@2.1.1:
resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==}
- titleize@3.0.0:
- resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
- engines: {node: '>=12'}
-
tldts-core@6.1.86:
resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==}
@@ -8462,14 +7604,6 @@ packages:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
- type-fest@1.4.0:
- resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
- engines: {node: '>=10'}
-
- type-fest@2.19.0:
- resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
- engines: {node: '>=12.20'}
-
type-fest@3.13.1:
resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
engines: {node: '>=14.16'}
@@ -8481,18 +7615,6 @@ packages:
typed-rest-client@1.8.11:
resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==}
- typedarray-to-buffer@3.1.5:
- resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
-
- types-eslintrc@1.0.3:
- resolution: {integrity: sha512-zKTR6aKHEudQpl+JoZjS3qh0B5IzSpQK/BCpYBECujcnKtqL87DJJ1sJKe5B8k/y8/UJ5sukq42QDvlaJyCO2w==}
-
- types-json@1.2.2:
- resolution: {integrity: sha512-VfVLISHypS7ayIHvhacOESOTib4Sm4mAhnsgR8fzQdGp89YoBwMqvGmqENjtYehUQzgclT+7NafpEXkK/MHKwA==}
-
- types-pkg-json@1.2.1:
- resolution: {integrity: sha512-Wj75lCkPwfj1BhmaJxMPpTQj9YGpihjs3WICigt1IjTAswr7zPXP0iJYPZjU0Rw/IriODhMJjAImkCIxt9KeuQ==}
-
typescript-paths@1.5.1:
resolution: {integrity: sha512-lYErSLCON2MSplVV5V/LBgD4UNjMgY3guATdFCZY2q1Nr6OZEu4q6zX/rYMsG1TaWqqQSszg6C9EU7AGWMDrIw==}
peerDependencies:
@@ -8569,10 +7691,6 @@ packages:
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
- unique-string@3.0.0:
- resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==}
- engines: {node: '>=12'}
-
unist-util-is@6.0.0:
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
@@ -8602,10 +7720,6 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
- untildify@4.0.0:
- resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
- engines: {node: '>=8'}
-
update-browserslist-db@1.1.0:
resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
hasBin: true
@@ -8621,10 +7735,6 @@ packages:
update-check@1.5.4:
resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==}
- update-notifier@6.0.2:
- resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==}
- engines: {node: '>=14.16'}
-
upper-case-first@1.1.2:
resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==}
@@ -8676,21 +7786,15 @@ packages:
uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
hasBin: true
v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
- vali-date@1.0.0:
- resolution: {integrity: sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==}
- engines: {node: '>=0.10.0'}
-
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
- validate-npm-package-name@3.0.0:
- resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==}
-
validate-npm-package-name@5.0.1:
resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -8816,6 +7920,7 @@ packages:
whatwg-encoding@3.1.1:
resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
engines: {node: '>=18'}
+ deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation
whatwg-mimetype@4.0.0:
resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
@@ -8850,17 +7955,9 @@ packages:
resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
engines: {node: '>=8'}
- widest-line@4.0.1:
- resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
- engines: {node: '>=12'}
-
wordwrap@1.0.0:
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
- wrap-ansi@3.0.1:
- resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==}
- engines: {node: '>=4'}
-
wrap-ansi@6.2.0:
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
engines: {node: '>=8'}
@@ -8876,9 +7973,6 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- write-file-atomic@3.0.3:
- resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
-
ws@8.18.0:
resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
engines: {node: '>=10.0.0'}
@@ -8891,10 +7985,6 @@ packages:
utf-8-validate:
optional: true
- xdg-basedir@5.1.0:
- resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==}
- engines: {node: '>=12'}
-
xml-name-validator@5.0.0:
resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
engines: {node: '>=18'}
@@ -8949,14 +8039,6 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- yocto-queue@1.1.1:
- resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
- engines: {node: '>=12.20'}
-
- yoctocolors-cjs@2.1.2:
- resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
- engines: {node: '>=18'}
-
zod-validation-error@3.5.3:
resolution: {integrity: sha512-OT5Y8lbUadqVZCsnyFaTQ4/O2mys4tj7PqhdbBCp7McPwvIEKfPtdA6QfPeFQK2/Rz5LgwmAXRJTugBNBi0btw==}
engines: {node: '>=18.0.0'}
@@ -9895,6 +8977,20 @@ snapshots:
'@types/react': 19.1.9
date-fns: 4.1.0
+ '@base-ui/react@1.4.1(@date-fns/tz@1.2.0)(@types/react@19.2.2)(date-fns@4.1.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
+ dependencies:
+ '@babel/runtime': 7.29.2
+ '@base-ui/utils': 0.2.8(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@floating-ui/react-dom': 2.1.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@floating-ui/utils': 0.2.11
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ use-sync-external-store: 1.6.0(react@19.2.1)
+ optionalDependencies:
+ '@date-fns/tz': 1.2.0
+ '@types/react': 19.2.2
+ date-fns: 4.1.0
+
'@base-ui/utils@0.2.6(@types/react@19.1.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.6
@@ -9917,11 +9013,16 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.9
- '@bconnorwhite/module@2.0.2':
+ '@base-ui/utils@0.2.8(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- find-up: 5.0.0
- read-json-safe: 1.0.5
- types-pkg-json: 1.2.1
+ '@babel/runtime': 7.29.2
+ '@floating-ui/utils': 0.2.11
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ reselect: 5.1.1
+ use-sync-external-store: 1.6.0(react@19.2.1)
+ optionalDependencies:
+ '@types/react': 19.2.2
'@biomejs/biome@2.3.8':
optionalDependencies:
@@ -10293,8 +9394,6 @@ snapshots:
'@img/sharp-win32-x64@0.34.4':
optional: true
- '@inquirer/figures@1.0.3': {}
-
'@isaacs/balanced-match@4.0.1': {}
'@isaacs/brace-expansion@5.0.0':
@@ -10930,6 +10029,7 @@ snapshots:
'@parcel/types': 2.12.0(@parcel/core@2.12.0)
transitivePeerDependencies:
- '@parcel/core'
+ - '@swc/helpers'
'@parcel/plugin@2.9.2(@parcel/core@2.12.0)':
dependencies:
@@ -11082,7 +10182,7 @@ snapshots:
'@parcel/source-map': 2.1.1
'@parcel/utils': 2.9.2
'@parcel/workers': 2.9.2(@parcel/core@2.9.2)
- '@swc/helpers': 0.5.12
+ '@swc/helpers': 0.5.15
browserslist: 4.23.2
nullthrows: 1.1.1
regenerator-runtime: 0.13.11
@@ -11348,6 +10448,8 @@ snapshots:
'@parcel/types': 2.12.0(@parcel/core@2.12.0)
'@parcel/utils': 2.12.0
nullthrows: 1.1.1
+ transitivePeerDependencies:
+ - '@swc/helpers'
'@parcel/workers@2.9.2(@parcel/core@2.12.0)':
dependencies:
@@ -11372,18 +10474,6 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@pnpm/config.env-replace@1.1.0': {}
-
- '@pnpm/network.ca-file@1.0.2':
- dependencies:
- graceful-fs: 4.2.10
-
- '@pnpm/npm-conf@2.2.2':
- dependencies:
- '@pnpm/config.env-replace': 1.1.0
- '@pnpm/network.ca-file': 1.0.2
- config-chain: 1.1.13
-
'@polka/url@1.0.0-next.29': {}
'@radix-ui/number@1.1.1': {}
@@ -12213,6 +11303,28 @@ snapshots:
transitivePeerDependencies:
- '@types/react-dom'
+ '@raystack/apsara@1.0.1(@date-fns/tz@1.2.0)(@types/react@19.2.2)(date-fns@4.1.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
+ dependencies:
+ '@base-ui/react': 1.4.1(@date-fns/tz@1.2.0)(@types/react@19.2.2)(date-fns@4.1.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@base-ui/utils': 0.2.8(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-icons': 1.3.2(react@19.2.1)
+ '@tanstack/match-sorter-utils': 8.8.4
+ '@tanstack/react-table': 8.9.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@tanstack/react-virtual': 3.13.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@tanstack/table-core': 8.9.2
+ class-variance-authority: 0.7.1
+ culori: 4.0.2
+ dayjs: 1.11.20
+ prism-react-renderer: 2.4.1(react@19.2.1)
+ react: 19.2.1
+ react-day-picker: 9.6.7(react@19.2.1)
+ react-dom: 19.2.1(react@19.2.1)
+ optionalDependencies:
+ '@types/react': 19.2.2
+ transitivePeerDependencies:
+ - '@date-fns/tz'
+ - date-fns
+
'@rollup/plugin-commonjs@25.0.2(rollup@3.25.1)':
dependencies:
'@rollup/pluginutils': 5.1.0(rollup@3.25.1)
@@ -12319,14 +11431,6 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.48.1':
optional: true
- '@samverschueren/stream-to-observable@0.3.1(rxjs@6.6.7)':
- dependencies:
- any-observable: 0.3.0(rxjs@6.6.7)
- optionalDependencies:
- rxjs: 6.6.7
- transitivePeerDependencies:
- - zenObservable
-
'@secretlint/config-creator@9.3.4':
dependencies:
'@secretlint/types': 9.3.4
@@ -12479,10 +11583,6 @@ snapshots:
'@shikijs/vscode-textmate@10.0.2': {}
- '@sindresorhus/is@4.6.0': {}
-
- '@sindresorhus/is@5.6.0': {}
-
'@sindresorhus/merge-streams@2.3.0': {}
'@standard-schema/spec@1.0.0': {}
@@ -12677,10 +11777,6 @@ snapshots:
'@swc/counter@0.1.3': {}
- '@swc/helpers@0.5.12':
- dependencies:
- tslib: 2.6.3
-
'@swc/helpers@0.5.15':
dependencies:
tslib: 2.8.1
@@ -12693,14 +11789,6 @@ snapshots:
dependencies:
'@swc/counter': 0.1.3
- '@szmarczak/http-timer@4.0.6':
- dependencies:
- defer-to-connect: 2.0.1
-
- '@szmarczak/http-timer@5.0.1':
- dependencies:
- defer-to-connect: 2.0.1
-
'@tanstack/match-sorter-utils@8.8.4':
dependencies:
remove-accents: 0.4.2
@@ -12837,13 +11925,6 @@ snapshots:
'@types/aria-query@5.0.4': {}
- '@types/cacheable-request@6.0.3':
- dependencies:
- '@types/http-cache-semantics': 4.0.4
- '@types/keyv': 3.1.4
- '@types/node': 24.10.0
- '@types/responselike': 1.0.3
-
'@types/chai@5.2.2':
dependencies:
'@types/deep-eql': 4.0.2
@@ -12873,17 +11954,11 @@ snapshots:
dependencies:
'@types/unist': 3.0.2
- '@types/http-cache-semantics@4.0.4': {}
-
'@types/inquirer@6.5.0':
dependencies:
'@types/through': 0.0.33
rxjs: 6.6.7
- '@types/keyv@3.1.4':
- dependencies:
- '@types/node': 24.10.0
-
'@types/mdast@4.0.4':
dependencies:
'@types/unist': 3.0.2
@@ -12926,10 +12001,6 @@ snapshots:
'@types/resolve@1.20.2': {}
- '@types/responselike@1.0.3':
- dependencies:
- '@types/node': 24.10.0
-
'@types/sarif@2.1.7': {}
'@types/through@0.0.33':
@@ -12946,7 +12017,7 @@ snapshots:
dependencies:
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.5
- tslib: 2.6.3
+ tslib: 2.8.1
transitivePeerDependencies:
- supports-color
@@ -13109,11 +12180,6 @@ snapshots:
clean-stack: 2.2.0
indent-string: 4.0.0
- aggregate-error@4.0.1:
- dependencies:
- clean-stack: 4.2.0
- indent-string: 5.0.0
-
ajv@8.17.1:
dependencies:
fast-deep-equal: 3.1.3
@@ -13121,40 +12187,18 @@ snapshots:
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
- all-package-names@2.0.897:
- dependencies:
- commander-version: 1.1.0
- p-lock: 2.1.0
- parse-json-object: 2.0.1
- progress: 2.0.3
- types-json: 1.2.2
-
ansi-align@3.0.1:
dependencies:
string-width: 4.2.3
- ansi-escapes@3.2.0: {}
-
ansi-escapes@4.3.2:
dependencies:
type-fest: 0.21.3
- ansi-escapes@5.0.0:
- dependencies:
- type-fest: 1.4.0
-
- ansi-regex@2.1.1: {}
-
- ansi-regex@3.0.1: {}
-
- ansi-regex@4.1.1: {}
-
ansi-regex@5.0.1: {}
ansi-regex@6.0.1: {}
- ansi-styles@2.2.1: {}
-
ansi-styles@3.2.1:
dependencies:
color-convert: 1.9.3
@@ -13167,10 +12211,6 @@ snapshots:
ansi-styles@6.2.1: {}
- any-observable@0.3.0(rxjs@6.6.7):
- optionalDependencies:
- rxjs: 6.6.7
-
any-promise@1.3.0: {}
arg@4.1.3: {}
@@ -13257,8 +12297,6 @@ snapshots:
base64-js@1.5.1: {}
- big-integer@1.6.52: {}
-
binaryextensions@6.11.0:
dependencies:
editions: 6.21.0
@@ -13284,21 +12322,6 @@ snapshots:
widest-line: 3.1.0
wrap-ansi: 7.0.0
- boxen@7.1.1:
- dependencies:
- ansi-align: 3.0.1
- camelcase: 7.0.1
- chalk: 5.3.0
- cli-boxes: 3.0.0
- string-width: 5.1.2
- type-fest: 2.19.0
- widest-line: 4.0.1
- wrap-ansi: 8.1.0
-
- bplist-parser@0.2.0:
- dependencies:
- big-integer: 1.6.52
-
brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
@@ -13318,7 +12341,7 @@ snapshots:
browserslist@4.23.2:
dependencies:
- caniuse-lite: 1.0.30001642
+ caniuse-lite: 1.0.30001701
electron-to-chromium: 1.4.827
node-releases: 2.0.14
update-browserslist-db: 1.1.0(browserslist@4.23.2)
@@ -13344,42 +12367,12 @@ snapshots:
builtin-modules@3.3.0: {}
- builtins@1.0.3: {}
-
- bundle-name@3.0.0:
- dependencies:
- run-applescript: 5.0.0
-
bundle-name@4.1.0:
dependencies:
run-applescript: 7.0.0
cac@6.7.14: {}
- cacheable-lookup@5.0.4: {}
-
- cacheable-lookup@7.0.0: {}
-
- cacheable-request@10.2.14:
- dependencies:
- '@types/http-cache-semantics': 4.0.4
- get-stream: 6.0.1
- http-cache-semantics: 4.1.1
- keyv: 4.5.4
- mimic-response: 4.0.0
- normalize-url: 8.0.1
- responselike: 3.0.0
-
- cacheable-request@7.0.4:
- dependencies:
- clone-response: 1.0.3
- get-stream: 5.2.0
- http-cache-semantics: 4.1.1
- keyv: 4.5.4
- lowercase-keys: 2.0.0
- normalize-url: 6.1.0
- responselike: 2.0.1
-
call-bind-apply-helpers@1.0.2:
dependencies:
es-errors: 1.3.0
@@ -13400,8 +12393,6 @@ snapshots:
callsites@3.1.0: {}
- callsites@4.2.0: {}
-
camel-case@3.0.0:
dependencies:
no-case: 2.3.2
@@ -13409,8 +12400,6 @@ snapshots:
camelcase@6.3.0: {}
- camelcase@7.0.1: {}
-
caniuse-api@3.0.0:
dependencies:
browserslist: 4.23.2
@@ -13418,8 +12407,6 @@ snapshots:
lodash.memoize: 4.1.2
lodash.uniq: 4.5.0
- caniuse-lite@1.0.30001642: {}
-
caniuse-lite@1.0.30001701: {}
ccount@2.0.1: {}
@@ -13432,14 +12419,6 @@ snapshots:
loupe: 3.2.1
pathval: 2.0.1
- chalk@1.1.3:
- dependencies:
- ansi-styles: 2.2.1
- escape-string-regexp: 1.0.5
- has-ansi: 2.0.0
- strip-ansi: 3.0.1
- supports-color: 2.0.0
-
chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
@@ -13456,8 +12435,6 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
- chalk@5.3.0: {}
-
change-case@3.1.0:
dependencies:
camel-case: 3.0.0
@@ -13523,43 +12500,22 @@ snapshots:
chrome-trace-event@1.0.4: {}
- ci-info@3.9.0: {}
-
class-variance-authority@0.7.1:
dependencies:
clsx: 2.1.1
clean-stack@2.2.0: {}
- clean-stack@4.2.0:
- dependencies:
- escape-string-regexp: 5.0.0
-
cli-boxes@2.2.1: {}
- cli-boxes@3.0.0: {}
-
- cli-cursor@2.1.0:
- dependencies:
- restore-cursor: 2.0.0
-
cli-cursor@3.1.0:
dependencies:
restore-cursor: 3.1.0
cli-spinners@2.9.2: {}
- cli-truncate@0.2.1:
- dependencies:
- slice-ansi: 0.0.4
- string-width: 1.0.2
-
- cli-width@2.2.1: {}
-
cli-width@3.0.0: {}
- cli-width@4.1.0: {}
-
client-only@0.0.1: {}
cliui@8.0.1:
@@ -13568,10 +12524,6 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
- clone-response@1.0.3:
- dependencies:
- mimic-response: 1.0.1
-
clone@1.0.4: {}
clone@2.1.2: {}
@@ -13594,8 +12546,6 @@ snapshots:
code-block-writer@13.0.3: {}
- code-point-at@1.1.0: {}
-
collapse-white-space@2.1.0: {}
color-convert@1.9.3:
@@ -13633,11 +12583,6 @@ snapshots:
comma-separated-tokens@2.0.3: {}
- commander-version@1.1.0:
- dependencies:
- '@bconnorwhite/module': 2.0.2
- commander: 6.2.1
-
commander@10.0.1: {}
commander@11.1.0: {}
@@ -13649,8 +12594,6 @@ snapshots:
commander@4.1.1: {}
- commander@6.2.1: {}
-
commander@7.2.0: {}
commondir@1.0.1: {}
@@ -13675,19 +12618,6 @@ snapshots:
tree-kill: 1.2.2
yargs: 17.7.2
- config-chain@1.1.13:
- dependencies:
- ini: 1.3.8
- proto-list: 1.2.4
-
- configstore@6.0.0:
- dependencies:
- dot-prop: 6.0.1
- graceful-fs: 4.2.11
- unique-string: 3.0.0
- write-file-atomic: 3.0.3
- xdg-basedir: 5.1.0
-
constant-case@2.0.0:
dependencies:
snake-case: 2.1.0
@@ -13721,22 +12651,12 @@ snapshots:
create-require@1.1.1: {}
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
- crypto-random-string@4.0.0:
- dependencies:
- type-fest: 1.4.0
-
css-declaration-sorter@6.4.1(postcss@8.4.24):
dependencies:
postcss: 8.4.24
@@ -13846,8 +12766,6 @@ snapshots:
date-fns-jalali@4.1.0-0: {}
- date-fns@1.30.1: {}
-
date-fns@4.1.0: {}
dayjs@1.11.20: {}
@@ -13869,6 +12787,7 @@ snapshots:
decompress-response@6.0.0:
dependencies:
mimic-response: 3.1.0
+ optional: true
deep-eql@5.0.2: {}
@@ -13897,20 +12816,8 @@ snapshots:
deepmerge@4.3.1: {}
- default-browser-id@3.0.0:
- dependencies:
- bplist-parser: 0.2.0
- untildify: 4.0.0
-
default-browser-id@5.0.0: {}
- default-browser@4.0.0:
- dependencies:
- bundle-name: 3.0.0
- default-browser-id: 3.0.0
- execa: 7.2.0
- titleize: 3.0.0
-
default-browser@5.2.1:
dependencies:
bundle-name: 4.1.0
@@ -13920,8 +12827,6 @@ snapshots:
dependencies:
clone: 1.0.4
- defer-to-connect@2.0.1: {}
-
define-data-property@1.1.4:
dependencies:
es-define-property: 1.0.0
@@ -13947,17 +12852,6 @@ snapshots:
rimraf: 3.0.2
slash: 3.0.0
- del@7.1.0:
- dependencies:
- globby: 13.2.2
- graceful-fs: 4.2.11
- is-glob: 4.0.3
- is-path-cwd: 3.0.0
- is-path-inside: 4.0.0
- p-map: 5.5.0
- rimraf: 3.0.2
- slash: 4.0.0
-
delayed-stream@1.0.0: {}
dequal@2.0.3: {}
@@ -14026,15 +12920,7 @@ snapshots:
dot-case@3.0.4:
dependencies:
no-case: 3.0.4
- tslib: 2.6.3
-
- dot-prop@6.0.1:
- dependencies:
- is-obj: 2.0.0
-
- dot-prop@7.2.0:
- dependencies:
- type-fest: 2.19.0
+ tslib: 2.8.1
dotenv-expand@5.1.0: {}
@@ -14064,8 +12950,6 @@ snapshots:
electron-to-chromium@1.5.109: {}
- elegant-spinner@1.0.1: {}
-
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -14078,6 +12962,7 @@ snapshots:
end-of-stream@1.4.4:
dependencies:
once: 1.4.0
+ optional: true
entities@2.2.0: {}
@@ -14194,8 +13079,6 @@ snapshots:
escalade@3.2.0: {}
- escape-goat@4.0.0: {}
-
escape-string-regexp@1.0.5: {}
escape-string-regexp@5.0.0: {}
@@ -14251,32 +13134,6 @@ snapshots:
eventemitter3@4.0.7: {}
- execa@5.1.1:
- dependencies:
- cross-spawn: 7.0.6
- get-stream: 6.0.1
- human-signals: 2.1.0
- is-stream: 2.0.1
- merge-stream: 2.0.0
- npm-run-path: 4.0.1
- onetime: 5.1.2
- signal-exit: 3.0.7
- strip-final-newline: 2.0.0
-
- execa@7.2.0:
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 6.0.1
- human-signals: 4.3.1
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.3.0
- onetime: 6.0.0
- signal-exit: 3.0.7
- strip-final-newline: 3.0.0
-
- exit-hook@3.2.0: {}
-
expand-template@2.0.3:
optional: true
@@ -14332,15 +13189,6 @@ snapshots:
fflate@0.8.2: {}
- figures@1.7.0:
- dependencies:
- escape-string-regexp: 1.0.5
- object-assign: 4.1.1
-
- figures@2.0.0:
- dependencies:
- escape-string-regexp: 1.0.5
-
figures@3.2.0:
dependencies:
escape-string-regexp: 1.0.5
@@ -14349,21 +13197,11 @@ snapshots:
dependencies:
to-regex-range: 5.0.1
- find-up@4.1.0:
- dependencies:
- locate-path: 5.0.0
- path-exists: 4.0.0
-
find-up@5.0.0:
dependencies:
locate-path: 6.0.0
path-exists: 4.0.0
- find-up@6.3.0:
- dependencies:
- locate-path: 7.2.0
- path-exists: 5.0.0
-
flatted@3.3.3: {}
for-each@0.3.3:
@@ -14375,8 +13213,6 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
- form-data-encoder@2.1.4: {}
-
form-data@4.0.1:
dependencies:
asynckit: 0.4.0
@@ -14578,19 +13414,11 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
- get-stream@5.2.0:
- dependencies:
- pump: 3.0.0
-
- get-stream@6.0.1: {}
-
github-from-package@0.0.0:
optional: true
github-slugger@2.0.0: {}
- github-url-from-git@1.5.0: {}
-
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -14639,10 +13467,6 @@ snapshots:
minimatch: 5.1.6
once: 1.4.0
- global-dirs@3.0.1:
- dependencies:
- ini: 2.0.0
-
globals@11.12.0: {}
globals@13.24.0:
@@ -14660,14 +13484,6 @@ snapshots:
merge2: 1.4.1
slash: 3.0.0
- globby@13.2.2:
- dependencies:
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.1
- merge2: 1.4.1
- slash: 4.0.0
-
globby@14.1.0:
dependencies:
'@sindresorhus/merge-streams': 2.3.0
@@ -14683,36 +13499,6 @@ snapshots:
gopd@1.2.0: {}
- got@11.8.6:
- dependencies:
- '@sindresorhus/is': 4.6.0
- '@szmarczak/http-timer': 4.0.6
- '@types/cacheable-request': 6.0.3
- '@types/responselike': 1.0.3
- cacheable-lookup: 5.0.4
- cacheable-request: 7.0.4
- decompress-response: 6.0.0
- http2-wrapper: 1.0.3
- lowercase-keys: 2.0.0
- p-cancelable: 2.1.1
- responselike: 2.0.1
-
- got@12.6.1:
- dependencies:
- '@sindresorhus/is': 5.6.0
- '@szmarczak/http-timer': 5.0.1
- cacheable-lookup: 7.0.0
- cacheable-request: 10.2.14
- decompress-response: 6.0.0
- form-data-encoder: 2.1.4
- get-stream: 6.0.1
- http2-wrapper: 2.2.1
- lowercase-keys: 3.0.0
- p-cancelable: 3.0.0
- responselike: 3.0.0
-
- graceful-fs@4.2.10: {}
-
graceful-fs@4.2.11: {}
graphemesplit@2.6.0:
@@ -14731,10 +13517,6 @@ snapshots:
harmony-reflect@1.6.2: {}
- has-ansi@2.0.0:
- dependencies:
- ansi-regex: 2.1.1
-
has-bigints@1.0.2: {}
has-flag@3.0.0: {}
@@ -14755,8 +13537,6 @@ snapshots:
dependencies:
has-symbols: 1.0.3
- has-yarn@3.0.0: {}
-
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
@@ -14833,10 +13613,6 @@ snapshots:
dependencies:
lru-cache: 6.0.0
- hosted-git-info@6.1.1:
- dependencies:
- lru-cache: 7.18.3
-
hosted-git-info@7.0.2:
dependencies:
lru-cache: 10.4.3
@@ -14873,8 +13649,6 @@ snapshots:
domutils: 2.8.0
entities: 3.0.1
- http-cache-semantics@4.1.1: {}
-
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.1
@@ -14882,16 +13656,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- http2-wrapper@1.0.3:
- dependencies:
- quick-lru: 5.1.1
- resolve-alpn: 1.2.1
-
- http2-wrapper@2.2.1:
- dependencies:
- quick-lru: 5.1.1
- resolve-alpn: 1.2.1
-
https-proxy-agent@7.0.5:
dependencies:
agent-base: 7.1.1
@@ -14906,10 +13670,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- human-signals@2.1.0: {}
-
- human-signals@4.3.1: {}
-
iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
@@ -14930,10 +13690,6 @@ snapshots:
ieee754@1.2.1: {}
- ignore-walk@6.0.5:
- dependencies:
- minimatch: 9.0.5
-
ignore@5.3.1: {}
ignore@7.0.5: {}
@@ -14953,21 +13709,8 @@ snapshots:
dependencies:
resolve-from: 5.0.0
- import-lazy@4.0.0: {}
-
- import-local@3.1.0:
- dependencies:
- pkg-dir: 4.2.0
- resolve-cwd: 3.0.0
-
- imurmurhash@0.1.4: {}
-
- indent-string@3.2.0: {}
-
indent-string@4.0.0: {}
- indent-string@5.0.0: {}
-
inflight@1.0.6:
dependencies:
once: 1.4.0
@@ -14977,32 +13720,8 @@ snapshots:
ini@1.3.8: {}
- ini@2.0.0: {}
-
inline-style-parser@0.2.4: {}
- inquirer-autosubmit-prompt@0.2.0:
- dependencies:
- chalk: 2.4.2
- inquirer: 6.5.2
- rxjs: 6.6.7
-
- inquirer@6.5.2:
- dependencies:
- ansi-escapes: 3.2.0
- chalk: 2.4.2
- cli-cursor: 2.1.0
- cli-width: 2.2.1
- external-editor: 3.1.0
- figures: 2.0.0
- lodash: 4.17.21
- mute-stream: 0.0.7
- run-async: 2.4.1
- rxjs: 6.6.7
- string-width: 2.1.1
- strip-ansi: 5.2.0
- through: 2.3.8
-
inquirer@7.3.3:
dependencies:
ansi-escapes: 4.3.2
@@ -15037,21 +13756,6 @@ snapshots:
through: 2.3.8
wrap-ansi: 6.2.0
- inquirer@9.3.5:
- dependencies:
- '@inquirer/figures': 1.0.3
- ansi-escapes: 4.3.2
- cli-width: 4.1.0
- external-editor: 3.1.0
- mute-stream: 1.0.0
- ora: 5.4.1
- run-async: 3.0.0
- rxjs: 7.8.1
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 6.2.0
- yoctocolors-cjs: 2.1.2
-
internal-slot@1.0.7:
dependencies:
es-errors: 1.3.0
@@ -15092,10 +13796,6 @@ snapshots:
is-callable@1.2.7: {}
- is-ci@3.0.1:
- dependencies:
- ci-info: 3.9.0
-
is-core-module@2.14.0:
dependencies:
hasown: 2.0.2
@@ -15106,18 +13806,10 @@ snapshots:
is-decimal@2.0.1: {}
- is-docker@2.2.1: {}
-
is-docker@3.0.0: {}
is-extglob@2.1.1: {}
- is-fullwidth-code-point@1.0.0:
- dependencies:
- number-is-nan: 1.0.1
-
- is-fullwidth-code-point@2.0.0: {}
-
is-fullwidth-code-point@3.0.0: {}
is-glob@4.0.3:
@@ -15130,15 +13822,8 @@ snapshots:
dependencies:
is-docker: 3.0.0
- is-installed-globally@0.4.0:
- dependencies:
- global-dirs: 3.0.1
- is-path-inside: 3.0.3
-
is-interactive@1.0.0: {}
- is-interactive@2.0.0: {}
-
is-json@2.0.1: {}
is-lower-case@1.1.3:
@@ -15149,40 +13834,20 @@ snapshots:
is-module@1.0.0: {}
- is-name-taken@2.0.0:
- dependencies:
- all-package-names: 2.0.897
- package-name-conflict: 1.0.3
- validate-npm-package-name: 3.0.0
-
- is-npm@6.0.0: {}
-
is-number-object@1.0.7:
dependencies:
has-tostringtag: 1.0.2
is-number@7.0.0: {}
- is-obj@2.0.0: {}
-
- is-observable@1.1.0:
- dependencies:
- symbol-observable: 1.2.0
-
is-path-cwd@2.2.0: {}
- is-path-cwd@3.0.0: {}
-
is-path-inside@3.0.3: {}
- is-path-inside@4.0.0: {}
-
is-plain-obj@4.1.0: {}
is-potential-custom-element-name@1.0.1: {}
- is-promise@2.2.2: {}
-
is-reference@1.2.1:
dependencies:
'@types/estree': 1.0.5
@@ -15192,22 +13857,12 @@ snapshots:
call-bind: 1.0.7
has-tostringtag: 1.0.2
- is-scoped@3.0.0:
- dependencies:
- scoped-regex: 3.0.0
-
is-set@2.0.3: {}
is-shared-array-buffer@1.0.3:
dependencies:
call-bind: 1.0.7
- is-stream@1.1.0: {}
-
- is-stream@2.0.1: {}
-
- is-stream@3.0.0: {}
-
is-string@1.0.7:
dependencies:
has-tostringtag: 1.0.2
@@ -15216,18 +13871,12 @@ snapshots:
dependencies:
has-symbols: 1.0.3
- is-typedarray@1.0.0: {}
-
is-unicode-supported@0.1.0: {}
- is-unicode-supported@1.3.0: {}
-
is-upper-case@1.1.2:
dependencies:
upper-case: 1.1.3
- is-url-superb@6.1.0: {}
-
is-weakmap@2.0.2: {}
is-weakset@2.0.3:
@@ -15235,24 +13884,16 @@ snapshots:
call-bind: 1.0.7
get-intrinsic: 1.2.4
- is-wsl@2.2.0:
- dependencies:
- is-docker: 2.2.1
-
is-wsl@3.1.0:
dependencies:
is-inside-container: 1.0.0
- is-yarn-global@0.4.1: {}
-
isarray@2.0.5: {}
isbinaryfile@4.0.10: {}
isexe@2.0.0: {}
- issue-regex@4.1.0: {}
-
istextorbinary@9.5.0:
dependencies:
binaryextensions: 6.11.0
@@ -15346,8 +13987,6 @@ snapshots:
jsesc@3.1.0: {}
- json-buffer@3.0.1: {}
-
json-parse-even-better-errors@2.3.1: {}
json-parse-even-better-errors@3.0.2: {}
@@ -15394,16 +14033,8 @@ snapshots:
prebuild-install: 7.1.3
optional: true
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
kleur@3.0.3: {}
- latest-version@7.0.0:
- dependencies:
- package-json: 8.1.1
-
lefthook-darwin-arm64@1.11.12:
optional: true
@@ -15550,49 +14181,6 @@ snapshots:
dependencies:
uc.micro: 2.1.0
- listr-input@0.2.1:
- dependencies:
- inquirer: 7.3.3
- inquirer-autosubmit-prompt: 0.2.0
- rxjs: 6.6.7
- through: 2.3.8
-
- listr-silent-renderer@1.1.1: {}
-
- listr-update-renderer@0.5.0(listr@0.14.3):
- dependencies:
- chalk: 1.1.3
- cli-truncate: 0.2.1
- elegant-spinner: 1.0.1
- figures: 1.7.0
- indent-string: 3.2.0
- listr: 0.14.3
- log-symbols: 1.0.2
- log-update: 2.3.0
- strip-ansi: 3.0.1
-
- listr-verbose-renderer@0.5.0:
- dependencies:
- chalk: 2.4.2
- cli-cursor: 2.1.0
- date-fns: 1.30.1
- figures: 2.0.0
-
- listr@0.14.3:
- dependencies:
- '@samverschueren/stream-to-observable': 0.3.1(rxjs@6.6.7)
- is-observable: 1.1.0
- is-promise: 2.2.2
- is-stream: 1.1.0
- listr-silent-renderer: 1.1.1
- listr-update-renderer: 0.5.0(listr@0.14.3)
- listr-verbose-renderer: 0.5.0
- p-map: 2.1.0
- rxjs: 6.6.7
- transitivePeerDependencies:
- - zen-observable
- - zenObservable
-
lmdb@2.7.11:
dependencies:
msgpackr: 1.8.5
@@ -15625,18 +14213,10 @@ snapshots:
loader-utils@3.3.1: {}
- locate-path@5.0.0:
- dependencies:
- p-locate: 4.1.0
-
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
- locate-path@7.2.0:
- dependencies:
- p-locate: 6.0.0
-
lodash.camelcase@4.3.0: {}
lodash.debounce@4.0.8: {}
@@ -15647,8 +14227,6 @@ snapshots:
lodash.isboolean@3.0.3: {}
- lodash.isequal@4.5.0: {}
-
lodash.isinteger@4.0.4: {}
lodash.isnumber@3.0.3: {}
@@ -15667,32 +14245,15 @@ snapshots:
lodash.uniq@4.5.0: {}
- lodash.zip@4.2.0: {}
-
lodash@4.17.21: {}
lodash@4.18.1: {}
- log-symbols@1.0.2:
- dependencies:
- chalk: 1.1.3
-
log-symbols@4.1.0:
dependencies:
chalk: 4.1.2
is-unicode-supported: 0.1.0
- log-symbols@5.1.0:
- dependencies:
- chalk: 5.3.0
- is-unicode-supported: 1.3.0
-
- log-update@2.3.0:
- dependencies:
- ansi-escapes: 3.2.0
- cli-cursor: 2.1.0
- wrap-ansi: 3.0.1
-
longest-streak@3.1.0: {}
loupe@3.2.1: {}
@@ -15705,11 +14266,7 @@ snapshots:
lower-case@2.0.2:
dependencies:
- tslib: 2.6.3
-
- lowercase-keys@2.0.0: {}
-
- lowercase-keys@3.0.0: {}
+ tslib: 2.8.1
lru-cache@10.4.3: {}
@@ -15723,8 +14280,6 @@ snapshots:
dependencies:
yallist: 4.0.0
- lru-cache@7.18.3: {}
-
lucide-react@0.548.0(react@19.2.1):
dependencies:
react: 19.2.1
@@ -15927,10 +14482,6 @@ snapshots:
mdurl@2.0.0: {}
- meow@12.1.1: {}
-
- merge-stream@2.0.0: {}
-
merge2@1.4.1: {}
micromark-core-commonmark@2.0.2:
@@ -16217,17 +14768,10 @@ snapshots:
mime@1.6.0: {}
- mimic-fn@1.2.0: {}
-
mimic-fn@2.1.0: {}
- mimic-fn@4.0.0: {}
-
- mimic-response@1.0.1: {}
-
- mimic-response@3.1.0: {}
-
- mimic-response@4.0.0: {}
+ mimic-response@3.1.0:
+ optional: true
min-indent@1.0.1: {}
@@ -16294,12 +14838,8 @@ snapshots:
optionalDependencies:
msgpackr-extract: 3.0.3
- mute-stream@0.0.7: {}
-
mute-stream@0.0.8: {}
- mute-stream@1.0.0: {}
-
mz@2.7.0:
dependencies:
any-promise: 1.3.0
@@ -16317,10 +14857,6 @@ snapshots:
neo-async@2.6.2: {}
- new-github-release-url@2.0.0:
- dependencies:
- type-fest: 2.19.0
-
next-themes@0.4.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
react: 19.2.1
@@ -16361,7 +14897,7 @@ snapshots:
no-case@3.0.4:
dependencies:
lower-case: 2.0.2
- tslib: 2.6.3
+ tslib: 2.8.1
node-abi@3.75.0:
dependencies:
@@ -16408,13 +14944,6 @@ snapshots:
'@types/sarif': 2.1.7
fs-extra: 10.1.0
- normalize-package-data@3.0.3:
- dependencies:
- hosted-git-info: 4.1.0
- is-core-module: 2.14.0
- semver: 7.7.3
- validate-npm-package-license: 3.0.4
-
normalize-package-data@6.0.2:
dependencies:
hosted-git-info: 7.0.2
@@ -16423,84 +14952,14 @@ snapshots:
normalize-url@6.1.0: {}
- normalize-url@8.0.1: {}
-
- np@8.0.4(typescript@5.4.3):
- dependencies:
- chalk: 5.3.0
- cosmiconfig: 8.3.6(typescript@5.4.3)
- del: 7.1.0
- escape-goat: 4.0.0
- escape-string-regexp: 5.0.0
- execa: 7.2.0
- exit-hook: 3.2.0
- github-url-from-git: 1.5.0
- has-yarn: 3.0.0
- hosted-git-info: 6.1.1
- ignore-walk: 6.0.5
- import-local: 3.1.0
- inquirer: 9.3.5
- is-installed-globally: 0.4.0
- is-interactive: 2.0.0
- is-scoped: 3.0.0
- issue-regex: 4.1.0
- listr: 0.14.3
- listr-input: 0.2.1
- log-symbols: 5.1.0
- meow: 12.1.1
- new-github-release-url: 2.0.0
- npm-name: 7.1.1
- onetime: 6.0.0
- open: 9.1.0
- ow: 1.1.1
- p-memoize: 7.1.1
- p-timeout: 6.1.2
- path-exists: 5.0.0
- pkg-dir: 7.0.0
- read-pkg-up: 9.1.0
- rxjs: 7.8.1
- semver: 7.6.0
- symbol-observable: 4.0.0
- terminal-link: 3.0.0
- update-notifier: 6.0.2
- transitivePeerDependencies:
- - typescript
- - zen-observable
- - zenObservable
-
- npm-name@7.1.1:
- dependencies:
- got: 11.8.6
- is-name-taken: 2.0.0
- is-scoped: 3.0.0
- is-url-superb: 6.1.0
- lodash.zip: 4.2.0
- org-regex: 1.0.0
- p-map: 5.5.0
- registry-auth-token: 4.2.2
- registry-url: 6.0.1
- validate-npm-package-name: 3.0.0
-
- npm-run-path@4.0.1:
- dependencies:
- path-key: 3.1.1
-
- npm-run-path@5.3.0:
- dependencies:
- path-key: 4.0.0
-
npm-to-yarn@3.0.1: {}
- npm@9.7.1: {}
-
nth-check@2.1.1:
dependencies:
boolbase: 1.0.0
nullthrows@1.1.1: {}
- number-is-nan@1.0.1: {}
-
nwsapi@2.2.16: {}
object-assign@4.1.1: {}
@@ -16527,18 +14986,10 @@ snapshots:
dependencies:
wrappy: 1.0.2
- onetime@2.0.1:
- dependencies:
- mimic-fn: 1.2.0
-
onetime@5.1.2:
dependencies:
mimic-fn: 2.1.0
- onetime@6.0.0:
- dependencies:
- mimic-fn: 4.0.0
-
oniguruma-parser@0.12.1: {}
oniguruma-to-es@4.3.3:
@@ -16554,13 +15005,6 @@ snapshots:
is-inside-container: 1.0.0
is-wsl: 3.1.0
- open@9.1.0:
- dependencies:
- default-browser: 4.0.0
- define-lazy-prop: 3.0.0
- is-inside-container: 1.0.0
- is-wsl: 2.2.0
-
ora@5.4.1:
dependencies:
bl: 4.1.0
@@ -16577,18 +15021,8 @@ snapshots:
ordered-binary@1.5.3: {}
- org-regex@1.0.0: {}
-
os-tmpdir@1.0.2: {}
- ow@1.1.1:
- dependencies:
- '@sindresorhus/is': 5.6.0
- callsites: 4.2.0
- dot-prop: 7.2.0
- lodash.isequal: 4.5.0
- vali-date: 1.0.0
-
oxc-transform@0.51.0:
optionalDependencies:
'@oxc-transform/binding-darwin-arm64': 0.51.0
@@ -16600,40 +15034,16 @@ snapshots:
'@oxc-transform/binding-win32-arm64-msvc': 0.51.0
'@oxc-transform/binding-win32-x64-msvc': 0.51.0
- p-cancelable@2.1.1: {}
-
- p-cancelable@3.0.0: {}
-
p-finally@1.0.0: {}
- p-limit@2.3.0:
- dependencies:
- p-try: 2.2.0
-
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
- p-limit@4.0.0:
- dependencies:
- yocto-queue: 1.1.1
-
- p-locate@4.1.0:
- dependencies:
- p-limit: 2.3.0
-
p-locate@5.0.0:
dependencies:
p-limit: 3.1.0
- p-locate@6.0.0:
- dependencies:
- p-limit: 4.0.0
-
- p-lock@2.1.0: {}
-
- p-map@2.1.0: {}
-
p-map@3.0.0:
dependencies:
aggregate-error: 3.1.0
@@ -16642,15 +15052,6 @@ snapshots:
dependencies:
aggregate-error: 3.1.0
- p-map@5.5.0:
- dependencies:
- aggregate-error: 4.0.1
-
- p-memoize@7.1.1:
- dependencies:
- mimic-fn: 4.0.0
- type-fest: 3.13.1
-
p-queue@6.6.2:
dependencies:
eventemitter3: 4.0.7
@@ -16660,21 +15061,8 @@ snapshots:
dependencies:
p-finally: 1.0.0
- p-timeout@6.1.2: {}
-
- p-try@2.2.0: {}
-
package-json-from-dist@1.0.0: {}
- package-json@8.1.1:
- dependencies:
- got: 12.6.1
- registry-auth-token: 5.0.2
- registry-url: 6.0.1
- semver: 7.7.3
-
- package-name-conflict@1.0.3: {}
-
pako@0.2.9: {}
param-case@2.1.1:
@@ -16723,14 +15111,6 @@ snapshots:
is-decimal: 2.0.1
is-hexadecimal: 2.0.1
- parse-json-object@1.1.0:
- dependencies:
- types-json: 1.2.2
-
- parse-json-object@2.0.1:
- dependencies:
- types-json: 1.2.2
-
parse-json@5.2.0:
dependencies:
'@babel/code-frame': 7.24.7
@@ -16776,14 +15156,10 @@ snapshots:
path-exists@4.0.0: {}
- path-exists@5.0.0: {}
-
path-is-absolute@1.0.1: {}
path-key@3.1.1: {}
- path-key@4.0.0: {}
-
path-parse@1.0.7: {}
path-scurry@1.11.1:
@@ -16822,14 +15198,6 @@ snapshots:
pirates@4.0.6: {}
- pkg-dir@4.2.0:
- dependencies:
- find-up: 4.1.0
-
- pkg-dir@7.0.0:
- dependencies:
- find-up: 6.3.0
-
pluralize@2.0.0: {}
pluralize@8.0.0: {}
@@ -17123,8 +15491,6 @@ snapshots:
process@0.11.10: {}
- progress@2.0.3: {}
-
promise.series@0.2.0: {}
prompts@2.4.2:
@@ -17134,8 +15500,6 @@ snapshots:
property-information@7.0.0: {}
- proto-list@1.2.4: {}
-
psl@1.15.0:
dependencies:
punycode: 2.3.1
@@ -17144,15 +15508,12 @@ snapshots:
dependencies:
end-of-stream: 1.4.4
once: 1.4.0
+ optional: true
punycode.js@2.3.1: {}
punycode@2.3.1: {}
- pupa@3.1.0:
- dependencies:
- escape-goat: 4.0.0
-
qs@6.14.0:
dependencies:
side-channel: 1.1.0
@@ -17161,8 +15522,6 @@ snapshots:
queue-microtask@1.2.3: {}
- quick-lru@5.1.1: {}
-
radix-ui@1.4.3(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -17281,7 +15640,7 @@ snapshots:
dependencies:
react: 19.2.1
react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.1)
- tslib: 2.6.3
+ tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.2
@@ -17290,7 +15649,7 @@ snapshots:
react: 19.2.1
react-remove-scroll-bar: 2.3.8(@types/react@19.2.2)(react@19.2.1)
react-style-singleton: 2.2.3(@types/react@19.2.2)(react@19.2.1)
- tslib: 2.6.3
+ tslib: 2.8.1
use-callback-ref: 1.3.3(@types/react@19.2.2)(react@19.2.1)
use-sidecar: 1.1.3(@types/react@19.2.2)(react@19.2.1)
optionalDependencies:
@@ -17311,7 +15670,7 @@ snapshots:
dependencies:
get-nonce: 1.0.1
react: 19.2.1
- tslib: 2.6.3
+ tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.2
@@ -17321,26 +15680,6 @@ snapshots:
dependencies:
pify: 2.3.0
- read-file-safe@1.0.10: {}
-
- read-json-safe@1.0.5:
- dependencies:
- parse-json-object: 1.1.0
- read-file-safe: 1.0.10
-
- read-pkg-up@9.1.0:
- dependencies:
- find-up: 6.3.0
- read-pkg: 7.1.0
- type-fest: 2.19.0
-
- read-pkg@7.1.0:
- dependencies:
- '@types/normalize-package-data': 2.4.4
- normalize-package-data: 3.0.3
- parse-json: 5.2.0
- type-fest: 2.19.0
-
read-pkg@8.1.0:
dependencies:
'@types/normalize-package-data': 2.4.4
@@ -17440,22 +15779,10 @@ snapshots:
rc: 1.2.8
safe-buffer: 5.2.1
- registry-auth-token@4.2.2:
- dependencies:
- rc: 1.2.8
-
- registry-auth-token@5.0.2:
- dependencies:
- '@pnpm/npm-conf': 2.2.2
-
registry-url@3.1.0:
dependencies:
rc: 1.2.8
- registry-url@6.0.1:
- dependencies:
- rc: 1.2.8
-
regjsgen@0.8.0: {}
regjsparser@0.12.0:
@@ -17537,12 +15864,6 @@ snapshots:
reselect@5.1.1: {}
- resolve-alpn@1.2.1: {}
-
- resolve-cwd@3.0.0:
- dependencies:
- resolve-from: 5.0.0
-
resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -17553,19 +15874,6 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- responselike@2.0.1:
- dependencies:
- lowercase-keys: 2.0.0
-
- responselike@3.0.0:
- dependencies:
- lowercase-keys: 3.0.0
-
- restore-cursor@2.0.0:
- dependencies:
- onetime: 2.0.1
- signal-exit: 3.0.7
-
restore-cursor@3.1.0:
dependencies:
onetime: 5.1.2
@@ -17656,16 +15964,10 @@ snapshots:
rrweb-cssom@0.8.0: {}
- run-applescript@5.0.0:
- dependencies:
- execa: 5.1.1
-
run-applescript@7.0.0: {}
run-async@2.4.1: {}
- run-async@3.0.0: {}
-
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
@@ -17692,8 +15994,6 @@ snapshots:
scheduler@0.27.0: {}
- scoped-regex@3.0.0: {}
-
scroll-into-view-if-needed@3.1.0:
dependencies:
compute-scroll-into-view: 3.1.1
@@ -17710,10 +16010,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- semver-diff@4.0.0:
- dependencies:
- semver: 7.7.3
-
semver@5.7.2: {}
semver@6.3.1: {}
@@ -17868,12 +16164,8 @@ snapshots:
slash@3.0.0: {}
- slash@4.0.0: {}
-
slash@5.1.0: {}
- slice-ansi@0.0.4: {}
-
slice-ansi@4.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -17887,7 +16179,7 @@ snapshots:
snake-case@3.0.4:
dependencies:
dot-case: 3.0.4
- tslib: 2.6.3
+ tslib: 2.8.1
sonner@2.0.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
@@ -17940,17 +16232,6 @@ snapshots:
string-hash@1.1.3: {}
- string-width@1.0.2:
- dependencies:
- code-point-at: 1.1.0
- is-fullwidth-code-point: 1.0.0
- strip-ansi: 3.0.1
-
- string-width@2.1.1:
- dependencies:
- is-fullwidth-code-point: 2.0.0
- strip-ansi: 4.0.0
-
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -17972,18 +16253,6 @@ snapshots:
character-entities-html4: 2.1.0
character-entities-legacy: 3.0.0
- strip-ansi@3.0.1:
- dependencies:
- ansi-regex: 2.1.1
-
- strip-ansi@4.0.0:
- dependencies:
- ansi-regex: 3.0.1
-
- strip-ansi@5.2.0:
- dependencies:
- ansi-regex: 4.1.1
-
strip-ansi@6.0.1:
dependencies:
ansi-regex: 5.0.1
@@ -17992,10 +16261,6 @@ snapshots:
dependencies:
ansi-regex: 6.0.1
- strip-final-newline@2.0.0: {}
-
- strip-final-newline@3.0.0: {}
-
strip-indent@3.0.0:
dependencies:
min-indent: 1.0.1
@@ -18041,8 +16306,6 @@ snapshots:
pirates: 4.0.6
ts-interface-checker: 0.1.13
- supports-color@2.0.0: {}
-
supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
@@ -18089,10 +16352,6 @@ snapshots:
lower-case: 1.1.4
upper-case: 1.1.3
- symbol-observable@1.2.0: {}
-
- symbol-observable@4.0.0: {}
-
symbol-tree@3.2.4: {}
table@6.9.0:
@@ -18132,11 +16391,6 @@ snapshots:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
- terminal-link@3.0.0:
- dependencies:
- ansi-escapes: 5.0.0
- supports-hyperlinks: 2.3.0
-
terser@5.39.0:
dependencies:
'@jridgewell/source-map': 0.3.6
@@ -18192,8 +16446,6 @@ snapshots:
no-case: 2.3.2
upper-case: 1.1.3
- titleize@3.0.0: {}
-
tldts-core@6.1.86: {}
tldts@6.1.86:
@@ -18335,10 +16587,6 @@ snapshots:
type-fest@0.21.3: {}
- type-fest@1.4.0: {}
-
- type-fest@2.19.0: {}
-
type-fest@3.13.1: {}
type-fest@4.41.0: {}
@@ -18349,21 +16597,6 @@ snapshots:
tunnel: 0.0.6
underscore: 1.13.7
- typedarray-to-buffer@3.1.5:
- dependencies:
- is-typedarray: 1.0.0
-
- types-eslintrc@1.0.3:
- dependencies:
- types-json: 1.2.2
-
- types-json@1.2.2: {}
-
- types-pkg-json@1.2.1:
- dependencies:
- types-eslintrc: 1.0.3
- types-json: 1.2.2
-
typescript-paths@1.5.1(typescript@5.4.3):
dependencies:
typescript: 5.4.3
@@ -18419,10 +16652,6 @@ snapshots:
trough: 2.2.0
vfile: 6.0.3
- unique-string@3.0.0:
- dependencies:
- crypto-random-string: 4.0.0
-
unist-util-is@6.0.0:
dependencies:
'@types/unist': 3.0.2
@@ -18459,8 +16688,6 @@ snapshots:
universalify@2.0.1: {}
- untildify@4.0.0: {}
-
update-browserslist-db@1.1.0(browserslist@4.23.2):
dependencies:
browserslist: 4.23.2
@@ -18478,23 +16705,6 @@ snapshots:
registry-auth-token: 3.3.2
registry-url: 3.1.0
- update-notifier@6.0.2:
- dependencies:
- boxen: 7.1.1
- chalk: 5.3.0
- configstore: 6.0.0
- has-yarn: 3.0.0
- import-lazy: 4.0.0
- is-ci: 3.0.1
- is-installed-globally: 0.4.0
- is-npm: 6.0.0
- is-yarn-global: 0.4.1
- latest-version: 7.0.0
- pupa: 3.1.0
- semver: 7.7.3
- semver-diff: 4.0.0
- xdg-basedir: 5.1.0
-
upper-case-first@1.1.2:
dependencies:
upper-case: 1.1.3
@@ -18511,7 +16721,7 @@ snapshots:
use-callback-ref@1.3.3(@types/react@19.2.2)(react@19.2.1):
dependencies:
react: 19.2.1
- tslib: 2.6.3
+ tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.2
@@ -18523,7 +16733,7 @@ snapshots:
dependencies:
detect-node-es: 1.1.0
react: 19.2.1
- tslib: 2.6.3
+ tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.2
@@ -18539,17 +16749,11 @@ snapshots:
v8-compile-cache-lib@3.0.1: {}
- vali-date@1.0.0: {}
-
validate-npm-package-license@3.0.4:
dependencies:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
- validate-npm-package-name@3.0.0:
- dependencies:
- builtins: 1.0.3
-
validate-npm-package-name@5.0.1: {}
version-range@4.14.0: {}
@@ -18724,17 +16928,8 @@ snapshots:
dependencies:
string-width: 4.2.3
- widest-line@4.0.1:
- dependencies:
- string-width: 5.1.2
-
wordwrap@1.0.0: {}
- wrap-ansi@3.0.1:
- dependencies:
- string-width: 2.1.1
- strip-ansi: 4.0.0
-
wrap-ansi@6.2.0:
dependencies:
ansi-styles: 4.3.0
@@ -18755,17 +16950,8 @@ snapshots:
wrappy@1.0.2: {}
- write-file-atomic@3.0.3:
- dependencies:
- imurmurhash: 0.1.4
- is-typedarray: 1.0.0
- signal-exit: 3.0.7
- typedarray-to-buffer: 3.1.5
-
ws@8.18.0: {}
- xdg-basedir@5.1.0: {}
-
xml-name-validator@5.0.0: {}
xml2js@0.5.0:
@@ -18812,10 +16998,6 @@ snapshots:
yocto-queue@0.1.0: {}
- yocto-queue@1.1.1: {}
-
- yoctocolors-cjs@2.1.2: {}
-
zod-validation-error@3.5.3(zod@3.25.58):
dependencies:
zod: 3.25.58
|