@ship-it-ui/shipit 0.0.2 → 0.0.4
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 +314 -98
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +163 -16
- package/dist/index.d.ts +163 -16
- package/dist/index.js +304 -97
- package/dist/index.js.map +1 -1
- package/package.json +8 -5
package/dist/index.cjs
CHANGED
|
@@ -26,6 +26,7 @@ __export(index_exports, {
|
|
|
26
26
|
CTAStrip: () => CTAStrip,
|
|
27
27
|
Citation: () => Citation,
|
|
28
28
|
ConfidenceIndicator: () => ConfidenceIndicator,
|
|
29
|
+
ConnectorCard: () => ConnectorCard,
|
|
29
30
|
CopilotMessage: () => CopilotMessage,
|
|
30
31
|
ENTITY_GLYPH: () => ENTITY_GLYPH,
|
|
31
32
|
ENTITY_LABEL: () => ENTITY_LABEL,
|
|
@@ -36,6 +37,7 @@ __export(index_exports, {
|
|
|
36
37
|
EntityListRow: () => EntityListRow,
|
|
37
38
|
EntityListRowButton: () => EntityListRowButton,
|
|
38
39
|
EntityListRowDiv: () => EntityListRowDiv,
|
|
40
|
+
EntityTable: () => EntityTable,
|
|
39
41
|
FeatureGrid: () => FeatureGrid,
|
|
40
42
|
Footer: () => Footer,
|
|
41
43
|
GraphEdge: () => GraphEdge,
|
|
@@ -51,15 +53,22 @@ __export(index_exports, {
|
|
|
51
53
|
SuggestionChip: () => SuggestionChip,
|
|
52
54
|
Testimonial: () => Testimonial,
|
|
53
55
|
ToolCallCard: () => ToolCallCard,
|
|
54
|
-
cn: () =>
|
|
56
|
+
cn: () => import_ui29.cn,
|
|
57
|
+
entityColumn: () => entityColumn,
|
|
58
|
+
entityTypeColumn: () => entityTypeColumn,
|
|
59
|
+
getEntityTypeMeta: () => getEntityTypeMeta,
|
|
60
|
+
listEntityTypes: () => listEntityTypes,
|
|
61
|
+
registerEntityType: () => registerEntityType,
|
|
62
|
+
registerEntityTypes: () => registerEntityTypes,
|
|
63
|
+
resetEntityTypeRegistry: () => resetEntityTypeRegistry
|
|
55
64
|
});
|
|
56
65
|
module.exports = __toCommonJS(index_exports);
|
|
57
|
-
var
|
|
66
|
+
var import_ui29 = require("@ship-it-ui/ui");
|
|
58
67
|
|
|
59
68
|
// src/ai/AskBar.tsx
|
|
60
69
|
var import_ui = require("@ship-it-ui/ui");
|
|
61
|
-
var import_react = require("react");
|
|
62
70
|
var import_ui2 = require("@ship-it-ui/ui");
|
|
71
|
+
var import_react = require("react");
|
|
63
72
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
64
73
|
var AskBar = (0, import_react.forwardRef)(function AskBar2({
|
|
65
74
|
value: valueProp,
|
|
@@ -159,8 +168,8 @@ var AskBar = (0, import_react.forwardRef)(function AskBar2({
|
|
|
159
168
|
AskBar.displayName = "AskBar";
|
|
160
169
|
|
|
161
170
|
// src/ai/Citation.tsx
|
|
162
|
-
var import_react2 = require("react");
|
|
163
171
|
var import_ui3 = require("@ship-it-ui/ui");
|
|
172
|
+
var import_react2 = require("react");
|
|
164
173
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
165
174
|
var SUPERSCRIPTS = ["\u2070", "\xB9", "\xB2", "\xB3", "\u2074", "\u2075", "\u2076", "\u2077", "\u2078", "\u2079"];
|
|
166
175
|
function toSuperscript(n) {
|
|
@@ -201,8 +210,8 @@ var Citation = (0, import_react2.forwardRef)(function Citation2({ index, source,
|
|
|
201
210
|
Citation.displayName = "Citation";
|
|
202
211
|
|
|
203
212
|
// src/ai/ConfidenceIndicator.tsx
|
|
204
|
-
var import_react3 = require("react");
|
|
205
213
|
var import_ui4 = require("@ship-it-ui/ui");
|
|
214
|
+
var import_react3 = require("react");
|
|
206
215
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
207
216
|
var tierLabel = {
|
|
208
217
|
high: "High",
|
|
@@ -270,8 +279,8 @@ ConfidenceIndicator.displayName = "ConfidenceIndicator";
|
|
|
270
279
|
|
|
271
280
|
// src/ai/CopilotMessage.tsx
|
|
272
281
|
var import_ui5 = require("@ship-it-ui/ui");
|
|
273
|
-
var import_react4 = require("react");
|
|
274
282
|
var import_ui6 = require("@ship-it-ui/ui");
|
|
283
|
+
var import_react4 = require("react");
|
|
275
284
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
276
285
|
var CopilotMessage = (0, import_react4.forwardRef)(
|
|
277
286
|
function CopilotMessage2({ role, avatar, streaming, className, children, ...props }, ref) {
|
|
@@ -320,8 +329,8 @@ CopilotMessage.displayName = "CopilotMessage";
|
|
|
320
329
|
|
|
321
330
|
// src/ai/ReasoningBlock.tsx
|
|
322
331
|
var import_ui7 = require("@ship-it-ui/ui");
|
|
323
|
-
var import_react5 = require("react");
|
|
324
332
|
var import_ui8 = require("@ship-it-ui/ui");
|
|
333
|
+
var import_react5 = require("react");
|
|
325
334
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
326
335
|
var ReasoningBlock = (0, import_react5.forwardRef)(
|
|
327
336
|
function ReasoningBlock2({
|
|
@@ -382,8 +391,8 @@ var ReasoningStep = (0, import_react5.forwardRef)(function ReasoningStep2({ step
|
|
|
382
391
|
ReasoningStep.displayName = "ReasoningStep";
|
|
383
392
|
|
|
384
393
|
// src/ai/SuggestionChip.tsx
|
|
385
|
-
var import_react6 = require("react");
|
|
386
394
|
var import_ui9 = require("@ship-it-ui/ui");
|
|
395
|
+
var import_react6 = require("react");
|
|
387
396
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
388
397
|
var SuggestionChip = (0, import_react6.forwardRef)(
|
|
389
398
|
function SuggestionChip2({ glyph = "\u2726", className, children, type, ...props }, ref) {
|
|
@@ -412,8 +421,8 @@ SuggestionChip.displayName = "SuggestionChip";
|
|
|
412
421
|
|
|
413
422
|
// src/ai/ToolCallCard.tsx
|
|
414
423
|
var import_ui10 = require("@ship-it-ui/ui");
|
|
415
|
-
var import_react7 = require("react");
|
|
416
424
|
var import_ui11 = require("@ship-it-ui/ui");
|
|
425
|
+
var import_react7 = require("react");
|
|
417
426
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
418
427
|
var ToolCallCard = (0, import_react7.forwardRef)(function ToolCallCard2({ name, status, running, className, children, ...props }, ref) {
|
|
419
428
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
@@ -446,64 +455,140 @@ ToolCallCard.displayName = "ToolCallCard";
|
|
|
446
455
|
|
|
447
456
|
// src/entity/EntityBadge.tsx
|
|
448
457
|
var import_ui12 = require("@ship-it-ui/ui");
|
|
449
|
-
var import_react8 = require("react");
|
|
450
458
|
var import_ui13 = require("@ship-it-ui/ui");
|
|
459
|
+
var import_react8 = require("react");
|
|
451
460
|
|
|
452
461
|
// src/entity/types.ts
|
|
462
|
+
var BUILTIN_META = {
|
|
463
|
+
service: {
|
|
464
|
+
glyph: "\u25C7",
|
|
465
|
+
label: "Service",
|
|
466
|
+
toneClass: "text-accent",
|
|
467
|
+
toneBg: "bg-accent-dim",
|
|
468
|
+
colorVar: "var(--color-accent)",
|
|
469
|
+
badgeVariant: "accent"
|
|
470
|
+
},
|
|
471
|
+
person: {
|
|
472
|
+
glyph: "\u25CB",
|
|
473
|
+
label: "Person",
|
|
474
|
+
toneClass: "text-text-muted",
|
|
475
|
+
toneBg: "bg-panel-2",
|
|
476
|
+
colorVar: "var(--color-purple)",
|
|
477
|
+
badgeVariant: "neutral"
|
|
478
|
+
},
|
|
479
|
+
document: {
|
|
480
|
+
glyph: "\u25A4",
|
|
481
|
+
label: "Document",
|
|
482
|
+
toneClass: "text-purple",
|
|
483
|
+
toneBg: "bg-[color-mix(in_oklab,var(--color-purple),transparent_85%)]",
|
|
484
|
+
colorVar: "var(--color-pink)",
|
|
485
|
+
badgeVariant: "purple"
|
|
486
|
+
},
|
|
487
|
+
deployment: {
|
|
488
|
+
glyph: "\u2191",
|
|
489
|
+
label: "Deployment",
|
|
490
|
+
toneClass: "text-ok",
|
|
491
|
+
toneBg: "bg-[color-mix(in_oklab,var(--color-ok),transparent_85%)]",
|
|
492
|
+
colorVar: "var(--color-ok)",
|
|
493
|
+
badgeVariant: "ok"
|
|
494
|
+
},
|
|
495
|
+
incident: {
|
|
496
|
+
glyph: "\u25CE",
|
|
497
|
+
label: "Incident",
|
|
498
|
+
toneClass: "text-err",
|
|
499
|
+
toneBg: "bg-[color-mix(in_oklab,var(--color-err),transparent_85%)]",
|
|
500
|
+
colorVar: "var(--color-warn)",
|
|
501
|
+
badgeVariant: "err"
|
|
502
|
+
},
|
|
503
|
+
ticket: {
|
|
504
|
+
glyph: "\u25A2",
|
|
505
|
+
label: "Ticket",
|
|
506
|
+
toneClass: "text-warn",
|
|
507
|
+
toneBg: "bg-[color-mix(in_oklab,var(--color-warn),transparent_85%)]",
|
|
508
|
+
colorVar: "var(--color-text-muted)",
|
|
509
|
+
badgeVariant: "warn"
|
|
510
|
+
}
|
|
511
|
+
};
|
|
512
|
+
var FALLBACK = BUILTIN_META.service;
|
|
513
|
+
var registry = new Map(Object.entries(BUILTIN_META));
|
|
514
|
+
function registerEntityType(type, meta) {
|
|
515
|
+
registry.set(type, meta);
|
|
516
|
+
return meta;
|
|
517
|
+
}
|
|
518
|
+
function registerEntityTypes(map) {
|
|
519
|
+
for (const [key, meta] of Object.entries(map)) {
|
|
520
|
+
registry.set(key, meta);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
function getEntityTypeMeta(type) {
|
|
524
|
+
return registry.get(type) ?? FALLBACK;
|
|
525
|
+
}
|
|
526
|
+
function listEntityTypes() {
|
|
527
|
+
return Array.from(registry.entries());
|
|
528
|
+
}
|
|
529
|
+
function resetEntityTypeRegistry() {
|
|
530
|
+
registry.clear();
|
|
531
|
+
for (const key of Object.keys(BUILTIN_META)) {
|
|
532
|
+
registry.set(key, BUILTIN_META[key]);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
453
535
|
var ENTITY_GLYPH = {
|
|
454
|
-
service:
|
|
455
|
-
person:
|
|
456
|
-
document:
|
|
457
|
-
deployment:
|
|
458
|
-
incident:
|
|
459
|
-
ticket:
|
|
536
|
+
service: BUILTIN_META.service.glyph,
|
|
537
|
+
person: BUILTIN_META.person.glyph,
|
|
538
|
+
document: BUILTIN_META.document.glyph,
|
|
539
|
+
deployment: BUILTIN_META.deployment.glyph,
|
|
540
|
+
incident: BUILTIN_META.incident.glyph,
|
|
541
|
+
ticket: BUILTIN_META.ticket.glyph
|
|
460
542
|
};
|
|
461
543
|
var ENTITY_LABEL = {
|
|
462
|
-
service:
|
|
463
|
-
person:
|
|
464
|
-
document:
|
|
465
|
-
deployment:
|
|
466
|
-
incident:
|
|
467
|
-
ticket:
|
|
544
|
+
service: BUILTIN_META.service.label,
|
|
545
|
+
person: BUILTIN_META.person.label,
|
|
546
|
+
document: BUILTIN_META.document.label,
|
|
547
|
+
deployment: BUILTIN_META.deployment.label,
|
|
548
|
+
incident: BUILTIN_META.incident.label,
|
|
549
|
+
ticket: BUILTIN_META.ticket.label
|
|
468
550
|
};
|
|
469
551
|
var ENTITY_TONE_CLASS = {
|
|
470
|
-
service:
|
|
471
|
-
person:
|
|
472
|
-
document:
|
|
473
|
-
deployment:
|
|
474
|
-
incident:
|
|
475
|
-
ticket:
|
|
552
|
+
service: BUILTIN_META.service.toneClass,
|
|
553
|
+
person: BUILTIN_META.person.toneClass,
|
|
554
|
+
document: BUILTIN_META.document.toneClass,
|
|
555
|
+
deployment: BUILTIN_META.deployment.toneClass,
|
|
556
|
+
incident: BUILTIN_META.incident.toneClass,
|
|
557
|
+
ticket: BUILTIN_META.ticket.toneClass
|
|
476
558
|
};
|
|
477
559
|
var ENTITY_TONE_BG = {
|
|
478
|
-
service:
|
|
479
|
-
person:
|
|
480
|
-
document:
|
|
481
|
-
deployment:
|
|
482
|
-
incident:
|
|
483
|
-
ticket:
|
|
560
|
+
service: BUILTIN_META.service.toneBg,
|
|
561
|
+
person: BUILTIN_META.person.toneBg,
|
|
562
|
+
document: BUILTIN_META.document.toneBg,
|
|
563
|
+
deployment: BUILTIN_META.deployment.toneBg,
|
|
564
|
+
incident: BUILTIN_META.incident.toneBg,
|
|
565
|
+
ticket: BUILTIN_META.ticket.toneBg
|
|
484
566
|
};
|
|
485
567
|
|
|
486
568
|
// src/entity/EntityBadge.tsx
|
|
487
569
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
488
|
-
var typeVariant = {
|
|
489
|
-
service: "accent",
|
|
490
|
-
person: "neutral",
|
|
491
|
-
document: "purple",
|
|
492
|
-
deployment: "ok",
|
|
493
|
-
incident: "err",
|
|
494
|
-
ticket: "warn"
|
|
495
|
-
};
|
|
496
570
|
var EntityBadge = (0, import_react8.forwardRef)(function EntityBadge2({ type, label, hideGlyph, className, children, ...props }, ref) {
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
571
|
+
const meta = getEntityTypeMeta(type);
|
|
572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
573
|
+
import_ui12.Badge,
|
|
574
|
+
{
|
|
575
|
+
ref,
|
|
576
|
+
variant: meta.badgeVariant,
|
|
577
|
+
"data-entity-type": type,
|
|
578
|
+
className: (0, import_ui13.cn)(className),
|
|
579
|
+
...props,
|
|
580
|
+
children: [
|
|
581
|
+
!hideGlyph && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { "aria-hidden": true, className: "font-mono", children: meta.glyph }),
|
|
582
|
+
children ?? label ?? meta.label
|
|
583
|
+
]
|
|
584
|
+
}
|
|
585
|
+
);
|
|
501
586
|
});
|
|
502
587
|
EntityBadge.displayName = "EntityBadge";
|
|
503
588
|
|
|
504
589
|
// src/entity/EntityCard.tsx
|
|
505
|
-
var import_react9 = require("react");
|
|
506
590
|
var import_ui14 = require("@ship-it-ui/ui");
|
|
591
|
+
var import_react9 = require("react");
|
|
507
592
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
508
593
|
var statToneClass = {
|
|
509
594
|
accent: "text-accent",
|
|
@@ -513,10 +598,12 @@ var statToneClass = {
|
|
|
513
598
|
muted: "text-text-muted"
|
|
514
599
|
};
|
|
515
600
|
var EntityCard = (0, import_react9.forwardRef)(function EntityCard2({ type, title, subtitle, description, stats, actions, glyph, className, ...props }, ref) {
|
|
601
|
+
const meta = getEntityTypeMeta(type);
|
|
516
602
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
517
603
|
"div",
|
|
518
604
|
{
|
|
519
605
|
ref,
|
|
606
|
+
"data-entity-type": type,
|
|
520
607
|
className: (0, import_ui14.cn)(
|
|
521
608
|
"rounded-base border-border bg-panel flex flex-col gap-3 border p-5",
|
|
522
609
|
className
|
|
@@ -530,10 +617,10 @@ var EntityCard = (0, import_react9.forwardRef)(function EntityCard2({ type, titl
|
|
|
530
617
|
"aria-hidden": true,
|
|
531
618
|
className: (0, import_ui14.cn)(
|
|
532
619
|
"rounded-base grid h-12 w-12 shrink-0 place-items-center text-[20px]",
|
|
533
|
-
|
|
534
|
-
|
|
620
|
+
meta.toneBg,
|
|
621
|
+
meta.toneClass
|
|
535
622
|
),
|
|
536
|
-
children: glyph ??
|
|
623
|
+
children: glyph ?? meta.glyph
|
|
537
624
|
}
|
|
538
625
|
),
|
|
539
626
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
@@ -573,8 +660,8 @@ var EntityCard = (0, import_react9.forwardRef)(function EntityCard2({ type, titl
|
|
|
573
660
|
EntityCard.displayName = "EntityCard";
|
|
574
661
|
|
|
575
662
|
// src/entity/EntityListRow.tsx
|
|
576
|
-
var import_react10 = require("react");
|
|
577
663
|
var import_ui15 = require("@ship-it-ui/ui");
|
|
664
|
+
var import_react10 = require("react");
|
|
578
665
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
579
666
|
var baseClassNames = (interactive, className) => (0, import_ui15.cn)(
|
|
580
667
|
"flex w-full items-center gap-3 border-0 bg-transparent px-2 py-2 text-left",
|
|
@@ -589,15 +676,9 @@ function RowInner({
|
|
|
589
676
|
meta,
|
|
590
677
|
hideGlyph
|
|
591
678
|
}) {
|
|
679
|
+
const typeMeta = getEntityTypeMeta(type);
|
|
592
680
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
593
|
-
!hideGlyph && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
594
|
-
"span",
|
|
595
|
-
{
|
|
596
|
-
"aria-hidden": true,
|
|
597
|
-
className: (0, import_ui15.cn)("font-mono text-[14px] leading-none", ENTITY_TONE_CLASS[type]),
|
|
598
|
-
children: ENTITY_GLYPH[type]
|
|
599
|
-
}
|
|
600
|
-
),
|
|
681
|
+
!hideGlyph && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { "aria-hidden": true, className: (0, import_ui15.cn)("font-mono text-[14px] leading-none", typeMeta.toneClass), children: typeMeta.glyph }),
|
|
601
682
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-text min-w-0 flex-1 truncate font-mono text-[12px]", children: name }),
|
|
602
683
|
relation && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "border-border bg-panel-2 text-text-muted rounded-full border px-2 py-[2px] font-mono text-[10px]", children: relation }),
|
|
603
684
|
meta && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: meta })
|
|
@@ -605,7 +686,16 @@ function RowInner({
|
|
|
605
686
|
}
|
|
606
687
|
var EntityListRowDiv = (0, import_react10.forwardRef)(
|
|
607
688
|
function EntityListRowDiv2({ type, name, relation, meta, hideGlyph, className, ...props }, ref) {
|
|
608
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
689
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
690
|
+
"div",
|
|
691
|
+
{
|
|
692
|
+
ref,
|
|
693
|
+
"data-entity-type": type,
|
|
694
|
+
className: baseClassNames(false, className),
|
|
695
|
+
...props,
|
|
696
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(RowInner, { type, name, relation, meta, hideGlyph })
|
|
697
|
+
}
|
|
698
|
+
);
|
|
609
699
|
}
|
|
610
700
|
);
|
|
611
701
|
EntityListRowDiv.displayName = "EntityListRowDiv";
|
|
@@ -616,6 +706,7 @@ var EntityListRowButton = (0, import_react10.forwardRef)(
|
|
|
616
706
|
{
|
|
617
707
|
ref,
|
|
618
708
|
type: "button",
|
|
709
|
+
"data-entity-type": type,
|
|
619
710
|
onClick,
|
|
620
711
|
className: baseClassNames(true, className),
|
|
621
712
|
...props,
|
|
@@ -701,8 +792,8 @@ var GraphEdge = (0, import_react11.forwardRef)(function GraphEdge2({ x1, y1, x2,
|
|
|
701
792
|
GraphEdge.displayName = "GraphEdge";
|
|
702
793
|
|
|
703
794
|
// src/graph/GraphInspector.tsx
|
|
704
|
-
var import_react12 = require("react");
|
|
705
795
|
var import_ui16 = require("@ship-it-ui/ui");
|
|
796
|
+
var import_react12 = require("react");
|
|
706
797
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
707
798
|
var GraphInspector = (0, import_react12.forwardRef)(
|
|
708
799
|
function GraphInspector2({
|
|
@@ -768,21 +859,13 @@ var GraphInspector = (0, import_react12.forwardRef)(
|
|
|
768
859
|
GraphInspector.displayName = "GraphInspector";
|
|
769
860
|
|
|
770
861
|
// src/graph/GraphLegend.tsx
|
|
771
|
-
var import_react13 = require("react");
|
|
772
862
|
var import_ui17 = require("@ship-it-ui/ui");
|
|
863
|
+
var import_react13 = require("react");
|
|
773
864
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
774
|
-
var typeColorVar = {
|
|
775
|
-
service: "var(--color-accent)",
|
|
776
|
-
person: "var(--color-purple)",
|
|
777
|
-
document: "var(--color-pink)",
|
|
778
|
-
deployment: "var(--color-ok)",
|
|
779
|
-
incident: "var(--color-warn)",
|
|
780
|
-
ticket: "var(--color-text-muted)"
|
|
781
|
-
};
|
|
782
865
|
var DEFAULT_ENTRIES = [
|
|
783
|
-
{ type: "service"
|
|
784
|
-
{ type: "person"
|
|
785
|
-
{ type: "document"
|
|
866
|
+
{ type: "service" },
|
|
867
|
+
{ type: "person" },
|
|
868
|
+
{ type: "document" }
|
|
786
869
|
];
|
|
787
870
|
var GraphLegend = (0, import_react13.forwardRef)(function GraphLegend2({ entries = DEFAULT_ENTRIES, heading = "Legend", className, children, ...props }, ref) {
|
|
788
871
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
@@ -797,10 +880,12 @@ var GraphLegend = (0, import_react13.forwardRef)(function GraphLegend2({ entries
|
|
|
797
880
|
children: [
|
|
798
881
|
heading && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "text-text-dim font-mono text-[9px] tracking-[1.4px] uppercase", children: heading }),
|
|
799
882
|
children ?? entries.map((entry, i) => {
|
|
800
|
-
const
|
|
883
|
+
const meta = entry.type ? getEntityTypeMeta(entry.type) : void 0;
|
|
884
|
+
const color = entry.color ?? meta?.colorVar ?? "currentColor";
|
|
885
|
+
const label = entry.label ?? meta?.label ?? "";
|
|
801
886
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center gap-[6px]", children: [
|
|
802
887
|
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { "aria-hidden": true, className: "h-2 w-2 rounded-full", style: { background: color } }),
|
|
803
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children:
|
|
888
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: label })
|
|
804
889
|
] }, i);
|
|
805
890
|
})
|
|
806
891
|
]
|
|
@@ -810,8 +895,8 @@ var GraphLegend = (0, import_react13.forwardRef)(function GraphLegend2({ entries
|
|
|
810
895
|
GraphLegend.displayName = "GraphLegend";
|
|
811
896
|
|
|
812
897
|
// src/graph/GraphMinimap.tsx
|
|
813
|
-
var import_react14 = require("react");
|
|
814
898
|
var import_ui18 = require("@ship-it-ui/ui");
|
|
899
|
+
var import_react14 = require("react");
|
|
815
900
|
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
816
901
|
var GraphMinimap = (0, import_react14.forwardRef)(function GraphMinimap2({ points, viewport, width = 120, height = 72, className, ...props }, ref) {
|
|
817
902
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
@@ -862,19 +947,12 @@ var GraphMinimap = (0, import_react14.forwardRef)(function GraphMinimap2({ point
|
|
|
862
947
|
GraphMinimap.displayName = "GraphMinimap";
|
|
863
948
|
|
|
864
949
|
// src/graph/GraphNode.tsx
|
|
865
|
-
var import_react15 = require("react");
|
|
866
950
|
var import_ui19 = require("@ship-it-ui/ui");
|
|
951
|
+
var import_react15 = require("react");
|
|
867
952
|
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
868
|
-
var typeColorVar2 = {
|
|
869
|
-
service: "var(--color-accent)",
|
|
870
|
-
person: "var(--color-purple)",
|
|
871
|
-
document: "var(--color-pink)",
|
|
872
|
-
deployment: "var(--color-ok)",
|
|
873
|
-
incident: "var(--color-warn)",
|
|
874
|
-
ticket: "var(--color-text-muted)"
|
|
875
|
-
};
|
|
876
953
|
var GraphNode = (0, import_react15.forwardRef)(function GraphNode2({ type, state = "default", glyph, label, size = 52, pathColor, className, style, ...props }, ref) {
|
|
877
|
-
const
|
|
954
|
+
const meta = getEntityTypeMeta(type);
|
|
955
|
+
const color = state === "path" ? pathColor ?? "var(--color-purple)" : meta.colorVar;
|
|
878
956
|
const glowPct = state === "hover" ? 50 : 25;
|
|
879
957
|
const opacity = state === "dim" ? 0.35 : 1;
|
|
880
958
|
const showRing = state === "selected" || state === "path";
|
|
@@ -905,7 +983,7 @@ var GraphNode = (0, import_react15.forwardRef)(function GraphNode2({ type, state
|
|
|
905
983
|
outlineOffset: showRing ? 4 : void 0,
|
|
906
984
|
opacity
|
|
907
985
|
},
|
|
908
|
-
children: glyph ??
|
|
986
|
+
children: glyph ?? meta.glyph
|
|
909
987
|
}
|
|
910
988
|
),
|
|
911
989
|
label && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-text-dim font-mono text-[10px]", children: label })
|
|
@@ -950,8 +1028,8 @@ var PathOverlay = (0, import_react16.forwardRef)(function PathOverlay2({ points,
|
|
|
950
1028
|
PathOverlay.displayName = "PathOverlay";
|
|
951
1029
|
|
|
952
1030
|
// src/marketing/CTAStrip.tsx
|
|
953
|
-
var import_react17 = require("react");
|
|
954
1031
|
var import_ui20 = require("@ship-it-ui/ui");
|
|
1032
|
+
var import_react17 = require("react");
|
|
955
1033
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
956
1034
|
var CTAStrip = (0, import_react17.forwardRef)(function CTAStrip2({ title, description, actions, className, ...props }, ref) {
|
|
957
1035
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
@@ -975,8 +1053,8 @@ var CTAStrip = (0, import_react17.forwardRef)(function CTAStrip2({ title, descri
|
|
|
975
1053
|
CTAStrip.displayName = "CTAStrip";
|
|
976
1054
|
|
|
977
1055
|
// src/marketing/FeatureGrid.tsx
|
|
978
|
-
var import_react18 = require("react");
|
|
979
1056
|
var import_ui21 = require("@ship-it-ui/ui");
|
|
1057
|
+
var import_react18 = require("react");
|
|
980
1058
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
981
1059
|
var colsClass = {
|
|
982
1060
|
2: "md:grid-cols-2",
|
|
@@ -1001,8 +1079,8 @@ var FeatureGrid = (0, import_react18.forwardRef)(function FeatureGrid2({ feature
|
|
|
1001
1079
|
FeatureGrid.displayName = "FeatureGrid";
|
|
1002
1080
|
|
|
1003
1081
|
// src/marketing/Footer.tsx
|
|
1004
|
-
var import_react19 = require("react");
|
|
1005
1082
|
var import_ui22 = require("@ship-it-ui/ui");
|
|
1083
|
+
var import_react19 = require("react");
|
|
1006
1084
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1007
1085
|
var Footer = (0, import_react19.forwardRef)(function Footer2({ brand, columns, copyright, closing, className, ...props }, ref) {
|
|
1008
1086
|
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("footer", { ref, className: (0, import_ui22.cn)("px-7 py-7", className), ...props, children: [
|
|
@@ -1030,8 +1108,8 @@ var Footer = (0, import_react19.forwardRef)(function Footer2({ brand, columns, c
|
|
|
1030
1108
|
Footer.displayName = "Footer";
|
|
1031
1109
|
|
|
1032
1110
|
// src/marketing/Hero.tsx
|
|
1033
|
-
var import_react20 = require("react");
|
|
1034
1111
|
var import_ui23 = require("@ship-it-ui/ui");
|
|
1112
|
+
var import_react20 = require("react");
|
|
1035
1113
|
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1036
1114
|
var Hero = (0, import_react20.forwardRef)(function Hero2({ eyebrow, title, description, actions, visual, className, ...props }, ref) {
|
|
1037
1115
|
const hasVisual = visual != null;
|
|
@@ -1069,29 +1147,32 @@ var Hero = (0, import_react20.forwardRef)(function Hero2({ eyebrow, title, descr
|
|
|
1069
1147
|
Hero.displayName = "Hero";
|
|
1070
1148
|
|
|
1071
1149
|
// src/marketing/PricingCard.tsx
|
|
1072
|
-
var import_react21 = require("react");
|
|
1073
1150
|
var import_ui24 = require("@ship-it-ui/ui");
|
|
1151
|
+
var import_react21 = require("react");
|
|
1074
1152
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1075
|
-
var PricingCard = (0, import_react21.forwardRef)(function PricingCard2({ tier, price, description, features, action, featured, className, ...props }, ref) {
|
|
1153
|
+
var PricingCard = (0, import_react21.forwardRef)(function PricingCard2({ tier, price, priceUnit, description, features, action, featured, className, ...props }, ref) {
|
|
1076
1154
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1077
1155
|
"div",
|
|
1078
1156
|
{
|
|
1079
1157
|
ref,
|
|
1080
1158
|
className: (0, import_ui24.cn)(
|
|
1081
|
-
"bg-panel flex flex-col gap-5 rounded-lg border p-6",
|
|
1159
|
+
"bg-panel @container flex flex-col gap-5 rounded-lg border p-5 @sm:p-6",
|
|
1082
1160
|
featured ? "border-accent shadow-lg" : "border-border",
|
|
1083
1161
|
className
|
|
1084
1162
|
),
|
|
1085
1163
|
...props,
|
|
1086
1164
|
children: [
|
|
1087
1165
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { children: [
|
|
1088
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "mb-1 flex items-center gap-2", children: [
|
|
1166
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "mb-1 flex flex-wrap items-center gap-2", children: [
|
|
1089
1167
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-[14px] font-medium", children: tier }),
|
|
1090
1168
|
featured && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "bg-accent-dim text-accent rounded-full px-[6px] py-[1px] font-mono text-[10px]", children: "recommended" })
|
|
1091
1169
|
] }),
|
|
1092
1170
|
description && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "text-text-muted text-[12px]", children: description })
|
|
1093
1171
|
] }),
|
|
1094
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.
|
|
1172
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex flex-wrap items-baseline justify-center gap-x-2 gap-y-1", children: [
|
|
1173
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "font-mono text-[22px] font-medium tracking-[-0.5px] text-balance @sm:text-[28px]", children: price }),
|
|
1174
|
+
priceUnit != null && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "text-text-dim text-[12px] whitespace-nowrap @sm:text-[13px]", children: priceUnit })
|
|
1175
|
+
] }),
|
|
1095
1176
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("ul", { className: "m-0 flex list-none flex-col gap-2 p-0", children: features.map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("li", { className: "flex items-start gap-2 text-[13px]", children: [
|
|
1096
1177
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { "aria-hidden": true, className: "text-accent", children: "\u2713" }),
|
|
1097
1178
|
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: f })
|
|
@@ -1105,8 +1186,8 @@ PricingCard.displayName = "PricingCard";
|
|
|
1105
1186
|
|
|
1106
1187
|
// src/marketing/Testimonial.tsx
|
|
1107
1188
|
var import_ui25 = require("@ship-it-ui/ui");
|
|
1108
|
-
var import_react22 = require("react");
|
|
1109
1189
|
var import_ui26 = require("@ship-it-ui/ui");
|
|
1190
|
+
var import_react22 = require("react");
|
|
1110
1191
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1111
1192
|
var Testimonial = (0, import_react22.forwardRef)(function Testimonial2({ quote, author, role, avatar, className, ...props }, ref) {
|
|
1112
1193
|
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
@@ -1130,12 +1211,139 @@ var Testimonial = (0, import_react22.forwardRef)(function Testimonial2({ quote,
|
|
|
1130
1211
|
);
|
|
1131
1212
|
});
|
|
1132
1213
|
Testimonial.displayName = "Testimonial";
|
|
1214
|
+
|
|
1215
|
+
// src/data/ConnectorCard.tsx
|
|
1216
|
+
var import_icons = require("@ship-it-ui/icons");
|
|
1217
|
+
var import_ui27 = require("@ship-it-ui/ui");
|
|
1218
|
+
var import_react23 = require("react");
|
|
1219
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1220
|
+
var statusDot = {
|
|
1221
|
+
connected: "ok",
|
|
1222
|
+
syncing: "sync",
|
|
1223
|
+
error: "err",
|
|
1224
|
+
disconnected: "off"
|
|
1225
|
+
};
|
|
1226
|
+
var statusLabel = {
|
|
1227
|
+
connected: "Connected",
|
|
1228
|
+
syncing: "Syncing",
|
|
1229
|
+
error: "Error",
|
|
1230
|
+
disconnected: "Disconnected"
|
|
1231
|
+
};
|
|
1232
|
+
var ConnectorCard = (0, import_react23.forwardRef)(function ConnectorCard2({
|
|
1233
|
+
connector,
|
|
1234
|
+
name,
|
|
1235
|
+
status,
|
|
1236
|
+
lastSyncedAt,
|
|
1237
|
+
relativeNow,
|
|
1238
|
+
summary,
|
|
1239
|
+
actions,
|
|
1240
|
+
onClick,
|
|
1241
|
+
accessibleName,
|
|
1242
|
+
className,
|
|
1243
|
+
...props
|
|
1244
|
+
}, ref) {
|
|
1245
|
+
const interactive = typeof onClick === "function";
|
|
1246
|
+
const time = lastSyncedAt ? (0, import_ui27.formatRelative)(lastSyncedAt, relativeNow ?? /* @__PURE__ */ new Date()) : "";
|
|
1247
|
+
const labelBlock = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
|
|
1248
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1249
|
+
"span",
|
|
1250
|
+
{
|
|
1251
|
+
"aria-hidden": true,
|
|
1252
|
+
className: "bg-panel-2 grid h-10 w-10 shrink-0 place-items-center rounded-md font-mono text-[16px]",
|
|
1253
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_icons.IconGlyph, { name: connector, kind: "connector" })
|
|
1254
|
+
}
|
|
1255
|
+
),
|
|
1256
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
1257
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
1258
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "truncate text-[14px] font-medium", children: name }),
|
|
1259
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1260
|
+
import_ui27.StatusDot,
|
|
1261
|
+
{
|
|
1262
|
+
state: statusDot[status],
|
|
1263
|
+
pulse: status === "syncing",
|
|
1264
|
+
label: statusLabel[status]
|
|
1265
|
+
}
|
|
1266
|
+
)
|
|
1267
|
+
] }),
|
|
1268
|
+
(summary || time) && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "text-text-muted mt-[2px] flex items-center gap-2 text-[12px]", children: [
|
|
1269
|
+
summary && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "truncate", children: summary }),
|
|
1270
|
+
summary && time && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { "aria-hidden": true, className: "text-text-dim", children: "\xB7" }),
|
|
1271
|
+
time && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("time", { className: "text-text-dim font-mono text-[11px]", children: [
|
|
1272
|
+
"last synced ",
|
|
1273
|
+
time
|
|
1274
|
+
] })
|
|
1275
|
+
] })
|
|
1276
|
+
] })
|
|
1277
|
+
] });
|
|
1278
|
+
const labelRegionClass = (0, import_ui27.cn)(
|
|
1279
|
+
"flex flex-1 items-start gap-3 rounded-md p-1 text-left transition-colors duration-(--duration-micro)",
|
|
1280
|
+
interactive && "hover:bg-panel-2 focus-visible:ring-accent-dim cursor-pointer outline-none focus-visible:ring-[3px]"
|
|
1281
|
+
);
|
|
1282
|
+
const labelRegion = interactive ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1283
|
+
"button",
|
|
1284
|
+
{
|
|
1285
|
+
type: "button",
|
|
1286
|
+
onClick,
|
|
1287
|
+
"aria-label": accessibleName ?? (typeof name === "string" ? `${name} connector` : statusLabel[status]),
|
|
1288
|
+
className: labelRegionClass,
|
|
1289
|
+
children: labelBlock
|
|
1290
|
+
}
|
|
1291
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: labelRegionClass, children: labelBlock });
|
|
1292
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1293
|
+
"div",
|
|
1294
|
+
{
|
|
1295
|
+
ref,
|
|
1296
|
+
className: (0, import_ui27.cn)(
|
|
1297
|
+
"rounded-base border-border bg-panel flex items-start gap-2 border p-3",
|
|
1298
|
+
className
|
|
1299
|
+
),
|
|
1300
|
+
...props,
|
|
1301
|
+
children: [
|
|
1302
|
+
labelRegion,
|
|
1303
|
+
actions && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "shrink-0 self-center pr-1", children: actions })
|
|
1304
|
+
]
|
|
1305
|
+
}
|
|
1306
|
+
);
|
|
1307
|
+
});
|
|
1308
|
+
ConnectorCard.displayName = "ConnectorCard";
|
|
1309
|
+
|
|
1310
|
+
// src/data/EntityTable.tsx
|
|
1311
|
+
var import_ui28 = require("@ship-it-ui/ui");
|
|
1312
|
+
var import_react24 = require("react");
|
|
1313
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1314
|
+
function EntityTable(props) {
|
|
1315
|
+
const { rowKey, ...rest } = props;
|
|
1316
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_ui28.DataTable, { ...rest, rowKey: rowKey ?? ((row) => row.id) });
|
|
1317
|
+
}
|
|
1318
|
+
function entityColumn(options = {}) {
|
|
1319
|
+
return {
|
|
1320
|
+
key: options.key ?? "name",
|
|
1321
|
+
header: options.header ?? "Name",
|
|
1322
|
+
accessor: (row) => row.name,
|
|
1323
|
+
cell: (row) => {
|
|
1324
|
+
const meta = getEntityTypeMeta(row.type);
|
|
1325
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("span", { className: "flex items-center gap-2 font-mono", "data-entity-type": row.type, children: [
|
|
1326
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { "aria-hidden": true, className: meta.toneClass, children: meta.glyph }),
|
|
1327
|
+
row.name
|
|
1328
|
+
] });
|
|
1329
|
+
}
|
|
1330
|
+
};
|
|
1331
|
+
}
|
|
1332
|
+
function entityTypeColumn(options = {}) {
|
|
1333
|
+
return {
|
|
1334
|
+
key: options.key ?? "type",
|
|
1335
|
+
header: options.header ?? "Type",
|
|
1336
|
+
accessor: (row) => row.type,
|
|
1337
|
+
cell: (row) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(EntityBadge, { type: row.type, size: "sm" })
|
|
1338
|
+
};
|
|
1339
|
+
}
|
|
1133
1340
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1134
1341
|
0 && (module.exports = {
|
|
1135
1342
|
AskBar,
|
|
1136
1343
|
CTAStrip,
|
|
1137
1344
|
Citation,
|
|
1138
1345
|
ConfidenceIndicator,
|
|
1346
|
+
ConnectorCard,
|
|
1139
1347
|
CopilotMessage,
|
|
1140
1348
|
ENTITY_GLYPH,
|
|
1141
1349
|
ENTITY_LABEL,
|
|
@@ -1146,6 +1354,7 @@ Testimonial.displayName = "Testimonial";
|
|
|
1146
1354
|
EntityListRow,
|
|
1147
1355
|
EntityListRowButton,
|
|
1148
1356
|
EntityListRowDiv,
|
|
1357
|
+
EntityTable,
|
|
1149
1358
|
FeatureGrid,
|
|
1150
1359
|
Footer,
|
|
1151
1360
|
GraphEdge,
|
|
@@ -1161,6 +1370,13 @@ Testimonial.displayName = "Testimonial";
|
|
|
1161
1370
|
SuggestionChip,
|
|
1162
1371
|
Testimonial,
|
|
1163
1372
|
ToolCallCard,
|
|
1164
|
-
cn
|
|
1373
|
+
cn,
|
|
1374
|
+
entityColumn,
|
|
1375
|
+
entityTypeColumn,
|
|
1376
|
+
getEntityTypeMeta,
|
|
1377
|
+
listEntityTypes,
|
|
1378
|
+
registerEntityType,
|
|
1379
|
+
registerEntityTypes,
|
|
1380
|
+
resetEntityTypeRegistry
|
|
1165
1381
|
});
|
|
1166
1382
|
//# sourceMappingURL=index.cjs.map
|