@almadar/ui 4.56.4 → 4.57.2
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/avl/index.cjs +190 -6
- package/dist/avl/index.js +191 -7
- package/dist/components/atoms/Badge.d.ts +7 -0
- package/dist/components/index.cjs +192 -6
- package/dist/components/index.js +193 -7
- package/dist/components/molecules/TagInput.d.ts +52 -0
- package/dist/components/molecules/index.d.ts +2 -0
- package/dist/marketing/index.cjs +21 -2
- package/dist/marketing/index.d.cts +7 -0
- package/dist/marketing/index.js +22 -3
- package/dist/providers/index.cjs +190 -6
- package/dist/providers/index.js +190 -6
- package/dist/runtime/index.cjs +190 -6
- package/dist/runtime/index.js +190 -6
- package/package.json +1 -1
|
@@ -1770,7 +1770,7 @@ var init_Badge = __esm({
|
|
|
1770
1770
|
lg: "px-3 py-1.5 text-base"
|
|
1771
1771
|
};
|
|
1772
1772
|
exports.Badge = React78__namespace.default.forwardRef(
|
|
1773
|
-
({ className, variant = "default", size = "sm", amount, label, icon, children, ...props }, ref) => {
|
|
1773
|
+
({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
|
|
1774
1774
|
const iconSizes3 = { sm: "w-3 h-3", md: "w-3.5 h-3.5", lg: "w-4 h-4" };
|
|
1775
1775
|
const resolvedIcon = typeof icon === "string" ? (() => {
|
|
1776
1776
|
const I = resolveIcon(icon);
|
|
@@ -1784,12 +1784,31 @@ var init_Badge = __esm({
|
|
|
1784
1784
|
"inline-flex items-center gap-1 font-bold rounded-sm",
|
|
1785
1785
|
variantStyles3[variant],
|
|
1786
1786
|
sizeStyles2[size],
|
|
1787
|
+
onRemove && "pr-1",
|
|
1787
1788
|
className
|
|
1788
1789
|
),
|
|
1789
1790
|
...props,
|
|
1790
1791
|
children: [
|
|
1791
1792
|
resolvedIcon,
|
|
1792
|
-
children || (amount != null ? `${label ? `${label} ` : ""}${amount}` : label)
|
|
1793
|
+
children || (amount != null ? `${label ? `${label} ` : ""}${amount}` : label),
|
|
1794
|
+
onRemove ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1795
|
+
"button",
|
|
1796
|
+
{
|
|
1797
|
+
type: "button",
|
|
1798
|
+
"aria-label": removeLabel ?? "Remove",
|
|
1799
|
+
onClick: (e) => {
|
|
1800
|
+
e.stopPropagation();
|
|
1801
|
+
onRemove();
|
|
1802
|
+
},
|
|
1803
|
+
className: cn(
|
|
1804
|
+
"inline-flex items-center justify-center rounded-sm",
|
|
1805
|
+
"hover:bg-foreground/10 focus:outline-none focus:ring-1 focus:ring-ring",
|
|
1806
|
+
"transition-colors",
|
|
1807
|
+
size === "sm" ? "w-4 h-4 ml-0.5" : size === "md" ? "w-5 h-5 ml-1" : "w-6 h-6 ml-1"
|
|
1808
|
+
),
|
|
1809
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: iconSizes3[size] })
|
|
1810
|
+
}
|
|
1811
|
+
) : null
|
|
1793
1812
|
]
|
|
1794
1813
|
}
|
|
1795
1814
|
);
|
|
@@ -7870,7 +7889,7 @@ var init_MapView = __esm({
|
|
|
7870
7889
|
shadowSize: [41, 41]
|
|
7871
7890
|
});
|
|
7872
7891
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
7873
|
-
const { useEffect: useEffect71, useRef: useRef66, useCallback:
|
|
7892
|
+
const { useEffect: useEffect71, useRef: useRef66, useCallback: useCallback127, useState: useState109 } = React78__namespace.default;
|
|
7874
7893
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
7875
7894
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
7876
7895
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
@@ -7915,8 +7934,8 @@ var init_MapView = __esm({
|
|
|
7915
7934
|
showAttribution = true
|
|
7916
7935
|
}) {
|
|
7917
7936
|
const eventBus = useEventBus2();
|
|
7918
|
-
const [clickedPosition, setClickedPosition] =
|
|
7919
|
-
const handleMapClick =
|
|
7937
|
+
const [clickedPosition, setClickedPosition] = useState109(null);
|
|
7938
|
+
const handleMapClick = useCallback127((lat, lng) => {
|
|
7920
7939
|
if (showClickedPin) {
|
|
7921
7940
|
setClickedPosition({ lat, lng });
|
|
7922
7941
|
}
|
|
@@ -7925,7 +7944,7 @@ var init_MapView = __esm({
|
|
|
7925
7944
|
eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
|
|
7926
7945
|
}
|
|
7927
7946
|
}, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
|
|
7928
|
-
const handleMarkerClick =
|
|
7947
|
+
const handleMarkerClick = useCallback127((marker) => {
|
|
7929
7948
|
onMarkerClick?.(marker);
|
|
7930
7949
|
if (markerClickEvent) {
|
|
7931
7950
|
eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
|
|
@@ -28744,6 +28763,98 @@ var init_TagCloud = __esm({
|
|
|
28744
28763
|
exports.TagCloud.displayName = "TagCloud";
|
|
28745
28764
|
}
|
|
28746
28765
|
});
|
|
28766
|
+
exports.TagInput = void 0;
|
|
28767
|
+
var init_TagInput = __esm({
|
|
28768
|
+
"components/molecules/TagInput.tsx"() {
|
|
28769
|
+
"use client";
|
|
28770
|
+
init_cn();
|
|
28771
|
+
init_useEventBus();
|
|
28772
|
+
init_Input();
|
|
28773
|
+
init_Badge();
|
|
28774
|
+
init_Stack();
|
|
28775
|
+
init_Typography();
|
|
28776
|
+
exports.TagInput = ({
|
|
28777
|
+
value,
|
|
28778
|
+
onChange,
|
|
28779
|
+
placeholder,
|
|
28780
|
+
disabled = false,
|
|
28781
|
+
variant = "default",
|
|
28782
|
+
unique = true,
|
|
28783
|
+
helperText,
|
|
28784
|
+
className,
|
|
28785
|
+
addEvent,
|
|
28786
|
+
removeEvent
|
|
28787
|
+
}) => {
|
|
28788
|
+
const eventBus = useEventBus();
|
|
28789
|
+
const [draft, setDraft] = React78.useState("");
|
|
28790
|
+
const commit = React78.useCallback(() => {
|
|
28791
|
+
const tag = draft.trim();
|
|
28792
|
+
if (!tag) return;
|
|
28793
|
+
if (unique && value.includes(tag)) {
|
|
28794
|
+
setDraft("");
|
|
28795
|
+
return;
|
|
28796
|
+
}
|
|
28797
|
+
const next = [...value, tag];
|
|
28798
|
+
onChange?.(next);
|
|
28799
|
+
if (addEvent) {
|
|
28800
|
+
eventBus.emit(`UI:${addEvent}`, { tag, value: next });
|
|
28801
|
+
}
|
|
28802
|
+
setDraft("");
|
|
28803
|
+
}, [draft, value, onChange, unique, addEvent, eventBus]);
|
|
28804
|
+
const removeAt = React78.useCallback(
|
|
28805
|
+
(index) => {
|
|
28806
|
+
if (disabled) return;
|
|
28807
|
+
const tag = value[index];
|
|
28808
|
+
const next = value.slice();
|
|
28809
|
+
next.splice(index, 1);
|
|
28810
|
+
onChange?.(next);
|
|
28811
|
+
if (removeEvent) {
|
|
28812
|
+
eventBus.emit(`UI:${removeEvent}`, { tag, index, value: next });
|
|
28813
|
+
}
|
|
28814
|
+
},
|
|
28815
|
+
[value, onChange, disabled, removeEvent, eventBus]
|
|
28816
|
+
);
|
|
28817
|
+
const handleKeyDown = React78.useCallback(
|
|
28818
|
+
(e) => {
|
|
28819
|
+
if (disabled) return;
|
|
28820
|
+
if (e.key === "Enter") {
|
|
28821
|
+
e.preventDefault();
|
|
28822
|
+
commit();
|
|
28823
|
+
} else if (e.key === "Backspace" && draft.length === 0 && value.length > 0) {
|
|
28824
|
+
e.preventDefault();
|
|
28825
|
+
removeAt(value.length - 1);
|
|
28826
|
+
}
|
|
28827
|
+
},
|
|
28828
|
+
[commit, draft.length, value, removeAt, disabled]
|
|
28829
|
+
);
|
|
28830
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "xs", className: cn("w-full", className), children: [
|
|
28831
|
+
value.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(exports.HStack, { gap: "xs", className: "flex-wrap", children: value.map((tag, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
28832
|
+
exports.Badge,
|
|
28833
|
+
{
|
|
28834
|
+
variant,
|
|
28835
|
+
size: "sm",
|
|
28836
|
+
onRemove: disabled ? void 0 : () => removeAt(index),
|
|
28837
|
+
removeLabel: `Remove ${tag}`,
|
|
28838
|
+
children: tag
|
|
28839
|
+
},
|
|
28840
|
+
`${tag}-${index}`
|
|
28841
|
+
)) }) : null,
|
|
28842
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28843
|
+
exports.Input,
|
|
28844
|
+
{
|
|
28845
|
+
value: draft,
|
|
28846
|
+
placeholder: placeholder ?? "Type and press Enter\u2026",
|
|
28847
|
+
disabled,
|
|
28848
|
+
onChange: (e) => setDraft(e.target.value),
|
|
28849
|
+
onKeyDown: handleKeyDown
|
|
28850
|
+
}
|
|
28851
|
+
),
|
|
28852
|
+
helperText ? /* @__PURE__ */ jsxRuntime.jsx(exports.Typography, { variant: "caption", color: "muted", children: helperText }) : null
|
|
28853
|
+
] });
|
|
28854
|
+
};
|
|
28855
|
+
exports.TagInput.displayName = "TagInput";
|
|
28856
|
+
}
|
|
28857
|
+
});
|
|
28747
28858
|
exports.ShowcaseCard = void 0;
|
|
28748
28859
|
var init_ShowcaseCard = __esm({
|
|
28749
28860
|
"components/molecules/ShowcaseCard.tsx"() {
|
|
@@ -32362,6 +32473,75 @@ var init_GradientDivider = __esm({
|
|
|
32362
32473
|
exports.GradientDivider.displayName = "GradientDivider";
|
|
32363
32474
|
}
|
|
32364
32475
|
});
|
|
32476
|
+
exports.MarketingFooter = void 0;
|
|
32477
|
+
var init_MarketingFooter = __esm({
|
|
32478
|
+
"components/molecules/MarketingFooter.tsx"() {
|
|
32479
|
+
"use client";
|
|
32480
|
+
init_cn();
|
|
32481
|
+
init_Box();
|
|
32482
|
+
init_Stack();
|
|
32483
|
+
init_Typography();
|
|
32484
|
+
exports.MarketingFooter = ({
|
|
32485
|
+
columns,
|
|
32486
|
+
copyright,
|
|
32487
|
+
logo,
|
|
32488
|
+
className
|
|
32489
|
+
}) => {
|
|
32490
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32491
|
+
exports.Box,
|
|
32492
|
+
{
|
|
32493
|
+
as: "footer",
|
|
32494
|
+
className: cn(
|
|
32495
|
+
"bg-surface",
|
|
32496
|
+
"border-t border-border",
|
|
32497
|
+
"pt-12 pb-8 px-4",
|
|
32498
|
+
className
|
|
32499
|
+
),
|
|
32500
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "lg", className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
32501
|
+
/* @__PURE__ */ jsxRuntime.jsxs(exports.HStack, { gap: "lg", align: "start", className: "flex-wrap w-full justify-between", children: [
|
|
32502
|
+
logo && /* @__PURE__ */ jsxRuntime.jsx(exports.VStack, { gap: "sm", className: "min-w-[140px] mb-4", children: logo.href ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: logo.href, children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo.src, alt: logo.alt, className: "h-8 w-auto" }) }) : /* @__PURE__ */ jsxRuntime.jsx("img", { src: logo.src, alt: logo.alt, className: "h-8 w-auto" }) }),
|
|
32503
|
+
columns.map((col) => /* @__PURE__ */ jsxRuntime.jsxs(exports.VStack, { gap: "sm", className: "min-w-[140px] mb-4", children: [
|
|
32504
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32505
|
+
exports.Typography,
|
|
32506
|
+
{
|
|
32507
|
+
variant: "body2",
|
|
32508
|
+
className: "font-semibold text-foreground mb-1",
|
|
32509
|
+
children: col.title
|
|
32510
|
+
}
|
|
32511
|
+
),
|
|
32512
|
+
col.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
32513
|
+
"a",
|
|
32514
|
+
{
|
|
32515
|
+
href: item.href,
|
|
32516
|
+
className: cn(
|
|
32517
|
+
"text-sm no-underline",
|
|
32518
|
+
"text-foreground/60",
|
|
32519
|
+
"hover:text-accent",
|
|
32520
|
+
"transition-colors duration-150"
|
|
32521
|
+
),
|
|
32522
|
+
target: item.href.startsWith("http") ? "_blank" : void 0,
|
|
32523
|
+
rel: item.href.startsWith("http") ? "noopener noreferrer" : void 0,
|
|
32524
|
+
children: item.label
|
|
32525
|
+
},
|
|
32526
|
+
item.label
|
|
32527
|
+
))
|
|
32528
|
+
] }, col.title))
|
|
32529
|
+
] }),
|
|
32530
|
+
copyright && /* @__PURE__ */ jsxRuntime.jsx(
|
|
32531
|
+
exports.Typography,
|
|
32532
|
+
{
|
|
32533
|
+
variant: "caption",
|
|
32534
|
+
className: "text-foreground/30 text-center w-full pt-6",
|
|
32535
|
+
children: copyright
|
|
32536
|
+
}
|
|
32537
|
+
)
|
|
32538
|
+
] })
|
|
32539
|
+
}
|
|
32540
|
+
);
|
|
32541
|
+
};
|
|
32542
|
+
exports.MarketingFooter.displayName = "MarketingFooter";
|
|
32543
|
+
}
|
|
32544
|
+
});
|
|
32365
32545
|
exports.PullQuote = void 0;
|
|
32366
32546
|
var init_PullQuote = __esm({
|
|
32367
32547
|
"components/molecules/PullQuote.tsx"() {
|
|
@@ -32879,6 +33059,7 @@ var init_molecules = __esm({
|
|
|
32879
33059
|
init_StepFlow();
|
|
32880
33060
|
init_SplitSection();
|
|
32881
33061
|
init_TagCloud();
|
|
33062
|
+
init_TagInput();
|
|
32882
33063
|
init_CommunityLinks();
|
|
32883
33064
|
init_TeamCard();
|
|
32884
33065
|
init_ShowcaseCard();
|
|
@@ -32901,6 +33082,7 @@ var init_molecules = __esm({
|
|
|
32901
33082
|
init_DocSidebar();
|
|
32902
33083
|
init_DocTOC();
|
|
32903
33084
|
init_GradientDivider();
|
|
33085
|
+
init_MarketingFooter();
|
|
32904
33086
|
init_PullQuote();
|
|
32905
33087
|
init_BehaviorView();
|
|
32906
33088
|
init_ModuleCard();
|
|
@@ -44730,6 +44912,7 @@ var init_component_registry_generated = __esm({
|
|
|
44730
44912
|
init_List();
|
|
44731
44913
|
init_LoadingState();
|
|
44732
44914
|
init_MarkdownContent();
|
|
44915
|
+
init_MarketingFooter();
|
|
44733
44916
|
init_MasterDetail();
|
|
44734
44917
|
init_MasterDetailLayout();
|
|
44735
44918
|
init_MatrixQuestion();
|
|
@@ -44829,6 +45012,7 @@ var init_component_registry_generated = __esm({
|
|
|
44829
45012
|
init_Table();
|
|
44830
45013
|
init_Tabs();
|
|
44831
45014
|
init_TagCloud();
|
|
45015
|
+
init_TagInput();
|
|
44832
45016
|
init_TeamCard();
|
|
44833
45017
|
init_TeamOrganism();
|
|
44834
45018
|
init_TextHighlight();
|
|
@@ -45029,6 +45213,7 @@ var init_component_registry_generated = __esm({
|
|
|
45029
45213
|
"MapView": MapViewPattern,
|
|
45030
45214
|
"MapViewPattern": MapViewPattern,
|
|
45031
45215
|
"MarkdownContent": exports.MarkdownContent,
|
|
45216
|
+
"MarketingFooter": exports.MarketingFooter,
|
|
45032
45217
|
"MasterDetail": MasterDetail,
|
|
45033
45218
|
"MasterDetailLayout": exports.MasterDetailLayout,
|
|
45034
45219
|
"MatrixQuestion": exports.MatrixQuestion,
|
|
@@ -45144,6 +45329,7 @@ var init_component_registry_generated = __esm({
|
|
|
45144
45329
|
"Table": exports.Table,
|
|
45145
45330
|
"Tabs": exports.Tabs,
|
|
45146
45331
|
"TagCloud": exports.TagCloud,
|
|
45332
|
+
"TagInput": exports.TagInput,
|
|
45147
45333
|
"TeamCard": exports.TeamCard,
|
|
45148
45334
|
"TeamOrganism": exports.TeamOrganism,
|
|
45149
45335
|
"TextHighlight": exports.TextHighlight,
|
package/dist/components/index.js
CHANGED
|
@@ -1724,7 +1724,7 @@ var init_Badge = __esm({
|
|
|
1724
1724
|
lg: "px-3 py-1.5 text-base"
|
|
1725
1725
|
};
|
|
1726
1726
|
Badge = React78__default.forwardRef(
|
|
1727
|
-
({ className, variant = "default", size = "sm", amount, label, icon, children, ...props }, ref) => {
|
|
1727
|
+
({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
|
|
1728
1728
|
const iconSizes3 = { sm: "w-3 h-3", md: "w-3.5 h-3.5", lg: "w-4 h-4" };
|
|
1729
1729
|
const resolvedIcon = typeof icon === "string" ? (() => {
|
|
1730
1730
|
const I = resolveIcon(icon);
|
|
@@ -1738,12 +1738,31 @@ var init_Badge = __esm({
|
|
|
1738
1738
|
"inline-flex items-center gap-1 font-bold rounded-sm",
|
|
1739
1739
|
variantStyles3[variant],
|
|
1740
1740
|
sizeStyles2[size],
|
|
1741
|
+
onRemove && "pr-1",
|
|
1741
1742
|
className
|
|
1742
1743
|
),
|
|
1743
1744
|
...props,
|
|
1744
1745
|
children: [
|
|
1745
1746
|
resolvedIcon,
|
|
1746
|
-
children || (amount != null ? `${label ? `${label} ` : ""}${amount}` : label)
|
|
1747
|
+
children || (amount != null ? `${label ? `${label} ` : ""}${amount}` : label),
|
|
1748
|
+
onRemove ? /* @__PURE__ */ jsx(
|
|
1749
|
+
"button",
|
|
1750
|
+
{
|
|
1751
|
+
type: "button",
|
|
1752
|
+
"aria-label": removeLabel ?? "Remove",
|
|
1753
|
+
onClick: (e) => {
|
|
1754
|
+
e.stopPropagation();
|
|
1755
|
+
onRemove();
|
|
1756
|
+
},
|
|
1757
|
+
className: cn(
|
|
1758
|
+
"inline-flex items-center justify-center rounded-sm",
|
|
1759
|
+
"hover:bg-foreground/10 focus:outline-none focus:ring-1 focus:ring-ring",
|
|
1760
|
+
"transition-colors",
|
|
1761
|
+
size === "sm" ? "w-4 h-4 ml-0.5" : size === "md" ? "w-5 h-5 ml-1" : "w-6 h-6 ml-1"
|
|
1762
|
+
),
|
|
1763
|
+
children: /* @__PURE__ */ jsx(X, { className: iconSizes3[size] })
|
|
1764
|
+
}
|
|
1765
|
+
) : null
|
|
1747
1766
|
]
|
|
1748
1767
|
}
|
|
1749
1768
|
);
|
|
@@ -7824,7 +7843,7 @@ var init_MapView = __esm({
|
|
|
7824
7843
|
shadowSize: [41, 41]
|
|
7825
7844
|
});
|
|
7826
7845
|
L.Marker.prototype.options.icon = defaultIcon;
|
|
7827
|
-
const { useEffect: useEffect71, useRef: useRef66, useCallback:
|
|
7846
|
+
const { useEffect: useEffect71, useRef: useRef66, useCallback: useCallback127, useState: useState109 } = React78__default;
|
|
7828
7847
|
const { Typography: Typography2 } = await Promise.resolve().then(() => (init_Typography(), Typography_exports));
|
|
7829
7848
|
const { useEventBus: useEventBus2 } = await Promise.resolve().then(() => (init_useEventBus(), useEventBus_exports));
|
|
7830
7849
|
function MapUpdater({ centerLat, centerLng, zoom }) {
|
|
@@ -7869,8 +7888,8 @@ var init_MapView = __esm({
|
|
|
7869
7888
|
showAttribution = true
|
|
7870
7889
|
}) {
|
|
7871
7890
|
const eventBus = useEventBus2();
|
|
7872
|
-
const [clickedPosition, setClickedPosition] =
|
|
7873
|
-
const handleMapClick =
|
|
7891
|
+
const [clickedPosition, setClickedPosition] = useState109(null);
|
|
7892
|
+
const handleMapClick = useCallback127((lat, lng) => {
|
|
7874
7893
|
if (showClickedPin) {
|
|
7875
7894
|
setClickedPosition({ lat, lng });
|
|
7876
7895
|
}
|
|
@@ -7879,7 +7898,7 @@ var init_MapView = __esm({
|
|
|
7879
7898
|
eventBus.emit(`UI:${mapClickEvent}`, { latitude: lat, longitude: lng });
|
|
7880
7899
|
}
|
|
7881
7900
|
}, [onMapClick, mapClickEvent, eventBus, showClickedPin]);
|
|
7882
|
-
const handleMarkerClick =
|
|
7901
|
+
const handleMarkerClick = useCallback127((marker) => {
|
|
7883
7902
|
onMarkerClick?.(marker);
|
|
7884
7903
|
if (markerClickEvent) {
|
|
7885
7904
|
eventBus.emit(`UI:${markerClickEvent}`, { ...marker });
|
|
@@ -28698,6 +28717,98 @@ var init_TagCloud = __esm({
|
|
|
28698
28717
|
TagCloud.displayName = "TagCloud";
|
|
28699
28718
|
}
|
|
28700
28719
|
});
|
|
28720
|
+
var TagInput;
|
|
28721
|
+
var init_TagInput = __esm({
|
|
28722
|
+
"components/molecules/TagInput.tsx"() {
|
|
28723
|
+
"use client";
|
|
28724
|
+
init_cn();
|
|
28725
|
+
init_useEventBus();
|
|
28726
|
+
init_Input();
|
|
28727
|
+
init_Badge();
|
|
28728
|
+
init_Stack();
|
|
28729
|
+
init_Typography();
|
|
28730
|
+
TagInput = ({
|
|
28731
|
+
value,
|
|
28732
|
+
onChange,
|
|
28733
|
+
placeholder,
|
|
28734
|
+
disabled = false,
|
|
28735
|
+
variant = "default",
|
|
28736
|
+
unique = true,
|
|
28737
|
+
helperText,
|
|
28738
|
+
className,
|
|
28739
|
+
addEvent,
|
|
28740
|
+
removeEvent
|
|
28741
|
+
}) => {
|
|
28742
|
+
const eventBus = useEventBus();
|
|
28743
|
+
const [draft, setDraft] = useState("");
|
|
28744
|
+
const commit = useCallback(() => {
|
|
28745
|
+
const tag = draft.trim();
|
|
28746
|
+
if (!tag) return;
|
|
28747
|
+
if (unique && value.includes(tag)) {
|
|
28748
|
+
setDraft("");
|
|
28749
|
+
return;
|
|
28750
|
+
}
|
|
28751
|
+
const next = [...value, tag];
|
|
28752
|
+
onChange?.(next);
|
|
28753
|
+
if (addEvent) {
|
|
28754
|
+
eventBus.emit(`UI:${addEvent}`, { tag, value: next });
|
|
28755
|
+
}
|
|
28756
|
+
setDraft("");
|
|
28757
|
+
}, [draft, value, onChange, unique, addEvent, eventBus]);
|
|
28758
|
+
const removeAt = useCallback(
|
|
28759
|
+
(index) => {
|
|
28760
|
+
if (disabled) return;
|
|
28761
|
+
const tag = value[index];
|
|
28762
|
+
const next = value.slice();
|
|
28763
|
+
next.splice(index, 1);
|
|
28764
|
+
onChange?.(next);
|
|
28765
|
+
if (removeEvent) {
|
|
28766
|
+
eventBus.emit(`UI:${removeEvent}`, { tag, index, value: next });
|
|
28767
|
+
}
|
|
28768
|
+
},
|
|
28769
|
+
[value, onChange, disabled, removeEvent, eventBus]
|
|
28770
|
+
);
|
|
28771
|
+
const handleKeyDown = useCallback(
|
|
28772
|
+
(e) => {
|
|
28773
|
+
if (disabled) return;
|
|
28774
|
+
if (e.key === "Enter") {
|
|
28775
|
+
e.preventDefault();
|
|
28776
|
+
commit();
|
|
28777
|
+
} else if (e.key === "Backspace" && draft.length === 0 && value.length > 0) {
|
|
28778
|
+
e.preventDefault();
|
|
28779
|
+
removeAt(value.length - 1);
|
|
28780
|
+
}
|
|
28781
|
+
},
|
|
28782
|
+
[commit, draft.length, value, removeAt, disabled]
|
|
28783
|
+
);
|
|
28784
|
+
return /* @__PURE__ */ jsxs(VStack, { gap: "xs", className: cn("w-full", className), children: [
|
|
28785
|
+
value.length > 0 ? /* @__PURE__ */ jsx(HStack, { gap: "xs", className: "flex-wrap", children: value.map((tag, index) => /* @__PURE__ */ jsx(
|
|
28786
|
+
Badge,
|
|
28787
|
+
{
|
|
28788
|
+
variant,
|
|
28789
|
+
size: "sm",
|
|
28790
|
+
onRemove: disabled ? void 0 : () => removeAt(index),
|
|
28791
|
+
removeLabel: `Remove ${tag}`,
|
|
28792
|
+
children: tag
|
|
28793
|
+
},
|
|
28794
|
+
`${tag}-${index}`
|
|
28795
|
+
)) }) : null,
|
|
28796
|
+
/* @__PURE__ */ jsx(
|
|
28797
|
+
Input,
|
|
28798
|
+
{
|
|
28799
|
+
value: draft,
|
|
28800
|
+
placeholder: placeholder ?? "Type and press Enter\u2026",
|
|
28801
|
+
disabled,
|
|
28802
|
+
onChange: (e) => setDraft(e.target.value),
|
|
28803
|
+
onKeyDown: handleKeyDown
|
|
28804
|
+
}
|
|
28805
|
+
),
|
|
28806
|
+
helperText ? /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "muted", children: helperText }) : null
|
|
28807
|
+
] });
|
|
28808
|
+
};
|
|
28809
|
+
TagInput.displayName = "TagInput";
|
|
28810
|
+
}
|
|
28811
|
+
});
|
|
28701
28812
|
var ShowcaseCard;
|
|
28702
28813
|
var init_ShowcaseCard = __esm({
|
|
28703
28814
|
"components/molecules/ShowcaseCard.tsx"() {
|
|
@@ -32316,6 +32427,75 @@ var init_GradientDivider = __esm({
|
|
|
32316
32427
|
GradientDivider.displayName = "GradientDivider";
|
|
32317
32428
|
}
|
|
32318
32429
|
});
|
|
32430
|
+
var MarketingFooter;
|
|
32431
|
+
var init_MarketingFooter = __esm({
|
|
32432
|
+
"components/molecules/MarketingFooter.tsx"() {
|
|
32433
|
+
"use client";
|
|
32434
|
+
init_cn();
|
|
32435
|
+
init_Box();
|
|
32436
|
+
init_Stack();
|
|
32437
|
+
init_Typography();
|
|
32438
|
+
MarketingFooter = ({
|
|
32439
|
+
columns,
|
|
32440
|
+
copyright,
|
|
32441
|
+
logo,
|
|
32442
|
+
className
|
|
32443
|
+
}) => {
|
|
32444
|
+
return /* @__PURE__ */ jsx(
|
|
32445
|
+
Box,
|
|
32446
|
+
{
|
|
32447
|
+
as: "footer",
|
|
32448
|
+
className: cn(
|
|
32449
|
+
"bg-surface",
|
|
32450
|
+
"border-t border-border",
|
|
32451
|
+
"pt-12 pb-8 px-4",
|
|
32452
|
+
className
|
|
32453
|
+
),
|
|
32454
|
+
children: /* @__PURE__ */ jsxs(VStack, { gap: "lg", className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: [
|
|
32455
|
+
/* @__PURE__ */ jsxs(HStack, { gap: "lg", align: "start", className: "flex-wrap w-full justify-between", children: [
|
|
32456
|
+
logo && /* @__PURE__ */ jsx(VStack, { gap: "sm", className: "min-w-[140px] mb-4", children: logo.href ? /* @__PURE__ */ jsx("a", { href: logo.href, children: /* @__PURE__ */ jsx("img", { src: logo.src, alt: logo.alt, className: "h-8 w-auto" }) }) : /* @__PURE__ */ jsx("img", { src: logo.src, alt: logo.alt, className: "h-8 w-auto" }) }),
|
|
32457
|
+
columns.map((col) => /* @__PURE__ */ jsxs(VStack, { gap: "sm", className: "min-w-[140px] mb-4", children: [
|
|
32458
|
+
/* @__PURE__ */ jsx(
|
|
32459
|
+
Typography,
|
|
32460
|
+
{
|
|
32461
|
+
variant: "body2",
|
|
32462
|
+
className: "font-semibold text-foreground mb-1",
|
|
32463
|
+
children: col.title
|
|
32464
|
+
}
|
|
32465
|
+
),
|
|
32466
|
+
col.items.map((item) => /* @__PURE__ */ jsx(
|
|
32467
|
+
"a",
|
|
32468
|
+
{
|
|
32469
|
+
href: item.href,
|
|
32470
|
+
className: cn(
|
|
32471
|
+
"text-sm no-underline",
|
|
32472
|
+
"text-foreground/60",
|
|
32473
|
+
"hover:text-accent",
|
|
32474
|
+
"transition-colors duration-150"
|
|
32475
|
+
),
|
|
32476
|
+
target: item.href.startsWith("http") ? "_blank" : void 0,
|
|
32477
|
+
rel: item.href.startsWith("http") ? "noopener noreferrer" : void 0,
|
|
32478
|
+
children: item.label
|
|
32479
|
+
},
|
|
32480
|
+
item.label
|
|
32481
|
+
))
|
|
32482
|
+
] }, col.title))
|
|
32483
|
+
] }),
|
|
32484
|
+
copyright && /* @__PURE__ */ jsx(
|
|
32485
|
+
Typography,
|
|
32486
|
+
{
|
|
32487
|
+
variant: "caption",
|
|
32488
|
+
className: "text-foreground/30 text-center w-full pt-6",
|
|
32489
|
+
children: copyright
|
|
32490
|
+
}
|
|
32491
|
+
)
|
|
32492
|
+
] })
|
|
32493
|
+
}
|
|
32494
|
+
);
|
|
32495
|
+
};
|
|
32496
|
+
MarketingFooter.displayName = "MarketingFooter";
|
|
32497
|
+
}
|
|
32498
|
+
});
|
|
32319
32499
|
var PullQuote;
|
|
32320
32500
|
var init_PullQuote = __esm({
|
|
32321
32501
|
"components/molecules/PullQuote.tsx"() {
|
|
@@ -32833,6 +33013,7 @@ var init_molecules = __esm({
|
|
|
32833
33013
|
init_StepFlow();
|
|
32834
33014
|
init_SplitSection();
|
|
32835
33015
|
init_TagCloud();
|
|
33016
|
+
init_TagInput();
|
|
32836
33017
|
init_CommunityLinks();
|
|
32837
33018
|
init_TeamCard();
|
|
32838
33019
|
init_ShowcaseCard();
|
|
@@ -32855,6 +33036,7 @@ var init_molecules = __esm({
|
|
|
32855
33036
|
init_DocSidebar();
|
|
32856
33037
|
init_DocTOC();
|
|
32857
33038
|
init_GradientDivider();
|
|
33039
|
+
init_MarketingFooter();
|
|
32858
33040
|
init_PullQuote();
|
|
32859
33041
|
init_BehaviorView();
|
|
32860
33042
|
init_ModuleCard();
|
|
@@ -44684,6 +44866,7 @@ var init_component_registry_generated = __esm({
|
|
|
44684
44866
|
init_List();
|
|
44685
44867
|
init_LoadingState();
|
|
44686
44868
|
init_MarkdownContent();
|
|
44869
|
+
init_MarketingFooter();
|
|
44687
44870
|
init_MasterDetail();
|
|
44688
44871
|
init_MasterDetailLayout();
|
|
44689
44872
|
init_MatrixQuestion();
|
|
@@ -44783,6 +44966,7 @@ var init_component_registry_generated = __esm({
|
|
|
44783
44966
|
init_Table();
|
|
44784
44967
|
init_Tabs();
|
|
44785
44968
|
init_TagCloud();
|
|
44969
|
+
init_TagInput();
|
|
44786
44970
|
init_TeamCard();
|
|
44787
44971
|
init_TeamOrganism();
|
|
44788
44972
|
init_TextHighlight();
|
|
@@ -44983,6 +45167,7 @@ var init_component_registry_generated = __esm({
|
|
|
44983
45167
|
"MapView": MapViewPattern,
|
|
44984
45168
|
"MapViewPattern": MapViewPattern,
|
|
44985
45169
|
"MarkdownContent": MarkdownContent,
|
|
45170
|
+
"MarketingFooter": MarketingFooter,
|
|
44986
45171
|
"MasterDetail": MasterDetail,
|
|
44987
45172
|
"MasterDetailLayout": MasterDetailLayout,
|
|
44988
45173
|
"MatrixQuestion": MatrixQuestion,
|
|
@@ -45098,6 +45283,7 @@ var init_component_registry_generated = __esm({
|
|
|
45098
45283
|
"Table": Table,
|
|
45099
45284
|
"Tabs": Tabs,
|
|
45100
45285
|
"TagCloud": TagCloud,
|
|
45286
|
+
"TagInput": TagInput,
|
|
45101
45287
|
"TeamCard": TeamCard,
|
|
45102
45288
|
"TeamOrganism": TeamOrganism,
|
|
45103
45289
|
"TextHighlight": TextHighlight,
|
|
@@ -49006,4 +49192,4 @@ function useGitHubBranches(owner, repo, enabled = true) {
|
|
|
49006
49192
|
});
|
|
49007
49193
|
}
|
|
49008
49194
|
|
|
49009
|
-
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BehaviorView, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, CodeBlock, CodeExample, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, Dialog, DialogueBox, DialogueBubble, Divider, DocBreadcrumb, DocCodeBlock, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FeatureRenderer2 as FeatureRenderer, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PullQuote, PullToRefresh, QrScanner, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, Table, Tabs, TagCloud, TeamCard, TeamOrganism, TerrainPalette, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, clearEntities, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createTranslate, createUnitAnimationState, drawSprite, generateCombatMessage, getAllEntities, getByType, getCurrentFrame, getEntity, getSingleton, getTileDimensions, inferDirection, isoToScreen, mapBookData, parseQueryBinding, pendulum, projectileMotion, removeEntity, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, spawnEntity, springOscillator, tickAnimationState, transitionAnimation, updateEntity, updateSingleton, useAgentChat, useAuthContext, useBattleState, useCamera, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEntities, useEntitiesByType, useEntity as useEntityById, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useInput, useLongPress, useOrbitalHistory, usePhysics, usePhysics2D, usePinchZoom, usePlayer, usePreview, usePullToRefresh, useQuerySingleton, useSingletonEntity, useSpriteAnimations, useSwipeGesture, useTraitListens, useTranslate, useUIEvents, useUISlotManager, useValidation };
|
|
49195
|
+
export { ALL_PRESETS, ALMADAR_DND_MIME, AR_BOOK_FIELDS, AboutPageTemplate, Accordion, ActionButton, ActionButtons, Card2 as ActionCard, ActionPalette, ActionTile, Alert, AnimatedCounter, AnimatedGraphic, AnimatedReveal, ArticleSection, Aside, AuthLayout, Avatar, Badge, BattleBoard, BattleTemplate, BehaviorView, BookChapterView, BookCoverPage, BookNavBar, BookTableOfContents, BookViewer, Box, BranchingLogicBuilder, Breadcrumb, BuilderBoard, Button, ButtonGroup, CTABanner, CalendarGrid, CanvasEffect, Card, CardBody, CardContent, CardFooter, CardGrid, CardHeader, CardTitle, Carousel, CaseStudyCard, CaseStudyOrganism, CastleBoard, CastleTemplate, Center, Chart, ChartLegend, Checkbox, ChoiceButton, ClassifierBoard, CodeBlock, CodeExample, CodeView, CodeViewer, CollapsibleSection, CombatLog, ComboCounter, CommunityLinks, ConditionalWrapper, ConfettiEffect, ConfirmDialog, Container, ContentRenderer, ContentSection, ControlButton, CounterTemplate, CraftingRecipe, DEFAULT_LIKERT_OPTIONS, DEFAULT_MATRIX_COLUMNS, DEFAULT_SLOTS, DIAMOND_TOP_Y, DPad, DamageNumber, DashboardGrid, DashboardLayout, DataGrid, DataList, DataTable, DateRangePicker, DateRangeSelector, DayCell, DebuggerBoard, DetailPanel, Dialog, DialogueBox, DialogueBubble, Divider, DocBreadcrumb, DocCodeBlock, DocPagination, DocSearch, DocSidebar, DocTOC, DocumentViewer, StateMachineView as DomStateMachineVisualizer, Drawer, DrawerSlot, EdgeDecoration, EditorCheckbox, EditorSelect, EditorSlider, EditorTextInput, EditorToolbar, EmptyState, EnemyPlate, EntityDisplayEvents, ErrorBoundary, ErrorState, EventHandlerBoard, EventLog, FEATURE_COLORS, FEATURE_TYPES, FLOOR_HEIGHT, FeatureCard, FeatureDetailPageTemplate, FeatureGrid, FeatureGridOrganism, FeatureRenderer2 as FeatureRenderer, FileTree, FilterGroup, FilterPill, Flex, FlipCard, FlipContainer, FloatingActionButton, Form, FormActions, FormField, FormLayout, FormSection, FormSectionHeader, GameAudioContext, GameAudioProvider, GameAudioToggle, GameCanvas2D, GameHud, GameMenu, GameOverScreen, GameShell, GameTemplate, GenericAppTemplate, GeometricPattern, GradientDivider, GraphCanvas, GraphView, Grid, HStack, Header, Heading, HealthBar, HealthPanel, HeroOrganism, HeroSection, I18nProvider, IDENTITY_BOOK_FIELDS, Icon, InfiniteScrollSentinel, Input, InputGroup, InstallBox, InventoryGrid, InventoryPanel, IsometricCanvas, ItemSlot, JazariStateMachine, Label, LandingPageTemplate, LawReferenceTooltip, Lightbox, LikertScale, LineChart2 as LineChart, List3 as List, LoadingState, MapView, MarkdownContent, MarketingFooter, MarketingStatCard, MasterDetail, MasterDetailLayout, MatrixQuestion, MediaGallery, Menu, Meter, MiniMap, Modal, ModalSlot, ModuleCard, Navigation, NegotiatorBoard, NotifyListener, NumberStepper, ObjectRulePanel, OptionConstraintGroup, StateMachineView as OrbitalStateMachineView, OrbitalVisualization, Overlay, PageHeader, Pagination, PatternTile, PhysicsManager, PlatformerCanvas, Popover, PositionedCanvas, PowerupSlots, PricingCard, PricingGrid, PricingOrganism, PricingPageTemplate, ProgressBar, ProgressDots, PullQuote, PullToRefresh, QrScanner, QuestTracker, QuizBlock, Radio, RangeSlider, RelationSelect, RepeatableFormSection, ReplyTree, ResourceBar, ResourceCounter, RichBlockEditor, RuleEditor, RuntimeDebugger, SHEET_COLUMNS, SPRITE_SHEET_LAYOUT, ScaledDiagram, ScoreBoard, ScoreDisplay, SearchInput, Section, SectionHeader, Select, SequenceBar, SequencerBoard, ServiceCatalog, ShowcaseCard, ShowcaseOrganism, SidePanel, Sidebar, SignaturePad, SimpleGrid, SimulationCanvas, SimulationControls, SimulationGraph, SimulatorBoard, Skeleton, SlotContentRenderer, SocialProof, SortableList, Spacer, Sparkline, Spinner, Split, SplitPane, SplitSection, Sprite, Stack, StarRating, StatBadge, StatCard, StatDisplay, StateArchitectBoard, StateIndicator, StateMachineView, StateNode2 as StateNode, StatsGrid, StatsOrganism, StatusBar, StatusDot, StatusEffect, StepFlow, StepFlowOrganism, SvgBranch, SvgConnection, SvgFlow, SvgGrid, SvgLobe, SvgMesh, SvgMorph, SvgNode, SvgPulse, SvgRing, SvgShield, SvgStack, SwipeableRow, Switch, TERRAIN_COLORS, TILE_HEIGHT, TILE_WIDTH, TabbedContainer, Table, Tabs, TagCloud, TagInput, TeamCard, TeamOrganism, TerrainPalette, Text, TextHighlight, Textarea, ThemeSelector, ThemeToggle, TimeSlotCell, Timeline, TimerDisplay, Toast, ToastSlot, Tooltip, TraitFrame, TraitSlot, TraitStateViewer, TransitionArrow, TrendIndicator, TurnIndicator, TurnPanel, TypewriterText, Typography, UISlotComponent, UISlotRenderer, UncontrolledBattleBoard, UnitCommandBar, UploadDropZone, VStack, VariablePanel, VersionDiff, ViolationAlert, VoteStack, WaypointMarker, WizardContainer, WizardNavigation, WizardProgress, WorldMapBoard, WorldMapTemplate, XPBar, applyTemporaryEffect, calculateAttackTargets, calculateDamage, calculateValidMoves, clearEntities, cn, combatAnimations, combatClasses, combatEffects, createInitialGameState, createTranslate, createUnitAnimationState, drawSprite, generateCombatMessage, getAllEntities, getByType, getCurrentFrame, getEntity, getSingleton, getTileDimensions, inferDirection, isoToScreen, mapBookData, parseQueryBinding, pendulum, projectileMotion, removeEntity, resolveFieldMap, resolveFrame, resolveSheetDirection, screenToIso, spawnEntity, springOscillator, tickAnimationState, transitionAnimation, updateEntity, updateSingleton, useAgentChat, useAuthContext, useBattleState, useCamera, useCompile, useConnectGitHub, useDeepAgentGeneration, useDisconnectGitHub, useDragReorder, useDraggable, useDropZone, useEmitEvent, useEntities, useEntitiesByType, useEntity as useEntityById, useEventBus, useEventListener, useExtensions, useFileEditor, useFileSystem, useGameAudio, useGameAudioContext, useGitHubBranches, useGitHubRepo, useGitHubRepos, useGitHubStatus, useImageCache, useInfiniteScroll, useInput, useLongPress, useOrbitalHistory, usePhysics, usePhysics2D, usePinchZoom, usePlayer, usePreview, usePullToRefresh, useQuerySingleton, useSingletonEntity, useSpriteAnimations, useSwipeGesture, useTraitListens, useTranslate, useUIEvents, useUISlotManager, useValidation };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TagInput Molecule Component
|
|
3
|
+
*
|
|
4
|
+
* Free-form chip editor for `string[]` values. The user types into an
|
|
5
|
+
* `Input` and presses Enter to commit; each committed value renders as
|
|
6
|
+
* a removable `Badge` (`onRemove` X-chip). Backspace on an empty input
|
|
7
|
+
* deletes the most recently added chip. Optional `unique` flag
|
|
8
|
+
* (default true) suppresses duplicate entries.
|
|
9
|
+
*
|
|
10
|
+
* **Atomic Design**: Composed using `Input`, `Badge`, `Typography`,
|
|
11
|
+
* `HStack`, `VStack` atoms — no raw HTML. Generic primitive; no entity
|
|
12
|
+
* binding.
|
|
13
|
+
*
|
|
14
|
+
* Event contract (mirrors DataList / FilterGroup):
|
|
15
|
+
* - Emits `UI:{addEvent}` with `{ tag, value }` when a chip is added.
|
|
16
|
+
* - Emits `UI:{removeEvent}` with `{ tag, index, value }` when a chip
|
|
17
|
+
* is removed.
|
|
18
|
+
* - `onChange` callback stays as the direct / Storybook contract.
|
|
19
|
+
*
|
|
20
|
+
* Used by the studio Questionnaire for the `tagList` input type
|
|
21
|
+
* (`[string]` config knobs without `enumValues`).
|
|
22
|
+
*/
|
|
23
|
+
import React from 'react';
|
|
24
|
+
import type { EventKey } from '@almadar/core';
|
|
25
|
+
import { type BadgeVariant } from '../atoms/Badge';
|
|
26
|
+
export interface TagInputProps {
|
|
27
|
+
/** Current list of tags. */
|
|
28
|
+
value: ReadonlyArray<string>;
|
|
29
|
+
/** Direct callback emitted on every change. Stays as the
|
|
30
|
+
* Storybook / non-trait contract; trait-driven schemas should prefer
|
|
31
|
+
* the bus events below. */
|
|
32
|
+
onChange?: (next: ReadonlyArray<string>) => void;
|
|
33
|
+
/** Placeholder for the entry input. Default: `"Type and press Enter…"`. */
|
|
34
|
+
placeholder?: string;
|
|
35
|
+
/** Disable add + remove interactions. */
|
|
36
|
+
disabled?: boolean;
|
|
37
|
+
/** Variant applied to each chip Badge. Default: `'default'`. */
|
|
38
|
+
variant?: BadgeVariant;
|
|
39
|
+
/** Suppress duplicate entries. Default: `true`. */
|
|
40
|
+
unique?: boolean;
|
|
41
|
+
/** Helper text rendered under the input. */
|
|
42
|
+
helperText?: string;
|
|
43
|
+
/** Additional CSS classes applied to the outer container. */
|
|
44
|
+
className?: string;
|
|
45
|
+
/** Event emitted when a tag is added: `UI:{addEvent}` with payload
|
|
46
|
+
* `{ tag: string, value: string[] }`. */
|
|
47
|
+
addEvent?: EventKey;
|
|
48
|
+
/** Event emitted when a tag is removed: `UI:{removeEvent}` with
|
|
49
|
+
* payload `{ tag: string, index: number, value: string[] }`. */
|
|
50
|
+
removeEvent?: EventKey;
|
|
51
|
+
}
|
|
52
|
+
export declare const TagInput: React.FC<TagInputProps>;
|
|
@@ -75,6 +75,7 @@ export { SocialProof, type SocialProofProps, type SocialProofItem } from './Soci
|
|
|
75
75
|
export { StepFlow, type StepFlowProps, type StepItemProps } from './StepFlow';
|
|
76
76
|
export { SplitSection, type SplitSectionProps } from './SplitSection';
|
|
77
77
|
export { TagCloud, type TagCloudProps, type TagCloudItem } from './TagCloud';
|
|
78
|
+
export { TagInput, type TagInputProps } from './TagInput';
|
|
78
79
|
export { CommunityLinks, type CommunityLinksProps } from './CommunityLinks';
|
|
79
80
|
export { TeamCard, type TeamCardProps } from './TeamCard';
|
|
80
81
|
export { ShowcaseCard, type ShowcaseCardProps } from './ShowcaseCard';
|
|
@@ -97,6 +98,7 @@ export { DocSearch, type DocSearchProps, type DocSearchResult } from './DocSearc
|
|
|
97
98
|
export { DocSidebar, type DocSidebarProps, type DocSidebarItem } from './DocSidebar';
|
|
98
99
|
export { DocTOC, type DocTOCProps, type DocTOCItem } from './DocTOC';
|
|
99
100
|
export { GradientDivider, type GradientDividerProps } from './GradientDivider';
|
|
101
|
+
export { MarketingFooter, type MarketingFooterProps, type FooterLinkColumn, type FooterLinkItem } from './MarketingFooter';
|
|
100
102
|
export { PullQuote, type PullQuoteProps } from './PullQuote';
|
|
101
103
|
export { BehaviorView, type BehaviorViewProps } from './avl/BehaviorView';
|
|
102
104
|
export { ModuleCard, type ModuleCardProps } from './avl/ModuleCard';
|