@ship-it-ui/shipit 0.0.4 → 0.0.6
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/index.cjs +145 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +50 -1
- package/dist/index.d.ts +50 -1
- package/dist/index.js +144 -12
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.d.cts
CHANGED
|
@@ -29,6 +29,12 @@ interface AskBarProps extends Omit<HTMLAttributes<HTMLFormElement>, 'onSubmit' |
|
|
|
29
29
|
disabled?: boolean;
|
|
30
30
|
/** Pixel max-width. Default 620. */
|
|
31
31
|
maxWidth?: number | string;
|
|
32
|
+
/**
|
|
33
|
+
* `'comfortable'` (default) renders the desktop ask bar. `'touch'` swaps to
|
|
34
|
+
* the mobile composer: larger text, 44pt send button, ⌘↵ hint hidden (no
|
|
35
|
+
* hardware keyboard), and scope chips wrap to a second row.
|
|
36
|
+
*/
|
|
37
|
+
density?: 'comfortable' | 'touch';
|
|
32
38
|
}
|
|
33
39
|
declare const AskBar: react.ForwardRefExoticComponent<AskBarProps & react.RefAttributes<HTMLFormElement>>;
|
|
34
40
|
|
|
@@ -77,6 +83,13 @@ interface CopilotMessageProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
77
83
|
avatar?: ReactNode;
|
|
78
84
|
/** Streaming caret at the end of the body. */
|
|
79
85
|
streaming?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* `'comfortable'` (default) renders the desktop bubble. `'touch'` switches
|
|
88
|
+
* to the mobile chat layout: user bubbles right-aligned on `bg-accent`,
|
|
89
|
+
* assistant bubbles left-aligned on `bg-panel`, larger 15px text, and a
|
|
90
|
+
* max-width that keeps bubbles within 85% of the viewport.
|
|
91
|
+
*/
|
|
92
|
+
density?: 'comfortable' | 'touch';
|
|
80
93
|
}
|
|
81
94
|
declare const CopilotMessage: react.ForwardRefExoticComponent<CopilotMessageProps & react.RefAttributes<HTMLDivElement>>;
|
|
82
95
|
|
|
@@ -638,4 +651,40 @@ declare function entityTypeColumn<T extends MinimalEntity>(options?: {
|
|
|
638
651
|
header?: string;
|
|
639
652
|
}): DataTableColumn<T>;
|
|
640
653
|
|
|
641
|
-
|
|
654
|
+
/**
|
|
655
|
+
* NotifRow — single row in the mobile Inbox / notification list. Shows an
|
|
656
|
+
* unread dot (tone-colored), a tight title + body block, and a right-aligned
|
|
657
|
+
* relative time. Pair with `isFirst` / `isLast` props from a parent list
|
|
658
|
+
* wrapper to round the corners of the group like an iOS grouped list.
|
|
659
|
+
*
|
|
660
|
+
* No desktop sibling — desktop uses the standard `Notifications` flyout
|
|
661
|
+
* inside CommandPalette. This composite is mobile-only and lives under
|
|
662
|
+
* `packages/shipit/src/notifications/`.
|
|
663
|
+
*/
|
|
664
|
+
type NotifTone = 'ok' | 'warn' | 'err' | 'neutral';
|
|
665
|
+
interface NotifRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
666
|
+
/** Bold first-line summary. */
|
|
667
|
+
title: ReactNode;
|
|
668
|
+
/** One-line body underneath. Truncates to a single line for now. */
|
|
669
|
+
body?: ReactNode;
|
|
670
|
+
/** Right-aligned relative time string (e.g. `9:32`, `Mon`). */
|
|
671
|
+
time?: ReactNode;
|
|
672
|
+
/** Coloring of the unread dot. */
|
|
673
|
+
tone?: NotifTone;
|
|
674
|
+
/** When true, render the unread dot. */
|
|
675
|
+
unread?: boolean;
|
|
676
|
+
/** Round the top corners — set when this is the first row in a group. */
|
|
677
|
+
isFirst?: boolean;
|
|
678
|
+
/** Round the bottom corners — set when this is the last row in a group. */
|
|
679
|
+
isLast?: boolean;
|
|
680
|
+
/**
|
|
681
|
+
* Navigate when the row is tapped. Renders the row as an `<a>` and wins
|
|
682
|
+
* over `onClick` for the render shape — but any `onClick` you pass is
|
|
683
|
+
* still forwarded onto the anchor, which is the right place for
|
|
684
|
+
* analytics callbacks (the link still navigates).
|
|
685
|
+
*/
|
|
686
|
+
href?: string;
|
|
687
|
+
}
|
|
688
|
+
declare const NotifRow: react.ForwardRefExoticComponent<NotifRowProps & react.RefAttributes<HTMLDivElement>>;
|
|
689
|
+
|
|
690
|
+
export { AskBar, type AskBarProps, CTAStrip, type CTAStripProps, Citation, type CitationProps, ConfidenceIndicator, type ConfidenceIndicatorProps, type ConfidenceTier, ConnectorCard, type ConnectorCardProps, type ConnectorStatus, CopilotMessage, type CopilotMessageProps, type CopilotRole, ENTITY_GLYPH, ENTITY_LABEL, ENTITY_TONE_BG, ENTITY_TONE_CLASS, EntityBadge, type EntityBadgeProps, type EntityBadgeVariant, EntityCard, type EntityCardProps, EntityListRow, EntityListRowButton, type EntityListRowButtonProps, EntityListRowDiv, type EntityListRowDivProps, type EntityListRowProps, type EntityStat, EntityTable, type EntityTableProps, type EntityType, type EntityTypeMeta, type Feature, FeatureGrid, type FeatureGridProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GraphEdge, type GraphEdgeProps, type GraphEdgeStyle, GraphInspector, type GraphInspectorProps, GraphLegend, type GraphLegendEntry, type GraphLegendProps, GraphMinimap, type GraphMinimapProps, GraphNode, type GraphNodeProps, type GraphNodeState, Hero, type HeroProps, type InspectorProperty, type InspectorRelation, type KnownEntityType, type MinimapPoint, type MinimapViewport, NotifRow, type NotifRowProps, type NotifTone, PathOverlay, type PathOverlayProps, type PathPoint, PricingCard, type PricingCardProps, ReasoningBlock, type ReasoningBlockProps, ReasoningStep, type ReasoningStepProps, SuggestionChip, type SuggestionChipProps, Testimonial, type TestimonialProps, ToolCallCard, type ToolCallCardProps, entityColumn, entityTypeColumn, getEntityTypeMeta, listEntityTypes, registerEntityType, registerEntityTypes, resetEntityTypeRegistry };
|
package/dist/index.d.ts
CHANGED
|
@@ -29,6 +29,12 @@ interface AskBarProps extends Omit<HTMLAttributes<HTMLFormElement>, 'onSubmit' |
|
|
|
29
29
|
disabled?: boolean;
|
|
30
30
|
/** Pixel max-width. Default 620. */
|
|
31
31
|
maxWidth?: number | string;
|
|
32
|
+
/**
|
|
33
|
+
* `'comfortable'` (default) renders the desktop ask bar. `'touch'` swaps to
|
|
34
|
+
* the mobile composer: larger text, 44pt send button, ⌘↵ hint hidden (no
|
|
35
|
+
* hardware keyboard), and scope chips wrap to a second row.
|
|
36
|
+
*/
|
|
37
|
+
density?: 'comfortable' | 'touch';
|
|
32
38
|
}
|
|
33
39
|
declare const AskBar: react.ForwardRefExoticComponent<AskBarProps & react.RefAttributes<HTMLFormElement>>;
|
|
34
40
|
|
|
@@ -77,6 +83,13 @@ interface CopilotMessageProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
77
83
|
avatar?: ReactNode;
|
|
78
84
|
/** Streaming caret at the end of the body. */
|
|
79
85
|
streaming?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* `'comfortable'` (default) renders the desktop bubble. `'touch'` switches
|
|
88
|
+
* to the mobile chat layout: user bubbles right-aligned on `bg-accent`,
|
|
89
|
+
* assistant bubbles left-aligned on `bg-panel`, larger 15px text, and a
|
|
90
|
+
* max-width that keeps bubbles within 85% of the viewport.
|
|
91
|
+
*/
|
|
92
|
+
density?: 'comfortable' | 'touch';
|
|
80
93
|
}
|
|
81
94
|
declare const CopilotMessage: react.ForwardRefExoticComponent<CopilotMessageProps & react.RefAttributes<HTMLDivElement>>;
|
|
82
95
|
|
|
@@ -638,4 +651,40 @@ declare function entityTypeColumn<T extends MinimalEntity>(options?: {
|
|
|
638
651
|
header?: string;
|
|
639
652
|
}): DataTableColumn<T>;
|
|
640
653
|
|
|
641
|
-
|
|
654
|
+
/**
|
|
655
|
+
* NotifRow — single row in the mobile Inbox / notification list. Shows an
|
|
656
|
+
* unread dot (tone-colored), a tight title + body block, and a right-aligned
|
|
657
|
+
* relative time. Pair with `isFirst` / `isLast` props from a parent list
|
|
658
|
+
* wrapper to round the corners of the group like an iOS grouped list.
|
|
659
|
+
*
|
|
660
|
+
* No desktop sibling — desktop uses the standard `Notifications` flyout
|
|
661
|
+
* inside CommandPalette. This composite is mobile-only and lives under
|
|
662
|
+
* `packages/shipit/src/notifications/`.
|
|
663
|
+
*/
|
|
664
|
+
type NotifTone = 'ok' | 'warn' | 'err' | 'neutral';
|
|
665
|
+
interface NotifRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
666
|
+
/** Bold first-line summary. */
|
|
667
|
+
title: ReactNode;
|
|
668
|
+
/** One-line body underneath. Truncates to a single line for now. */
|
|
669
|
+
body?: ReactNode;
|
|
670
|
+
/** Right-aligned relative time string (e.g. `9:32`, `Mon`). */
|
|
671
|
+
time?: ReactNode;
|
|
672
|
+
/** Coloring of the unread dot. */
|
|
673
|
+
tone?: NotifTone;
|
|
674
|
+
/** When true, render the unread dot. */
|
|
675
|
+
unread?: boolean;
|
|
676
|
+
/** Round the top corners — set when this is the first row in a group. */
|
|
677
|
+
isFirst?: boolean;
|
|
678
|
+
/** Round the bottom corners — set when this is the last row in a group. */
|
|
679
|
+
isLast?: boolean;
|
|
680
|
+
/**
|
|
681
|
+
* Navigate when the row is tapped. Renders the row as an `<a>` and wins
|
|
682
|
+
* over `onClick` for the render shape — but any `onClick` you pass is
|
|
683
|
+
* still forwarded onto the anchor, which is the right place for
|
|
684
|
+
* analytics callbacks (the link still navigates).
|
|
685
|
+
*/
|
|
686
|
+
href?: string;
|
|
687
|
+
}
|
|
688
|
+
declare const NotifRow: react.ForwardRefExoticComponent<NotifRowProps & react.RefAttributes<HTMLDivElement>>;
|
|
689
|
+
|
|
690
|
+
export { AskBar, type AskBarProps, CTAStrip, type CTAStripProps, Citation, type CitationProps, ConfidenceIndicator, type ConfidenceIndicatorProps, type ConfidenceTier, ConnectorCard, type ConnectorCardProps, type ConnectorStatus, CopilotMessage, type CopilotMessageProps, type CopilotRole, ENTITY_GLYPH, ENTITY_LABEL, ENTITY_TONE_BG, ENTITY_TONE_CLASS, EntityBadge, type EntityBadgeProps, type EntityBadgeVariant, EntityCard, type EntityCardProps, EntityListRow, EntityListRowButton, type EntityListRowButtonProps, EntityListRowDiv, type EntityListRowDivProps, type EntityListRowProps, type EntityStat, EntityTable, type EntityTableProps, type EntityType, type EntityTypeMeta, type Feature, FeatureGrid, type FeatureGridProps, Footer, type FooterColumn, type FooterLink, type FooterProps, GraphEdge, type GraphEdgeProps, type GraphEdgeStyle, GraphInspector, type GraphInspectorProps, GraphLegend, type GraphLegendEntry, type GraphLegendProps, GraphMinimap, type GraphMinimapProps, GraphNode, type GraphNodeProps, type GraphNodeState, Hero, type HeroProps, type InspectorProperty, type InspectorRelation, type KnownEntityType, type MinimapPoint, type MinimapViewport, NotifRow, type NotifRowProps, type NotifTone, PathOverlay, type PathOverlayProps, type PathPoint, PricingCard, type PricingCardProps, ReasoningBlock, type ReasoningBlockProps, ReasoningStep, type ReasoningStepProps, SuggestionChip, type SuggestionChipProps, Testimonial, type TestimonialProps, ToolCallCard, type ToolCallCardProps, entityColumn, entityTypeColumn, getEntityTypeMeta, listEntityTypes, registerEntityType, registerEntityTypes, resetEntityTypeRegistry };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
// src/index.ts
|
|
4
|
-
import { cn as
|
|
4
|
+
import { cn as cn23 } from "@ship-it-ui/ui";
|
|
5
5
|
|
|
6
6
|
// src/ai/AskBar.tsx
|
|
7
7
|
import { Button, useControllableState } from "@ship-it-ui/ui";
|
|
@@ -21,10 +21,12 @@ var AskBar = forwardRef(function AskBar2({
|
|
|
21
21
|
submitLabel = "Ask",
|
|
22
22
|
disabled,
|
|
23
23
|
maxWidth = 620,
|
|
24
|
+
density = "comfortable",
|
|
24
25
|
className,
|
|
25
26
|
children,
|
|
26
27
|
...props
|
|
27
28
|
}, ref) {
|
|
29
|
+
const isTouch = density === "touch";
|
|
28
30
|
const [value, setValue] = useControllableState({
|
|
29
31
|
value: valueProp,
|
|
30
32
|
defaultValue: defaultValue ?? "",
|
|
@@ -52,16 +54,17 @@ var AskBar = forwardRef(function AskBar2({
|
|
|
52
54
|
ref,
|
|
53
55
|
role: "search",
|
|
54
56
|
onSubmit: handleSubmit,
|
|
55
|
-
style: { maxWidth },
|
|
57
|
+
style: { maxWidth: isTouch ? void 0 : maxWidth },
|
|
56
58
|
className: cn(
|
|
57
|
-
"border-border-strong bg-panel w-full
|
|
59
|
+
"border-border-strong bg-panel w-full border",
|
|
60
|
+
isTouch ? "rounded-m-card p-3" : "rounded-xl p-[14px] shadow",
|
|
58
61
|
"focus-within:border-accent focus-within:ring-accent-dim focus-within:ring-[3px]",
|
|
59
62
|
className
|
|
60
63
|
),
|
|
61
64
|
...props,
|
|
62
65
|
children: [
|
|
63
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
64
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-accent text-[16px]", children: "\u2726" }),
|
|
66
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-[10px]", isTouch ? "mb-2" : "mb-[10px]"), children: [
|
|
67
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cn("text-accent", isTouch ? "text-[18px]" : "text-[16px]"), children: "\u2726" }),
|
|
65
68
|
/* @__PURE__ */ jsx(
|
|
66
69
|
"textarea",
|
|
67
70
|
{
|
|
@@ -73,8 +76,9 @@ var AskBar = forwardRef(function AskBar2({
|
|
|
73
76
|
"aria-label": placeholder,
|
|
74
77
|
rows: 1,
|
|
75
78
|
className: cn(
|
|
76
|
-
"text-text flex-1 resize-none border-0 bg-transparent
|
|
77
|
-
"placeholder:text-text-dim"
|
|
79
|
+
"text-text flex-1 resize-none border-0 bg-transparent leading-[1.5] outline-none",
|
|
80
|
+
"placeholder:text-text-dim",
|
|
81
|
+
isTouch ? "text-m-body" : "text-[14px]"
|
|
78
82
|
)
|
|
79
83
|
}
|
|
80
84
|
),
|
|
@@ -82,19 +86,23 @@ var AskBar = forwardRef(function AskBar2({
|
|
|
82
86
|
"span",
|
|
83
87
|
{
|
|
84
88
|
"aria-hidden": true,
|
|
85
|
-
className:
|
|
89
|
+
className: cn(
|
|
90
|
+
"bg-accent mt-[3px] inline-block w-px animate-[ship-pulse_1s_infinite]",
|
|
91
|
+
isTouch ? "h-5" : "h-4"
|
|
92
|
+
)
|
|
86
93
|
}
|
|
87
94
|
)
|
|
88
95
|
] }),
|
|
89
96
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-[6px]", children: [
|
|
90
97
|
children,
|
|
91
98
|
/* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-2", children: [
|
|
92
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-text-dim font-mono text-[11px]", children: "\u2318\u21B5" }),
|
|
99
|
+
!isTouch && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-text-dim font-mono text-[11px]", children: "\u2318\u21B5" }),
|
|
93
100
|
/* @__PURE__ */ jsx(
|
|
94
101
|
Button,
|
|
95
102
|
{
|
|
96
103
|
type: "submit",
|
|
97
|
-
size: "sm",
|
|
104
|
+
size: isTouch ? "md" : "sm",
|
|
105
|
+
density: isTouch ? "touch" : void 0,
|
|
98
106
|
variant: "primary",
|
|
99
107
|
disabled: disabled || !(value ?? "").trim(),
|
|
100
108
|
children: submitLabel
|
|
@@ -224,8 +232,49 @@ import { cn as cn4 } from "@ship-it-ui/ui";
|
|
|
224
232
|
import { forwardRef as forwardRef4 } from "react";
|
|
225
233
|
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
226
234
|
var CopilotMessage = forwardRef4(
|
|
227
|
-
function CopilotMessage2({ role, avatar, streaming, className, children, ...props }, ref) {
|
|
235
|
+
function CopilotMessage2({ role, avatar, streaming, density = "comfortable", className, children, ...props }, ref) {
|
|
228
236
|
const isAssistant = role === "assistant";
|
|
237
|
+
const isTouch = density === "touch";
|
|
238
|
+
if (isTouch) {
|
|
239
|
+
return /* @__PURE__ */ jsxs4(
|
|
240
|
+
"div",
|
|
241
|
+
{
|
|
242
|
+
ref,
|
|
243
|
+
className: cn4(
|
|
244
|
+
"flex flex-col gap-[6px]",
|
|
245
|
+
isAssistant ? "items-start" : "items-end",
|
|
246
|
+
className
|
|
247
|
+
),
|
|
248
|
+
"data-role": role,
|
|
249
|
+
...props,
|
|
250
|
+
children: [
|
|
251
|
+
isAssistant && /* @__PURE__ */ jsxs4("div", { className: "text-m-eyebrow text-accent inline-flex items-center gap-[6px] font-mono tracking-wide uppercase", children: [
|
|
252
|
+
/* @__PURE__ */ jsx4("span", { "aria-hidden": true, children: "\u2726" }),
|
|
253
|
+
streaming ? "thinking" : "ShipIt"
|
|
254
|
+
] }),
|
|
255
|
+
/* @__PURE__ */ jsxs4(
|
|
256
|
+
"div",
|
|
257
|
+
{
|
|
258
|
+
className: cn4(
|
|
259
|
+
"rounded-m-card text-m-body max-w-[85%] px-[14px] py-3 leading-normal",
|
|
260
|
+
isAssistant ? "bg-panel border-border border" : "bg-accent text-on-accent"
|
|
261
|
+
),
|
|
262
|
+
children: [
|
|
263
|
+
children,
|
|
264
|
+
streaming && /* @__PURE__ */ jsx4(
|
|
265
|
+
"span",
|
|
266
|
+
{
|
|
267
|
+
"aria-hidden": true,
|
|
268
|
+
className: "bg-accent ml-[2px] inline-block h-4 w-px animate-[ship-pulse_1s_infinite] align-middle"
|
|
269
|
+
}
|
|
270
|
+
)
|
|
271
|
+
]
|
|
272
|
+
}
|
|
273
|
+
)
|
|
274
|
+
]
|
|
275
|
+
}
|
|
276
|
+
);
|
|
277
|
+
}
|
|
229
278
|
return /* @__PURE__ */ jsxs4(
|
|
230
279
|
"div",
|
|
231
280
|
{
|
|
@@ -1280,6 +1329,88 @@ function entityTypeColumn(options = {}) {
|
|
|
1280
1329
|
cell: (row) => /* @__PURE__ */ jsx24(EntityBadge, { type: row.type, size: "sm" })
|
|
1281
1330
|
};
|
|
1282
1331
|
}
|
|
1332
|
+
|
|
1333
|
+
// src/notifications/NotifRow.tsx
|
|
1334
|
+
import { cn as cn22 } from "@ship-it-ui/ui";
|
|
1335
|
+
import { forwardRef as forwardRef24 } from "react";
|
|
1336
|
+
import { Fragment as Fragment5, jsx as jsx25, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1337
|
+
var toneClass = {
|
|
1338
|
+
ok: "bg-ok",
|
|
1339
|
+
warn: "bg-warn",
|
|
1340
|
+
err: "bg-err",
|
|
1341
|
+
neutral: "bg-accent-text"
|
|
1342
|
+
};
|
|
1343
|
+
var NotifRow = forwardRef24(function NotifRow2({
|
|
1344
|
+
title,
|
|
1345
|
+
body,
|
|
1346
|
+
time,
|
|
1347
|
+
tone = "neutral",
|
|
1348
|
+
unread,
|
|
1349
|
+
isFirst,
|
|
1350
|
+
isLast,
|
|
1351
|
+
href,
|
|
1352
|
+
className,
|
|
1353
|
+
onClick,
|
|
1354
|
+
...props
|
|
1355
|
+
}, ref) {
|
|
1356
|
+
const content = /* @__PURE__ */ jsxs24(Fragment5, { children: [
|
|
1357
|
+
/* @__PURE__ */ jsx25("div", { className: "pt-1", "aria-hidden": true, children: /* @__PURE__ */ jsx25(
|
|
1358
|
+
"div",
|
|
1359
|
+
{
|
|
1360
|
+
className: cn22("h-2 w-2 rounded-full", unread ? toneClass[tone] : "bg-border-strong")
|
|
1361
|
+
}
|
|
1362
|
+
) }),
|
|
1363
|
+
/* @__PURE__ */ jsxs24("div", { className: "min-w-0 flex-1", children: [
|
|
1364
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex items-baseline justify-between gap-2", children: [
|
|
1365
|
+
/* @__PURE__ */ jsx25("div", { className: "truncate text-[14px] font-medium tracking-tight", children: title }),
|
|
1366
|
+
time != null && /* @__PURE__ */ jsx25("span", { className: "text-text-muted shrink-0 font-mono text-[11px] whitespace-nowrap", children: time })
|
|
1367
|
+
] }),
|
|
1368
|
+
body && /* @__PURE__ */ jsx25("div", { className: "text-text-muted mt-[3px] text-[13px] leading-tight", children: body })
|
|
1369
|
+
] })
|
|
1370
|
+
] });
|
|
1371
|
+
const baseClass = cn22(
|
|
1372
|
+
"flex gap-3 p-[14px] bg-panel border-border border-l border-r",
|
|
1373
|
+
isFirst ? "border-t rounded-t-m-card" : "",
|
|
1374
|
+
"border-b",
|
|
1375
|
+
isLast ? "rounded-b-m-card" : "",
|
|
1376
|
+
href || onClick ? "cursor-pointer hover:bg-panel-2" : "",
|
|
1377
|
+
className
|
|
1378
|
+
);
|
|
1379
|
+
if (href) {
|
|
1380
|
+
return /* @__PURE__ */ jsx25(
|
|
1381
|
+
"a",
|
|
1382
|
+
{
|
|
1383
|
+
ref,
|
|
1384
|
+
href,
|
|
1385
|
+
onClick,
|
|
1386
|
+
className: cn22(
|
|
1387
|
+
baseClass,
|
|
1388
|
+
"text-text focus-visible:ring-accent-dim no-underline outline-none focus-visible:ring-[3px]"
|
|
1389
|
+
),
|
|
1390
|
+
...props,
|
|
1391
|
+
children: content
|
|
1392
|
+
}
|
|
1393
|
+
);
|
|
1394
|
+
}
|
|
1395
|
+
if (onClick) {
|
|
1396
|
+
return /* @__PURE__ */ jsx25(
|
|
1397
|
+
"button",
|
|
1398
|
+
{
|
|
1399
|
+
type: "button",
|
|
1400
|
+
ref,
|
|
1401
|
+
onClick,
|
|
1402
|
+
className: cn22(
|
|
1403
|
+
baseClass,
|
|
1404
|
+
"focus-visible:ring-accent-dim text-left outline-none focus-visible:ring-[3px]"
|
|
1405
|
+
),
|
|
1406
|
+
...props,
|
|
1407
|
+
children: content
|
|
1408
|
+
}
|
|
1409
|
+
);
|
|
1410
|
+
}
|
|
1411
|
+
return /* @__PURE__ */ jsx25("div", { ref, className: baseClass, ...props, children: content });
|
|
1412
|
+
});
|
|
1413
|
+
NotifRow.displayName = "NotifRow";
|
|
1283
1414
|
export {
|
|
1284
1415
|
AskBar,
|
|
1285
1416
|
CTAStrip,
|
|
@@ -1305,6 +1436,7 @@ export {
|
|
|
1305
1436
|
GraphMinimap,
|
|
1306
1437
|
GraphNode,
|
|
1307
1438
|
Hero,
|
|
1439
|
+
NotifRow,
|
|
1308
1440
|
PathOverlay,
|
|
1309
1441
|
PricingCard,
|
|
1310
1442
|
ReasoningBlock,
|
|
@@ -1312,7 +1444,7 @@ export {
|
|
|
1312
1444
|
SuggestionChip,
|
|
1313
1445
|
Testimonial,
|
|
1314
1446
|
ToolCallCard,
|
|
1315
|
-
|
|
1447
|
+
cn23 as cn,
|
|
1316
1448
|
entityColumn,
|
|
1317
1449
|
entityTypeColumn,
|
|
1318
1450
|
getEntityTypeMeta,
|