@openzeppelin/ui-components 1.2.1 → 1.3.0
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 +130 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +49 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +55 -8
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +129 -45
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -618,6 +618,134 @@ const DropdownMenuShortcut = ({ className, ...props }) => {
|
|
|
618
618
|
};
|
|
619
619
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
620
620
|
|
|
621
|
+
//#endregion
|
|
622
|
+
//#region src/components/ui/ecosystem-dropdown.tsx
|
|
623
|
+
/** Simple dropdown selector for choosing a blockchain ecosystem. */
|
|
624
|
+
function EcosystemDropdown({ options, value, onValueChange, getEcosystemIcon, disabled = false, className, placeholder = "Select blockchain...", "aria-labelledby": ariaLabelledby }) {
|
|
625
|
+
const [open, setOpen] = react.useState(false);
|
|
626
|
+
const selectedOption = options.find((o) => o.value === value);
|
|
627
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DropdownMenu, {
|
|
628
|
+
open,
|
|
629
|
+
onOpenChange: setOpen,
|
|
630
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DropdownMenuTrigger, {
|
|
631
|
+
asChild: true,
|
|
632
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Button, {
|
|
633
|
+
variant: "outline",
|
|
634
|
+
role: "combobox",
|
|
635
|
+
"aria-expanded": open,
|
|
636
|
+
"aria-labelledby": ariaLabelledby,
|
|
637
|
+
disabled,
|
|
638
|
+
className: (0, _openzeppelin_ui_utils.cn)("w-full justify-between", className),
|
|
639
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
640
|
+
className: "flex items-center gap-2 truncate",
|
|
641
|
+
children: selectedOption ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [getEcosystemIcon?.(selectedOption.value), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
642
|
+
className: "truncate",
|
|
643
|
+
children: selectedOption.label
|
|
644
|
+
})] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
645
|
+
className: "text-muted-foreground",
|
|
646
|
+
children: placeholder
|
|
647
|
+
})
|
|
648
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })]
|
|
649
|
+
})
|
|
650
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DropdownMenuContent, {
|
|
651
|
+
className: "w-[--radix-dropdown-menu-trigger-width] min-w-[200px]",
|
|
652
|
+
align: "start",
|
|
653
|
+
children: options.map((option) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DropdownMenuItem, {
|
|
654
|
+
disabled: !option.enabled,
|
|
655
|
+
onSelect: () => {
|
|
656
|
+
onValueChange(option.value);
|
|
657
|
+
setOpen(false);
|
|
658
|
+
},
|
|
659
|
+
className: "gap-2",
|
|
660
|
+
children: [
|
|
661
|
+
getEcosystemIcon?.(option.value),
|
|
662
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
663
|
+
className: "flex-1 truncate",
|
|
664
|
+
children: option.label
|
|
665
|
+
}),
|
|
666
|
+
!option.enabled && option.disabledLabel && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
667
|
+
className: "shrink-0 text-xs text-muted-foreground",
|
|
668
|
+
children: option.disabledLabel
|
|
669
|
+
}),
|
|
670
|
+
value === option.value && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.Check, { className: "h-4 w-4 shrink-0 opacity-100" })
|
|
671
|
+
]
|
|
672
|
+
}, option.value))
|
|
673
|
+
})]
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
//#endregion
|
|
678
|
+
//#region src/components/icons/MidnightIcon.tsx
|
|
679
|
+
/**
|
|
680
|
+
* MidnightIcon - SVG icon for the Midnight blockchain
|
|
681
|
+
* Inline SVG to ensure it renders correctly when this package is consumed as a library
|
|
682
|
+
*/
|
|
683
|
+
function MidnightIcon({ size = 16, className = "", variant: _variant }) {
|
|
684
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
685
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
686
|
+
viewBox: "0 0 789.37 789.37",
|
|
687
|
+
width: size,
|
|
688
|
+
height: size,
|
|
689
|
+
className,
|
|
690
|
+
"aria-hidden": "true",
|
|
691
|
+
children: [
|
|
692
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
693
|
+
d: "m394.69,0C176.71,0,0,176.71,0,394.69s176.71,394.69,394.69,394.69,394.69-176.71,394.69-394.69S612.67,0,394.69,0Zm0,716.6c-177.5,0-321.91-144.41-321.91-321.91S217.18,72.78,394.69,72.78s321.91,144.41,321.91,321.91-144.41,321.91-321.91,321.91Z",
|
|
694
|
+
fill: "currentColor"
|
|
695
|
+
}),
|
|
696
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
697
|
+
x: "357.64",
|
|
698
|
+
y: "357.64",
|
|
699
|
+
width: "74.09",
|
|
700
|
+
height: "74.09",
|
|
701
|
+
fill: "currentColor"
|
|
702
|
+
}),
|
|
703
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
704
|
+
x: "357.64",
|
|
705
|
+
y: "240.66",
|
|
706
|
+
width: "74.09",
|
|
707
|
+
height: "74.09",
|
|
708
|
+
fill: "currentColor"
|
|
709
|
+
}),
|
|
710
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
711
|
+
x: "357.64",
|
|
712
|
+
y: "123.69",
|
|
713
|
+
width: "74.09",
|
|
714
|
+
height: "74.09",
|
|
715
|
+
fill: "currentColor"
|
|
716
|
+
})
|
|
717
|
+
]
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
//#endregion
|
|
722
|
+
//#region src/components/ui/ecosystem-icon.tsx
|
|
723
|
+
/** Displays the appropriate icon for a blockchain ecosystem. */
|
|
724
|
+
function EcosystemIcon({ ecosystem, fallbackLabel, className, size = 16, variant = "branded" }) {
|
|
725
|
+
if (ecosystem.id === "midnight") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MidnightIcon, {
|
|
726
|
+
size,
|
|
727
|
+
variant,
|
|
728
|
+
className: (0, _openzeppelin_ui_utils.cn)("shrink-0", className)
|
|
729
|
+
});
|
|
730
|
+
if (ecosystem.iconComponent) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ecosystem.iconComponent, {
|
|
731
|
+
size,
|
|
732
|
+
variant,
|
|
733
|
+
className: (0, _openzeppelin_ui_utils.cn)("shrink-0", className)
|
|
734
|
+
});
|
|
735
|
+
const initial = (fallbackLabel ?? ecosystem.id).charAt(0).toUpperCase();
|
|
736
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
737
|
+
className: (0, _openzeppelin_ui_utils.cn)("bg-muted text-muted-foreground shrink-0 rounded-full flex items-center justify-center font-medium", className),
|
|
738
|
+
style: {
|
|
739
|
+
width: size,
|
|
740
|
+
height: size,
|
|
741
|
+
fontSize: size * .5
|
|
742
|
+
},
|
|
743
|
+
role: "img",
|
|
744
|
+
"aria-label": fallbackLabel ?? ecosystem.id,
|
|
745
|
+
children: initial
|
|
746
|
+
});
|
|
747
|
+
}
|
|
748
|
+
|
|
621
749
|
//#endregion
|
|
622
750
|
//#region src/components/ui/empty-state.tsx
|
|
623
751
|
/**
|
|
@@ -943,50 +1071,6 @@ const LoadingButton = react.forwardRef(({ className, loading = false, children,
|
|
|
943
1071
|
});
|
|
944
1072
|
LoadingButton.displayName = "LoadingButton";
|
|
945
1073
|
|
|
946
|
-
//#endregion
|
|
947
|
-
//#region src/components/icons/MidnightIcon.tsx
|
|
948
|
-
/**
|
|
949
|
-
* MidnightIcon - SVG icon for the Midnight blockchain
|
|
950
|
-
* Inline SVG to ensure it renders correctly when this package is consumed as a library
|
|
951
|
-
*/
|
|
952
|
-
function MidnightIcon({ size = 16, className = "", variant: _variant }) {
|
|
953
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
954
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
955
|
-
viewBox: "0 0 789.37 789.37",
|
|
956
|
-
width: size,
|
|
957
|
-
height: size,
|
|
958
|
-
className,
|
|
959
|
-
"aria-hidden": "true",
|
|
960
|
-
children: [
|
|
961
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
962
|
-
d: "m394.69,0C176.71,0,0,176.71,0,394.69s176.71,394.69,394.69,394.69,394.69-176.71,394.69-394.69S612.67,0,394.69,0Zm0,716.6c-177.5,0-321.91-144.41-321.91-321.91S217.18,72.78,394.69,72.78s321.91,144.41,321.91,321.91-144.41,321.91-321.91,321.91Z",
|
|
963
|
-
fill: "currentColor"
|
|
964
|
-
}),
|
|
965
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
966
|
-
x: "357.64",
|
|
967
|
-
y: "357.64",
|
|
968
|
-
width: "74.09",
|
|
969
|
-
height: "74.09",
|
|
970
|
-
fill: "currentColor"
|
|
971
|
-
}),
|
|
972
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
973
|
-
x: "357.64",
|
|
974
|
-
y: "240.66",
|
|
975
|
-
width: "74.09",
|
|
976
|
-
height: "74.09",
|
|
977
|
-
fill: "currentColor"
|
|
978
|
-
}),
|
|
979
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
980
|
-
x: "357.64",
|
|
981
|
-
y: "123.69",
|
|
982
|
-
width: "74.09",
|
|
983
|
-
height: "74.09",
|
|
984
|
-
fill: "currentColor"
|
|
985
|
-
})
|
|
986
|
-
]
|
|
987
|
-
});
|
|
988
|
-
}
|
|
989
|
-
|
|
990
1074
|
//#endregion
|
|
991
1075
|
//#region src/components/ui/network-icon.tsx
|
|
992
1076
|
/** Displays the appropriate icon for a blockchain network. */
|
|
@@ -5226,6 +5310,8 @@ exports.DropdownMenuSub = DropdownMenuSub;
|
|
|
5226
5310
|
exports.DropdownMenuSubContent = DropdownMenuSubContent;
|
|
5227
5311
|
exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
|
|
5228
5312
|
exports.DropdownMenuTrigger = DropdownMenuTrigger;
|
|
5313
|
+
exports.EcosystemDropdown = EcosystemDropdown;
|
|
5314
|
+
exports.EcosystemIcon = EcosystemIcon;
|
|
5229
5315
|
exports.EmptyState = EmptyState;
|
|
5230
5316
|
exports.EnumField = EnumField;
|
|
5231
5317
|
exports.ErrorMessage = require_ErrorMessage.ErrorMessage;
|