@repraze/kernelkit 0.1.0-alpha.4 → 0.1.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/alert-dialog.d.ts.map +1 -1
- package/dist/components/alert-dialog.js +4 -1
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.js +3 -3
- package/dist/components/alert.js.map +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/badge.js.map +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.d.ts +8 -1
- package/dist/components/calendar.d.ts.map +1 -1
- package/dist/components/calendar.js +33 -11
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/callout.js +2 -2
- package/dist/components/callout.js.map +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/date-picker.d.ts +11 -5
- package/dist/components/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker.js +29 -7
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/description-list.d.ts +26 -0
- package/dist/components/description-list.d.ts.map +1 -0
- package/dist/components/description-list.js +59 -0
- package/dist/components/description-list.js.map +1 -0
- package/dist/components/locale.d.ts +19 -0
- package/dist/components/locale.d.ts.map +1 -0
- package/dist/components/locale.js +54 -0
- package/dist/components/locale.js.map +1 -0
- package/dist/components/popover.d.ts +1 -1
- package/dist/components/popover.d.ts.map +1 -1
- package/dist/components/popover.js +2 -2
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.d.ts +19 -6
- package/dist/components/progress.d.ts.map +1 -1
- package/dist/components/progress.js +18 -3
- package/dist/components/progress.js.map +1 -1
- package/dist/components/search-trigger.d.ts +4 -1
- package/dist/components/search-trigger.d.ts.map +1 -1
- package/dist/components/search-trigger.js +5 -2
- package/dist/components/search-trigger.js.map +1 -1
- package/dist/components/shimmer.d.ts +13 -0
- package/dist/components/shimmer.d.ts.map +1 -0
- package/dist/components/shimmer.js +21 -0
- package/dist/components/shimmer.js.map +1 -0
- package/dist/components/spinner.d.ts +28 -6
- package/dist/components/spinner.d.ts.map +1 -1
- package/dist/components/spinner.js +66 -14
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/stepper.d.ts +64 -0
- package/dist/components/stepper.d.ts.map +1 -0
- package/dist/components/stepper.js +167 -0
- package/dist/components/stepper.js.map +1 -0
- package/dist/components/tag-input.d.ts +47 -0
- package/dist/components/tag-input.d.ts.map +1 -0
- package/dist/components/tag-input.js +211 -0
- package/dist/components/tag-input.js.map +1 -0
- package/dist/components/time-input.d.ts +75 -0
- package/dist/components/time-input.d.ts.map +1 -0
- package/dist/components/time-input.js +341 -0
- package/dist/components/time-input.js.map +1 -0
- package/dist/components/time-select.d.ts +49 -0
- package/dist/components/time-select.d.ts.map +1 -0
- package/dist/components/time-select.js +178 -0
- package/dist/components/time-select.js.map +1 -0
- package/dist/components/timeline.d.ts +41 -0
- package/dist/components/timeline.d.ts.map +1 -0
- package/dist/components/timeline.js +83 -0
- package/dist/components/timeline.js.map +1 -0
- package/dist/components/toast.d.ts.map +1 -1
- package/dist/components/toast.js +4 -2
- package/dist/components/toast.js.map +1 -1
- package/dist/components/tree.d.ts +87 -0
- package/dist/components/tree.d.ts.map +1 -0
- package/dist/components/tree.js +516 -0
- package/dist/components/tree.js.map +1 -0
- package/dist/hooks/use-time-format.d.ts +23 -0
- package/dist/hooks/use-time-format.d.ts.map +1 -0
- package/dist/hooks/use-time-format.js +52 -0
- package/dist/hooks/use-time-format.js.map +1 -0
- package/dist/lib/color.d.ts +5 -1
- package/dist/lib/color.d.ts.map +1 -1
- package/dist/lib/color.js +14 -2
- package/dist/lib/color.js.map +1 -1
- package/dist/lib/recipes.d.ts +5 -4
- package/dist/lib/recipes.d.ts.map +1 -1
- package/dist/lib/recipes.js +7 -5
- package/dist/lib/recipes.js.map +1 -1
- package/package.json +1 -1
- package/src/components/alert-dialog.tsx +4 -1
- package/src/components/alert.tsx +3 -3
- package/src/components/badge.tsx +1 -1
- package/src/components/button.tsx +1 -1
- package/src/components/calendar.tsx +48 -4
- package/src/components/callout.tsx +2 -2
- package/src/components/combobox.tsx +1 -1
- package/src/components/date-picker.tsx +43 -9
- package/src/components/description-list.tsx +107 -0
- package/src/components/locale.tsx +67 -0
- package/src/components/popover.tsx +3 -1
- package/src/components/progress.tsx +70 -4
- package/src/components/search-trigger.tsx +8 -2
- package/src/components/shimmer.tsx +36 -0
- package/src/components/spinner.tsx +126 -23
- package/src/components/stepper.tsx +346 -0
- package/src/components/tag-input.tsx +345 -0
- package/src/components/time-input.tsx +578 -0
- package/src/components/time-select.tsx +291 -0
- package/src/components/timeline.tsx +190 -0
- package/src/components/toast.tsx +4 -4
- package/src/components/tree.tsx +832 -0
- package/src/hooks/use-time-format.ts +72 -0
- package/src/lib/color.ts +19 -2
- package/src/lib/recipes.ts +7 -5
- package/src/styles/kernelkit.css +56 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type Color } from "@repraze/kernelkit/lib/color";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
type TimelineSize = "sm" | "default";
|
|
4
|
+
/**
|
|
5
|
+
* The marker column sets the rhythm: its box is as tall as the title's line (24px, 20px at `sm`), so a dot
|
|
6
|
+
* or icon centres on the first line of text whatever the item holds.
|
|
7
|
+
*/
|
|
8
|
+
declare const timelineVariants: (props?: ({
|
|
9
|
+
size?: "default" | "sm" | null | undefined;
|
|
10
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
|
+
interface TimelineProps extends React.ComponentProps<"ol"> {
|
|
12
|
+
/** `sm` is the dense log: 20px rows, `text-xs`, tighter spacing. */
|
|
13
|
+
size?: TimelineSize;
|
|
14
|
+
}
|
|
15
|
+
/** A vertical list of events: a marker per item joined by a line, newest first or last as you order them. */
|
|
16
|
+
declare function Timeline({ size, className, ...props }: TimelineProps): React.JSX.Element;
|
|
17
|
+
/** One event: `TimelineMarker` then `TimelineContent` (put a `TimelineTime` first for a time column). */
|
|
18
|
+
declare function TimelineItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
|
|
19
|
+
declare const timelineMarkerVariants: (props?: ({
|
|
20
|
+
color?: "danger" | "warning" | "success" | "info" | "red" | "orange" | "yellow" | "green" | "cyan" | "blue" | "purple" | "pink" | "neutral" | "primary" | null | undefined;
|
|
21
|
+
kind?: "icon" | "dot" | null | undefined;
|
|
22
|
+
size?: "default" | "sm" | null | undefined;
|
|
23
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
24
|
+
interface TimelineMarkerProps extends Omit<React.ComponentProps<"span">, "color"> {
|
|
25
|
+
/** Status or hue of the dot / icon ring. Defaults to neutral grey. */
|
|
26
|
+
color?: Color | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The item's dot, or an icon in a ring when it has children. Carries the line down to the next item;
|
|
30
|
+
* the last item has no tail.
|
|
31
|
+
*/
|
|
32
|
+
declare function TimelineMarker({ color, className, children, ...props }: TimelineMarkerProps): React.JSX.Element;
|
|
33
|
+
/** Title, time and description of an item. Its bottom padding is the gap to the next item. */
|
|
34
|
+
declare function TimelineContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
35
|
+
declare function TimelineTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
36
|
+
/** A timestamp: mono, muted. Inline after a title, or first in the item for a time column. */
|
|
37
|
+
declare function TimelineTime({ className, ...props }: React.ComponentProps<"time">): React.JSX.Element;
|
|
38
|
+
declare function TimelineDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
39
|
+
export { Timeline, TimelineContent, TimelineDescription, TimelineItem, TimelineMarker, timelineMarkerVariants, TimelineTime, TimelineTitle, timelineVariants, };
|
|
40
|
+
export type { TimelineMarkerProps, TimelineProps, TimelineSize };
|
|
41
|
+
//# sourceMappingURL=timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/components/timeline.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,KAAK,EAAgB,MAAM,8BAA8B,CAAC;AAGvE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;AAIrC;;;GAGG;AACH,QAAA,MAAM,gBAAgB;;8EAQpB,CAAC;AAEH,UAAU,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;IACtD,oEAAoE;IACpE,IAAI,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,6GAA6G;AAC7G,iBAAS,QAAQ,CAAC,EAAC,IAAgB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,qBAMvE;AAED,yGAAyG;AACzG,iBAAS,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAUtE;AAED,QAAA,MAAM,sBAAsB;;;;8EAyB3B,CAAC;AAEF,UAAU,mBAAoB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC7E,sEAAsE;IACtE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACxB;AAED;;;GAGG;AACH,iBAAS,cAAc,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,mBAAmB,qBA+BlF;AAED,8FAA8F;AAC9F,iBAAS,eAAe,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAa1E;AAED,iBAAS,aAAa,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAaxE;AAED,8FAA8F;AAC9F,iBAAS,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAaxE;AAED,iBAAS,mBAAmB,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAQ9E;AAED,OAAO,EACH,QAAQ,EACR,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,gBAAgB,GACnB,CAAC;AACF,YAAY,EAAC,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAC,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { colorVariants } from "@repraze/kernelkit/lib/color";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { cn } from "cn";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
const TimelineContext = React.createContext("default");
|
|
8
|
+
/**
|
|
9
|
+
* The marker column sets the rhythm: its box is as tall as the title's line (24px, 20px at `sm`), so a dot
|
|
10
|
+
* or icon centres on the first line of text whatever the item holds.
|
|
11
|
+
*/
|
|
12
|
+
const timelineVariants = cva("flex flex-col", {
|
|
13
|
+
variants: {
|
|
14
|
+
size: {
|
|
15
|
+
default: "text-sm",
|
|
16
|
+
sm: "text-xs",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: { size: "default" },
|
|
20
|
+
});
|
|
21
|
+
/** A vertical list of events: a marker per item joined by a line, newest first or last as you order them. */
|
|
22
|
+
function Timeline({ size = "default", className, ...props }) {
|
|
23
|
+
return (_jsx(TimelineContext.Provider, { value: size, children: _jsx("ol", { "data-slot": "timeline", "data-size": size, className: cn(timelineVariants({ size }), className), ...props }) }));
|
|
24
|
+
}
|
|
25
|
+
/** One event: `TimelineMarker` then `TimelineContent` (put a `TimelineTime` first for a time column). */
|
|
26
|
+
function TimelineItem({ className, ...props }) {
|
|
27
|
+
const size = React.useContext(TimelineContext);
|
|
28
|
+
return (_jsx("li", { "data-slot": "timeline-item", "data-size": size, className: cn("group/timeline-item relative flex gap-3 data-[size=sm]:gap-2.5", className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
const timelineMarkerVariants = cva("relative z-10 inline-flex shrink-0 items-center justify-center rounded-pill [&_svg]:shrink-0", {
|
|
31
|
+
variants: {
|
|
32
|
+
color: colorVariants,
|
|
33
|
+
kind: {
|
|
34
|
+
// a dot with a ring of the page colour, so it reads over the line
|
|
35
|
+
dot: "bg-(--c)",
|
|
36
|
+
icon: "border border-(--c)/40 bg-background text-(--c) hc:border-(--c)",
|
|
37
|
+
},
|
|
38
|
+
size: {
|
|
39
|
+
default: "",
|
|
40
|
+
sm: "",
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
compoundVariants: [
|
|
44
|
+
{ kind: "dot", size: "default", class: "size-2.5" },
|
|
45
|
+
{ kind: "dot", size: "sm", class: "size-2" },
|
|
46
|
+
{ kind: "icon", size: "default", class: "size-6 [&_svg:not([class*='size-'])]:size-3.5" },
|
|
47
|
+
{ kind: "icon", size: "sm", class: "size-5 [&_svg:not([class*='size-'])]:size-3" },
|
|
48
|
+
{ kind: "dot", color: "neutral", class: "bg-muted-foreground" },
|
|
49
|
+
{ kind: "icon", color: "neutral", class: "border-border text-muted-foreground hc:border-border" },
|
|
50
|
+
],
|
|
51
|
+
defaultVariants: { color: "neutral", kind: "dot", size: "default" },
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* The item's dot, or an icon in a ring when it has children. Carries the line down to the next item;
|
|
55
|
+
* the last item has no tail.
|
|
56
|
+
*/
|
|
57
|
+
function TimelineMarker({ color, className, children, ...props }) {
|
|
58
|
+
const size = React.useContext(TimelineContext);
|
|
59
|
+
const resolved = color ?? "neutral";
|
|
60
|
+
const kind = children ? "icon" : "dot";
|
|
61
|
+
return (_jsxs("span", { "data-slot": "timeline-marker", "data-size": size, "data-color": resolved, className: "flex w-6 shrink-0 flex-col items-center self-stretch data-[size=sm]:w-5", children: [_jsx("span", { className: "flex h-6 items-center justify-center data-[size=sm]:h-5", "data-size": size, children: _jsx("span", { "data-slot": "timeline-marker-indicator", className: cn(timelineMarkerVariants({ color: resolved, kind, size }), className), ...props, children: children }) }), _jsx("span", { "data-slot": "timeline-marker-tail", "aria-hidden": "true", className: cn("w-px flex-1 bg-border group-last/timeline-item:hidden",
|
|
62
|
+
// a dot sits inside its box with room around it; an icon fills the box, so leave a gap at both ends
|
|
63
|
+
kind === "icon" && "my-1") })] }));
|
|
64
|
+
}
|
|
65
|
+
/** Title, time and description of an item. Its bottom padding is the gap to the next item. */
|
|
66
|
+
function TimelineContent({ className, ...props }) {
|
|
67
|
+
const size = React.useContext(TimelineContext);
|
|
68
|
+
return (_jsx("div", { "data-slot": "timeline-content", "data-size": size, className: cn("flex min-w-0 flex-1 flex-col gap-0.5 pb-6 group-last/timeline-item:pb-0 data-[size=sm]:gap-0 data-[size=sm]:pb-2", className), ...props }));
|
|
69
|
+
}
|
|
70
|
+
function TimelineTitle({ className, ...props }) {
|
|
71
|
+
const size = React.useContext(TimelineContext);
|
|
72
|
+
return (_jsx("div", { "data-slot": "timeline-title", "data-size": size, className: cn("flex min-h-6 flex-wrap items-center gap-x-2 font-medium text-foreground data-[size=sm]:min-h-5 data-[size=sm]:font-normal", className), ...props }));
|
|
73
|
+
}
|
|
74
|
+
/** A timestamp: mono, muted. Inline after a title, or first in the item for a time column. */
|
|
75
|
+
function TimelineTime({ className, ...props }) {
|
|
76
|
+
const size = React.useContext(TimelineContext);
|
|
77
|
+
return (_jsx("time", { "data-slot": "timeline-time", "data-size": size, className: cn("inline-flex min-h-6 shrink-0 items-center font-alt text-xs font-normal text-muted-foreground tabular-nums data-[size=sm]:min-h-5", className), ...props }));
|
|
78
|
+
}
|
|
79
|
+
function TimelineDescription({ className, ...props }) {
|
|
80
|
+
return (_jsx("div", { "data-slot": "timeline-description", className: cn("text-sm text-muted-foreground in-data-[size=sm]:text-xs", className), ...props }));
|
|
81
|
+
}
|
|
82
|
+
export { Timeline, TimelineContent, TimelineDescription, TimelineItem, TimelineMarker, timelineMarkerVariants, TimelineTime, TimelineTitle, timelineVariants, };
|
|
83
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/components/timeline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../src/components/toast.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,IAAI,cAAc,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../src/components/toast.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,IAAI,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAO7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,QAAA,MAAM,KAAK,4CAAsC,CAAC;AAElD,iBAAS,aAAa,CAAC,EAAC,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,qBAE/D;AAED,iBAAS,WAAW,CAAC,EAAC,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,qBAE3D;AAED,iBAAS,aAAa,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,qBAW1E;AAED,iBAAS,KAAK,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,qBA0B9D;AAED,iBAAS,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,qBAWxE;AAED,iBAAS,UAAU,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,qBAQpE;AAED,iBAAS,gBAAgB,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,cAAc,CAAC,WAAW,CAAC,KAAK,qBAQhF;AAED,iBAAS,WAAW,CAAC,EACjB,SAAS,EACT,MAA+C,EAC/C,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,qBAS7B;AAED,iBAAS,UAAU,CAAC,EAChB,SAAS,EACT,QAAQ,EACR,MAAkD,EAClD,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,qBAe5B;AAaD,iBAAS,SAAS,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,EAAE;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,4BAgBnF;AAoBD;;;GAGG;AACH,iBAAS,OAAO,CAAC,EACb,QAAQ,EACR,YAAoB,EACpB,GAAG,KAAK,EACX,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,GAAG;IACrD,YAAY,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CACvE,qBAWA;AAED,QAAA,MAAM,kBAAkB,0CAAoC,CAAC;AAC7D,QAAA,MAAM,eAAe,uCAAiC,CAAC;AAEvD,OAAO,EACH,kBAAkB,EAClB,KAAK,EACL,KAAK,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,eAAe,GAClB,CAAC"}
|
package/dist/components/toast.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Toast as ToastPrimitive } from "@base-ui/react/toast";
|
|
4
4
|
import { Button } from "@repraze/kernelkit/components/button";
|
|
5
|
+
import { Spinner } from "@repraze/kernelkit/components/spinner";
|
|
5
6
|
import { focusRing, heading } from "@repraze/kernelkit/lib/recipes";
|
|
6
7
|
import { usePortalContainer } from "@repraze/kernelkit/provider";
|
|
7
8
|
import { cn } from "cn";
|
|
8
|
-
import { CircleCheckIcon, InfoIcon,
|
|
9
|
+
import { CircleCheckIcon, InfoIcon, OctagonXIcon, TriangleAlertIcon, XIcon } from "lucide-react";
|
|
9
10
|
import * as React from "react";
|
|
10
11
|
const toast = ToastPrimitive.createToastManager();
|
|
11
12
|
function ToastProvider({ ...props }) {
|
|
@@ -42,7 +43,8 @@ const TOAST_ICONS = {
|
|
|
42
43
|
warning: _jsx(TriangleAlertIcon, { className: "text-warning", "aria-hidden": "true" }),
|
|
43
44
|
error: _jsx(OctagonXIcon, { className: "text-danger", "aria-hidden": "true" }),
|
|
44
45
|
danger: _jsx(OctagonXIcon, { className: "text-danger", "aria-hidden": "true" }),
|
|
45
|
-
|
|
46
|
+
// follows the app's SpinnerProvider like every other kit spinner
|
|
47
|
+
loading: _jsx(Spinner, { className: "text-muted-foreground", role: "presentation", "aria-label": undefined }),
|
|
46
48
|
};
|
|
47
49
|
function ToastIcon({ type, className }) {
|
|
48
50
|
const icon = type ? TOAST_ICONS[type] : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/components/toast.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAC,KAAK,IAAI,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAC,MAAM,EAAC,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAC,EAAE,EAAC,MAAM,IAAI,CAAC;AACtB,OAAO,EAAC,eAAe,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/components/toast.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface TreeNode<T = unknown> {
|
|
3
|
+
/** Unique across the whole tree. */
|
|
4
|
+
id: string;
|
|
5
|
+
label: React.ReactNode;
|
|
6
|
+
/** Text for type-ahead and the default filter when `label` is not a string. */
|
|
7
|
+
textValue?: string;
|
|
8
|
+
/** Leading icon (FileTree picks one when omitted). */
|
|
9
|
+
icon?: React.ReactNode;
|
|
10
|
+
/** Trailing slot: a badge, a status dot, a size. */
|
|
11
|
+
meta?: React.ReactNode;
|
|
12
|
+
children?: TreeNode<T>[];
|
|
13
|
+
/** A branch whose children are not loaded yet: expanding it calls `onLoadChildren`. */
|
|
14
|
+
hasChildren?: boolean;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
data?: T;
|
|
17
|
+
}
|
|
18
|
+
type TreeSelectionMode = "none" | "single" | "multiple" | "checkbox";
|
|
19
|
+
type TreeCheckState = "checked" | "indeterminate" | "unchecked";
|
|
20
|
+
/** One visible row: the flattened tree is a plain array, so expand/collapse and virtualization are O(rows). */
|
|
21
|
+
interface TreeRow<T = unknown> {
|
|
22
|
+
node: TreeNode<T>;
|
|
23
|
+
level: number;
|
|
24
|
+
parentId: string | null;
|
|
25
|
+
posInSet: number;
|
|
26
|
+
setSize: number;
|
|
27
|
+
isBranch: boolean;
|
|
28
|
+
}
|
|
29
|
+
declare function flattenTree<T>(nodes: TreeNode<T>[], expanded: ReadonlySet<string>, keep: ReadonlySet<string> | null): TreeRow<T>[];
|
|
30
|
+
declare const treeVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
|
|
31
|
+
/**
|
|
32
|
+
* Row content. Follows the sidebar (GUIDELINES §7c): hover wash, the selected row gets the accent tint,
|
|
33
|
+
* medium weight and a primary icon, with the 2px indicator on the tree line (nested) or the row's left
|
|
34
|
+
* edge (top level). The keyboard-focused row gets an inset ring while the tree has visible focus.
|
|
35
|
+
*/
|
|
36
|
+
declare const treeItemVariants: (props?: ({
|
|
37
|
+
size?: "default" | "xs" | "sm" | null | undefined;
|
|
38
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
39
|
+
interface TreeRenderState {
|
|
40
|
+
level: number;
|
|
41
|
+
expanded: boolean;
|
|
42
|
+
selected: boolean;
|
|
43
|
+
checked: TreeCheckState;
|
|
44
|
+
loading: boolean;
|
|
45
|
+
}
|
|
46
|
+
interface TreeProps<T = unknown> extends Omit<React.ComponentProps<"div">, "children" | "onSelect"> {
|
|
47
|
+
nodes: TreeNode<T>[];
|
|
48
|
+
/** `none`: click only expands. `single`/`multiple` (Ctrl/⌘ toggles, Shift extends). `checkbox`: tri-state boxes. */
|
|
49
|
+
selectionMode?: TreeSelectionMode;
|
|
50
|
+
/** Selected ids (checked ids in checkbox mode, parents included when all their children are). */
|
|
51
|
+
selected?: string[];
|
|
52
|
+
defaultSelected?: string[];
|
|
53
|
+
onSelectedChange?: (ids: string[]) => void;
|
|
54
|
+
/** Expanded branch ids. */
|
|
55
|
+
expanded?: string[];
|
|
56
|
+
defaultExpanded?: string[];
|
|
57
|
+
onExpandedChange?: (ids: string[]) => void;
|
|
58
|
+
/** Enter or click on a row (open a file, navigate). */
|
|
59
|
+
onAction?: (node: TreeNode<T>) => void;
|
|
60
|
+
/** Load a lazy branch (`hasChildren` without `children`); the row shows a spinner until it resolves. */
|
|
61
|
+
onLoadChildren?: (node: TreeNode<T>) => Promise<void>;
|
|
62
|
+
/** Show only matching nodes and their ancestors (expanded). */
|
|
63
|
+
filter?: string | ((node: TreeNode<T>) => boolean);
|
|
64
|
+
/** Clicking a branch row toggles it as well as selecting it. */
|
|
65
|
+
toggleOnClick?: boolean;
|
|
66
|
+
/** Render only the rows in view. Give the tree a height (`className="h-80"`): it becomes the scroller. */
|
|
67
|
+
virtual?: boolean;
|
|
68
|
+
/** Indent guides under each branch. */
|
|
69
|
+
guides?: boolean;
|
|
70
|
+
size?: "xs" | "sm" | "default";
|
|
71
|
+
/** Custom label content; the row keeps its toggle, checkbox, icon and meta slots. */
|
|
72
|
+
renderLabel?: (node: TreeNode<T>, state: TreeRenderState) => React.ReactNode;
|
|
73
|
+
/** Icon when the node has none (FileTree uses this). */
|
|
74
|
+
getIcon?: (node: TreeNode<T>, state: TreeRenderState) => React.ReactNode;
|
|
75
|
+
/** Shown when there are no rows (nothing matches the filter). */
|
|
76
|
+
empty?: React.ReactNode;
|
|
77
|
+
}
|
|
78
|
+
declare function Tree<T = unknown>({ nodes, selectionMode, selected: selectedProp, defaultSelected, onSelectedChange, expanded: expandedProp, defaultExpanded, onExpandedChange, onAction, onLoadChildren, filter, toggleOnClick, virtual, guides, size, renderLabel, getIcon, empty, className, id: idProp, onKeyDown, onFocus, ...props }: TreeProps<T>): React.JSX.Element;
|
|
79
|
+
/** Folder / file icons by extension. */
|
|
80
|
+
declare function fileIcon(node: TreeNode<unknown>, state: TreeRenderState): React.ReactNode;
|
|
81
|
+
/** A Tree preset for paths: folder/file icons, compact rows. */
|
|
82
|
+
declare function FileTree<T = unknown>({ size, getIcon, ...props }: TreeProps<T>): React.JSX.Element;
|
|
83
|
+
/** Build TreeNodes from slash-separated paths (`src/components/tree.tsx`). Folders sort first. */
|
|
84
|
+
declare function treeFromPaths(paths: string[]): TreeNode[];
|
|
85
|
+
export { fileIcon, FileTree, flattenTree, Tree, treeFromPaths, treeItemVariants, treeVariants };
|
|
86
|
+
export type { TreeCheckState, TreeNode, TreeProps, TreeRenderState, TreeRow, TreeSelectionMode };
|
|
87
|
+
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/components/tree.tsx"],"names":[],"mappings":"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"}
|