@pathscale/ui 0.0.1 → 0.0.3

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.
Files changed (131) hide show
  1. package/dist/Accordion-JZGWxBMK.d.ts +27 -0
  2. package/dist/Autocomplete-gLkjMHrc.d.ts +28 -0
  3. package/dist/Checkbox-BjaweaOH.d.ts +40 -0
  4. package/dist/Field-DfUn85_1.d.ts +49 -0
  5. package/dist/{Input-BQbTzjIO.d.ts → Input-C1bm4HGf.d.ts} +1 -1
  6. package/dist/Pagination-CJtlFMHy.d.ts +43 -0
  7. package/dist/Progress-gN0xqhAF.d.ts +64 -0
  8. package/dist/Select-CWCDBvec.d.ts +44 -0
  9. package/dist/Steps-1miUeyCD.d.ts +34 -0
  10. package/dist/Switch-BiKX7HZ2.d.ts +72 -0
  11. package/dist/Table-CGa6Nop3.d.ts +39 -0
  12. package/dist/Tabs-BEnRV6GG.d.ts +42 -0
  13. package/dist/Tag-BPrhn-Ne.d.ts +42 -0
  14. package/dist/Timeline-Bd4SxHMT.d.ts +14 -0
  15. package/dist/Tooltip-BfPongoz.d.ts +53 -0
  16. package/dist/Upload-BrFuZ4JA.d.ts +39 -0
  17. package/dist/chunk/3IHANYRN.js +98 -0
  18. package/dist/chunk/3VOILEMN.js +187 -0
  19. package/dist/chunk/4TWLQ3IA.js +103 -0
  20. package/dist/chunk/6SBH3KSM.jsx +96 -0
  21. package/dist/chunk/7ROVLN3J.js +175 -0
  22. package/dist/chunk/BBDVIXAH.jsx +194 -0
  23. package/dist/chunk/{4RCWSX7S.jsx → C4745OZS.jsx} +7 -7
  24. package/dist/chunk/C4YO33NN.jsx +179 -0
  25. package/dist/chunk/CJZGTNJZ.js +115 -0
  26. package/dist/chunk/D2BEL4SM.jsx +169 -0
  27. package/dist/chunk/DBQ7IOPU.js +189 -0
  28. package/dist/chunk/DNTGSCVF.jsx +100 -0
  29. package/dist/chunk/DSTUGZW6.jsx +81 -0
  30. package/dist/chunk/ELRAUORW.jsx +179 -0
  31. package/dist/chunk/FKSQPGOD.jsx +170 -0
  32. package/dist/chunk/FPUQ25SO.js +137 -0
  33. package/dist/chunk/GLEAR2TS.jsx +160 -0
  34. package/dist/chunk/GMIXRYN3.js +138 -0
  35. package/dist/chunk/HWAGW5N4.jsx +118 -0
  36. package/dist/chunk/JWRGKHDO.js +172 -0
  37. package/dist/chunk/KV6LTJHI.jsx +175 -0
  38. package/dist/chunk/LAQPAV5I.jsx +187 -0
  39. package/dist/chunk/LI3HCFL7.jsx +132 -0
  40. package/dist/chunk/MAX47D6F.js +99 -0
  41. package/dist/chunk/{2JGZSAW5.js → MI773TMC.js} +6 -6
  42. package/dist/chunk/MMTAND25.jsx +126 -0
  43. package/dist/chunk/MXG3MBEN.jsx +148 -0
  44. package/dist/chunk/MYERRMTM.js +200 -0
  45. package/dist/chunk/NZKPDBTE.js +118 -0
  46. package/dist/chunk/OSJ3P7PI.js +189 -0
  47. package/dist/chunk/P2L6LFLS.js +144 -0
  48. package/dist/chunk/QLESLIWS.jsx +110 -0
  49. package/dist/chunk/QONDPQ2I.jsx +105 -0
  50. package/dist/chunk/QYEMOKUG.js +125 -0
  51. package/dist/chunk/S3ZDSQSV.js +98 -0
  52. package/dist/chunk/SCJSBRV2.jsx +39 -0
  53. package/dist/chunk/STKRVQR6.jsx +130 -0
  54. package/dist/chunk/{NZZRKP74.js → TFLJI242.js} +1 -25
  55. package/dist/chunk/TT2JYGLU.js +218 -0
  56. package/dist/chunk/V6Y5E7BL.js +133 -0
  57. package/dist/chunk/VN5BKHA2.jsx +97 -0
  58. package/dist/chunk/WOT36Q7O.js +166 -0
  59. package/dist/chunk/WUZETUQR.js +92 -0
  60. package/dist/chunk/XD34JKSU.jsx +201 -0
  61. package/dist/chunk/{GA2HCFRS.jsx → YAQK2KFY.jsx} +1 -35
  62. package/dist/chunk/YMO6RPS6.js +26 -0
  63. package/dist/components/Progress/index.d.ts +4 -39
  64. package/dist/components/Progress/index.js +1 -278
  65. package/dist/components/Progress/index.jsx +4 -199
  66. package/dist/components/accordion/index.d.ts +5 -24
  67. package/dist/components/accordion/index.js +1 -118
  68. package/dist/components/accordion/index.jsx +3 -100
  69. package/dist/components/autocomplete/index.d.ts +8 -0
  70. package/dist/components/autocomplete/index.js +1 -0
  71. package/dist/components/autocomplete/index.jsx +7 -0
  72. package/dist/components/avatar/index.js +1 -1
  73. package/dist/components/avatar/index.jsx +3 -3
  74. package/dist/components/breadcrumb/index.d.ts +2 -2
  75. package/dist/components/breadcrumb/index.js +1 -133
  76. package/dist/components/breadcrumb/index.jsx +4 -120
  77. package/dist/components/button/index.js +1 -1
  78. package/dist/components/button/index.jsx +2 -1
  79. package/dist/components/checkbox/index.d.ts +5 -37
  80. package/dist/components/checkbox/index.js +1 -137
  81. package/dist/components/checkbox/index.jsx +3 -143
  82. package/dist/components/dropdown/index.d.ts +43 -0
  83. package/dist/components/dropdown/index.js +1 -0
  84. package/dist/components/dropdown/index.jsx +12 -0
  85. package/dist/components/field/index.d.ts +7 -0
  86. package/dist/components/field/index.js +1 -0
  87. package/dist/components/field/index.jsx +7 -0
  88. package/dist/components/input/index.d.ts +2 -2
  89. package/dist/components/menu/index.d.ts +66 -0
  90. package/dist/components/menu/index.js +1 -0
  91. package/dist/components/menu/index.jsx +11 -0
  92. package/dist/components/navbar/index.d.ts +74 -0
  93. package/dist/components/navbar/index.js +1 -0
  94. package/dist/components/navbar/index.jsx +11 -0
  95. package/dist/components/pagination/index.d.ts +5 -40
  96. package/dist/components/pagination/index.js +1 -189
  97. package/dist/components/pagination/index.jsx +3 -174
  98. package/dist/components/select/index.d.ts +5 -41
  99. package/dist/components/select/index.js +1 -98
  100. package/dist/components/select/index.jsx +3 -91
  101. package/dist/components/steps/index.d.ts +8 -0
  102. package/dist/components/steps/index.js +1 -0
  103. package/dist/components/steps/index.jsx +7 -0
  104. package/dist/components/switch/index.d.ts +5 -69
  105. package/dist/components/switch/index.js +1 -144
  106. package/dist/components/switch/index.jsx +3 -155
  107. package/dist/components/table/index.d.ts +8 -0
  108. package/dist/components/table/index.js +1 -0
  109. package/dist/components/table/index.jsx +7 -0
  110. package/dist/components/tabs/index.d.ts +5 -39
  111. package/dist/components/tabs/index.js +1 -166
  112. package/dist/components/tabs/index.jsx +3 -170
  113. package/dist/components/tag/index.d.ts +5 -39
  114. package/dist/components/tag/index.js +1 -115
  115. package/dist/components/tag/index.jsx +3 -127
  116. package/dist/components/timeline/index.d.ts +7 -0
  117. package/dist/components/timeline/index.js +1 -0
  118. package/dist/components/timeline/index.jsx +7 -0
  119. package/dist/components/toast/index.d.ts +24 -0
  120. package/dist/components/toast/index.js +1 -0
  121. package/dist/components/toast/index.jsx +11 -0
  122. package/dist/components/tooltip/index.d.ts +5 -50
  123. package/dist/components/tooltip/index.js +1 -103
  124. package/dist/components/tooltip/index.jsx +3 -95
  125. package/dist/components/upload/index.d.ts +5 -36
  126. package/dist/components/upload/index.js +1 -98
  127. package/dist/components/upload/index.jsx +3 -105
  128. package/dist/index.d.ts +22 -2
  129. package/dist/index.js +23 -2
  130. package/dist/index.jsx +108 -8
  131. package/package.json +1 -1
@@ -0,0 +1,98 @@
1
+ import { cva, classes } from './HKS7ET6T.js';
2
+ import { template, spread, mergeProps, insert, createComponent, memo } from 'solid-js/web';
3
+ import { splitProps, createMemo, untrack, Show } from 'solid-js';
4
+
5
+ // src/components/select/Select.styles.ts
6
+ var selectVariants = cva(
7
+ [
8
+ "relative inline-flex items-center appearance-none",
9
+ "border outline-none",
10
+ "transition bg-white text-black",
11
+ "disabled:opacity-50 disabled:cursor-not-allowed"
12
+ ],
13
+ {
14
+ variants: {
15
+ size: {
16
+ sm: "text-sm px-2 py-1",
17
+ md: "text-base px-3 py-2",
18
+ lg: "text-lg px-4 py-2"
19
+ },
20
+ color: {
21
+ primary: "border-gray-300 focus:border-primary",
22
+ info: "border-blue-300 focus:border-blue-500",
23
+ success: "border-green-300 focus:border-green-500",
24
+ warning: "border-yellow-300 focus:border-yellow-500",
25
+ danger: "border-red-300 focus:border-red-500"
26
+ },
27
+ loading: {
28
+ true: "cursor-wait opacity-75",
29
+ false: ""
30
+ },
31
+ expanded: {
32
+ true: "w-full",
33
+ false: "w-fit"
34
+ },
35
+ rounded: {
36
+ true: "rounded",
37
+ false: "rounded-none"
38
+ }
39
+ },
40
+ defaultVariants: {
41
+ size: "md",
42
+ color: "primary",
43
+ loading: false,
44
+ expanded: false,
45
+ rounded: false
46
+ }
47
+ }
48
+ );
49
+
50
+ // src/components/select/Select.tsx
51
+ var _tmpl$ = /* @__PURE__ */ template(`<option value disabled hidden>`);
52
+ var _tmpl$2 = /* @__PURE__ */ template(`<select>`);
53
+ var Select = (props) => {
54
+ const [localProps, variantProps, otherProps] = splitProps(props, ["placeholder", "value", "nativeSize", "onChange", "onBlur", "onFocus"], ["class", ...selectVariants.variantKeys]);
55
+ const empty = createMemo(() => untrack(() => localProps.value === null || localProps.value === void 0));
56
+ const selectClasses = createMemo(() => classes(selectVariants(variantProps), variantProps.class));
57
+ return (() => {
58
+ var _el$ = _tmpl$2();
59
+ spread(_el$, mergeProps({
60
+ get ["class"]() {
61
+ return selectClasses();
62
+ },
63
+ get size() {
64
+ return localProps.nativeSize;
65
+ },
66
+ get value() {
67
+ return localProps.value;
68
+ },
69
+ get onChange() {
70
+ return localProps.onChange;
71
+ },
72
+ get onFocus() {
73
+ return localProps.onFocus;
74
+ },
75
+ get onBlur() {
76
+ return localProps.onBlur;
77
+ }
78
+ }, otherProps), false, true);
79
+ insert(_el$, createComponent(Show, {
80
+ get when() {
81
+ return memo(() => !!localProps.placeholder)() && empty();
82
+ },
83
+ get children() {
84
+ var _el$2 = _tmpl$();
85
+ insert(_el$2, () => localProps.placeholder);
86
+ return _el$2;
87
+ }
88
+ }), null);
89
+ insert(_el$, () => props.children, null);
90
+ return _el$;
91
+ })();
92
+ };
93
+ var Select_default = Select;
94
+
95
+ // src/components/select/index.ts
96
+ var select_default = Select_default;
97
+
98
+ export { select_default };
@@ -0,0 +1,187 @@
1
+ import { cva, classes } from './HKS7ET6T.js';
2
+ import { template, spread, mergeProps, insert, createComponent, Dynamic, effect, className } from 'solid-js/web';
3
+ import { splitProps, Show, createMemo, createSignal } from 'solid-js';
4
+
5
+ // src/components/menu/Menu.styles.ts
6
+ var menuWrapper = cva("bg-white border border-gray-200 rounded shadow", {
7
+ variants: {
8
+ inline: {
9
+ true: "flex space-x-4",
10
+ false: "block"
11
+ }
12
+ },
13
+ defaultVariants: {
14
+ inline: false
15
+ }
16
+ });
17
+ var listWrapper = cva("px-4 py-2", {
18
+ variants: {
19
+ label: {
20
+ true: "pt-6",
21
+ false: ""
22
+ }
23
+ },
24
+ defaultVariants: {
25
+ label: false
26
+ }
27
+ });
28
+ var itemVariants = cva(
29
+ "px-4 py-2 cursor-pointer select-none transition-colors",
30
+ {
31
+ variants: {
32
+ active: {
33
+ true: "bg-blue-100 font-semibold",
34
+ false: "hover:bg-blue-500"
35
+ },
36
+ expanded: {
37
+ true: "bg-gray-50 text-black",
38
+ false: ""
39
+ },
40
+ disabled: {
41
+ true: "opacity-50 cursor-not-allowed text-gray-700",
42
+ false: ""
43
+ }
44
+ },
45
+ compoundVariants: [
46
+ {
47
+ active: true,
48
+ expanded: true,
49
+ class: "bg-blue-200"
50
+ }
51
+ ],
52
+ defaultVariants: {
53
+ active: false,
54
+ expanded: false,
55
+ disabled: false
56
+ }
57
+ }
58
+ );
59
+ var itemDetailWrapper = cva(
60
+ "ml-4 border-l border-gray-200 mt-1 pl-2"
61
+ );
62
+
63
+ // src/components/menu/Menu.tsx
64
+ var _tmpl$ = /* @__PURE__ */ template(`<div>`);
65
+ var Menu = (props) => {
66
+ const [local, variantProps, otherProps] = splitProps(props, ["class", "className", "children", "inline"], Object.keys(menuWrapper.variantKeys ?? {}));
67
+ return (() => {
68
+ var _el$ = _tmpl$();
69
+ spread(_el$, mergeProps({
70
+ get ["class"]() {
71
+ return classes(menuWrapper({
72
+ inline: !!variantProps.inline
73
+ }), local.class, local.className);
74
+ }
75
+ }, otherProps), false, true);
76
+ insert(_el$, () => local.children);
77
+ return _el$;
78
+ })();
79
+ };
80
+ var Menu_default = Menu;
81
+ var _tmpl$2 = /* @__PURE__ */ template(`<div class="px-4 pb-2 font-medium text-gray-700">`);
82
+ var _tmpl$22 = /* @__PURE__ */ template(`<div><div class="flex flex-col">`);
83
+ var MenuList = (props) => {
84
+ const [local, variantProps, otherProps] = splitProps(props, ["class", "children", "label"], Object.keys(listWrapper.variantKeys ?? {}));
85
+ return (() => {
86
+ var _el$ = _tmpl$22(), _el$3 = _el$.firstChild;
87
+ spread(_el$, mergeProps({
88
+ get ["class"]() {
89
+ return classes(listWrapper({
90
+ label: !!local.label
91
+ }), local.class);
92
+ }
93
+ }, otherProps), false, true);
94
+ insert(_el$, createComponent(Show, {
95
+ get when() {
96
+ return local.label;
97
+ },
98
+ get children() {
99
+ var _el$2 = _tmpl$2();
100
+ insert(_el$2, () => local.label);
101
+ return _el$2;
102
+ }
103
+ }), _el$3);
104
+ insert(_el$3, () => local.children);
105
+ return _el$;
106
+ })();
107
+ };
108
+ var MenuList_default = MenuList;
109
+ var _tmpl$3 = /* @__PURE__ */ template(`<span class="ml-2 text-gray-500">`);
110
+ var _tmpl$23 = /* @__PURE__ */ template(`<div><div class="flex items-center justify-between"><span>`);
111
+ var _tmpl$32 = /* @__PURE__ */ template(`<div>`);
112
+ var MenuItem = (props) => {
113
+ const [local, variantProps, rest] = splitProps(props, ["class", "className", "label", "active", "expanded", "disabled", "tag", "to", "target", "children"], Object.keys(itemVariants.variantKeys ?? {}));
114
+ const hasChildren = createMemo(() => !!local.children);
115
+ const isControlled = createMemo(() => local.expanded !== void 0);
116
+ const [internalExpanded, setInternalExpanded] = createSignal(false);
117
+ const isExpanded = createMemo(() => isControlled() ? !!local.expanded : internalExpanded());
118
+ const toggleExpand = () => {
119
+ if (!isControlled() && hasChildren() && !local.disabled) {
120
+ setInternalExpanded((prev) => !prev);
121
+ }
122
+ };
123
+ const onKeyDown = (e) => {
124
+ if (local.disabled) return;
125
+ if (e.key === "Enter" || e.key === " ") {
126
+ e.preventDefault();
127
+ toggleExpand();
128
+ }
129
+ };
130
+ const tagName = local.to ? "a" : local.tag ?? "div";
131
+ const focusableProps = !local.to && !local.disabled ? {
132
+ tabIndex: 0
133
+ } : {};
134
+ return createComponent(Dynamic, mergeProps({
135
+ component: tagName,
136
+ get ["class"]() {
137
+ return classes(local.class, local.className, "w-full");
138
+ },
139
+ get href() {
140
+ return local.to;
141
+ },
142
+ get target() {
143
+ return local.target;
144
+ },
145
+ get ["aria-disabled"]() {
146
+ return local.disabled;
147
+ },
148
+ onClick: toggleExpand,
149
+ onKeyDown
150
+ }, focusableProps, rest, {
151
+ get children() {
152
+ return [(() => {
153
+ var _el$ = _tmpl$23(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
154
+ insert(_el$3, () => local.label);
155
+ insert(_el$2, createComponent(Show, {
156
+ get when() {
157
+ return hasChildren();
158
+ },
159
+ get children() {
160
+ var _el$4 = _tmpl$3();
161
+ insert(_el$4, () => isExpanded() ? "\u25BE" : "\u25B8");
162
+ return _el$4;
163
+ }
164
+ }), null);
165
+ effect(() => className(_el$, itemVariants({
166
+ active: !!local.active,
167
+ expanded: isExpanded(),
168
+ disabled: !!local.disabled
169
+ })));
170
+ return _el$;
171
+ })(), createComponent(Show, {
172
+ get when() {
173
+ return isExpanded();
174
+ },
175
+ get children() {
176
+ var _el$5 = _tmpl$32();
177
+ insert(_el$5, () => local.children);
178
+ effect(() => className(_el$5, itemDetailWrapper()));
179
+ return _el$5;
180
+ }
181
+ })];
182
+ }
183
+ }));
184
+ };
185
+ var MenuItem_default = MenuItem;
186
+
187
+ export { MenuItem_default, MenuList_default, Menu_default };
@@ -0,0 +1,103 @@
1
+ import { cva } from './HKS7ET6T.js';
2
+ import { template, spread, insert, createComponent, effect, className } from 'solid-js/web';
3
+ import { splitProps, Show } from 'solid-js';
4
+
5
+ // src/components/tooltip/Tooltip.styles.ts
6
+ var tooltipVariants = cva(
7
+ [
8
+ "absolute z-10 px-3 py-1 text-white text-sm",
9
+ "opacity-0 group-hover:opacity-100",
10
+ "pointer-events-none transition-opacity duration-200",
11
+ "max-w-xs break-words",
12
+ "after:content-[''] after:absolute after:w-2 after:h-2 after:rotate-45 after:bg-inherit"
13
+ ].join(" "),
14
+ {
15
+ variants: {
16
+ type: {
17
+ info: "bg-blue-500",
18
+ success: "bg-green-500",
19
+ warning: "bg-yellow-500",
20
+ danger: "bg-red-500",
21
+ primary: "bg-indigo-500",
22
+ gray: "bg-gray-700"
23
+ },
24
+ size: {
25
+ sm: "text-xs",
26
+ md: "text-sm",
27
+ lg: "text-base"
28
+ },
29
+ rounded: {
30
+ true: "rounded",
31
+ false: "rounded-none"
32
+ },
33
+ dashed: {
34
+ true: "border border-white border-dashed",
35
+ false: ""
36
+ },
37
+ multilined: {
38
+ true: "whitespace-pre-wrap",
39
+ false: "whitespace-nowrap"
40
+ },
41
+ animated: {
42
+ true: "transition-opacity duration-300 ease-in-out",
43
+ false: ""
44
+ },
45
+ position: {
46
+ top: "bottom-full left-1/2 -translate-x-1/2 mb-1 after:top-full after:left-1/2 after:-translate-x-1/2 after:-mt-1",
47
+ bottom: "top-full left-1/2 -translate-x-1/2 mt-1 after:bottom-full after:left-1/2 after:-translate-x-1/2 after:-mb-1",
48
+ left: "right-full top-1/2 -translate-y-1/2 mr-1 after:left-full after:top-1/2 after:-translate-y-1/2 after:-ml-1",
49
+ right: "left-full top-1/2 -translate-y-1/2 ml-1 after:right-full after:top-1/2 after:-translate-y-1/2 after:-mr-1"
50
+ }
51
+ },
52
+ defaultVariants: {
53
+ type: "primary",
54
+ size: "md",
55
+ rounded: true,
56
+ dashed: false,
57
+ multilined: false,
58
+ animated: true,
59
+ position: "top"
60
+ }
61
+ }
62
+ );
63
+
64
+ // src/components/tooltip/Tooltip.tsx
65
+ var _tmpl$ = /* @__PURE__ */ template(`<span>`);
66
+ var _tmpl$2 = /* @__PURE__ */ template(`<span class="relative inline-block group">`);
67
+ var Tooltip = (props) => {
68
+ const [local, variantProps, otherProps] = splitProps(props, ["label", "delay", "always", "children"], ["type", "size", "position", "rounded", "dashed", "multilined", "animated"]);
69
+ return (() => {
70
+ var _el$ = _tmpl$2();
71
+ spread(_el$, otherProps, false, true);
72
+ insert(_el$, () => local.children, null);
73
+ insert(_el$, createComponent(Show, {
74
+ get when() {
75
+ return local.label;
76
+ },
77
+ get children() {
78
+ var _el$2 = _tmpl$();
79
+ _el$2.style.setProperty("pointer-events", "none");
80
+ insert(_el$2, () => local.label);
81
+ effect((_p$) => {
82
+ var _v$ = tooltipVariants(variantProps), _v$2 = `${local.delay ?? 0}ms`, _v$3 = local.always ? 1 : void 0;
83
+ _v$ !== _p$.e && className(_el$2, _p$.e = _v$);
84
+ _v$2 !== _p$.t && ((_p$.t = _v$2) != null ? _el$2.style.setProperty("transition-delay", _v$2) : _el$2.style.removeProperty("transition-delay"));
85
+ _v$3 !== _p$.a && ((_p$.a = _v$3) != null ? _el$2.style.setProperty("opacity", _v$3) : _el$2.style.removeProperty("opacity"));
86
+ return _p$;
87
+ }, {
88
+ e: void 0,
89
+ t: void 0,
90
+ a: void 0
91
+ });
92
+ return _el$2;
93
+ }
94
+ }), null);
95
+ return _el$;
96
+ })();
97
+ };
98
+ var Tooltip_default = Tooltip;
99
+
100
+ // src/components/tooltip/index.ts
101
+ var tooltip_default = Tooltip_default;
102
+
103
+ export { tooltip_default };
@@ -0,0 +1,96 @@
1
+ import {
2
+ classes,
3
+ cva
4
+ } from "./P7WPLZNA.jsx";
5
+
6
+ // src/components/select/Select.tsx
7
+ import {
8
+ splitProps,
9
+ Show,
10
+ createMemo,
11
+ untrack
12
+ } from "solid-js";
13
+
14
+ // src/components/select/Select.styles.ts
15
+ var selectVariants = cva(
16
+ [
17
+ "relative inline-flex items-center appearance-none",
18
+ "border outline-none",
19
+ "transition bg-white text-black",
20
+ "disabled:opacity-50 disabled:cursor-not-allowed"
21
+ ],
22
+ {
23
+ variants: {
24
+ size: {
25
+ sm: "text-sm px-2 py-1",
26
+ md: "text-base px-3 py-2",
27
+ lg: "text-lg px-4 py-2"
28
+ },
29
+ color: {
30
+ primary: "border-gray-300 focus:border-primary",
31
+ info: "border-blue-300 focus:border-blue-500",
32
+ success: "border-green-300 focus:border-green-500",
33
+ warning: "border-yellow-300 focus:border-yellow-500",
34
+ danger: "border-red-300 focus:border-red-500"
35
+ },
36
+ loading: {
37
+ true: "cursor-wait opacity-75",
38
+ false: ""
39
+ },
40
+ expanded: {
41
+ true: "w-full",
42
+ false: "w-fit"
43
+ },
44
+ rounded: {
45
+ true: "rounded",
46
+ false: "rounded-none"
47
+ }
48
+ },
49
+ defaultVariants: {
50
+ size: "md",
51
+ color: "primary",
52
+ loading: false,
53
+ expanded: false,
54
+ rounded: false
55
+ }
56
+ }
57
+ );
58
+
59
+ // src/components/select/Select.tsx
60
+ var Select = (props) => {
61
+ const [localProps, variantProps, otherProps] = splitProps(
62
+ props,
63
+ ["placeholder", "value", "nativeSize", "onChange", "onBlur", "onFocus"],
64
+ ["class", ...selectVariants.variantKeys]
65
+ );
66
+ const empty = createMemo(
67
+ () => untrack(() => localProps.value === null || localProps.value === void 0)
68
+ );
69
+ const selectClasses = createMemo(
70
+ () => classes(selectVariants(variantProps), variantProps.class)
71
+ );
72
+ return <select
73
+ class={selectClasses()}
74
+ size={localProps.nativeSize}
75
+ value={localProps.value}
76
+ onChange={localProps.onChange}
77
+ onFocus={localProps.onFocus}
78
+ onBlur={localProps.onBlur}
79
+ {...otherProps}
80
+ >
81
+ <Show when={localProps.placeholder && empty()}>
82
+ <option value="" disabled hidden>
83
+ {localProps.placeholder}
84
+ </option>
85
+ </Show>
86
+ {props.children}
87
+ </select>;
88
+ };
89
+ var Select_default = Select;
90
+
91
+ // src/components/select/index.ts
92
+ var select_default = Select_default;
93
+
94
+ export {
95
+ select_default
96
+ };
@@ -0,0 +1,175 @@
1
+ import { buttonVariants } from './TFLJI242.js';
2
+ import { cva, classes } from './HKS7ET6T.js';
3
+ import { delegateEvents, template, spread, mergeProps, insert, addEventListener, use, createComponent, effect, className, setAttribute } from 'solid-js/web';
4
+ import { splitProps, createMemo, Show, createSignal, onMount, onCleanup } from 'solid-js';
5
+
6
+ function useDropdown(trigger, disabled = false) {
7
+ const [open, setOpen] = createSignal(false);
8
+ let ref;
9
+ const toggle = () => {
10
+ if (!disabled && trigger === "click") {
11
+ setOpen((v) => !v);
12
+ }
13
+ };
14
+ const onEnter = () => {
15
+ if (!disabled && trigger === "hover") setOpen(true);
16
+ };
17
+ const onLeave = () => {
18
+ if (!disabled && trigger === "hover") setOpen(false);
19
+ };
20
+ const onClickOutside = (e) => {
21
+ if (trigger === "click" && ref && !ref.contains(e.target)) {
22
+ setOpen(false);
23
+ }
24
+ };
25
+ onMount(() => {
26
+ document.addEventListener("click", onClickOutside);
27
+ onCleanup(() => document.removeEventListener("click", onClickOutside));
28
+ });
29
+ return {
30
+ open,
31
+ ref: (el) => ref = el,
32
+ toggle,
33
+ onEnter,
34
+ onLeave
35
+ };
36
+ }
37
+
38
+ // src/components/dropdown/Dropdown.styles.ts
39
+ var dropdownVariants = cva(
40
+ [
41
+ "absolute mt-2 shadow-lg z-10",
42
+ "w-max rounded-md bg-white border border-gray-300",
43
+ "transition-all duration-150 ease-in-out",
44
+ "flex flex-col"
45
+ ],
46
+ {
47
+ variants: {
48
+ position: {
49
+ "bottom-left": "left-0 top-full text-black",
50
+ "bottom-right": "right-0 top-full text-black",
51
+ "top-left": "left-0 bottom-full text-black",
52
+ "top-right": "right-0 bottom-full text-black"
53
+ },
54
+ open: {
55
+ true: "block",
56
+ false: "hidden"
57
+ }
58
+ },
59
+ defaultVariants: {
60
+ position: "bottom-left",
61
+ open: false
62
+ }
63
+ }
64
+ );
65
+ var dropdownItemVariants = cva(
66
+ "px-4 py-2 cursor-pointer transition-colors duration-150 ease-in-out hover:bg-gray-100",
67
+ {
68
+ variants: {
69
+ hasLink: { true: "p-0 text-blue-600 hover:underline", false: "" }
70
+ },
71
+ defaultVariants: { hasLink: false }
72
+ }
73
+ );
74
+
75
+ // src/components/dropdown/DropdownMenu.tsx
76
+ var _tmpl$ = /* @__PURE__ */ template(`<div>`);
77
+ var DropdownMenu = (props) => {
78
+ const [local, other] = splitProps(props, ["open", "position", "children"]);
79
+ return (() => {
80
+ var _el$ = _tmpl$();
81
+ spread(_el$, mergeProps({
82
+ get ["class"]() {
83
+ return dropdownVariants({
84
+ open: local.open,
85
+ position: local.position
86
+ });
87
+ }
88
+ }, other, {
89
+ "id": "dropdown-menu",
90
+ "role": "menu"
91
+ }), false, true);
92
+ insert(_el$, () => local.children);
93
+ return _el$;
94
+ })();
95
+ };
96
+ var DropdownMenu_default = DropdownMenu;
97
+
98
+ // src/components/dropdown/Dropdown.tsx
99
+ var _tmpl$2 = /* @__PURE__ */ template(`<div><button type=button aria-controls=dropdown-menu>`);
100
+ var Dropdown = (props) => {
101
+ const [localProps, variantProps, restProps] = splitProps(props, ["label", "disabledLabel", "trigger", "children", "disabled", "color", "class", "className"], Object.keys(dropdownVariants.variantKeys ?? {}));
102
+ const {
103
+ open,
104
+ ref,
105
+ toggle,
106
+ onEnter,
107
+ onLeave
108
+ } = useDropdown(localProps.trigger ?? "click", !!localProps.disabled);
109
+ const labelContent = createMemo(() => localProps.disabled ? localProps.disabledLabel ?? localProps.label : localProps.label ?? "Toggle");
110
+ const containerClass = createMemo(() => classes("relative inline-block", localProps.class, localProps.className));
111
+ const buttonClass = createMemo(() => buttonVariants({
112
+ color: "primary"
113
+ }));
114
+ return (() => {
115
+ var _el$ = _tmpl$2(), _el$2 = _el$.firstChild;
116
+ addEventListener(_el$, "mouseleave", onLeave);
117
+ addEventListener(_el$, "mouseenter", onEnter);
118
+ use(ref, _el$);
119
+ spread(_el$, mergeProps({
120
+ get ["class"]() {
121
+ return containerClass();
122
+ }
123
+ }, restProps), false, true);
124
+ _el$2.$$click = (e) => {
125
+ e.preventDefault();
126
+ if (localProps.trigger === "click") toggle();
127
+ };
128
+ insert(_el$2, labelContent);
129
+ insert(_el$, createComponent(Show, {
130
+ get when() {
131
+ return open();
132
+ },
133
+ get children() {
134
+ return createComponent(DropdownMenu_default, mergeProps({
135
+ open: true
136
+ }, variantProps, {
137
+ get children() {
138
+ return localProps.children;
139
+ }
140
+ }));
141
+ }
142
+ }), null);
143
+ effect((_p$) => {
144
+ var _v$ = buttonClass(), _v$2 = localProps.disabled, _v$3 = localProps.disabled;
145
+ _v$ !== _p$.e && className(_el$2, _p$.e = _v$);
146
+ _v$2 !== _p$.t && setAttribute(_el$2, "aria-disabled", _p$.t = _v$2);
147
+ _v$3 !== _p$.a && (_el$2.disabled = _p$.a = _v$3);
148
+ return _p$;
149
+ }, {
150
+ e: void 0,
151
+ t: void 0,
152
+ a: void 0
153
+ });
154
+ return _el$;
155
+ })();
156
+ };
157
+ var Dropdown_default = Dropdown;
158
+ delegateEvents(["click"]);
159
+ var _tmpl$3 = /* @__PURE__ */ template(`<div>`);
160
+ var DropdownItem = ({
161
+ hasLink = false,
162
+ children
163
+ }) => {
164
+ return (() => {
165
+ var _el$ = _tmpl$3();
166
+ insert(_el$, children);
167
+ effect(() => className(_el$, dropdownItemVariants({
168
+ hasLink
169
+ })));
170
+ return _el$;
171
+ })();
172
+ };
173
+ var DropdownItem_default = DropdownItem;
174
+
175
+ export { DropdownItem_default, DropdownMenu_default, Dropdown_default };