@exxatdesignux/ui 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/dist/components/data-table/filter-text-value-input.js +1 -1
- package/dist/components/data-table/filter-text-value-input.js.map +1 -1
- package/dist/components/data-table/index.js +3 -3
- package/dist/components/data-table/index.js.map +1 -1
- package/dist/components/data-table/pagination.js +3 -3
- package/dist/components/data-table/pagination.js.map +1 -1
- package/dist/components/data-views/data-row-list.js +1 -1
- package/dist/components/data-views/data-row-list.js.map +1 -1
- package/dist/components/data-views/hub-table.js +6 -6
- package/dist/components/data-views/hub-table.js.map +1 -1
- package/dist/components/data-views/index.js +6 -6
- package/dist/components/data-views/index.js.map +1 -1
- package/dist/components/table-properties/column-row.js +1 -1
- package/dist/components/table-properties/column-row.js.map +1 -1
- package/dist/components/table-properties/drawer-button.js +5 -5
- package/dist/components/table-properties/drawer-button.js.map +1 -1
- package/dist/components/table-properties/drawer.js +5 -5
- package/dist/components/table-properties/drawer.js.map +1 -1
- package/dist/components/table-properties/filter-card.js +2 -2
- package/dist/components/table-properties/filter-card.js.map +1 -1
- package/dist/components/table-properties/index.js +5 -5
- package/dist/components/table-properties/index.js.map +1 -1
- package/dist/components/table-properties/sort-card.js +1 -1
- package/dist/components/table-properties/sort-card.js.map +1 -1
- package/dist/components/templates/index.js +4 -4
- package/dist/components/templates/index.js.map +1 -1
- package/dist/components/templates/list-page.js +4 -4
- package/dist/components/templates/list-page.js.map +1 -1
- package/dist/components/ui/banner.js +1 -1
- package/dist/components/ui/banner.js.map +1 -1
- package/dist/components/ui/coach-mark.js +1 -1
- package/dist/components/ui/coach-mark.js.map +1 -1
- package/dist/components/ui/context-menu.js +1 -1
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/date-picker-field.js +1 -1
- package/dist/components/ui/date-picker-field.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js +2 -2
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/export-drawer.js +3 -3
- package/dist/components/ui/export-drawer.js.map +1 -1
- package/dist/components/ui/hover-card.js +1 -1
- package/dist/components/ui/hover-card.js.map +1 -1
- package/dist/components/ui/key-metrics.js +6 -6
- package/dist/components/ui/key-metrics.js.map +1 -1
- package/dist/components/ui/page-header.js +1 -1
- package/dist/components/ui/page-header.js.map +1 -1
- package/dist/components/ui/popover.js +1 -1
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/select.js +1 -1
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/sheet.js +1 -1
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/sidebar.js +3 -3
- package/dist/components/ui/sidebar.js.map +1 -1
- package/dist/components/ui/tip.js +1 -1
- package/dist/components/ui/tip.js.map +1 -1
- package/dist/components/ui/tooltip.js +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/ui/view-segmented-control.js +1 -1
- package/dist/components/ui/view-segmented-control.js.map +1 -1
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/data-views/data-row-list.tsx +1 -1
- package/src/components/ui/banner.tsx +0 -2
- package/src/components/ui/coach-mark.tsx +1 -2
- package/src/components/ui/context-menu.tsx +1 -1
- package/src/components/ui/dropdown-menu.tsx +2 -2
- package/src/components/ui/hover-card.tsx +1 -1
- package/src/components/ui/key-metrics.tsx +4 -4
- package/src/components/ui/popover.tsx +1 -1
- package/src/components/ui/select.tsx +1 -1
- package/src/components/ui/sheet.tsx +1 -1
- package/src/components/ui/sidebar.tsx +3 -3
- package/src/components/ui/tooltip.tsx +1 -1
- package/template/package.json +10 -0
- package/tokens/hooks-index.json +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exxatdesignux/ui",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Exxat shared design system (components, hooks, tokens). Monorepo setup: clone repo then pnpm bootstrap at workspace root — see github.com/ExxatDesign/Exxat-DS-Workspace README.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "Exxat Design",
|
|
@@ -170,7 +170,7 @@ function DataRowListVirtualized<TRow>({
|
|
|
170
170
|
key={vr.key}
|
|
171
171
|
data-index={vr.index}
|
|
172
172
|
ref={virtualizer.measureElement}
|
|
173
|
-
className={cn("absolute
|
|
173
|
+
className={cn("absolute start-0 top-0 w-full pb-2", rowClassName)}
|
|
174
174
|
style={{ transform: `translateY(${vr.start}px)` }}
|
|
175
175
|
>
|
|
176
176
|
{renderRow(row, vr.index)}
|
|
@@ -56,8 +56,6 @@ const VARIANT_CONFIG = {
|
|
|
56
56
|
},
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
type BannerVariant = keyof typeof VARIANT_CONFIG
|
|
60
|
-
|
|
61
59
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
62
60
|
// SystemBanner — inline at the top of the main content area
|
|
63
61
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -25,7 +25,6 @@ import * as React from "react"
|
|
|
25
25
|
import { createPortal } from "react-dom"
|
|
26
26
|
import { Popover as PopoverPrimitive } from "radix-ui"
|
|
27
27
|
import { cva, type VariantProps } from "class-variance-authority"
|
|
28
|
-
import { Button } from "./button"
|
|
29
28
|
import { cn } from "../../lib/utils"
|
|
30
29
|
import type { CoachMarkState } from "../../hooks/use-coach-mark"
|
|
31
30
|
|
|
@@ -258,7 +257,7 @@ export function CoachMark({
|
|
|
258
257
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
259
258
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
260
259
|
"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2",
|
|
261
|
-
"data-[side=left]:slide-in-from-
|
|
260
|
+
"data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2",
|
|
262
261
|
className
|
|
263
262
|
)}
|
|
264
263
|
>
|
|
@@ -126,7 +126,7 @@ function ContextMenuContent({
|
|
|
126
126
|
<ContextMenuPrimitive.Content
|
|
127
127
|
data-slot="context-menu-content"
|
|
128
128
|
className={cn(
|
|
129
|
-
"z-50 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
129
|
+
"z-50 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
130
130
|
DROPDOWN_MENU_CONTENT_SURFACE_CLASS,
|
|
131
131
|
className,
|
|
132
132
|
)}
|
|
@@ -47,7 +47,7 @@ function DropdownMenuContent({
|
|
|
47
47
|
sideOffset={sideOffset}
|
|
48
48
|
align={align}
|
|
49
49
|
className={cn(
|
|
50
|
-
"z-50 max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
50
|
+
"z-50 max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
51
51
|
DROPDOWN_MENU_CONTENT_SURFACE_CLASS,
|
|
52
52
|
className,
|
|
53
53
|
)}
|
|
@@ -403,7 +403,7 @@ function DropdownMenuSubContent({
|
|
|
403
403
|
<DropdownMenuPrimitive.SubContent
|
|
404
404
|
data-slot="dropdown-menu-sub-content"
|
|
405
405
|
className={cn(
|
|
406
|
-
"z-50 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
406
|
+
"z-50 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
407
407
|
DROPDOWN_MENU_CONTENT_SURFACE_CLASS,
|
|
408
408
|
className,
|
|
409
409
|
)}
|
|
@@ -54,7 +54,7 @@ function HoverCardContent({
|
|
|
54
54
|
align={align}
|
|
55
55
|
sideOffset={sideOffset}
|
|
56
56
|
className={cn(
|
|
57
|
-
"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
57
|
+
"z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
58
58
|
className,
|
|
59
59
|
)}
|
|
60
60
|
{...props}
|
|
@@ -261,7 +261,7 @@ function flatMetricsHairlineClass(
|
|
|
261
261
|
const childBorder = "[&>*]:border-[color:var(--key-metrics-flat-divider)]"
|
|
262
262
|
|
|
263
263
|
if (itemCount === 2) {
|
|
264
|
-
return cn("gap-0", childBorder, "[&>*:first-child]:border-
|
|
264
|
+
return cn("gap-0", childBorder, "[&>*:first-child]:border-e")
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
if (itemCount === 4) {
|
|
@@ -272,15 +272,15 @@ function flatMetricsHairlineClass(
|
|
|
272
272
|
"gap-0",
|
|
273
273
|
childBorder,
|
|
274
274
|
/* Wide strip (matches `@[30rem]:grid-cols-4`) — verticals between all tiles, no horizontal */
|
|
275
|
-
"[&>*:not(:last-child)]:border-
|
|
275
|
+
"[&>*:not(:last-child)]:border-e",
|
|
276
276
|
/* Narrow strip (`@[18rem]`–`@[30rem]` 2×2) */
|
|
277
277
|
`${narrow2x2}:[&>*:not(:last-child)]:border-e-0`,
|
|
278
|
-
`${narrow2x2}:[&>*:nth-child(odd)]:border-
|
|
278
|
+
`${narrow2x2}:[&>*:nth-child(odd)]:border-e`,
|
|
279
279
|
`${narrow2x2}:[&>*:not(:nth-last-child(-n+2))]:border-b`,
|
|
280
280
|
)
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
return cn("gap-0", childBorder, "[&>*:not(:last-child)]:border-
|
|
283
|
+
return cn("gap-0", childBorder, "[&>*:not(:last-child)]:border-e")
|
|
284
284
|
}
|
|
285
285
|
|
|
286
286
|
function metricsRowColumnsClass(rowLength: number, metricsHalfWidthLayout: boolean): string {
|
|
@@ -34,7 +34,7 @@ function PopoverContent({
|
|
|
34
34
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
35
35
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
36
36
|
"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2",
|
|
37
|
-
"data-[side=left]:slide-in-from-
|
|
37
|
+
"data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2",
|
|
38
38
|
className
|
|
39
39
|
)}
|
|
40
40
|
{...props}
|
|
@@ -68,7 +68,7 @@ function SelectContent({
|
|
|
68
68
|
<SelectPrimitive.Content
|
|
69
69
|
data-slot="select-content"
|
|
70
70
|
data-align-trigger={position === "item-aligned"}
|
|
71
|
-
className={cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
71
|
+
className={cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", position ==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 rtl:data-[side=left]:translate-x-1 data-[side=right]:translate-x-1 rtl:data-[side=right]:-translate-x-1 data-[side=top]:-translate-y-1", className )}
|
|
72
72
|
position={position}
|
|
73
73
|
align={align}
|
|
74
74
|
{...props}
|
|
@@ -63,7 +63,7 @@ function SheetContent({
|
|
|
63
63
|
data-slot="sheet-content"
|
|
64
64
|
data-side={side}
|
|
65
65
|
className={cn(
|
|
66
|
-
"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg outline-none duration-300 ease-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:
|
|
66
|
+
"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg outline-none duration-300 ease-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:start-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-e data-[side=right]:inset-y-0 data-[side=right]:end-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-s data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-6 data-[side=left]:data-open:slide-in-from-start-6 data-[side=right]:data-open:slide-in-from-end-6 data-[side=top]:data-open:slide-in-from-top-6 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-6 data-[side=left]:data-closed:slide-out-to-start-6 data-[side=right]:data-closed:slide-out-to-end-6 data-[side=top]:data-closed:slide-out-to-top-6",
|
|
67
67
|
className
|
|
68
68
|
)}
|
|
69
69
|
{...props}
|
|
@@ -121,7 +121,7 @@ function SidebarProvider({
|
|
|
121
121
|
// `SidebarAutoCollapse` route) must NOT trigger a re-reconcile that reads the
|
|
122
122
|
// saved cookie back as "expanded" and snaps the rail open again.
|
|
123
123
|
// The functional setter avoids closing over a stale `open` value.
|
|
124
|
-
//
|
|
124
|
+
// Deps are `[openProp]` only — not `open` — so incidental collapses do not re-read the cookie.
|
|
125
125
|
React.useLayoutEffect(() => {
|
|
126
126
|
if (typeof window === "undefined") return
|
|
127
127
|
if (typeof document !== "undefined" && document.cookie.includes(`${SIDEBAR_COOKIE_LEGACY_NAME}=`)) {
|
|
@@ -132,7 +132,7 @@ function SidebarProvider({
|
|
|
132
132
|
const fromCookie = readSidebarStateCookie()
|
|
133
133
|
if (fromCookie === undefined) return
|
|
134
134
|
_setOpen((prev) => (prev === fromCookie ? prev : fromCookie))
|
|
135
|
-
}, [])
|
|
135
|
+
}, [openProp])
|
|
136
136
|
|
|
137
137
|
const setOpen = React.useCallback(
|
|
138
138
|
(
|
|
@@ -246,7 +246,7 @@ function Sidebar({
|
|
|
246
246
|
collapsible = "offcanvas",
|
|
247
247
|
className,
|
|
248
248
|
children,
|
|
249
|
-
dir,
|
|
249
|
+
dir: _dir,
|
|
250
250
|
...props
|
|
251
251
|
}: React.ComponentProps<"div"> & {
|
|
252
252
|
side?: "left" | "right"
|
|
@@ -50,7 +50,7 @@ function TooltipContent({
|
|
|
50
50
|
data-slot="tooltip-content"
|
|
51
51
|
sideOffset={sideOffset}
|
|
52
52
|
className={cn(
|
|
53
|
-
"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
53
|
+
"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
54
54
|
className
|
|
55
55
|
)}
|
|
56
56
|
{...props}
|
package/template/package.json
CHANGED
|
@@ -79,5 +79,15 @@
|
|
|
79
79
|
"typescript": "^5.9.3",
|
|
80
80
|
"vite": "^6.4.1",
|
|
81
81
|
"vitest": "^3.2.4"
|
|
82
|
+
},
|
|
83
|
+
"overrides": {
|
|
84
|
+
"postcss": "^8.5.14",
|
|
85
|
+
"ws": "^8.20.1"
|
|
86
|
+
},
|
|
87
|
+
"pnpm": {
|
|
88
|
+
"overrides": {
|
|
89
|
+
"postcss@<8.5.10": "^8.5.14",
|
|
90
|
+
"ws@<8.20.1": "^8.20.1"
|
|
91
|
+
}
|
|
82
92
|
}
|
|
83
93
|
}
|
package/tokens/hooks-index.json
CHANGED