@luminescent/ui-qwik 4.2.2 → 5.0.0-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/lib/index.qwik.cjs +173 -126
- package/lib/index.qwik.mjs +173 -126
- package/lib-types/components/docs/Sidebar.d.ts +2 -0
- package/lib-types/components/elements/Nav.d.ts +2 -2
- package/lib-types/components/elements/Sidebar.d.ts +9 -0
- package/lib-types/components/elements.d.ts +2 -1
- package/package.json +3 -5
- package/lib-types/components/docs.d.ts +0 -8
- package/lib-types/components/elements/Header.d.ts +0 -10
package/lib/index.qwik.cjs
CHANGED
|
@@ -657,127 +657,6 @@ const Dropdown = qwik.component$(({ class: Class, hover, opened, ...props }) =>
|
|
|
657
657
|
]
|
|
658
658
|
});
|
|
659
659
|
});
|
|
660
|
-
const SelectMenu = qwik.component$((props) => {
|
|
661
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
662
|
-
class: "flex flex-col",
|
|
663
|
-
children: [
|
|
664
|
-
/* @__PURE__ */ jsxRuntime.jsx("label", {
|
|
665
|
-
for: props.id,
|
|
666
|
-
class: "pb-1 text-lum-text select-none",
|
|
667
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {})
|
|
668
|
-
}),
|
|
669
|
-
/* @__PURE__ */ jsxRuntime.jsxs(SelectMenuRaw, {
|
|
670
|
-
...props,
|
|
671
|
-
children: [
|
|
672
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
673
|
-
"q:slot": "dropdown",
|
|
674
|
-
children: (props.customDropdown || !props.values?.length) && /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
675
|
-
name: "dropdown"
|
|
676
|
-
})
|
|
677
|
-
}),
|
|
678
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
679
|
-
"q:slot": "extra-buttons",
|
|
680
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
681
|
-
name: "extra-buttons"
|
|
682
|
-
})
|
|
683
|
-
})
|
|
684
|
-
]
|
|
685
|
-
})
|
|
686
|
-
]
|
|
687
|
-
});
|
|
688
|
-
});
|
|
689
|
-
const SelectMenuRaw = qwik.component$(({ id, values, class: Class, customDropdown, hover, align, ...props }) => {
|
|
690
|
-
const store = qwik.useStore({
|
|
691
|
-
opened: false,
|
|
692
|
-
value: props.value
|
|
693
|
-
});
|
|
694
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
695
|
-
class: {
|
|
696
|
-
"relative touch-manipulation": true,
|
|
697
|
-
group: hover
|
|
698
|
-
},
|
|
699
|
-
children: [
|
|
700
|
-
values && /* @__PURE__ */ jsxRuntime.jsx("select", {
|
|
701
|
-
...props,
|
|
702
|
-
id,
|
|
703
|
-
class: {
|
|
704
|
-
hidden: true
|
|
705
|
-
},
|
|
706
|
-
children: values.map((value, i) => {
|
|
707
|
-
return /* @__PURE__ */ jsxRuntime.jsx("option", {
|
|
708
|
-
value: value.value,
|
|
709
|
-
children: `${value.value}`
|
|
710
|
-
}, i);
|
|
711
|
-
})
|
|
712
|
-
}),
|
|
713
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Dropdown, {
|
|
714
|
-
opened: store.opened,
|
|
715
|
-
class: {
|
|
716
|
-
"w-full": true,
|
|
717
|
-
...Class
|
|
718
|
-
},
|
|
719
|
-
onClick$: () => {
|
|
720
|
-
if (!hover) store.opened = !store.opened;
|
|
721
|
-
},
|
|
722
|
-
children: [
|
|
723
|
-
customDropdown && /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
724
|
-
name: "dropdown"
|
|
725
|
-
}),
|
|
726
|
-
!customDropdown && /* @__PURE__ */ jsxRuntime.jsxs("span", {
|
|
727
|
-
id: `lui-${id}-name`,
|
|
728
|
-
children: [
|
|
729
|
-
values && (values.find((value) => value.value.toString() === store.value)?.name ?? values[0].name),
|
|
730
|
-
!values && /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
731
|
-
name: "dropdown"
|
|
732
|
-
})
|
|
733
|
-
]
|
|
734
|
-
})
|
|
735
|
-
]
|
|
736
|
-
}),
|
|
737
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
738
|
-
id: `lui-${id}-opts-container`,
|
|
739
|
-
class: {
|
|
740
|
-
"absolute z-[1000] pt-2 transition-all ease-out": true,
|
|
741
|
-
"left-0": align === "left",
|
|
742
|
-
"right-0": align === "right",
|
|
743
|
-
"left-1/2 -translate-x-1/2": align === "center",
|
|
744
|
-
"pointer-events-none scale-95 opacity-0": !store.opened,
|
|
745
|
-
"duration-300 group-hover:pointer-events-auto group-hover:scale-100 group-hover:opacity-100 group-hover:duration-75": hover,
|
|
746
|
-
"focus-within:pointer-events-auto focus-within:scale-100 focus-within:opacity-100 focus-within:duration-75": true
|
|
747
|
-
},
|
|
748
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
749
|
-
id: `lui-${id}-opts`,
|
|
750
|
-
class: {
|
|
751
|
-
"lum-bg-lum-input-bg lum-scroll flex max-h-72 flex-col gap-1 overflow-auto rounded-lum border p-1 select-none motion-safe:transition-all": true
|
|
752
|
-
},
|
|
753
|
-
children: [
|
|
754
|
-
values?.map(({ name, value }, i) => {
|
|
755
|
-
return /* @__PURE__ */ jsxRuntime.jsx("button", {
|
|
756
|
-
type: "button",
|
|
757
|
-
class: {
|
|
758
|
-
"lum-btn lum-bg-transparent rounded-lum-1": true
|
|
759
|
-
},
|
|
760
|
-
onClick$: () => {
|
|
761
|
-
store.opened = false;
|
|
762
|
-
const select = document.getElementById(id);
|
|
763
|
-
if (select) {
|
|
764
|
-
select.value = value.toString();
|
|
765
|
-
select.dispatchEvent(new Event("change"));
|
|
766
|
-
}
|
|
767
|
-
store.value = value.toString();
|
|
768
|
-
},
|
|
769
|
-
children: name
|
|
770
|
-
}, i);
|
|
771
|
-
}),
|
|
772
|
-
/* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
773
|
-
name: "extra-buttons"
|
|
774
|
-
})
|
|
775
|
-
]
|
|
776
|
-
})
|
|
777
|
-
})
|
|
778
|
-
]
|
|
779
|
-
});
|
|
780
|
-
});
|
|
781
660
|
const Menu = qwik.component$(({ size, ...props }) => {
|
|
782
661
|
return /* @__PURE__ */ jsxRuntime.jsxs("svg", {
|
|
783
662
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1003,11 +882,180 @@ const NumberInputRaw = qwik.component$(({ input, onDecrement$, onIncrement$, val
|
|
|
1003
882
|
]
|
|
1004
883
|
});
|
|
1005
884
|
});
|
|
1006
|
-
const
|
|
885
|
+
const SelectMenu = qwik.component$((props) => {
|
|
886
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
887
|
+
class: "flex flex-col",
|
|
888
|
+
children: [
|
|
889
|
+
/* @__PURE__ */ jsxRuntime.jsx("label", {
|
|
890
|
+
for: props.id,
|
|
891
|
+
class: "pb-1 text-lum-text select-none",
|
|
892
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {})
|
|
893
|
+
}),
|
|
894
|
+
/* @__PURE__ */ jsxRuntime.jsxs(SelectMenuRaw, {
|
|
895
|
+
...props,
|
|
896
|
+
children: [
|
|
897
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
898
|
+
"q:slot": "dropdown",
|
|
899
|
+
children: (props.customDropdown || !props.values?.length) && /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
900
|
+
name: "dropdown"
|
|
901
|
+
})
|
|
902
|
+
}),
|
|
903
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
904
|
+
"q:slot": "extra-buttons",
|
|
905
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
906
|
+
name: "extra-buttons"
|
|
907
|
+
})
|
|
908
|
+
})
|
|
909
|
+
]
|
|
910
|
+
})
|
|
911
|
+
]
|
|
912
|
+
});
|
|
913
|
+
});
|
|
914
|
+
const SelectMenuRaw = qwik.component$(({ id, values, class: Class, customDropdown, hover, align, ...props }) => {
|
|
915
|
+
const store = qwik.useStore({
|
|
916
|
+
opened: false,
|
|
917
|
+
value: props.value
|
|
918
|
+
});
|
|
1007
919
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
1008
920
|
class: {
|
|
1009
|
-
"
|
|
921
|
+
"relative touch-manipulation": true,
|
|
922
|
+
group: hover
|
|
923
|
+
},
|
|
924
|
+
children: [
|
|
925
|
+
values && /* @__PURE__ */ jsxRuntime.jsx("select", {
|
|
926
|
+
...props,
|
|
927
|
+
id,
|
|
928
|
+
class: "hidden",
|
|
929
|
+
children: values.map((value, i) => {
|
|
930
|
+
return /* @__PURE__ */ jsxRuntime.jsx("option", {
|
|
931
|
+
value: value.value,
|
|
932
|
+
children: `${value.value}`
|
|
933
|
+
}, i);
|
|
934
|
+
})
|
|
935
|
+
}),
|
|
936
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Dropdown, {
|
|
937
|
+
opened: store.opened,
|
|
938
|
+
class: {
|
|
939
|
+
"w-full": true,
|
|
940
|
+
...Class
|
|
941
|
+
},
|
|
942
|
+
onClick$: () => {
|
|
943
|
+
if (!hover) store.opened = !store.opened;
|
|
944
|
+
},
|
|
945
|
+
children: [
|
|
946
|
+
customDropdown && /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
947
|
+
name: "dropdown"
|
|
948
|
+
}),
|
|
949
|
+
!customDropdown && /* @__PURE__ */ jsxRuntime.jsxs("span", {
|
|
950
|
+
id: `lui-${id}-name`,
|
|
951
|
+
children: [
|
|
952
|
+
values && (values.find((value) => value.value.toString() === store.value)?.name ?? values[0].name),
|
|
953
|
+
!values && /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
954
|
+
name: "dropdown"
|
|
955
|
+
})
|
|
956
|
+
]
|
|
957
|
+
})
|
|
958
|
+
]
|
|
959
|
+
}),
|
|
960
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
961
|
+
id: `lui-${id}-opts-container`,
|
|
962
|
+
class: {
|
|
963
|
+
"absolute z-[1000] pt-2 transition-all ease-out": true,
|
|
964
|
+
"left-0": align === "left",
|
|
965
|
+
"right-0": align === "right",
|
|
966
|
+
"left-1/2 -translate-x-1/2": align === "center",
|
|
967
|
+
"pointer-events-none scale-95 opacity-0": !store.opened,
|
|
968
|
+
"duration-300 group-hover:pointer-events-auto group-hover:scale-100 group-hover:opacity-100 group-hover:duration-75": hover,
|
|
969
|
+
"focus-within:pointer-events-auto focus-within:scale-100 focus-within:opacity-100 focus-within:duration-75": true
|
|
970
|
+
},
|
|
971
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
972
|
+
id: `lui-${id}-opts`,
|
|
973
|
+
class: "lum-bg-lum-input-bg lum-scroll flex max-h-72 flex-col gap-1 overflow-auto rounded-lum border p-1 select-none motion-safe:transition-all",
|
|
974
|
+
children: [
|
|
975
|
+
values?.map(({ name, value }, i) => {
|
|
976
|
+
return /* @__PURE__ */ jsxRuntime.jsx("button", {
|
|
977
|
+
type: "button",
|
|
978
|
+
class: "lum-btn lum-bg-transparent rounded-lum-1",
|
|
979
|
+
onClick$: () => {
|
|
980
|
+
store.opened = false;
|
|
981
|
+
const select = document.getElementById(id);
|
|
982
|
+
if (select) {
|
|
983
|
+
select.value = value.toString();
|
|
984
|
+
select.dispatchEvent(new Event("change"));
|
|
985
|
+
}
|
|
986
|
+
store.value = value.toString();
|
|
987
|
+
},
|
|
988
|
+
children: name
|
|
989
|
+
}, i);
|
|
990
|
+
}),
|
|
991
|
+
/* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
992
|
+
name: "extra-buttons"
|
|
993
|
+
})
|
|
994
|
+
]
|
|
995
|
+
})
|
|
996
|
+
})
|
|
997
|
+
]
|
|
998
|
+
});
|
|
999
|
+
});
|
|
1000
|
+
const Sidebar = qwik.component$(({ floating, ...props }) => {
|
|
1001
|
+
const menu = qwik.useSignal(false);
|
|
1002
|
+
return /* @__PURE__ */ jsxRuntime.jsx("aside", {
|
|
1003
|
+
...props,
|
|
1004
|
+
class: {
|
|
1005
|
+
"lg:w-100 fixed lg:sticky lum-card top-0 left-0 z-[40] px-0 lg:px-6 pb-0": true,
|
|
1006
|
+
"w-full rounded-none pt-14 lg:pt-20 lg:h-dvh lg:border-y-0 border-l-0": !floating,
|
|
1007
|
+
"mt-16 lg:mt-22 lg:ml-4 pt-4 mx-2 w-[calc(100%-16px)]": floating,
|
|
1008
|
+
...props.class
|
|
1010
1009
|
},
|
|
1010
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("nav", {
|
|
1011
|
+
id: "docs-sidebar",
|
|
1012
|
+
class: "min-h-full relative",
|
|
1013
|
+
children: [
|
|
1014
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
1015
|
+
class: "flex items-center gap-3 pb-3 px-2 border-b border-lum-border/10",
|
|
1016
|
+
children: [
|
|
1017
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
1018
|
+
class: "flex-1",
|
|
1019
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
|
|
1020
|
+
name: "title"
|
|
1021
|
+
})
|
|
1022
|
+
}),
|
|
1023
|
+
/* @__PURE__ */ jsxRuntime.jsx("button", {
|
|
1024
|
+
class: "lum-btn lum-bg-transparent p-2 lg:hidden",
|
|
1025
|
+
onClick$: () => {
|
|
1026
|
+
menu.value = !menu.value;
|
|
1027
|
+
const abortController = new AbortController();
|
|
1028
|
+
document.addEventListener("click", (e) => {
|
|
1029
|
+
if (!e.composedPath().includes(document.querySelector("aside")) || e.target instanceof HTMLAnchorElement) {
|
|
1030
|
+
menu.value = false;
|
|
1031
|
+
abortController.abort();
|
|
1032
|
+
}
|
|
1033
|
+
}, {
|
|
1034
|
+
signal: abortController.signal
|
|
1035
|
+
});
|
|
1036
|
+
},
|
|
1037
|
+
"aria-label": "Toggle Menu",
|
|
1038
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Menu, {
|
|
1039
|
+
size: 24
|
|
1040
|
+
})
|
|
1041
|
+
})
|
|
1042
|
+
]
|
|
1043
|
+
}),
|
|
1044
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
1045
|
+
class: {
|
|
1046
|
+
"flex-col gap-3 my-4 mx-4 lg:mx-0": true,
|
|
1047
|
+
"hidden lg:flex": !menu.value,
|
|
1048
|
+
"flex": menu.value
|
|
1049
|
+
},
|
|
1050
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {})
|
|
1051
|
+
})
|
|
1052
|
+
]
|
|
1053
|
+
})
|
|
1054
|
+
});
|
|
1055
|
+
});
|
|
1056
|
+
const Toggle = qwik.component$(({ checkbox, round, label, ...props }) => {
|
|
1057
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
1058
|
+
class: "flex touch-manipulation items-center gap-3",
|
|
1011
1059
|
children: [
|
|
1012
1060
|
/* @__PURE__ */ jsxRuntime.jsxs("label", {
|
|
1013
1061
|
class: "relative inline-flex cursor-pointer items-center",
|
|
@@ -1015,9 +1063,7 @@ const Toggle = qwik.component$(({ checkbox, round, label, ...props }) => {
|
|
|
1015
1063
|
/* @__PURE__ */ jsxRuntime.jsx("input", {
|
|
1016
1064
|
type: "checkbox",
|
|
1017
1065
|
...props,
|
|
1018
|
-
class:
|
|
1019
|
-
"peer sr-only": true
|
|
1020
|
-
}
|
|
1066
|
+
class: "peer sr-only"
|
|
1021
1067
|
}),
|
|
1022
1068
|
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
1023
1069
|
class: {
|
|
@@ -1517,5 +1563,6 @@ exports.NumberInput = NumberInput;
|
|
|
1517
1563
|
exports.NumberInputRaw = NumberInputRaw;
|
|
1518
1564
|
exports.SelectMenu = SelectMenu;
|
|
1519
1565
|
exports.SelectMenuRaw = SelectMenuRaw;
|
|
1566
|
+
exports.Sidebar = Sidebar;
|
|
1520
1567
|
exports.Toggle = Toggle;
|
|
1521
1568
|
exports.blobColorClasses = blobColorClasses;
|
package/lib/index.qwik.mjs
CHANGED
|
@@ -655,127 +655,6 @@ const Dropdown = component$(({ class: Class, hover, opened, ...props }) => {
|
|
|
655
655
|
]
|
|
656
656
|
});
|
|
657
657
|
});
|
|
658
|
-
const SelectMenu = component$((props) => {
|
|
659
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
660
|
-
class: "flex flex-col",
|
|
661
|
-
children: [
|
|
662
|
-
/* @__PURE__ */ jsx("label", {
|
|
663
|
-
for: props.id,
|
|
664
|
-
class: "pb-1 text-lum-text select-none",
|
|
665
|
-
children: /* @__PURE__ */ jsx(Slot, {})
|
|
666
|
-
}),
|
|
667
|
-
/* @__PURE__ */ jsxs(SelectMenuRaw, {
|
|
668
|
-
...props,
|
|
669
|
-
children: [
|
|
670
|
-
/* @__PURE__ */ jsx("div", {
|
|
671
|
-
"q:slot": "dropdown",
|
|
672
|
-
children: (props.customDropdown || !props.values?.length) && /* @__PURE__ */ jsx(Slot, {
|
|
673
|
-
name: "dropdown"
|
|
674
|
-
})
|
|
675
|
-
}),
|
|
676
|
-
/* @__PURE__ */ jsx("div", {
|
|
677
|
-
"q:slot": "extra-buttons",
|
|
678
|
-
children: /* @__PURE__ */ jsx(Slot, {
|
|
679
|
-
name: "extra-buttons"
|
|
680
|
-
})
|
|
681
|
-
})
|
|
682
|
-
]
|
|
683
|
-
})
|
|
684
|
-
]
|
|
685
|
-
});
|
|
686
|
-
});
|
|
687
|
-
const SelectMenuRaw = component$(({ id, values, class: Class, customDropdown, hover, align, ...props }) => {
|
|
688
|
-
const store = useStore({
|
|
689
|
-
opened: false,
|
|
690
|
-
value: props.value
|
|
691
|
-
});
|
|
692
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
693
|
-
class: {
|
|
694
|
-
"relative touch-manipulation": true,
|
|
695
|
-
group: hover
|
|
696
|
-
},
|
|
697
|
-
children: [
|
|
698
|
-
values && /* @__PURE__ */ jsx("select", {
|
|
699
|
-
...props,
|
|
700
|
-
id,
|
|
701
|
-
class: {
|
|
702
|
-
hidden: true
|
|
703
|
-
},
|
|
704
|
-
children: values.map((value, i) => {
|
|
705
|
-
return /* @__PURE__ */ jsx("option", {
|
|
706
|
-
value: value.value,
|
|
707
|
-
children: `${value.value}`
|
|
708
|
-
}, i);
|
|
709
|
-
})
|
|
710
|
-
}),
|
|
711
|
-
/* @__PURE__ */ jsxs(Dropdown, {
|
|
712
|
-
opened: store.opened,
|
|
713
|
-
class: {
|
|
714
|
-
"w-full": true,
|
|
715
|
-
...Class
|
|
716
|
-
},
|
|
717
|
-
onClick$: () => {
|
|
718
|
-
if (!hover) store.opened = !store.opened;
|
|
719
|
-
},
|
|
720
|
-
children: [
|
|
721
|
-
customDropdown && /* @__PURE__ */ jsx(Slot, {
|
|
722
|
-
name: "dropdown"
|
|
723
|
-
}),
|
|
724
|
-
!customDropdown && /* @__PURE__ */ jsxs("span", {
|
|
725
|
-
id: `lui-${id}-name`,
|
|
726
|
-
children: [
|
|
727
|
-
values && (values.find((value) => value.value.toString() === store.value)?.name ?? values[0].name),
|
|
728
|
-
!values && /* @__PURE__ */ jsx(Slot, {
|
|
729
|
-
name: "dropdown"
|
|
730
|
-
})
|
|
731
|
-
]
|
|
732
|
-
})
|
|
733
|
-
]
|
|
734
|
-
}),
|
|
735
|
-
/* @__PURE__ */ jsx("div", {
|
|
736
|
-
id: `lui-${id}-opts-container`,
|
|
737
|
-
class: {
|
|
738
|
-
"absolute z-[1000] pt-2 transition-all ease-out": true,
|
|
739
|
-
"left-0": align === "left",
|
|
740
|
-
"right-0": align === "right",
|
|
741
|
-
"left-1/2 -translate-x-1/2": align === "center",
|
|
742
|
-
"pointer-events-none scale-95 opacity-0": !store.opened,
|
|
743
|
-
"duration-300 group-hover:pointer-events-auto group-hover:scale-100 group-hover:opacity-100 group-hover:duration-75": hover,
|
|
744
|
-
"focus-within:pointer-events-auto focus-within:scale-100 focus-within:opacity-100 focus-within:duration-75": true
|
|
745
|
-
},
|
|
746
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
747
|
-
id: `lui-${id}-opts`,
|
|
748
|
-
class: {
|
|
749
|
-
"lum-bg-lum-input-bg lum-scroll flex max-h-72 flex-col gap-1 overflow-auto rounded-lum border p-1 select-none motion-safe:transition-all": true
|
|
750
|
-
},
|
|
751
|
-
children: [
|
|
752
|
-
values?.map(({ name, value }, i) => {
|
|
753
|
-
return /* @__PURE__ */ jsx("button", {
|
|
754
|
-
type: "button",
|
|
755
|
-
class: {
|
|
756
|
-
"lum-btn lum-bg-transparent rounded-lum-1": true
|
|
757
|
-
},
|
|
758
|
-
onClick$: () => {
|
|
759
|
-
store.opened = false;
|
|
760
|
-
const select = document.getElementById(id);
|
|
761
|
-
if (select) {
|
|
762
|
-
select.value = value.toString();
|
|
763
|
-
select.dispatchEvent(new Event("change"));
|
|
764
|
-
}
|
|
765
|
-
store.value = value.toString();
|
|
766
|
-
},
|
|
767
|
-
children: name
|
|
768
|
-
}, i);
|
|
769
|
-
}),
|
|
770
|
-
/* @__PURE__ */ jsx(Slot, {
|
|
771
|
-
name: "extra-buttons"
|
|
772
|
-
})
|
|
773
|
-
]
|
|
774
|
-
})
|
|
775
|
-
})
|
|
776
|
-
]
|
|
777
|
-
});
|
|
778
|
-
});
|
|
779
658
|
const Menu = component$(({ size, ...props }) => {
|
|
780
659
|
return /* @__PURE__ */ jsxs("svg", {
|
|
781
660
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1001,11 +880,180 @@ const NumberInputRaw = component$(({ input, onDecrement$, onIncrement$, value =
|
|
|
1001
880
|
]
|
|
1002
881
|
});
|
|
1003
882
|
});
|
|
1004
|
-
const
|
|
883
|
+
const SelectMenu = component$((props) => {
|
|
884
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
885
|
+
class: "flex flex-col",
|
|
886
|
+
children: [
|
|
887
|
+
/* @__PURE__ */ jsx("label", {
|
|
888
|
+
for: props.id,
|
|
889
|
+
class: "pb-1 text-lum-text select-none",
|
|
890
|
+
children: /* @__PURE__ */ jsx(Slot, {})
|
|
891
|
+
}),
|
|
892
|
+
/* @__PURE__ */ jsxs(SelectMenuRaw, {
|
|
893
|
+
...props,
|
|
894
|
+
children: [
|
|
895
|
+
/* @__PURE__ */ jsx("div", {
|
|
896
|
+
"q:slot": "dropdown",
|
|
897
|
+
children: (props.customDropdown || !props.values?.length) && /* @__PURE__ */ jsx(Slot, {
|
|
898
|
+
name: "dropdown"
|
|
899
|
+
})
|
|
900
|
+
}),
|
|
901
|
+
/* @__PURE__ */ jsx("div", {
|
|
902
|
+
"q:slot": "extra-buttons",
|
|
903
|
+
children: /* @__PURE__ */ jsx(Slot, {
|
|
904
|
+
name: "extra-buttons"
|
|
905
|
+
})
|
|
906
|
+
})
|
|
907
|
+
]
|
|
908
|
+
})
|
|
909
|
+
]
|
|
910
|
+
});
|
|
911
|
+
});
|
|
912
|
+
const SelectMenuRaw = component$(({ id, values, class: Class, customDropdown, hover, align, ...props }) => {
|
|
913
|
+
const store = useStore({
|
|
914
|
+
opened: false,
|
|
915
|
+
value: props.value
|
|
916
|
+
});
|
|
1005
917
|
return /* @__PURE__ */ jsxs("div", {
|
|
1006
918
|
class: {
|
|
1007
|
-
"
|
|
919
|
+
"relative touch-manipulation": true,
|
|
920
|
+
group: hover
|
|
921
|
+
},
|
|
922
|
+
children: [
|
|
923
|
+
values && /* @__PURE__ */ jsx("select", {
|
|
924
|
+
...props,
|
|
925
|
+
id,
|
|
926
|
+
class: "hidden",
|
|
927
|
+
children: values.map((value, i) => {
|
|
928
|
+
return /* @__PURE__ */ jsx("option", {
|
|
929
|
+
value: value.value,
|
|
930
|
+
children: `${value.value}`
|
|
931
|
+
}, i);
|
|
932
|
+
})
|
|
933
|
+
}),
|
|
934
|
+
/* @__PURE__ */ jsxs(Dropdown, {
|
|
935
|
+
opened: store.opened,
|
|
936
|
+
class: {
|
|
937
|
+
"w-full": true,
|
|
938
|
+
...Class
|
|
939
|
+
},
|
|
940
|
+
onClick$: () => {
|
|
941
|
+
if (!hover) store.opened = !store.opened;
|
|
942
|
+
},
|
|
943
|
+
children: [
|
|
944
|
+
customDropdown && /* @__PURE__ */ jsx(Slot, {
|
|
945
|
+
name: "dropdown"
|
|
946
|
+
}),
|
|
947
|
+
!customDropdown && /* @__PURE__ */ jsxs("span", {
|
|
948
|
+
id: `lui-${id}-name`,
|
|
949
|
+
children: [
|
|
950
|
+
values && (values.find((value) => value.value.toString() === store.value)?.name ?? values[0].name),
|
|
951
|
+
!values && /* @__PURE__ */ jsx(Slot, {
|
|
952
|
+
name: "dropdown"
|
|
953
|
+
})
|
|
954
|
+
]
|
|
955
|
+
})
|
|
956
|
+
]
|
|
957
|
+
}),
|
|
958
|
+
/* @__PURE__ */ jsx("div", {
|
|
959
|
+
id: `lui-${id}-opts-container`,
|
|
960
|
+
class: {
|
|
961
|
+
"absolute z-[1000] pt-2 transition-all ease-out": true,
|
|
962
|
+
"left-0": align === "left",
|
|
963
|
+
"right-0": align === "right",
|
|
964
|
+
"left-1/2 -translate-x-1/2": align === "center",
|
|
965
|
+
"pointer-events-none scale-95 opacity-0": !store.opened,
|
|
966
|
+
"duration-300 group-hover:pointer-events-auto group-hover:scale-100 group-hover:opacity-100 group-hover:duration-75": hover,
|
|
967
|
+
"focus-within:pointer-events-auto focus-within:scale-100 focus-within:opacity-100 focus-within:duration-75": true
|
|
968
|
+
},
|
|
969
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
970
|
+
id: `lui-${id}-opts`,
|
|
971
|
+
class: "lum-bg-lum-input-bg lum-scroll flex max-h-72 flex-col gap-1 overflow-auto rounded-lum border p-1 select-none motion-safe:transition-all",
|
|
972
|
+
children: [
|
|
973
|
+
values?.map(({ name, value }, i) => {
|
|
974
|
+
return /* @__PURE__ */ jsx("button", {
|
|
975
|
+
type: "button",
|
|
976
|
+
class: "lum-btn lum-bg-transparent rounded-lum-1",
|
|
977
|
+
onClick$: () => {
|
|
978
|
+
store.opened = false;
|
|
979
|
+
const select = document.getElementById(id);
|
|
980
|
+
if (select) {
|
|
981
|
+
select.value = value.toString();
|
|
982
|
+
select.dispatchEvent(new Event("change"));
|
|
983
|
+
}
|
|
984
|
+
store.value = value.toString();
|
|
985
|
+
},
|
|
986
|
+
children: name
|
|
987
|
+
}, i);
|
|
988
|
+
}),
|
|
989
|
+
/* @__PURE__ */ jsx(Slot, {
|
|
990
|
+
name: "extra-buttons"
|
|
991
|
+
})
|
|
992
|
+
]
|
|
993
|
+
})
|
|
994
|
+
})
|
|
995
|
+
]
|
|
996
|
+
});
|
|
997
|
+
});
|
|
998
|
+
const Sidebar = component$(({ floating, ...props }) => {
|
|
999
|
+
const menu = useSignal(false);
|
|
1000
|
+
return /* @__PURE__ */ jsx("aside", {
|
|
1001
|
+
...props,
|
|
1002
|
+
class: {
|
|
1003
|
+
"lg:w-100 fixed lg:sticky lum-card top-0 left-0 z-[40] px-0 lg:px-6 pb-0": true,
|
|
1004
|
+
"w-full rounded-none pt-14 lg:pt-20 lg:h-dvh lg:border-y-0 border-l-0": !floating,
|
|
1005
|
+
"mt-16 lg:mt-22 lg:ml-4 pt-4 mx-2 w-[calc(100%-16px)]": floating,
|
|
1006
|
+
...props.class
|
|
1008
1007
|
},
|
|
1008
|
+
children: /* @__PURE__ */ jsxs("nav", {
|
|
1009
|
+
id: "docs-sidebar",
|
|
1010
|
+
class: "min-h-full relative",
|
|
1011
|
+
children: [
|
|
1012
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1013
|
+
class: "flex items-center gap-3 pb-3 px-2 border-b border-lum-border/10",
|
|
1014
|
+
children: [
|
|
1015
|
+
/* @__PURE__ */ jsx("div", {
|
|
1016
|
+
class: "flex-1",
|
|
1017
|
+
children: /* @__PURE__ */ jsx(Slot, {
|
|
1018
|
+
name: "title"
|
|
1019
|
+
})
|
|
1020
|
+
}),
|
|
1021
|
+
/* @__PURE__ */ jsx("button", {
|
|
1022
|
+
class: "lum-btn lum-bg-transparent p-2 lg:hidden",
|
|
1023
|
+
onClick$: () => {
|
|
1024
|
+
menu.value = !menu.value;
|
|
1025
|
+
const abortController = new AbortController();
|
|
1026
|
+
document.addEventListener("click", (e) => {
|
|
1027
|
+
if (!e.composedPath().includes(document.querySelector("aside")) || e.target instanceof HTMLAnchorElement) {
|
|
1028
|
+
menu.value = false;
|
|
1029
|
+
abortController.abort();
|
|
1030
|
+
}
|
|
1031
|
+
}, {
|
|
1032
|
+
signal: abortController.signal
|
|
1033
|
+
});
|
|
1034
|
+
},
|
|
1035
|
+
"aria-label": "Toggle Menu",
|
|
1036
|
+
children: /* @__PURE__ */ jsx(Menu, {
|
|
1037
|
+
size: 24
|
|
1038
|
+
})
|
|
1039
|
+
})
|
|
1040
|
+
]
|
|
1041
|
+
}),
|
|
1042
|
+
/* @__PURE__ */ jsx("div", {
|
|
1043
|
+
class: {
|
|
1044
|
+
"flex-col gap-3 my-4 mx-4 lg:mx-0": true,
|
|
1045
|
+
"hidden lg:flex": !menu.value,
|
|
1046
|
+
"flex": menu.value
|
|
1047
|
+
},
|
|
1048
|
+
children: /* @__PURE__ */ jsx(Slot, {})
|
|
1049
|
+
})
|
|
1050
|
+
]
|
|
1051
|
+
})
|
|
1052
|
+
});
|
|
1053
|
+
});
|
|
1054
|
+
const Toggle = component$(({ checkbox, round, label, ...props }) => {
|
|
1055
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1056
|
+
class: "flex touch-manipulation items-center gap-3",
|
|
1009
1057
|
children: [
|
|
1010
1058
|
/* @__PURE__ */ jsxs("label", {
|
|
1011
1059
|
class: "relative inline-flex cursor-pointer items-center",
|
|
@@ -1013,9 +1061,7 @@ const Toggle = component$(({ checkbox, round, label, ...props }) => {
|
|
|
1013
1061
|
/* @__PURE__ */ jsx("input", {
|
|
1014
1062
|
type: "checkbox",
|
|
1015
1063
|
...props,
|
|
1016
|
-
class:
|
|
1017
|
-
"peer sr-only": true
|
|
1018
|
-
}
|
|
1064
|
+
class: "peer sr-only"
|
|
1019
1065
|
}),
|
|
1020
1066
|
/* @__PURE__ */ jsx("div", {
|
|
1021
1067
|
class: {
|
|
@@ -1516,6 +1562,7 @@ export {
|
|
|
1516
1562
|
NumberInputRaw,
|
|
1517
1563
|
SelectMenu,
|
|
1518
1564
|
SelectMenuRaw,
|
|
1565
|
+
Sidebar,
|
|
1519
1566
|
Toggle,
|
|
1520
1567
|
blobColorClasses
|
|
1521
1568
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PropsOf } from '@builder.io/qwik';
|
|
2
|
-
interface
|
|
2
|
+
interface NavProps extends Omit<PropsOf<'nav'>, 'class'> {
|
|
3
3
|
class?: {
|
|
4
4
|
[key: string]: boolean;
|
|
5
5
|
};
|
|
@@ -8,5 +8,5 @@ interface NavContainerProps extends Omit<PropsOf<'nav'>, 'class'> {
|
|
|
8
8
|
nohamburger?: boolean;
|
|
9
9
|
colorClass?: string;
|
|
10
10
|
}
|
|
11
|
-
export declare const Nav: import("@builder.io/qwik").Component<
|
|
11
|
+
export declare const Nav: import("@builder.io/qwik").Component<NavProps>;
|
|
12
12
|
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PropsOf } from '@builder.io/qwik';
|
|
2
|
+
interface SidebarProps extends Omit<PropsOf<'aside'>, 'class'> {
|
|
3
|
+
class?: {
|
|
4
|
+
[key: string]: boolean;
|
|
5
|
+
};
|
|
6
|
+
floating?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const Sidebar: import("@builder.io/qwik").Component<SidebarProps>;
|
|
9
|
+
export {};
|
|
@@ -2,7 +2,8 @@ export * from './elements/Anchor';
|
|
|
2
2
|
export * from './elements/Blobs';
|
|
3
3
|
export * from './elements/ColorPicker';
|
|
4
4
|
export * from './elements/Dropdown';
|
|
5
|
-
export * from './elements/SelectMenu';
|
|
6
5
|
export * from './elements/Nav';
|
|
7
6
|
export * from './elements/NumberInput';
|
|
7
|
+
export * from './elements/SelectMenu';
|
|
8
|
+
export * from './elements/Sidebar';
|
|
8
9
|
export * from './elements/Toggle';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luminescent/ui-qwik",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Luminescent UI library",
|
|
3
|
+
"version": "5.0.0-0",
|
|
4
|
+
"description": "Luminescent UI library - Qwik",
|
|
5
5
|
"main": "./lib/index.qwik.mjs",
|
|
6
6
|
"qwik": "./lib/index.qwik.mjs",
|
|
7
7
|
"types": "./lib-types/index.d.ts",
|
|
@@ -38,8 +38,6 @@
|
|
|
38
38
|
"@tailwindcss/vite": "^4.1.11",
|
|
39
39
|
"@types/eslint": "^9.6.1",
|
|
40
40
|
"@types/node": "^24.0.10",
|
|
41
|
-
"@typescript-eslint/eslint-plugin": "^8.35.1",
|
|
42
|
-
"@typescript-eslint/parser": "^8.35.1",
|
|
43
41
|
"eslint": "^9.30.1",
|
|
44
42
|
"eslint-plugin-qwik": "^1.14.1",
|
|
45
43
|
"globals": "^16.3.0",
|
|
@@ -52,7 +50,7 @@
|
|
|
52
50
|
"vite-tsconfig-paths": "^5.1.4"
|
|
53
51
|
},
|
|
54
52
|
"peerDependencies": {
|
|
55
|
-
"@luminescent/ui": "
|
|
53
|
+
"@luminescent/ui": "5.0.0-0"
|
|
56
54
|
},
|
|
57
55
|
"scripts": {
|
|
58
56
|
"build": "qwik build",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './docs/Anchor';
|
|
2
|
-
export * from './docs/Blobs';
|
|
3
|
-
export * from './docs/ColorPicker';
|
|
4
|
-
export * from './docs/Dropdown';
|
|
5
|
-
export * from './docs/IconsLogos';
|
|
6
|
-
export * from './docs/Nav';
|
|
7
|
-
export * from './docs/NumberInput';
|
|
8
|
-
export * from './docs/Toggle';
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { PropsOf } from '@builder.io/qwik';
|
|
2
|
-
interface HeaderProps extends Omit<PropsOf<'h2'>, 'class'> {
|
|
3
|
-
class?: {
|
|
4
|
-
[key: string]: boolean;
|
|
5
|
-
};
|
|
6
|
-
id?: string;
|
|
7
|
-
anchor?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare const Header: import("@builder.io/qwik").Component<HeaderProps>;
|
|
10
|
-
export {};
|