@checkstack/ui 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/package.json +3 -2
- package/src/components/ConfirmationModal.tsx +1 -1
- package/src/components/Dialog.tsx +13 -6
- package/src/components/Slider.tsx +26 -0
- package/src/index.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @checkstack/ui
|
|
2
2
|
|
|
3
|
+
## 1.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8d1ef12: Added Categorical Anomaly Detection (Dominance Drift) support for non-numeric healthcheck values, and introduced Slider UI components for sensitivity and confirmation window anomaly settings.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [8d1ef12]
|
|
12
|
+
- @checkstack/common@0.7.0
|
|
13
|
+
- @checkstack/frontend-api@0.3.11
|
|
14
|
+
|
|
15
|
+
## 1.5.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- c4e7560: Fix data integrity, cache invalidation, and mobile UI issues
|
|
20
|
+
|
|
21
|
+
- **Centralized mutation cache invalidation**: Every mutation now automatically invalidates its plugin's query cache on success via the shared `createProcedureHook` in `orpc-query.tsx`. This ensures all views stay in sync without requiring individual components to remember manual `invalidateQueries` calls.
|
|
22
|
+
- **Fixed oRPC query key matching**: Query keys use nested arrays (`[["pluginId"]]`) to correctly match oRPC's `[pathArray, options]` key structure. Fixed the broken flat-string pattern in `SystemBadgeDataProvider`.
|
|
23
|
+
- **Fixed hourly aggregation duplication**: Added `NULLS NOT DISTINCT` to the `health_check_aggregates` unique constraint so local runs (`source_id = NULL`) correctly conflict-match instead of creating duplicate hourly buckets. Includes a migration to clean up existing duplicates.
|
|
24
|
+
- **Fixed modal scrolling on mobile**: Added `max-height` + `overflow-y-auto` to `ConfirmationModal`, and refactored `Dialog` from translate-centering to flex-centering with `dvh` units for reliable mobile scroll containment.
|
|
25
|
+
|
|
26
|
+
- Updated dependencies [c4e7560]
|
|
27
|
+
- @checkstack/frontend-api@0.3.10
|
|
28
|
+
|
|
3
29
|
## 1.5.0
|
|
4
30
|
|
|
5
31
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@checkstack/ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@checkstack/common": "0.6.5",
|
|
8
|
-
"@checkstack/frontend-api": "0.3.
|
|
8
|
+
"@checkstack/frontend-api": "0.3.10",
|
|
9
9
|
"@monaco-editor/react": "^4.7.0",
|
|
10
10
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
11
11
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
12
12
|
"@radix-ui/react-popover": "^1.1.15",
|
|
13
13
|
"@radix-ui/react-select": "^2.2.6",
|
|
14
|
+
"@radix-ui/react-slider": "^1.2.1",
|
|
14
15
|
"@radix-ui/react-slot": "^1.2.4",
|
|
15
16
|
"ajv": "^8.18.0",
|
|
16
17
|
"ajv-formats": "^3.0.1",
|
|
@@ -65,7 +65,7 @@ export const ConfirmationModal: React.FC<ConfirmationModalProps> = ({
|
|
|
65
65
|
onClick={handleBackdropClick}
|
|
66
66
|
>
|
|
67
67
|
<div
|
|
68
|
-
className="bg-background rounded-lg shadow-xl max-w-md w-full mx-4 animate-in fade-in zoom-in duration-200 pointer-events-auto"
|
|
68
|
+
className="bg-background rounded-lg shadow-xl max-w-md w-full mx-4 my-4 max-h-[calc(100dvh-2rem)] overflow-y-auto animate-in fade-in zoom-in duration-200 pointer-events-auto"
|
|
69
69
|
role="dialog"
|
|
70
70
|
aria-modal="true"
|
|
71
71
|
aria-labelledby="modal-title"
|
|
@@ -32,7 +32,7 @@ const DialogOverlay = React.forwardRef<
|
|
|
32
32
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
33
33
|
|
|
34
34
|
const dialogContentVariants = cva(
|
|
35
|
-
"
|
|
35
|
+
"w-full gap-4 border border-border bg-background text-foreground p-6 shadow-lg sm:rounded-lg max-h-[85dvh] overflow-y-auto overflow-x-visible",
|
|
36
36
|
{
|
|
37
37
|
variants: {
|
|
38
38
|
size: {
|
|
@@ -65,14 +65,21 @@ const DialogContent = React.forwardRef<
|
|
|
65
65
|
<DialogPrimitive.Content
|
|
66
66
|
ref={ref}
|
|
67
67
|
className={cn(
|
|
68
|
-
|
|
69
|
-
!isLowPower && "duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0
|
|
70
|
-
className
|
|
68
|
+
"fixed inset-0 z-50 flex items-center justify-center p-4",
|
|
69
|
+
!isLowPower && "duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
71
70
|
)}
|
|
72
71
|
{...props}
|
|
73
72
|
>
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
<div
|
|
74
|
+
className={cn(
|
|
75
|
+
dialogContentVariants({ size }),
|
|
76
|
+
!isLowPower && "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
77
|
+
className,
|
|
78
|
+
)}
|
|
79
|
+
>
|
|
80
|
+
{/* Wrapper with negative margin and positive padding to allow focus rings to extend */}
|
|
81
|
+
<div className="-mx-2 px-2">{children}</div>
|
|
82
|
+
</div>
|
|
76
83
|
</DialogPrimitive.Content>
|
|
77
84
|
</DialogPortal>
|
|
78
85
|
);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import * as SliderPrimitive from "@radix-ui/react-slider"
|
|
3
|
+
|
|
4
|
+
import { cn } from "../utils"
|
|
5
|
+
|
|
6
|
+
const Slider = React.forwardRef<
|
|
7
|
+
React.ElementRef<typeof SliderPrimitive.Root>,
|
|
8
|
+
React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>
|
|
9
|
+
>(({ className, ...props }, ref) => (
|
|
10
|
+
<SliderPrimitive.Root
|
|
11
|
+
ref={ref}
|
|
12
|
+
className={cn(
|
|
13
|
+
"relative flex w-full touch-none select-none items-center",
|
|
14
|
+
className
|
|
15
|
+
)}
|
|
16
|
+
{...props}
|
|
17
|
+
>
|
|
18
|
+
<SliderPrimitive.Track className="relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20">
|
|
19
|
+
<SliderPrimitive.Range className="absolute h-full bg-primary" />
|
|
20
|
+
</SliderPrimitive.Track>
|
|
21
|
+
<SliderPrimitive.Thumb className="block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" />
|
|
22
|
+
</SliderPrimitive.Root>
|
|
23
|
+
))
|
|
24
|
+
Slider.displayName = SliderPrimitive.Root.displayName
|
|
25
|
+
|
|
26
|
+
export { Slider }
|
package/src/index.ts
CHANGED
|
@@ -43,6 +43,7 @@ export * from "./components/DateTimePicker";
|
|
|
43
43
|
export * from "./components/DateRangeFilter";
|
|
44
44
|
export * from "./components/BackLink";
|
|
45
45
|
export * from "./components/StatusUpdateTimeline";
|
|
46
|
+
export * from "./components/Slider";
|
|
46
47
|
export * from "./components/DynamicIcon";
|
|
47
48
|
export * from "./components/StrategyConfigCard";
|
|
48
49
|
export * from "./components/Markdown";
|