@seekho/ui 0.1.33 → 0.1.36

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.d.mts CHANGED
@@ -28,6 +28,18 @@ interface AccordionDetailsProps {
28
28
  }
29
29
  declare const AccordionDetails: ({ children, id, className, }: AccordionDetailsProps) => react_jsx_runtime.JSX.Element;
30
30
 
31
+ interface ChipProps {
32
+ label: string;
33
+ type?: "success" | "error" | "warning" | "default";
34
+ className?: string;
35
+ style?: React.CSSProperties;
36
+ deleteIcon?: React.ReactNode;
37
+ disabled?: boolean;
38
+ onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
39
+ onDelete?: (e: React.MouseEvent<HTMLSpanElement>) => void;
40
+ }
41
+ declare const Chip: ({ label, type, style, deleteIcon, disabled, className, onClick, onDelete, }: ChipProps) => react_jsx_runtime.JSX.Element;
42
+
31
43
  interface RenderOptionProps {
32
44
  onClick: (e: React.MouseEvent<HTMLLIElement>) => void;
33
45
  onMouseEnter: () => void;
@@ -123,6 +135,27 @@ interface FilterDrawerProps {
123
135
  }
124
136
  declare const FilterDrawer: ({ open, title, anchor, children, drawerClassName, childrenClassName, applyBtnText, clearBtnText, handleClose, handleApplyFilters, handleClearFilters, }: FilterDrawerProps) => react_jsx_runtime.JSX.Element;
125
137
 
138
+ interface MenuProps {
139
+ anchorEl: HTMLElement | null;
140
+ open: boolean;
141
+ onClose: () => void;
142
+ children: React.ReactNode;
143
+ align?: "left" | "right";
144
+ className?: string;
145
+ }
146
+ declare const Menu: ({ anchorEl, open, onClose, children, align, className, }: MenuProps) => React.ReactPortal | null;
147
+
148
+ interface MenuItemProps {
149
+ onClick?: () => void;
150
+ children: React.ReactNode;
151
+ disabled?: boolean;
152
+ selected?: boolean;
153
+ icon?: React.ReactNode;
154
+ className?: string;
155
+ }
156
+ declare const MenuItem: ({ onClick, children, disabled, selected, icon, className, }: MenuItemProps) => react_jsx_runtime.JSX.Element;
157
+ declare const MenuDivider: () => react_jsx_runtime.JSX.Element;
158
+
126
159
  interface ModalProps {
127
160
  show: boolean;
128
161
  title?: string;
@@ -210,6 +243,49 @@ interface StagingAlertProps {
210
243
  }
211
244
  declare const StagingAlert: ({ liveUrl, liveLinkText, }: StagingAlertProps) => react_jsx_runtime.JSX.Element;
212
245
 
246
+ interface SelectOptionData {
247
+ value: string | number;
248
+ label: React.ReactNode;
249
+ disabled: boolean;
250
+ }
251
+ interface SelectRenderOptionProps {
252
+ onMouseDown: () => void;
253
+ onMouseEnter: () => void;
254
+ className: string;
255
+ }
256
+ interface SelectProps {
257
+ value: string | number;
258
+ onChange: (e: {
259
+ target: {
260
+ value: string | number;
261
+ };
262
+ }) => void;
263
+ children?: React.ReactNode;
264
+ disabled?: boolean;
265
+ placeholder?: string;
266
+ size?: "small" | "medium" | "large";
267
+ error?: boolean;
268
+ className?: string;
269
+ renderOption?: (props: SelectRenderOptionProps, option: SelectOptionData) => React.ReactNode;
270
+ renderValue?: (option: SelectOptionData | null) => React.ReactNode;
271
+ }
272
+ declare const Select: ({ value, onChange, children, disabled, placeholder, size, error, className, renderOption, renderValue, }: SelectProps) => react_jsx_runtime.JSX.Element;
273
+
274
+ interface SelectOptionProps {
275
+ value: string | number;
276
+ children: React.ReactNode;
277
+ disabled?: boolean;
278
+ }
279
+ declare const SelectOption: (_props: SelectOptionProps) => null;
280
+
281
+ interface SwitchProps {
282
+ checked: boolean;
283
+ onChange: () => void;
284
+ disabled?: boolean;
285
+ className?: string;
286
+ }
287
+ declare const Switch: ({ checked, onChange, disabled, className, }: SwitchProps) => react_jsx_runtime.JSX.Element;
288
+
213
289
  interface TabsProps {
214
290
  value: number | string;
215
291
  onChange: (event: React.SyntheticEvent, value: number | string) => void;
@@ -274,4 +350,4 @@ declare const handleCopyTextToClipboard: ({ clipboardText, }: {
274
350
  clipboardText: string | number | null | undefined;
275
351
  }) => Promise<boolean>;
276
352
 
277
- export { Accordion, AccordionDetails, type AccordionDetailsProps, type AccordionProps, AccordionSummary, type AccordionSummaryProps, AutoComplete, type AutoCompleteProps, Breadcrumb, type BreadcrumbProps, ButtonLoader, type ButtonLoaderProps, CopyId, type CopyIdProps, CustomAnchor, type CustomAnchorProps, CustomInput, type CustomInputProps, Drawer, type DrawerAnchor, type DrawerProps, FilterDrawer, type FilterDrawerProps, InputTitleWithRequired, type InputTitleWithRequiredProps, Modal, type ModalProps, type MonthYear, MonthYearPicker, type MonthYearPickerProps, Pagination, type PaginationProps, ReadMore, type ReadMoreProps, SearchBar, type SearchBarProps, StagingAlert, type StagingAlertProps, Tab, type TabProps, Tabs, type TabsProps, Tooltip, type TooltipPlacement, type TooltipProps, cn, handleAllyProps, handleCopyTextToClipboard, useLocalStorage };
353
+ export { Accordion, AccordionDetails, type AccordionDetailsProps, type AccordionProps, AccordionSummary, type AccordionSummaryProps, AutoComplete, type AutoCompleteProps, Breadcrumb, type BreadcrumbProps, ButtonLoader, type ButtonLoaderProps, Chip, type ChipProps, CopyId, type CopyIdProps, CustomAnchor, type CustomAnchorProps, CustomInput, type CustomInputProps, Drawer, type DrawerAnchor, type DrawerProps, FilterDrawer, type FilterDrawerProps, InputTitleWithRequired, type InputTitleWithRequiredProps, Menu, MenuDivider, MenuItem, type MenuItemProps, type MenuProps, Modal, type ModalProps, type MonthYear, MonthYearPicker, type MonthYearPickerProps, Pagination, type PaginationProps, ReadMore, type ReadMoreProps, SearchBar, type SearchBarProps, Select, SelectOption, type SelectOptionData, type SelectOptionProps, type SelectProps, type SelectRenderOptionProps, StagingAlert, type StagingAlertProps, Switch, type SwitchProps, Tab, type TabProps, Tabs, type TabsProps, Tooltip, type TooltipPlacement, type TooltipProps, cn, handleAllyProps, handleCopyTextToClipboard, useLocalStorage };
package/dist/index.d.ts CHANGED
@@ -28,6 +28,18 @@ interface AccordionDetailsProps {
28
28
  }
29
29
  declare const AccordionDetails: ({ children, id, className, }: AccordionDetailsProps) => react_jsx_runtime.JSX.Element;
30
30
 
31
+ interface ChipProps {
32
+ label: string;
33
+ type?: "success" | "error" | "warning" | "default";
34
+ className?: string;
35
+ style?: React.CSSProperties;
36
+ deleteIcon?: React.ReactNode;
37
+ disabled?: boolean;
38
+ onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
39
+ onDelete?: (e: React.MouseEvent<HTMLSpanElement>) => void;
40
+ }
41
+ declare const Chip: ({ label, type, style, deleteIcon, disabled, className, onClick, onDelete, }: ChipProps) => react_jsx_runtime.JSX.Element;
42
+
31
43
  interface RenderOptionProps {
32
44
  onClick: (e: React.MouseEvent<HTMLLIElement>) => void;
33
45
  onMouseEnter: () => void;
@@ -123,6 +135,27 @@ interface FilterDrawerProps {
123
135
  }
124
136
  declare const FilterDrawer: ({ open, title, anchor, children, drawerClassName, childrenClassName, applyBtnText, clearBtnText, handleClose, handleApplyFilters, handleClearFilters, }: FilterDrawerProps) => react_jsx_runtime.JSX.Element;
125
137
 
138
+ interface MenuProps {
139
+ anchorEl: HTMLElement | null;
140
+ open: boolean;
141
+ onClose: () => void;
142
+ children: React.ReactNode;
143
+ align?: "left" | "right";
144
+ className?: string;
145
+ }
146
+ declare const Menu: ({ anchorEl, open, onClose, children, align, className, }: MenuProps) => React.ReactPortal | null;
147
+
148
+ interface MenuItemProps {
149
+ onClick?: () => void;
150
+ children: React.ReactNode;
151
+ disabled?: boolean;
152
+ selected?: boolean;
153
+ icon?: React.ReactNode;
154
+ className?: string;
155
+ }
156
+ declare const MenuItem: ({ onClick, children, disabled, selected, icon, className, }: MenuItemProps) => react_jsx_runtime.JSX.Element;
157
+ declare const MenuDivider: () => react_jsx_runtime.JSX.Element;
158
+
126
159
  interface ModalProps {
127
160
  show: boolean;
128
161
  title?: string;
@@ -210,6 +243,49 @@ interface StagingAlertProps {
210
243
  }
211
244
  declare const StagingAlert: ({ liveUrl, liveLinkText, }: StagingAlertProps) => react_jsx_runtime.JSX.Element;
212
245
 
246
+ interface SelectOptionData {
247
+ value: string | number;
248
+ label: React.ReactNode;
249
+ disabled: boolean;
250
+ }
251
+ interface SelectRenderOptionProps {
252
+ onMouseDown: () => void;
253
+ onMouseEnter: () => void;
254
+ className: string;
255
+ }
256
+ interface SelectProps {
257
+ value: string | number;
258
+ onChange: (e: {
259
+ target: {
260
+ value: string | number;
261
+ };
262
+ }) => void;
263
+ children?: React.ReactNode;
264
+ disabled?: boolean;
265
+ placeholder?: string;
266
+ size?: "small" | "medium" | "large";
267
+ error?: boolean;
268
+ className?: string;
269
+ renderOption?: (props: SelectRenderOptionProps, option: SelectOptionData) => React.ReactNode;
270
+ renderValue?: (option: SelectOptionData | null) => React.ReactNode;
271
+ }
272
+ declare const Select: ({ value, onChange, children, disabled, placeholder, size, error, className, renderOption, renderValue, }: SelectProps) => react_jsx_runtime.JSX.Element;
273
+
274
+ interface SelectOptionProps {
275
+ value: string | number;
276
+ children: React.ReactNode;
277
+ disabled?: boolean;
278
+ }
279
+ declare const SelectOption: (_props: SelectOptionProps) => null;
280
+
281
+ interface SwitchProps {
282
+ checked: boolean;
283
+ onChange: () => void;
284
+ disabled?: boolean;
285
+ className?: string;
286
+ }
287
+ declare const Switch: ({ checked, onChange, disabled, className, }: SwitchProps) => react_jsx_runtime.JSX.Element;
288
+
213
289
  interface TabsProps {
214
290
  value: number | string;
215
291
  onChange: (event: React.SyntheticEvent, value: number | string) => void;
@@ -274,4 +350,4 @@ declare const handleCopyTextToClipboard: ({ clipboardText, }: {
274
350
  clipboardText: string | number | null | undefined;
275
351
  }) => Promise<boolean>;
276
352
 
277
- export { Accordion, AccordionDetails, type AccordionDetailsProps, type AccordionProps, AccordionSummary, type AccordionSummaryProps, AutoComplete, type AutoCompleteProps, Breadcrumb, type BreadcrumbProps, ButtonLoader, type ButtonLoaderProps, CopyId, type CopyIdProps, CustomAnchor, type CustomAnchorProps, CustomInput, type CustomInputProps, Drawer, type DrawerAnchor, type DrawerProps, FilterDrawer, type FilterDrawerProps, InputTitleWithRequired, type InputTitleWithRequiredProps, Modal, type ModalProps, type MonthYear, MonthYearPicker, type MonthYearPickerProps, Pagination, type PaginationProps, ReadMore, type ReadMoreProps, SearchBar, type SearchBarProps, StagingAlert, type StagingAlertProps, Tab, type TabProps, Tabs, type TabsProps, Tooltip, type TooltipPlacement, type TooltipProps, cn, handleAllyProps, handleCopyTextToClipboard, useLocalStorage };
353
+ export { Accordion, AccordionDetails, type AccordionDetailsProps, type AccordionProps, AccordionSummary, type AccordionSummaryProps, AutoComplete, type AutoCompleteProps, Breadcrumb, type BreadcrumbProps, ButtonLoader, type ButtonLoaderProps, Chip, type ChipProps, CopyId, type CopyIdProps, CustomAnchor, type CustomAnchorProps, CustomInput, type CustomInputProps, Drawer, type DrawerAnchor, type DrawerProps, FilterDrawer, type FilterDrawerProps, InputTitleWithRequired, type InputTitleWithRequiredProps, Menu, MenuDivider, MenuItem, type MenuItemProps, type MenuProps, Modal, type ModalProps, type MonthYear, MonthYearPicker, type MonthYearPickerProps, Pagination, type PaginationProps, ReadMore, type ReadMoreProps, SearchBar, type SearchBarProps, Select, SelectOption, type SelectOptionData, type SelectOptionProps, type SelectProps, type SelectRenderOptionProps, StagingAlert, type StagingAlertProps, Switch, type SwitchProps, Tab, type TabProps, Tabs, type TabsProps, Tooltip, type TooltipPlacement, type TooltipProps, cn, handleAllyProps, handleCopyTextToClipboard, useLocalStorage };
package/dist/index.js CHANGED
@@ -2,14 +2,17 @@
2
2
 
3
3
  var React8 = require('react');
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
+ var ReactDOM = require('react-dom');
5
6
  var reactHotkeysHook = require('react-hotkeys-hook');
6
- var reactDom = require('react-dom');
7
7
 
8
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
 
10
10
  var React8__default = /*#__PURE__*/_interopDefault(React8);
11
+ var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
11
12
 
12
13
  var __defProp = Object.defineProperty;
14
+ var __defProps = Object.defineProperties;
15
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
13
16
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
14
17
  var __hasOwnProp = Object.prototype.hasOwnProperty;
15
18
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -25,6 +28,7 @@ var __spreadValues = (a, b) => {
25
28
  }
26
29
  return a;
27
30
  };
31
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
28
32
  var __objRest = (source, exclude) => {
29
33
  var target = {};
30
34
  for (var prop in source)
@@ -157,6 +161,62 @@ var AccordionDetails = ({
157
161
  }
158
162
  );
159
163
  };
164
+ var typeMap = {
165
+ success: "bg-green-100 text-green-500",
166
+ error: "bg-red-100 text-red-500",
167
+ warning: "bg-orange-100 text-orange-500",
168
+ default: "bg-gray-100 text-gray-500"
169
+ };
170
+ var Chip = ({
171
+ label,
172
+ type = "default",
173
+ style,
174
+ deleteIcon,
175
+ disabled = false,
176
+ className = "",
177
+ onClick,
178
+ onDelete
179
+ }) => {
180
+ var _a;
181
+ const typeClass = (_a = typeMap[type]) != null ? _a : typeMap.default;
182
+ const cursorClass = disabled ? "opacity-50 cursor-not-allowed" : onClick ? "cursor-pointer" : "cursor-default";
183
+ return /* @__PURE__ */ jsxRuntime.jsxs(
184
+ "div",
185
+ {
186
+ role: onClick ? "button" : void 0,
187
+ tabIndex: onClick && !disabled ? 0 : void 0,
188
+ style,
189
+ onClick: !disabled && onClick ? onClick : void 0,
190
+ className: `inline-flex items-center gap-1 rounded-full w-fit px-3 py-[6px] text-[12px] capitalize ${typeClass} ${cursorClass} ${className}`,
191
+ children: [
192
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "leading-none", children: label }),
193
+ onDelete && /* @__PURE__ */ jsxRuntime.jsx(
194
+ "span",
195
+ {
196
+ role: "button",
197
+ tabIndex: disabled ? -1 : 0,
198
+ onClick: (e) => {
199
+ e.stopPropagation();
200
+ if (!disabled) onDelete(e);
201
+ },
202
+ className: "flex items-center cursor-pointer ml-0.5 opacity-60 hover:opacity-100",
203
+ children: deleteIcon != null ? deleteIcon : /* @__PURE__ */ jsxRuntime.jsx(
204
+ "svg",
205
+ {
206
+ xmlns: "http://www.w3.org/2000/svg",
207
+ width: "16",
208
+ height: "16",
209
+ viewBox: "0 0 24 24",
210
+ fill: "currentColor",
211
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })
212
+ }
213
+ )
214
+ }
215
+ )
216
+ ]
217
+ }
218
+ );
219
+ };
160
220
  function AutoComplete({
161
221
  label,
162
222
  value,
@@ -820,6 +880,123 @@ var FilterDrawer = ({
820
880
  }
821
881
  );
822
882
  };
883
+ var GAP = 4;
884
+ var PAD = 6;
885
+ function reposition(menu, anchorEl, align) {
886
+ const rect = anchorEl.getBoundingClientRect();
887
+ const mw = menu.offsetWidth;
888
+ const mh = menu.offsetHeight;
889
+ const vw = window.innerWidth;
890
+ const vh = window.innerHeight;
891
+ let top = rect.bottom + GAP + mh > vh - PAD ? Math.max(PAD, rect.top - mh - GAP) : rect.bottom + GAP;
892
+ let left = align === "right" ? rect.right - mw : rect.left;
893
+ left = Math.max(PAD, Math.min(left, vw - mw - PAD));
894
+ menu.style.top = `${top}px`;
895
+ menu.style.left = `${left}px`;
896
+ menu.style.minWidth = `${rect.width}px`;
897
+ menu.style.opacity = "1";
898
+ }
899
+ var Menu = ({
900
+ anchorEl,
901
+ open,
902
+ onClose,
903
+ children,
904
+ align = "left",
905
+ className = ""
906
+ }) => {
907
+ const menuRef = React8.useRef(null);
908
+ const onCloseRef = React8.useRef(onClose);
909
+ React8.useEffect(() => {
910
+ onCloseRef.current = onClose;
911
+ });
912
+ React8.useEffect(() => {
913
+ if (!open || !anchorEl) return;
914
+ const id = requestAnimationFrame(() => {
915
+ if (menuRef.current) reposition(menuRef.current, anchorEl, align);
916
+ });
917
+ return () => cancelAnimationFrame(id);
918
+ }, [open, anchorEl, align]);
919
+ React8.useEffect(() => {
920
+ if (!open || !anchorEl) return;
921
+ const update = () => {
922
+ if (menuRef.current) reposition(menuRef.current, anchorEl, align);
923
+ };
924
+ window.addEventListener("scroll", update, true);
925
+ window.addEventListener("resize", update);
926
+ return () => {
927
+ window.removeEventListener("scroll", update, true);
928
+ window.removeEventListener("resize", update);
929
+ };
930
+ }, [open, anchorEl, align]);
931
+ React8.useEffect(() => {
932
+ if (!open) return;
933
+ const handleKey = (e) => {
934
+ if (e.key === "Escape") onCloseRef.current();
935
+ };
936
+ document.addEventListener("keydown", handleKey);
937
+ return () => document.removeEventListener("keydown", handleKey);
938
+ }, [open]);
939
+ React8.useEffect(() => {
940
+ if (!open) return;
941
+ const handleMouseDown = (e) => {
942
+ var _a;
943
+ if ((anchorEl == null ? void 0 : anchorEl.contains(e.target)) || ((_a = menuRef.current) == null ? void 0 : _a.contains(e.target)))
944
+ return;
945
+ onCloseRef.current();
946
+ };
947
+ document.addEventListener("mousedown", handleMouseDown);
948
+ return () => document.removeEventListener("mousedown", handleMouseDown);
949
+ }, [open, anchorEl]);
950
+ if (!open) return null;
951
+ return ReactDOM__default.default.createPortal(
952
+ /* @__PURE__ */ jsxRuntime.jsx(
953
+ "div",
954
+ {
955
+ ref: menuRef,
956
+ role: "menu",
957
+ style: {
958
+ position: "fixed",
959
+ top: -9999,
960
+ left: -9999,
961
+ opacity: 0,
962
+ zIndex: 9999,
963
+ transition: "opacity 100ms ease"
964
+ },
965
+ className: `bg-white rounded shadow-lg border border-gray-100 py-1 max-w-[calc(100vw-12px)] ${className}`,
966
+ children
967
+ }
968
+ ),
969
+ document.body
970
+ );
971
+ };
972
+ var MenuItem = ({
973
+ onClick,
974
+ children,
975
+ disabled = false,
976
+ selected = false,
977
+ icon,
978
+ className = ""
979
+ }) => {
980
+ return /* @__PURE__ */ jsxRuntime.jsxs(
981
+ "div",
982
+ {
983
+ role: "menuitem",
984
+ "aria-disabled": disabled,
985
+ onClick: disabled ? void 0 : onClick,
986
+ className: [
987
+ "px-3 py-2 flex gap-x-3 items-center text-[14px] tracking-wide min-w-0 w-full",
988
+ disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-gray-50",
989
+ selected ? "bg-gray-100 font-medium" : "",
990
+ className
991
+ ].filter(Boolean).join(" "),
992
+ children: [
993
+ icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center shrink-0", children: icon }),
994
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 break-words", children })
995
+ ]
996
+ }
997
+ );
998
+ };
999
+ var MenuDivider = () => /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "my-1 border-gray-100" });
823
1000
 
824
1001
  // src/utils/modalStack.ts
825
1002
  var stack = [];
@@ -1695,6 +1872,236 @@ var StagingAlert = ({
1695
1872
  ] })
1696
1873
  ] });
1697
1874
  };
1875
+ var sizeConfig = {
1876
+ small: { py: "7px", px: "10px", fontSize: "13px" },
1877
+ medium: { py: "11px", px: "14px", fontSize: "14px" },
1878
+ large: { py: "14px", px: "14px", fontSize: "16px" }
1879
+ };
1880
+ var Select = ({
1881
+ value,
1882
+ onChange,
1883
+ children,
1884
+ disabled = false,
1885
+ placeholder = "Select...",
1886
+ size = "medium",
1887
+ error = false,
1888
+ className = "",
1889
+ renderOption,
1890
+ renderValue
1891
+ }) => {
1892
+ const [isOpen, setIsOpen] = React8.useState(false);
1893
+ const [dropdownStyle, setDropdownStyle] = React8.useState({});
1894
+ const [focusedIndex, setFocusedIndex] = React8.useState(-1);
1895
+ const triggerRef = React8.useRef(null);
1896
+ const dropdownRef = React8.useRef(null);
1897
+ const options = React8__default.default.Children.toArray(children).filter(Boolean).map((child) => {
1898
+ var _a, _b, _c, _d, _e;
1899
+ const c = child;
1900
+ return {
1901
+ value: (_b = (_a = c.props) == null ? void 0 : _a.value) != null ? _b : "",
1902
+ label: (_c = c.props) == null ? void 0 : _c.children,
1903
+ disabled: (_e = (_d = c.props) == null ? void 0 : _d.disabled) != null ? _e : false
1904
+ };
1905
+ });
1906
+ const selectedOption = options.find(
1907
+ (opt) => String(opt.value) === String(value)
1908
+ );
1909
+ const computePosition = React8.useCallback(() => {
1910
+ if (!triggerRef.current) return;
1911
+ const rect = triggerRef.current.getBoundingClientRect();
1912
+ const dropdownHeight = Math.min(options.length * 40, 240);
1913
+ const spaceBelow = window.innerHeight - rect.bottom;
1914
+ const openAbove = spaceBelow < dropdownHeight + 8 && rect.top > dropdownHeight;
1915
+ setDropdownStyle(__spreadProps(__spreadValues({
1916
+ position: "fixed"
1917
+ }, openAbove ? { bottom: window.innerHeight - rect.top + 2 } : { top: rect.bottom + 2 }), {
1918
+ left: rect.left,
1919
+ width: rect.width,
1920
+ zIndex: 9999
1921
+ }));
1922
+ }, [options.length]);
1923
+ React8.useEffect(() => {
1924
+ const handleClickOutside = (e) => {
1925
+ if (triggerRef.current && !triggerRef.current.contains(e.target) && (!dropdownRef.current || !dropdownRef.current.contains(e.target))) {
1926
+ setIsOpen(false);
1927
+ setFocusedIndex(-1);
1928
+ }
1929
+ };
1930
+ document.addEventListener("mousedown", handleClickOutside);
1931
+ return () => document.removeEventListener("mousedown", handleClickOutside);
1932
+ }, []);
1933
+ React8.useEffect(() => {
1934
+ if (!isOpen) return;
1935
+ const handleKeyDown = (e) => {
1936
+ if (e.key === "Escape") {
1937
+ setIsOpen(false);
1938
+ setFocusedIndex(-1);
1939
+ } else if (e.key === "ArrowDown") {
1940
+ e.preventDefault();
1941
+ setFocusedIndex((prev) => {
1942
+ var _a;
1943
+ let next = prev + 1;
1944
+ while (next < options.length && ((_a = options[next]) == null ? void 0 : _a.disabled)) next++;
1945
+ return next < options.length ? next : prev;
1946
+ });
1947
+ } else if (e.key === "ArrowUp") {
1948
+ e.preventDefault();
1949
+ setFocusedIndex((prev) => {
1950
+ var _a;
1951
+ let next = prev - 1;
1952
+ while (next >= 0 && ((_a = options[next]) == null ? void 0 : _a.disabled)) next--;
1953
+ return next >= 0 ? next : prev;
1954
+ });
1955
+ } else if (e.key === "Enter" && focusedIndex >= 0) {
1956
+ const opt = options[focusedIndex];
1957
+ if (opt && !opt.disabled) {
1958
+ onChange({ target: { value: opt.value } });
1959
+ setIsOpen(false);
1960
+ setFocusedIndex(-1);
1961
+ }
1962
+ }
1963
+ };
1964
+ document.addEventListener("keydown", handleKeyDown);
1965
+ return () => document.removeEventListener("keydown", handleKeyDown);
1966
+ }, [isOpen, focusedIndex, options, onChange]);
1967
+ React8.useEffect(() => {
1968
+ if (focusedIndex >= 0 && dropdownRef.current) {
1969
+ const item = dropdownRef.current.children[focusedIndex];
1970
+ item == null ? void 0 : item.scrollIntoView({ block: "nearest" });
1971
+ }
1972
+ }, [focusedIndex]);
1973
+ React8.useEffect(() => {
1974
+ if (!isOpen) return;
1975
+ window.addEventListener("scroll", computePosition, true);
1976
+ window.addEventListener("resize", computePosition);
1977
+ return () => {
1978
+ window.removeEventListener("scroll", computePosition, true);
1979
+ window.removeEventListener("resize", computePosition);
1980
+ };
1981
+ }, [isOpen, computePosition]);
1982
+ const handleOpen = () => {
1983
+ if (disabled) return;
1984
+ if (!isOpen) {
1985
+ computePosition();
1986
+ setFocusedIndex(
1987
+ options.findIndex((opt) => String(opt.value) === String(value))
1988
+ );
1989
+ }
1990
+ setIsOpen((prev) => !prev);
1991
+ };
1992
+ const handleSelect = (opt) => {
1993
+ if (opt.disabled) return;
1994
+ onChange({ target: { value: opt.value } });
1995
+ setIsOpen(false);
1996
+ setFocusedIndex(-1);
1997
+ };
1998
+ const { py, px, fontSize } = sizeConfig[size];
1999
+ const borderColor = error ? "#ef4444" : isOpen ? "var(--color-skprimary, #6b31bf)" : "#d1d5db";
2000
+ const borderWidth = isOpen ? "2px" : "1px";
2001
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `relative w-full ${className}`, ref: triggerRef, children: [
2002
+ /* @__PURE__ */ jsxRuntime.jsxs(
2003
+ "button",
2004
+ {
2005
+ type: "button",
2006
+ disabled,
2007
+ onClick: handleOpen,
2008
+ className: "w-full flex items-center justify-between rounded-md bg-white text-left outline-none disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
2009
+ style: { padding: `${py} ${px}`, border: `${borderWidth} solid ${borderColor}` },
2010
+ children: [
2011
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate flex-1 text-gray-800", style: { fontSize }, children: renderValue ? renderValue(selectedOption != null ? selectedOption : null) : selectedOption ? selectedOption.label : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400", children: placeholder }) }),
2012
+ /* @__PURE__ */ jsxRuntime.jsx(
2013
+ "svg",
2014
+ {
2015
+ xmlns: "http://www.w3.org/2000/svg",
2016
+ className: `w-4 h-4 shrink-0 ml-2 text-gray-400 transition-transform duration-150 ${isOpen ? "rotate-180" : ""}`,
2017
+ viewBox: "0 0 24 24",
2018
+ fill: "none",
2019
+ stroke: "currentColor",
2020
+ strokeWidth: "2",
2021
+ strokeLinecap: "round",
2022
+ strokeLinejoin: "round",
2023
+ children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "6 9 12 15 18 9" })
2024
+ }
2025
+ )
2026
+ ]
2027
+ }
2028
+ ),
2029
+ isOpen && ReactDOM__default.default.createPortal(
2030
+ /* @__PURE__ */ jsxRuntime.jsx(
2031
+ "ul",
2032
+ {
2033
+ ref: dropdownRef,
2034
+ style: dropdownStyle,
2035
+ className: "bg-white shadow-lg rounded-md border border-gray-200 max-h-60 overflow-y-auto",
2036
+ children: options.map((opt, i) => {
2037
+ const optionProps = {
2038
+ onMouseDown: () => handleSelect(opt),
2039
+ onMouseEnter: () => !opt.disabled && setFocusedIndex(i),
2040
+ className: [
2041
+ "px-3 py-2 text-[13px] select-none",
2042
+ opt.disabled ? "text-gray-400 cursor-not-allowed" : focusedIndex === i ? "bg-skprimary/10 text-skprimary cursor-pointer" : "text-gray-700 cursor-pointer",
2043
+ String(opt.value) === String(value) ? "font-semibold" : ""
2044
+ ].join(" ")
2045
+ };
2046
+ return renderOption ? /* @__PURE__ */ jsxRuntime.jsx(React8__default.default.Fragment, { children: renderOption(optionProps, opt) }, i) : /* @__PURE__ */ jsxRuntime.jsx("li", __spreadProps(__spreadValues({}, optionProps), { children: opt.label }), i);
2047
+ })
2048
+ }
2049
+ ),
2050
+ document.body
2051
+ )
2052
+ ] });
2053
+ };
2054
+
2055
+ // src/components/Select/SelectOption.tsx
2056
+ var SelectOption = (_props) => null;
2057
+ var Switch = ({
2058
+ checked,
2059
+ onChange,
2060
+ disabled = false,
2061
+ className = ""
2062
+ }) => {
2063
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2064
+ "button",
2065
+ {
2066
+ type: "button",
2067
+ role: "switch",
2068
+ "aria-checked": checked,
2069
+ disabled,
2070
+ onClick: disabled ? void 0 : onChange,
2071
+ className: `relative inline-flex shrink-0 border-0 bg-transparent p-0 focus:outline-none ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer"} ${className}`,
2072
+ style: { width: 58, height: 38 },
2073
+ children: [
2074
+ /* @__PURE__ */ jsxRuntime.jsx(
2075
+ "span",
2076
+ {
2077
+ className: "absolute rounded-full transition-colors duration-200",
2078
+ style: {
2079
+ width: 34,
2080
+ height: 14,
2081
+ top: 12,
2082
+ left: 12,
2083
+ backgroundColor: checked ? "rgba(83,79,143,0.5)" : "rgba(0,0,0,0.38)"
2084
+ }
2085
+ }
2086
+ ),
2087
+ /* @__PURE__ */ jsxRuntime.jsx(
2088
+ "span",
2089
+ {
2090
+ className: "absolute rounded-full transition-all duration-200",
2091
+ style: {
2092
+ width: 20,
2093
+ height: 20,
2094
+ top: 9,
2095
+ left: checked ? 29 : 9,
2096
+ backgroundColor: checked ? "#534f8f" : "#fafafa",
2097
+ boxShadow: "0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)"
2098
+ }
2099
+ }
2100
+ )
2101
+ ]
2102
+ }
2103
+ );
2104
+ };
1698
2105
  var SCROLL_STEP = 120;
1699
2106
  function Tabs({
1700
2107
  value,
@@ -1869,7 +2276,7 @@ function Tab({
1869
2276
  }
1870
2277
  );
1871
2278
  }
1872
- var GAP = 8;
2279
+ var GAP2 = 8;
1873
2280
  var VIEWPORT_PADDING = 6;
1874
2281
  var arrowClass = {
1875
2282
  top: "top-full left-1/2 -translate-x-1/2 border-t-gray-600/80 border-x-transparent border-b-transparent",
@@ -1882,18 +2289,18 @@ function getPosition(trigger, tooltip, placement) {
1882
2289
  const th = tooltip.offsetHeight;
1883
2290
  const { top, left, right, bottom, width, height } = trigger;
1884
2291
  const positions = {
1885
- top: { top: top - th - GAP, left: left + width / 2 - tw / 2 },
1886
- "top-start": { top: top - th - GAP, left },
1887
- "top-end": { top: top - th - GAP, left: right - tw },
1888
- bottom: { top: bottom + GAP, left: left + width / 2 - tw / 2 },
1889
- "bottom-start": { top: bottom + GAP, left },
1890
- "bottom-end": { top: bottom + GAP, left: right - tw },
1891
- left: { top: top + height / 2 - th / 2, left: left - tw - GAP },
1892
- "left-start": { top, left: left - tw - GAP },
1893
- "left-end": { top: bottom - th, left: left - tw - GAP },
1894
- right: { top: top + height / 2 - th / 2, left: right + GAP },
1895
- "right-start": { top, left: right + GAP },
1896
- "right-end": { top: bottom - th, left: right + GAP }
2292
+ top: { top: top - th - GAP2, left: left + width / 2 - tw / 2 },
2293
+ "top-start": { top: top - th - GAP2, left },
2294
+ "top-end": { top: top - th - GAP2, left: right - tw },
2295
+ bottom: { top: bottom + GAP2, left: left + width / 2 - tw / 2 },
2296
+ "bottom-start": { top: bottom + GAP2, left },
2297
+ "bottom-end": { top: bottom + GAP2, left: right - tw },
2298
+ left: { top: top + height / 2 - th / 2, left: left - tw - GAP2 },
2299
+ "left-start": { top, left: left - tw - GAP2 },
2300
+ "left-end": { top: bottom - th, left: left - tw - GAP2 },
2301
+ right: { top: top + height / 2 - th / 2, left: right + GAP2 },
2302
+ "right-start": { top, left: right + GAP2 },
2303
+ "right-end": { top: bottom - th, left: right + GAP2 }
1897
2304
  };
1898
2305
  const pos = positions[placement];
1899
2306
  pos.left = Math.max(
@@ -1992,7 +2399,7 @@ function Tooltip({
1992
2399
  );
1993
2400
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1994
2401
  trigger,
1995
- reactDom.createPortal(
2402
+ ReactDOM.createPortal(
1996
2403
  title ? /* @__PURE__ */ jsxRuntime.jsxs(
1997
2404
  "div",
1998
2405
  {
@@ -2067,18 +2474,25 @@ exports.AccordionSummary = AccordionSummary;
2067
2474
  exports.AutoComplete = AutoComplete;
2068
2475
  exports.Breadcrumb = Breadcrumb;
2069
2476
  exports.ButtonLoader = ButtonLoader;
2477
+ exports.Chip = Chip;
2070
2478
  exports.CopyId = CopyId;
2071
2479
  exports.CustomAnchor = CustomAnchor;
2072
2480
  exports.CustomInput = CustomInput;
2073
2481
  exports.Drawer = Drawer;
2074
2482
  exports.FilterDrawer = FilterDrawer;
2075
2483
  exports.InputTitleWithRequired = InputTitleWithRequired;
2484
+ exports.Menu = Menu;
2485
+ exports.MenuDivider = MenuDivider;
2486
+ exports.MenuItem = MenuItem;
2076
2487
  exports.Modal = Modal;
2077
2488
  exports.MonthYearPicker = MonthYearPicker;
2078
2489
  exports.Pagination = Pagination;
2079
2490
  exports.ReadMore = ReadMore;
2080
2491
  exports.SearchBar = SearchBar;
2492
+ exports.Select = Select;
2493
+ exports.SelectOption = SelectOption;
2081
2494
  exports.StagingAlert = StagingAlert;
2495
+ exports.Switch = Switch;
2082
2496
  exports.Tab = Tab;
2083
2497
  exports.Tabs = Tabs;
2084
2498
  exports.Tooltip = Tooltip;
package/dist/index.mjs CHANGED
@@ -1,9 +1,11 @@
1
- import React8, { createContext, useState, useId, useRef, useEffect, Children, isValidElement, useCallback, cloneElement, useContext } from 'react';
1
+ import React8, { createContext, useState, useId, useRef, useEffect, useCallback, Children, isValidElement, cloneElement, useContext } from 'react';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import ReactDOM, { createPortal } from 'react-dom';
3
4
  import { useHotkeys } from 'react-hotkeys-hook';
4
- import { createPortal } from 'react-dom';
5
5
 
6
6
  var __defProp = Object.defineProperty;
7
+ var __defProps = Object.defineProperties;
8
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
9
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
10
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
11
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -19,6 +21,7 @@ var __spreadValues = (a, b) => {
19
21
  }
20
22
  return a;
21
23
  };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
25
  var __objRest = (source, exclude) => {
23
26
  var target = {};
24
27
  for (var prop in source)
@@ -151,6 +154,62 @@ var AccordionDetails = ({
151
154
  }
152
155
  );
153
156
  };
157
+ var typeMap = {
158
+ success: "bg-green-100 text-green-500",
159
+ error: "bg-red-100 text-red-500",
160
+ warning: "bg-orange-100 text-orange-500",
161
+ default: "bg-gray-100 text-gray-500"
162
+ };
163
+ var Chip = ({
164
+ label,
165
+ type = "default",
166
+ style,
167
+ deleteIcon,
168
+ disabled = false,
169
+ className = "",
170
+ onClick,
171
+ onDelete
172
+ }) => {
173
+ var _a;
174
+ const typeClass = (_a = typeMap[type]) != null ? _a : typeMap.default;
175
+ const cursorClass = disabled ? "opacity-50 cursor-not-allowed" : onClick ? "cursor-pointer" : "cursor-default";
176
+ return /* @__PURE__ */ jsxs(
177
+ "div",
178
+ {
179
+ role: onClick ? "button" : void 0,
180
+ tabIndex: onClick && !disabled ? 0 : void 0,
181
+ style,
182
+ onClick: !disabled && onClick ? onClick : void 0,
183
+ className: `inline-flex items-center gap-1 rounded-full w-fit px-3 py-[6px] text-[12px] capitalize ${typeClass} ${cursorClass} ${className}`,
184
+ children: [
185
+ /* @__PURE__ */ jsx("span", { className: "leading-none", children: label }),
186
+ onDelete && /* @__PURE__ */ jsx(
187
+ "span",
188
+ {
189
+ role: "button",
190
+ tabIndex: disabled ? -1 : 0,
191
+ onClick: (e) => {
192
+ e.stopPropagation();
193
+ if (!disabled) onDelete(e);
194
+ },
195
+ className: "flex items-center cursor-pointer ml-0.5 opacity-60 hover:opacity-100",
196
+ children: deleteIcon != null ? deleteIcon : /* @__PURE__ */ jsx(
197
+ "svg",
198
+ {
199
+ xmlns: "http://www.w3.org/2000/svg",
200
+ width: "16",
201
+ height: "16",
202
+ viewBox: "0 0 24 24",
203
+ fill: "currentColor",
204
+ children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })
205
+ }
206
+ )
207
+ }
208
+ )
209
+ ]
210
+ }
211
+ );
212
+ };
154
213
  function AutoComplete({
155
214
  label,
156
215
  value,
@@ -814,6 +873,123 @@ var FilterDrawer = ({
814
873
  }
815
874
  );
816
875
  };
876
+ var GAP = 4;
877
+ var PAD = 6;
878
+ function reposition(menu, anchorEl, align) {
879
+ const rect = anchorEl.getBoundingClientRect();
880
+ const mw = menu.offsetWidth;
881
+ const mh = menu.offsetHeight;
882
+ const vw = window.innerWidth;
883
+ const vh = window.innerHeight;
884
+ let top = rect.bottom + GAP + mh > vh - PAD ? Math.max(PAD, rect.top - mh - GAP) : rect.bottom + GAP;
885
+ let left = align === "right" ? rect.right - mw : rect.left;
886
+ left = Math.max(PAD, Math.min(left, vw - mw - PAD));
887
+ menu.style.top = `${top}px`;
888
+ menu.style.left = `${left}px`;
889
+ menu.style.minWidth = `${rect.width}px`;
890
+ menu.style.opacity = "1";
891
+ }
892
+ var Menu = ({
893
+ anchorEl,
894
+ open,
895
+ onClose,
896
+ children,
897
+ align = "left",
898
+ className = ""
899
+ }) => {
900
+ const menuRef = useRef(null);
901
+ const onCloseRef = useRef(onClose);
902
+ useEffect(() => {
903
+ onCloseRef.current = onClose;
904
+ });
905
+ useEffect(() => {
906
+ if (!open || !anchorEl) return;
907
+ const id = requestAnimationFrame(() => {
908
+ if (menuRef.current) reposition(menuRef.current, anchorEl, align);
909
+ });
910
+ return () => cancelAnimationFrame(id);
911
+ }, [open, anchorEl, align]);
912
+ useEffect(() => {
913
+ if (!open || !anchorEl) return;
914
+ const update = () => {
915
+ if (menuRef.current) reposition(menuRef.current, anchorEl, align);
916
+ };
917
+ window.addEventListener("scroll", update, true);
918
+ window.addEventListener("resize", update);
919
+ return () => {
920
+ window.removeEventListener("scroll", update, true);
921
+ window.removeEventListener("resize", update);
922
+ };
923
+ }, [open, anchorEl, align]);
924
+ useEffect(() => {
925
+ if (!open) return;
926
+ const handleKey = (e) => {
927
+ if (e.key === "Escape") onCloseRef.current();
928
+ };
929
+ document.addEventListener("keydown", handleKey);
930
+ return () => document.removeEventListener("keydown", handleKey);
931
+ }, [open]);
932
+ useEffect(() => {
933
+ if (!open) return;
934
+ const handleMouseDown = (e) => {
935
+ var _a;
936
+ if ((anchorEl == null ? void 0 : anchorEl.contains(e.target)) || ((_a = menuRef.current) == null ? void 0 : _a.contains(e.target)))
937
+ return;
938
+ onCloseRef.current();
939
+ };
940
+ document.addEventListener("mousedown", handleMouseDown);
941
+ return () => document.removeEventListener("mousedown", handleMouseDown);
942
+ }, [open, anchorEl]);
943
+ if (!open) return null;
944
+ return ReactDOM.createPortal(
945
+ /* @__PURE__ */ jsx(
946
+ "div",
947
+ {
948
+ ref: menuRef,
949
+ role: "menu",
950
+ style: {
951
+ position: "fixed",
952
+ top: -9999,
953
+ left: -9999,
954
+ opacity: 0,
955
+ zIndex: 9999,
956
+ transition: "opacity 100ms ease"
957
+ },
958
+ className: `bg-white rounded shadow-lg border border-gray-100 py-1 max-w-[calc(100vw-12px)] ${className}`,
959
+ children
960
+ }
961
+ ),
962
+ document.body
963
+ );
964
+ };
965
+ var MenuItem = ({
966
+ onClick,
967
+ children,
968
+ disabled = false,
969
+ selected = false,
970
+ icon,
971
+ className = ""
972
+ }) => {
973
+ return /* @__PURE__ */ jsxs(
974
+ "div",
975
+ {
976
+ role: "menuitem",
977
+ "aria-disabled": disabled,
978
+ onClick: disabled ? void 0 : onClick,
979
+ className: [
980
+ "px-3 py-2 flex gap-x-3 items-center text-[14px] tracking-wide min-w-0 w-full",
981
+ disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer hover:bg-gray-50",
982
+ selected ? "bg-gray-100 font-medium" : "",
983
+ className
984
+ ].filter(Boolean).join(" "),
985
+ children: [
986
+ icon && /* @__PURE__ */ jsx("span", { className: "flex items-center shrink-0", children: icon }),
987
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 break-words", children })
988
+ ]
989
+ }
990
+ );
991
+ };
992
+ var MenuDivider = () => /* @__PURE__ */ jsx("hr", { className: "my-1 border-gray-100" });
817
993
 
818
994
  // src/utils/modalStack.ts
819
995
  var stack = [];
@@ -1689,6 +1865,236 @@ var StagingAlert = ({
1689
1865
  ] })
1690
1866
  ] });
1691
1867
  };
1868
+ var sizeConfig = {
1869
+ small: { py: "7px", px: "10px", fontSize: "13px" },
1870
+ medium: { py: "11px", px: "14px", fontSize: "14px" },
1871
+ large: { py: "14px", px: "14px", fontSize: "16px" }
1872
+ };
1873
+ var Select = ({
1874
+ value,
1875
+ onChange,
1876
+ children,
1877
+ disabled = false,
1878
+ placeholder = "Select...",
1879
+ size = "medium",
1880
+ error = false,
1881
+ className = "",
1882
+ renderOption,
1883
+ renderValue
1884
+ }) => {
1885
+ const [isOpen, setIsOpen] = useState(false);
1886
+ const [dropdownStyle, setDropdownStyle] = useState({});
1887
+ const [focusedIndex, setFocusedIndex] = useState(-1);
1888
+ const triggerRef = useRef(null);
1889
+ const dropdownRef = useRef(null);
1890
+ const options = React8.Children.toArray(children).filter(Boolean).map((child) => {
1891
+ var _a, _b, _c, _d, _e;
1892
+ const c = child;
1893
+ return {
1894
+ value: (_b = (_a = c.props) == null ? void 0 : _a.value) != null ? _b : "",
1895
+ label: (_c = c.props) == null ? void 0 : _c.children,
1896
+ disabled: (_e = (_d = c.props) == null ? void 0 : _d.disabled) != null ? _e : false
1897
+ };
1898
+ });
1899
+ const selectedOption = options.find(
1900
+ (opt) => String(opt.value) === String(value)
1901
+ );
1902
+ const computePosition = useCallback(() => {
1903
+ if (!triggerRef.current) return;
1904
+ const rect = triggerRef.current.getBoundingClientRect();
1905
+ const dropdownHeight = Math.min(options.length * 40, 240);
1906
+ const spaceBelow = window.innerHeight - rect.bottom;
1907
+ const openAbove = spaceBelow < dropdownHeight + 8 && rect.top > dropdownHeight;
1908
+ setDropdownStyle(__spreadProps(__spreadValues({
1909
+ position: "fixed"
1910
+ }, openAbove ? { bottom: window.innerHeight - rect.top + 2 } : { top: rect.bottom + 2 }), {
1911
+ left: rect.left,
1912
+ width: rect.width,
1913
+ zIndex: 9999
1914
+ }));
1915
+ }, [options.length]);
1916
+ useEffect(() => {
1917
+ const handleClickOutside = (e) => {
1918
+ if (triggerRef.current && !triggerRef.current.contains(e.target) && (!dropdownRef.current || !dropdownRef.current.contains(e.target))) {
1919
+ setIsOpen(false);
1920
+ setFocusedIndex(-1);
1921
+ }
1922
+ };
1923
+ document.addEventListener("mousedown", handleClickOutside);
1924
+ return () => document.removeEventListener("mousedown", handleClickOutside);
1925
+ }, []);
1926
+ useEffect(() => {
1927
+ if (!isOpen) return;
1928
+ const handleKeyDown = (e) => {
1929
+ if (e.key === "Escape") {
1930
+ setIsOpen(false);
1931
+ setFocusedIndex(-1);
1932
+ } else if (e.key === "ArrowDown") {
1933
+ e.preventDefault();
1934
+ setFocusedIndex((prev) => {
1935
+ var _a;
1936
+ let next = prev + 1;
1937
+ while (next < options.length && ((_a = options[next]) == null ? void 0 : _a.disabled)) next++;
1938
+ return next < options.length ? next : prev;
1939
+ });
1940
+ } else if (e.key === "ArrowUp") {
1941
+ e.preventDefault();
1942
+ setFocusedIndex((prev) => {
1943
+ var _a;
1944
+ let next = prev - 1;
1945
+ while (next >= 0 && ((_a = options[next]) == null ? void 0 : _a.disabled)) next--;
1946
+ return next >= 0 ? next : prev;
1947
+ });
1948
+ } else if (e.key === "Enter" && focusedIndex >= 0) {
1949
+ const opt = options[focusedIndex];
1950
+ if (opt && !opt.disabled) {
1951
+ onChange({ target: { value: opt.value } });
1952
+ setIsOpen(false);
1953
+ setFocusedIndex(-1);
1954
+ }
1955
+ }
1956
+ };
1957
+ document.addEventListener("keydown", handleKeyDown);
1958
+ return () => document.removeEventListener("keydown", handleKeyDown);
1959
+ }, [isOpen, focusedIndex, options, onChange]);
1960
+ useEffect(() => {
1961
+ if (focusedIndex >= 0 && dropdownRef.current) {
1962
+ const item = dropdownRef.current.children[focusedIndex];
1963
+ item == null ? void 0 : item.scrollIntoView({ block: "nearest" });
1964
+ }
1965
+ }, [focusedIndex]);
1966
+ useEffect(() => {
1967
+ if (!isOpen) return;
1968
+ window.addEventListener("scroll", computePosition, true);
1969
+ window.addEventListener("resize", computePosition);
1970
+ return () => {
1971
+ window.removeEventListener("scroll", computePosition, true);
1972
+ window.removeEventListener("resize", computePosition);
1973
+ };
1974
+ }, [isOpen, computePosition]);
1975
+ const handleOpen = () => {
1976
+ if (disabled) return;
1977
+ if (!isOpen) {
1978
+ computePosition();
1979
+ setFocusedIndex(
1980
+ options.findIndex((opt) => String(opt.value) === String(value))
1981
+ );
1982
+ }
1983
+ setIsOpen((prev) => !prev);
1984
+ };
1985
+ const handleSelect = (opt) => {
1986
+ if (opt.disabled) return;
1987
+ onChange({ target: { value: opt.value } });
1988
+ setIsOpen(false);
1989
+ setFocusedIndex(-1);
1990
+ };
1991
+ const { py, px, fontSize } = sizeConfig[size];
1992
+ const borderColor = error ? "#ef4444" : isOpen ? "var(--color-skprimary, #6b31bf)" : "#d1d5db";
1993
+ const borderWidth = isOpen ? "2px" : "1px";
1994
+ return /* @__PURE__ */ jsxs("div", { className: `relative w-full ${className}`, ref: triggerRef, children: [
1995
+ /* @__PURE__ */ jsxs(
1996
+ "button",
1997
+ {
1998
+ type: "button",
1999
+ disabled,
2000
+ onClick: handleOpen,
2001
+ className: "w-full flex items-center justify-between rounded-md bg-white text-left outline-none disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
2002
+ style: { padding: `${py} ${px}`, border: `${borderWidth} solid ${borderColor}` },
2003
+ children: [
2004
+ /* @__PURE__ */ jsx("span", { className: "truncate flex-1 text-gray-800", style: { fontSize }, children: renderValue ? renderValue(selectedOption != null ? selectedOption : null) : selectedOption ? selectedOption.label : /* @__PURE__ */ jsx("span", { className: "text-gray-400", children: placeholder }) }),
2005
+ /* @__PURE__ */ jsx(
2006
+ "svg",
2007
+ {
2008
+ xmlns: "http://www.w3.org/2000/svg",
2009
+ className: `w-4 h-4 shrink-0 ml-2 text-gray-400 transition-transform duration-150 ${isOpen ? "rotate-180" : ""}`,
2010
+ viewBox: "0 0 24 24",
2011
+ fill: "none",
2012
+ stroke: "currentColor",
2013
+ strokeWidth: "2",
2014
+ strokeLinecap: "round",
2015
+ strokeLinejoin: "round",
2016
+ children: /* @__PURE__ */ jsx("polyline", { points: "6 9 12 15 18 9" })
2017
+ }
2018
+ )
2019
+ ]
2020
+ }
2021
+ ),
2022
+ isOpen && ReactDOM.createPortal(
2023
+ /* @__PURE__ */ jsx(
2024
+ "ul",
2025
+ {
2026
+ ref: dropdownRef,
2027
+ style: dropdownStyle,
2028
+ className: "bg-white shadow-lg rounded-md border border-gray-200 max-h-60 overflow-y-auto",
2029
+ children: options.map((opt, i) => {
2030
+ const optionProps = {
2031
+ onMouseDown: () => handleSelect(opt),
2032
+ onMouseEnter: () => !opt.disabled && setFocusedIndex(i),
2033
+ className: [
2034
+ "px-3 py-2 text-[13px] select-none",
2035
+ opt.disabled ? "text-gray-400 cursor-not-allowed" : focusedIndex === i ? "bg-skprimary/10 text-skprimary cursor-pointer" : "text-gray-700 cursor-pointer",
2036
+ String(opt.value) === String(value) ? "font-semibold" : ""
2037
+ ].join(" ")
2038
+ };
2039
+ return renderOption ? /* @__PURE__ */ jsx(React8.Fragment, { children: renderOption(optionProps, opt) }, i) : /* @__PURE__ */ jsx("li", __spreadProps(__spreadValues({}, optionProps), { children: opt.label }), i);
2040
+ })
2041
+ }
2042
+ ),
2043
+ document.body
2044
+ )
2045
+ ] });
2046
+ };
2047
+
2048
+ // src/components/Select/SelectOption.tsx
2049
+ var SelectOption = (_props) => null;
2050
+ var Switch = ({
2051
+ checked,
2052
+ onChange,
2053
+ disabled = false,
2054
+ className = ""
2055
+ }) => {
2056
+ return /* @__PURE__ */ jsxs(
2057
+ "button",
2058
+ {
2059
+ type: "button",
2060
+ role: "switch",
2061
+ "aria-checked": checked,
2062
+ disabled,
2063
+ onClick: disabled ? void 0 : onChange,
2064
+ className: `relative inline-flex shrink-0 border-0 bg-transparent p-0 focus:outline-none ${disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer"} ${className}`,
2065
+ style: { width: 58, height: 38 },
2066
+ children: [
2067
+ /* @__PURE__ */ jsx(
2068
+ "span",
2069
+ {
2070
+ className: "absolute rounded-full transition-colors duration-200",
2071
+ style: {
2072
+ width: 34,
2073
+ height: 14,
2074
+ top: 12,
2075
+ left: 12,
2076
+ backgroundColor: checked ? "rgba(83,79,143,0.5)" : "rgba(0,0,0,0.38)"
2077
+ }
2078
+ }
2079
+ ),
2080
+ /* @__PURE__ */ jsx(
2081
+ "span",
2082
+ {
2083
+ className: "absolute rounded-full transition-all duration-200",
2084
+ style: {
2085
+ width: 20,
2086
+ height: 20,
2087
+ top: 9,
2088
+ left: checked ? 29 : 9,
2089
+ backgroundColor: checked ? "#534f8f" : "#fafafa",
2090
+ boxShadow: "0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)"
2091
+ }
2092
+ }
2093
+ )
2094
+ ]
2095
+ }
2096
+ );
2097
+ };
1692
2098
  var SCROLL_STEP = 120;
1693
2099
  function Tabs({
1694
2100
  value,
@@ -1863,7 +2269,7 @@ function Tab({
1863
2269
  }
1864
2270
  );
1865
2271
  }
1866
- var GAP = 8;
2272
+ var GAP2 = 8;
1867
2273
  var VIEWPORT_PADDING = 6;
1868
2274
  var arrowClass = {
1869
2275
  top: "top-full left-1/2 -translate-x-1/2 border-t-gray-600/80 border-x-transparent border-b-transparent",
@@ -1876,18 +2282,18 @@ function getPosition(trigger, tooltip, placement) {
1876
2282
  const th = tooltip.offsetHeight;
1877
2283
  const { top, left, right, bottom, width, height } = trigger;
1878
2284
  const positions = {
1879
- top: { top: top - th - GAP, left: left + width / 2 - tw / 2 },
1880
- "top-start": { top: top - th - GAP, left },
1881
- "top-end": { top: top - th - GAP, left: right - tw },
1882
- bottom: { top: bottom + GAP, left: left + width / 2 - tw / 2 },
1883
- "bottom-start": { top: bottom + GAP, left },
1884
- "bottom-end": { top: bottom + GAP, left: right - tw },
1885
- left: { top: top + height / 2 - th / 2, left: left - tw - GAP },
1886
- "left-start": { top, left: left - tw - GAP },
1887
- "left-end": { top: bottom - th, left: left - tw - GAP },
1888
- right: { top: top + height / 2 - th / 2, left: right + GAP },
1889
- "right-start": { top, left: right + GAP },
1890
- "right-end": { top: bottom - th, left: right + GAP }
2285
+ top: { top: top - th - GAP2, left: left + width / 2 - tw / 2 },
2286
+ "top-start": { top: top - th - GAP2, left },
2287
+ "top-end": { top: top - th - GAP2, left: right - tw },
2288
+ bottom: { top: bottom + GAP2, left: left + width / 2 - tw / 2 },
2289
+ "bottom-start": { top: bottom + GAP2, left },
2290
+ "bottom-end": { top: bottom + GAP2, left: right - tw },
2291
+ left: { top: top + height / 2 - th / 2, left: left - tw - GAP2 },
2292
+ "left-start": { top, left: left - tw - GAP2 },
2293
+ "left-end": { top: bottom - th, left: left - tw - GAP2 },
2294
+ right: { top: top + height / 2 - th / 2, left: right + GAP2 },
2295
+ "right-start": { top, left: right + GAP2 },
2296
+ "right-end": { top: bottom - th, left: right + GAP2 }
1891
2297
  };
1892
2298
  const pos = positions[placement];
1893
2299
  pos.left = Math.max(
@@ -2055,4 +2461,4 @@ function useLocalStorage(key, initialValue) {
2055
2461
  return [storedValue, setValue, remove];
2056
2462
  }
2057
2463
 
2058
- export { Accordion, AccordionDetails, AccordionSummary, AutoComplete, Breadcrumb, ButtonLoader, CopyId, CustomAnchor, CustomInput, Drawer, FilterDrawer, InputTitleWithRequired, Modal, MonthYearPicker, Pagination, ReadMore, SearchBar, StagingAlert, Tab, Tabs, Tooltip, cn, handleAllyProps, handleCopyTextToClipboard, useLocalStorage };
2464
+ export { Accordion, AccordionDetails, AccordionSummary, AutoComplete, Breadcrumb, ButtonLoader, Chip, CopyId, CustomAnchor, CustomInput, Drawer, FilterDrawer, InputTitleWithRequired, Menu, MenuDivider, MenuItem, Modal, MonthYearPicker, Pagination, ReadMore, SearchBar, Select, SelectOption, StagingAlert, Switch, Tab, Tabs, Tooltip, cn, handleAllyProps, handleCopyTextToClipboard, useLocalStorage };
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-top-\[9px\]{top:-9px}.bottom-0{bottom:0}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.left-full{left:100%}.right-0{right:0}.right-full{right:100%}.top-0{top:0}.top-1\/2{top:50%}.top-\[calc\(100\%\+8px\)\]{top:calc(100% + 8px)}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.z-\[1200\]{z-index:1200}.z-\[9999\]{z-index:9999}.z-\[999\]{z-index:999}.z-\[99\]{z-index:99}.m-0{margin:0}.mb-4{margin-bottom:1rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.\!h-\[37px\]{height:37px!important}.h-0{height:0}.h-10{height:2.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[14px\]{height:14px}.h-\[16px\]{height:16px}.h-\[24px\]{height:24px}.h-\[45px\]{height:45px}.h-full{height:100%}.max-h-56{max-height:14rem}.max-h-\[95vh\]{max-height:95vh}.max-h-full{max-height:100%}.\!min-h-\[37px\]{min-height:37px!important}.w-0{width:0}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[14px\]{width:14px}.w-\[16px\]{width:16px}.w-\[20px\]{width:20px}.w-\[240px\]{width:240px}.w-\[24px\]{width:24px}.w-\[300px\]{width:300px}.w-\[500px\]{width:500px}.w-\[95\%\]{width:95%}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[1\.75rem\]{min-width:1.75rem}.min-w-\[2\.5rem\]{min-width:2.5rem}.min-w-\[2rem\]{min-width:2rem}.max-w-\[300px\]{max-width:300px}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-0{--tw-translate-y:0px}.translate-y-0,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-full{--tw-translate-y:100%}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-none{list-style-type:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[24px\]{border-radius:24px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-md{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-r-0{border-right-width:0}.border-t{border-top-width:1px}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity,1))}.border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity,1))}.border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity,1))}.border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-skprimary{border-color:var(--color-primary,#534f8f)}.border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-x-transparent{border-left-color:transparent;border-right-color:transparent}.border-y-transparent{border-top-color:transparent;border-bottom-color:transparent}.border-b-gray-600\/80{border-bottom-color:rgba(75,85,99,.8)}.border-b-transparent{border-bottom-color:transparent}.border-l-gray-600\/80{border-left-color:rgba(75,85,99,.8)}.border-l-transparent{border-left-color:transparent}.border-r-gray-600\/80{border-right-color:rgba(75,85,99,.8)}.border-r-transparent{border-right-color:transparent}.border-t-gray-600\/80{border-top-color:rgba(75,85,99,.8)}.border-t-transparent{border-top-color:transparent}.\!bg-sksecondary{background-color:var(--color-secondary,#dadbfe)!important}.bg-\[\#ec6c03\]{--tw-bg-opacity:1;background-color:rgb(236 108 3/var(--tw-bg-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-600\/80{background-color:rgba(75,85,99,.8)}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-800\/50{background-color:rgba(31,41,55,.5)}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity,1))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-skprimary{background-color:var(--color-primary,#534f8f)}.bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity,1))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.p-0{padding:0}.p-16{padding:4rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.\!px-10{padding-left:2.5rem!important;padding-right:2.5rem!important}.\!px-2{padding-left:.5rem!important;padding-right:.5rem!important}.\!py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.py-\[8px\]{padding-top:8px;padding-bottom:8px}.pb-3{padding-bottom:.75rem}.text-left{text-align:left}.\!text-\[12px\]{font-size:12px!important}.\!text-\[15px\]{font-size:15px!important}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14\.5px\]{font-size:14.5px}.text-\[14px\]{font-size:14px}.text-\[17px\]{font-size:17px}.text-\[8px\]{font-size:8px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.leading-\[20px\]{line-height:20px}.leading-none{line-height:1}.tracking-wide{letter-spacing:.025em}.text-\[\#333333\]{--tw-text-opacity:1;color:rgb(51 51 51/var(--tw-text-opacity,1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity,1))}.text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity,1))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-skprimary{color:var(--color-primary,#534f8f)}.text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity,1))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-85{opacity:.85}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}#HideScroll{scrollbar-width:none;-ms-overflow-style:none;overflow:-moz-scrollbars-none}#HideScroll::-webkit-scrollbar{width:0;height:0;display:none}#HideScroll::-ms-scrollbar{display:none}.placeholder\:text-\[13px\]::-moz-placeholder{font-size:13px}.placeholder\:text-\[13px\]::placeholder{font-size:13px}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-green-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.hover\:bg-orange-50:hover{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.hover\:bg-pink-50:hover{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity,1))}.hover\:bg-purple-50:hover{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:bg-teal-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity,1))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.hover\:text-pink-600:hover{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity,1))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.hover\:text-skprimary:hover{color:var(--color-primary,#534f8f)}.hover\:text-teal-600:hover{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-70:hover{opacity:.7}.focus\:border-skprimary:focus{border-color:var(--color-primary,#534f8f)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.focus\:ring-skprimary:focus{--tw-ring-color:var(--color-primary,#534f8f)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-skprimary:focus-visible{--tw-ring-color:var(--color-primary,#534f8f)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (min-width:640px){.sm\:flex{display:flex}}@media (min-width:768px){.md\:w-\[60\%\]{width:60%}}@media (min-width:1024px){.lg\:\!w-\[30\%\]{width:30%!important}.lg\:\!w-\[35\%\]{width:35%!important}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}.lg\:text-\[12px\]{font-size:12px}}
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-top-\[9px\]{top:-9px}.bottom-0{bottom:0}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.left-full{left:100%}.right-0{right:0}.right-full{right:100%}.top-0{top:0}.top-1\/2{top:50%}.top-\[calc\(100\%\+8px\)\]{top:calc(100% + 8px)}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.z-\[1200\]{z-index:1200}.z-\[9999\]{z-index:9999}.z-\[999\]{z-index:999}.z-\[99\]{z-index:99}.m-0{margin:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-4{margin-bottom:1rem}.ml-0\.5{margin-left:.125rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.\!h-\[37px\]{height:37px!important}.h-0{height:0}.h-10{height:2.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[14px\]{height:14px}.h-\[16px\]{height:16px}.h-\[24px\]{height:24px}.h-\[45px\]{height:45px}.h-full{height:100%}.max-h-56{max-height:14rem}.max-h-60{max-height:15rem}.max-h-\[95vh\]{max-height:95vh}.max-h-full{max-height:100%}.\!min-h-\[37px\]{min-height:37px!important}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[14px\]{width:14px}.w-\[16px\]{width:16px}.w-\[20px\]{width:20px}.w-\[240px\]{width:240px}.w-\[24px\]{width:24px}.w-\[300px\]{width:300px}.w-\[500px\]{width:500px}.w-\[95\%\]{width:95%}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[1\.75rem\]{min-width:1.75rem}.min-w-\[2\.5rem\]{min-width:2.5rem}.min-w-\[2rem\]{min-width:2rem}.max-w-\[300px\]{max-width:300px}.max-w-\[calc\(100vw-12px\)\]{max-width:calc(100vw - 12px)}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-0{--tw-translate-y:0px}.translate-y-0,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-full{--tw-translate-y:100%}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[24px\]{border-radius:24px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-md{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-r-0{border-right-width:0}.border-t{border-top-width:1px}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity,1))}.border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity,1))}.border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity,1))}.border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-skprimary{border-color:var(--color-primary,#534f8f)}.border-teal-400{--tw-border-opacity:1;border-color:rgb(45 212 191/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-x-transparent{border-left-color:transparent;border-right-color:transparent}.border-y-transparent{border-top-color:transparent;border-bottom-color:transparent}.border-b-gray-600\/80{border-bottom-color:rgba(75,85,99,.8)}.border-b-transparent{border-bottom-color:transparent}.border-l-gray-600\/80{border-left-color:rgba(75,85,99,.8)}.border-l-transparent{border-left-color:transparent}.border-r-gray-600\/80{border-right-color:rgba(75,85,99,.8)}.border-r-transparent{border-right-color:transparent}.border-t-gray-600\/80{border-top-color:rgba(75,85,99,.8)}.border-t-transparent{border-top-color:transparent}.\!bg-\[\#534f8f\]{--tw-bg-opacity:1!important;background-color:rgb(83 79 143/var(--tw-bg-opacity,1))!important}.\!bg-sksecondary{background-color:var(--color-secondary,#dadbfe)!important}.bg-\[\#ec6c03\]{--tw-bg-opacity:1;background-color:rgb(236 108 3/var(--tw-bg-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-600\/80{background-color:rgba(75,85,99,.8)}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-800\/50{background-color:rgba(31,41,55,.5)}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity,1))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-skprimary{background-color:var(--color-primary,#534f8f)}.bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity,1))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.p-0{padding:0}.p-16{padding:4rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.\!px-10{padding-left:2.5rem!important;padding-right:2.5rem!important}.\!px-2{padding-left:.5rem!important;padding-right:.5rem!important}.\!py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.py-\[6px\]{padding-top:6px;padding-bottom:6px}.py-\[8px\]{padding-top:8px;padding-bottom:8px}.pb-3{padding-bottom:.75rem}.text-left{text-align:left}.\!text-\[12px\]{font-size:12px!important}.\!text-\[15px\]{font-size:15px!important}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14\.5px\]{font-size:14.5px}.text-\[14px\]{font-size:14px}.text-\[17px\]{font-size:17px}.text-\[8px\]{font-size:8px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-\[20px\]{line-height:20px}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-\[\#333333\]{--tw-text-opacity:1;color:rgb(51 51 51/var(--tw-text-opacity,1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity,1))}.text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity,1))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-skprimary{color:var(--color-primary,#534f8f)}.text-teal-500{--tw-text-opacity:1;color:rgb(20 184 166/var(--tw-text-opacity,1))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-85{opacity:.85}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}#HideScroll{scrollbar-width:none;-ms-overflow-style:none;overflow:-moz-scrollbars-none}#HideScroll::-webkit-scrollbar{width:0;height:0;display:none}#HideScroll::-ms-scrollbar{display:none}.placeholder\:text-\[13px\]::-moz-placeholder{font-size:13px}.placeholder\:text-\[13px\]::placeholder{font-size:13px}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-green-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.hover\:bg-orange-50:hover{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.hover\:bg-pink-50:hover{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity,1))}.hover\:bg-purple-50:hover{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:bg-teal-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity,1))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.hover\:text-pink-600:hover{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity,1))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.hover\:text-skprimary:hover{color:var(--color-primary,#534f8f)}.hover\:text-teal-600:hover{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-70:hover{opacity:.7}.focus\:border-skprimary:focus{border-color:var(--color-primary,#534f8f)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.focus\:ring-skprimary:focus{--tw-ring-color:var(--color-primary,#534f8f)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-skprimary:focus-visible{--tw-ring-color:var(--color-primary,#534f8f)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (min-width:640px){.sm\:flex{display:flex}}@media (min-width:768px){.md\:w-\[60\%\]{width:60%}}@media (min-width:1024px){.lg\:\!w-\[30\%\]{width:30%!important}.lg\:\!w-\[35\%\]{width:35%!important}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}.lg\:text-\[12px\]{font-size:12px}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seekho/ui",
3
- "version": "0.1.33",
3
+ "version": "0.1.36",
4
4
  "description": "Seekho internal UI component library",
5
5
  "keywords": [
6
6
  "seekho",