@equal-experts/kuat-react 0.15.0-beta.0 → 0.15.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-docs/AGENTS.md +1 -1
- package/agent-docs/README.md +1 -1
- package/agent-docs/components/callout.md +66 -0
- package/agent-docs/components/components.manifest.json +6 -0
- package/agent-docs/manifest.json +3 -3
- package/agent-docs/rules/LOADING-consumer.md +1 -1
- package/dist/callout-DFmAtUwR.js +46 -0
- package/dist/callout.d.ts +3 -0
- package/dist/callout.js +7 -0
- package/dist/components/ui/callout/callout.d.ts +19 -0
- package/dist/components/ui/callout/index.d.ts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +196 -193
- package/dist/style.css +1 -1
- package/package.json +5 -1
package/agent-docs/AGENTS.md
CHANGED
|
@@ -7,4 +7,4 @@ Rules for this install live under `agent-docs/` in `@equal-experts/kuat-core`, `
|
|
|
7
7
|
3. Load component guides via `agent-docs/components/components.manifest.json`.
|
|
8
8
|
4. Skills: `kuat-review`, `kuat-create` from [kuat-agent-docs](https://github.com/equalexperts/kuat-agent-docs).
|
|
9
9
|
|
|
10
|
-
**Version:** 0.15.0-beta.
|
|
10
|
+
**Version:** 0.15.0-beta.1 · **Rules snapshot:** 038a985b57fe
|
package/agent-docs/README.md
CHANGED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Callout (`kuat:callout`)
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Inline banner for surfacing a status message tied to a section of content: info, positive, warning, or issue. Supports a required title, an optional description, a per-type icon (shown by default, can be hidden), and an optional link-style action. Exported from `@equal-experts/kuat-react` / `@equal-experts/kuat-vue`.
|
|
6
|
+
|
|
7
|
+
## When to use
|
|
8
|
+
|
|
9
|
+
- Persistent, in-page status messages tied to a section of content (e.g. explaining what a view shows, or that a save failed)
|
|
10
|
+
- Confirmations, warnings, or errors that should stay visible until the user navigates away or dismisses them via the action link
|
|
11
|
+
|
|
12
|
+
## When not to use
|
|
13
|
+
|
|
14
|
+
- Transient, self-dismissing notifications — use `Sonner`
|
|
15
|
+
- Form field-level validation — use `Field`'s error slot
|
|
16
|
+
- A single inline icon+label with no message — use `Badge`
|
|
17
|
+
|
|
18
|
+
## Variants
|
|
19
|
+
|
|
20
|
+
Four semantic `type` values, each with its own background tint and left border/icon accent:
|
|
21
|
+
|
|
22
|
+
- `info` (default) — ee-blue tint, `Info` icon
|
|
23
|
+
- `positive` — uptime-green tint, `CheckCircle2` icon
|
|
24
|
+
- `warning` — equal-ember tint, `AlertTriangle` icon
|
|
25
|
+
- `issue` — runtime-red tint, `XCircle` icon
|
|
26
|
+
|
|
27
|
+
## States
|
|
28
|
+
|
|
29
|
+
- **Icon shown / hidden** — `icon` prop, default `true`. The icon glyph is chosen automatically from `type`; consumers cannot swap it independently.
|
|
30
|
+
- **With / without description** — omit `description` to render title only.
|
|
31
|
+
- **With / without action** — omit `action` to render no link. Only a link-style action ships in this release; additional action kinds (e.g. a button) may be added in future without changing the `title`/`description`/`icon` API.
|
|
32
|
+
|
|
33
|
+
## Content guidance
|
|
34
|
+
|
|
35
|
+
- Title should be a short, complete statement of the status — it's the only text guaranteed to be read, since colour is never the sole signal (icon shape + title wording both carry the meaning, independent of the accent colour).
|
|
36
|
+
- Description is for supporting detail, not another restatement of the title.
|
|
37
|
+
- Action label should describe the action's effect (e.g. "Close message"), not just "Click here".
|
|
38
|
+
|
|
39
|
+
## Behaviour
|
|
40
|
+
|
|
41
|
+
- Root element renders `role="status"` (polite live region) — appropriate for a persistent banner already present in the page, as opposed to a toast that should interrupt.
|
|
42
|
+
- The action renders as a real `<a href>` (with optional `target` and `onClick`), not a button — it's always a navigation/link affordance in this release.
|
|
43
|
+
|
|
44
|
+
## Accessibility
|
|
45
|
+
|
|
46
|
+
- Status is never conveyed by colour alone: the icon shape (circle-i / check / triangle / x) and the title wording both signal the type independent of colour (WCAG 1.4.1).
|
|
47
|
+
- The icon and title text share the same neutral `--foreground` token — only the left border stripe and background use the per-type accent colour, so the icon remains legible regardless of type.
|
|
48
|
+
- All four `background`/`foreground` token pairs (`--callout-info`, `--callout-positive`, `--callout-warning`, `--callout-issue`, each with a `-foreground` counterpart) are covered by `pnpm tokens:contrast-check` in both light and dark mode.
|
|
49
|
+
- Icon is `aria-hidden="true"` — it's decorative reinforcement of the title text, not a separate accessible element.
|
|
50
|
+
|
|
51
|
+
## API
|
|
52
|
+
|
|
53
|
+
Import from `@equal-experts/kuat-react` (subpath: `@equal-experts/kuat-react/callout`) or `@equal-experts/kuat-vue` (subpath: `@equal-experts/kuat-vue/callout`).
|
|
54
|
+
|
|
55
|
+
- `type?: "info" | "positive" | "warning" | "issue"` — default `"info"`
|
|
56
|
+
- `title` — required
|
|
57
|
+
- `description?` — optional
|
|
58
|
+
- `icon?: boolean` — default `true`
|
|
59
|
+
- `action?: { label: string; href: string; target?: string; onClick?: (event) => void }` — optional
|
|
60
|
+
|
|
61
|
+
See Storybook (`Feedback/Callout`) for live examples of every type and combination.
|
|
62
|
+
|
|
63
|
+
## Related components
|
|
64
|
+
|
|
65
|
+
- `shadcn:sonner` (Kuat `Sonner`) — transient, self-dismissing toast notifications
|
|
66
|
+
- `kuat:field` — inline form-field validation messages
|
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
"displayName": "KuatHeader",
|
|
19
19
|
"path": "components/kuat-header.md",
|
|
20
20
|
"sources": ["@equal-experts/kuat-react", "@equal-experts/kuat-vue"]
|
|
21
|
+
},
|
|
22
|
+
"kuat:callout": {
|
|
23
|
+
"slug": "callout",
|
|
24
|
+
"displayName": "Callout",
|
|
25
|
+
"path": "components/callout.md",
|
|
26
|
+
"sources": ["@equal-experts/kuat-react", "@equal-experts/kuat-vue"]
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
}
|
package/agent-docs/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"packageVersion": "0.15.0-beta.
|
|
2
|
+
"packageVersion": "0.15.0-beta.1",
|
|
3
3
|
"rules": {
|
|
4
|
-
"snapshotRef": "
|
|
5
|
-
"snapshotDate": "2026-07-
|
|
4
|
+
"snapshotRef": "038a985b57fe567a24d3a663277f4594d75b9a87",
|
|
5
|
+
"snapshotDate": "2026-07-06T14:20:52.535Z",
|
|
6
6
|
"sourceRepo": "equalexperts/kuat-agent-docs",
|
|
7
7
|
"loadingPath": "agent-docs/rules/LOADING-consumer.md"
|
|
8
8
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsxs as c, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import * as d from "react";
|
|
3
|
+
import { XCircle as m, AlertTriangle as _, CheckCircle2 as f, Info as C } from "lucide-react";
|
|
4
|
+
import { c as h } from "./utils-DLUjLwnh.js";
|
|
5
|
+
const T = ["info", "positive", "warning", "issue"], p = {
|
|
6
|
+
info: C,
|
|
7
|
+
positive: f,
|
|
8
|
+
warning: _,
|
|
9
|
+
issue: m
|
|
10
|
+
}, N = d.forwardRef(function({ className: e, type: a = "info", title: s, description: o, icon: n = !0, action: l, ...i }, r) {
|
|
11
|
+
const u = p[a];
|
|
12
|
+
return /* @__PURE__ */ c(
|
|
13
|
+
"div",
|
|
14
|
+
{
|
|
15
|
+
ref: r,
|
|
16
|
+
role: "status",
|
|
17
|
+
"data-slot": "callout",
|
|
18
|
+
"data-type": a,
|
|
19
|
+
className: h("callout", `callout--${a}`, e),
|
|
20
|
+
...i,
|
|
21
|
+
children: [
|
|
22
|
+
n ? /* @__PURE__ */ t(u, { "aria-hidden": "true", className: "callout__icon", "data-slot": "callout-icon" }) : null,
|
|
23
|
+
/* @__PURE__ */ t("div", { className: "callout__content", "data-slot": "callout-content", children: /* @__PURE__ */ c("div", { className: "callout__text-content", children: [
|
|
24
|
+
/* @__PURE__ */ t("p", { className: "callout__title", "data-slot": "callout-title", children: s }),
|
|
25
|
+
o != null ? /* @__PURE__ */ t("p", { className: "callout__description", "data-slot": "callout-description", children: o }) : null,
|
|
26
|
+
l ? /* @__PURE__ */ t(
|
|
27
|
+
"a",
|
|
28
|
+
{
|
|
29
|
+
className: "callout__action",
|
|
30
|
+
"data-slot": "callout-action",
|
|
31
|
+
href: l.href,
|
|
32
|
+
target: l.target,
|
|
33
|
+
onClick: l.onClick,
|
|
34
|
+
children: l.label
|
|
35
|
+
}
|
|
36
|
+
) : null
|
|
37
|
+
] }) })
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
N.displayName = "Callout";
|
|
43
|
+
export {
|
|
44
|
+
N as C,
|
|
45
|
+
T as a
|
|
46
|
+
};
|
package/dist/callout.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { KuatSlotContent } from '../../../lib/react-node-compat';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export declare const CALLOUT_TYPES: readonly ["info", "positive", "warning", "issue"];
|
|
4
|
+
export type CalloutType = (typeof CALLOUT_TYPES)[number];
|
|
5
|
+
export interface CalloutAction {
|
|
6
|
+
label: string;
|
|
7
|
+
href: string;
|
|
8
|
+
target?: React.HTMLAttributeAnchorTarget;
|
|
9
|
+
onClick?: React.MouseEventHandler<HTMLAnchorElement>;
|
|
10
|
+
}
|
|
11
|
+
export interface CalloutProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
12
|
+
type?: CalloutType;
|
|
13
|
+
title: KuatSlotContent;
|
|
14
|
+
description?: KuatSlotContent;
|
|
15
|
+
icon?: boolean;
|
|
16
|
+
action?: CalloutAction;
|
|
17
|
+
}
|
|
18
|
+
declare const Callout: React.ForwardRefExoticComponent<CalloutProps & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
export { Callout };
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants
|
|
|
4
4
|
export type { ButtonGroupProps, ButtonGroupTextProps, ButtonGroupSeparatorProps, ButtonGroupOrientation, } from './components/ui/button-group';
|
|
5
5
|
export { ContentCard } from './components/ui/content-card';
|
|
6
6
|
export type { ContentCardProps } from './components/ui/content-card';
|
|
7
|
+
export { Callout, CALLOUT_TYPES } from './components/ui/callout';
|
|
8
|
+
export type { CalloutProps, CalloutType, CalloutAction, } from './components/ui/callout';
|
|
7
9
|
export { KuatHeader, kuatHeaderVariants, EELogo, KUAT_HEADER_LOCKUP_VARIANTS, KUAT_HEADER_APP_SWITCHER_EMPTY, } from './components/ui/kuat-header';
|
|
8
10
|
export type { KuatHeaderProps, EELogoProps, KuatHeaderVariant, KuatHeaderLockupVariant, KuatHeaderSubItem, KuatHeaderNavItem, KuatHeaderAccountItem, KuatHeaderAccountConfig, KuatHeaderAccountLabels, KuatHeaderAccountMobileTier, KuatHeaderActionItem, KuatHeaderApp, KuatHeaderAppSwitcherConfig, KuatHeaderAppSwitcherEmpty, KuatHeaderAppSwitcherLabels, KuatHeaderLockupConfig, } from './components/ui/kuat-header';
|
|
9
11
|
export { shouldShowAppSwitcher, resolveAppSwitcherLabels, resolveHeaderLockup, } from './components/ui/kuat-header';
|