@worldcoin/mini-apps-ui-kit-react 1.0.0-canary.21 → 1.0.0-canary.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/components/Button/Button.js +3 -1
  2. package/dist/components/Checkbox/Checkbox.js +2 -1
  3. package/dist/components/Chip/Chip.d.ts +1 -1
  4. package/dist/components/CircularState/CircularState.d.ts +8 -0
  5. package/dist/components/CircularState/CircularState.js +41 -0
  6. package/dist/components/CircularState/index.d.ts +2 -0
  7. package/dist/components/ClearButton/ClearButton.js +2 -0
  8. package/dist/components/ColorPicker/ColorPicker.js +2 -1
  9. package/dist/components/Icons/Clock.d.ts +2 -0
  10. package/dist/components/Icons/Clock.js +30 -0
  11. package/dist/components/Icons/Warning.d.ts +2 -0
  12. package/dist/components/Icons/Warning.js +26 -0
  13. package/dist/components/LiveFeedback/LiveFeedback.js +18 -0
  14. package/dist/components/NumberPad/NumberPad.js +5 -3
  15. package/dist/components/OTPField/OTPField.js +3 -1
  16. package/dist/components/PasteButton/PasteButton.js +2 -0
  17. package/dist/components/PhoneField/GroupedCountryList.js +2 -1
  18. package/dist/components/RadioGroup/RadioGroup.js +2 -1
  19. package/dist/components/Select/Select.js +2 -1
  20. package/dist/components/Switch/Switch.js +2 -1
  21. package/dist/components/Tabs/Tabs.js +3 -1
  22. package/dist/components/Toast/use-toast.d.ts +2 -10
  23. package/dist/components/Toast/use-toast.js +9 -2
  24. package/dist/components/ToggleGroup/ToggleGroup.js +10 -1
  25. package/dist/components/Token/icons/doge.d.ts +3 -0
  26. package/dist/components/Token/icons/doge.js +29 -0
  27. package/dist/components/Token/icons/index.d.ts +5 -0
  28. package/dist/components/Token/icons/index.js +11 -1
  29. package/dist/components/Token/icons/link.d.ts +3 -0
  30. package/dist/components/Token/icons/link.js +27 -0
  31. package/dist/components/Token/icons/sol.d.ts +3 -0
  32. package/dist/components/Token/icons/sol.js +93 -0
  33. package/dist/components/Token/icons/sui.d.ts +3 -0
  34. package/dist/components/Token/icons/sui.js +29 -0
  35. package/dist/components/Token/icons/xrp.d.ts +3 -0
  36. package/dist/components/Token/icons/xrp.js +34 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.js +2 -0
  39. package/dist/lib/haptics.d.ts +28 -0
  40. package/dist/lib/haptics.js +45 -0
  41. package/package.json +5 -1
  42. package/public/globals.css +1 -1
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
+ import haptics, { withHaptics } from "../../lib/haptics.js";
3
4
  import { cn } from "../../lib/utils.js";
4
5
  import { Slot } from "../../node_modules/.pnpm/@radix-ui_react-slot@1.1.1_@types_react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-slot/dist/index.js";
5
6
  import { cva } from "../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
@@ -32,7 +33,7 @@ const buttonVariants = cva(
32
33
  }
33
34
  );
34
35
  const Button = forwardRef(
35
- ({ variant = "primary", size = "lg", fullWidth, asChild, children, ...props }, ref) => {
36
+ ({ variant = "primary", size = "lg", fullWidth, asChild, onClick, children, ...props }, ref) => {
36
37
  const Comp = asChild ? Slot : "button";
37
38
  return /* @__PURE__ */ jsx(
38
39
  Comp,
@@ -51,6 +52,7 @@ const Button = forwardRef(
51
52
  }),
52
53
  props.className
53
54
  ),
55
+ onClick: withHaptics(onClick, () => haptics.impact(size === "lg" ? "medium" : "light")),
54
56
  children
55
57
  }
56
58
  );
@@ -1,4 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import { withHaptics } from "../../lib/haptics.js";
2
3
  import { Root, Indicator } from "../../node_modules/.pnpm/@radix-ui_react-checkbox@1.1.3_@types_react-dom@18.3.5_@types_react@18.3.18__@types_react@18._5vtvszwgvdmnkk62ia2dob365m/node_modules/@radix-ui/react-checkbox/dist/index.js";
3
4
  import { forwardRef } from "react";
4
5
  import { Tick } from "../Icons/Tick.js";
@@ -9,7 +10,7 @@ const Checkbox = forwardRef(
9
10
  {
10
11
  ref,
11
12
  checked,
12
- onCheckedChange,
13
+ onCheckedChange: withHaptics(onCheckedChange),
13
14
  disabled,
14
15
  className: "flex size-6 items-center justify-center rounded-md border-[0.09375rem] transition-all data-[state=checked]:border-gray-900 data-[state=checked]:bg-gray-900 data-[state=unchecked]:border-gray-200 data-[state=unchecked]:bg-transparent disabled:cursor-not-allowed disabled:opacity-20",
15
16
  ...props,
@@ -20,7 +20,7 @@ interface ChipProps extends HTMLAttributes<HTMLDivElement> {
20
20
  className?: string;
21
21
  }
22
22
  declare const Chip: import('react').ForwardRefExoticComponent<ChipProps & VariantProps<(props?: ({
23
- variant?: "error" | "default" | "success" | "warning" | "important" | null | undefined;
23
+ variant?: "success" | "warning" | "error" | "default" | "important" | null | undefined;
24
24
  isIcon?: boolean | null | undefined;
25
25
  } & import('class-variance-authority/types').ClassProp) | undefined) => string> & import('react').RefAttributes<HTMLDivElement>>;
26
26
  export { Chip };
@@ -0,0 +1,8 @@
1
+ import { CircularIconProps } from '../CircularIcon/CircularIcon';
2
+ interface CircularStateProps extends Omit<CircularIconProps, "children"> {
3
+ /** The state to display in the circular icon. */
4
+ value: "success" | "error" | "warning" | "pending" | "critical";
5
+ }
6
+ declare function CircularState({ value, size, className, ...props }: CircularStateProps): import("react/jsx-runtime").JSX.Element;
7
+ export { CircularState };
8
+ export type { CircularStateProps };
@@ -0,0 +1,41 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { CircularIcon } from "../CircularIcon/CircularIcon.js";
4
+ import { Clock } from "../Icons/Clock.js";
5
+ import { Tick } from "../Icons/Tick.js";
6
+ import { Warning } from "../Icons/Warning.js";
7
+ import { XMark } from "../Icons/XMark.js";
8
+ const icon = {
9
+ success: /* @__PURE__ */ jsx(Tick, {}),
10
+ error: /* @__PURE__ */ jsx(XMark, {}),
11
+ warning: /* @__PURE__ */ jsx(Warning, {}),
12
+ pending: /* @__PURE__ */ jsx(Clock, {}),
13
+ critical: /* @__PURE__ */ jsx(XMark, {})
14
+ };
15
+ const iconClasses = {
16
+ success: "bg-success-600",
17
+ error: "bg-gray-400",
18
+ warning: "bg-warning-600",
19
+ pending: "bg-gray-400",
20
+ critical: "bg-error-600"
21
+ };
22
+ function CircularState({ value, size, className, ...props }) {
23
+ return /* @__PURE__ */ jsx(
24
+ CircularIcon,
25
+ {
26
+ className: cn(
27
+ "text-gray-0",
28
+ size !== "xs" && "shadow-[inset_0_0_0_1px_rgba(255,255,255,0.3)]",
29
+ iconClasses[value],
30
+ "bg-[radial-gradient(111.32%_111.8%_at_22.73%_0%,_rgba(255,255,255,0.2)_0%,_rgba(255,255,255,0)_100%)]",
31
+ className
32
+ ),
33
+ size,
34
+ ...props,
35
+ children: icon[value]
36
+ }
37
+ );
38
+ }
39
+ export {
40
+ CircularState
41
+ };
@@ -0,0 +1,2 @@
1
+ export { CircularState } from './CircularState';
2
+ export type { CircularStateProps } from './CircularState';
@@ -1,4 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import haptics from "../../lib/haptics.js";
2
3
  import * as React from "react";
3
4
  import { cn } from "../../lib/utils.js";
4
5
  import { Clear } from "./Clear.js";
@@ -10,6 +11,7 @@ const ClearButton = React.forwardRef(
10
11
  if (inputRef && "current" in inputRef && inputRef.current) {
11
12
  inputRef.current.value = "";
12
13
  onClear == null ? void 0 : onClear();
14
+ haptics.impact("light");
13
15
  }
14
16
  };
15
17
  return /* @__PURE__ */ jsx(
@@ -1,4 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import { withHaptics } from "../../lib/haptics.js";
2
3
  import { Item as Item2, Indicator, Root as Root2 } from "../../node_modules/.pnpm/@radix-ui_react-radio-group@1.2.2_@types_react-dom@18.3.5_@types_react@18.3.18__@types_react@_2u6lfd2xt65wmbxn7lgvaxqbmy/node_modules/@radix-ui/react-radio-group/dist/index.js";
3
4
  import { forwardRef } from "react";
4
5
  const ColorPickerItem = forwardRef(
@@ -25,7 +26,7 @@ const ColorPickerGroup = forwardRef(
25
26
  {
26
27
  ref,
27
28
  value,
28
- onValueChange: onChange,
29
+ onValueChange: withHaptics(onChange),
29
30
  className: "flex gap-4 items-center",
30
31
  ...props,
31
32
  children
@@ -0,0 +1,2 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export declare function Clock(props: HTMLAttributes<SVGElement>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,30 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ function Clock(props) {
3
+ return /* @__PURE__ */ jsxs(
4
+ "svg",
5
+ {
6
+ width: "48",
7
+ height: "48",
8
+ viewBox: "0 0 48 48",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ ...props,
12
+ children: [
13
+ /* @__PURE__ */ jsx("path", { d: "M24 12L24 24L36 24", stroke: "white", "stroke-width": "3" }),
14
+ /* @__PURE__ */ jsx(
15
+ "path",
16
+ {
17
+ d: "M24 44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4C12.9543 4 4 12.9543 4 24C4 35.0457 12.9543 44 24 44Z",
18
+ stroke: "white",
19
+ "stroke-width": "3",
20
+ "stroke-linecap": "round",
21
+ "stroke-linejoin": "round"
22
+ }
23
+ )
24
+ ]
25
+ }
26
+ );
27
+ }
28
+ export {
29
+ Clock
30
+ };
@@ -0,0 +1,2 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export declare function Warning(props: HTMLAttributes<SVGElement>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,26 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ function Warning(props) {
3
+ return /* @__PURE__ */ jsx(
4
+ "svg",
5
+ {
6
+ width: "44",
7
+ height: "44",
8
+ viewBox: "0 0 44 44",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ ...props,
12
+ children: /* @__PURE__ */ jsx(
13
+ "path",
14
+ {
15
+ "fill-rule": "evenodd",
16
+ "clip-rule": "evenodd",
17
+ d: "M22 0.835449L42.6702 38.0417H1.32983L22 0.835449ZM23.375 15.125V25.2083H20.625V15.125H23.375ZM20.6213 32.5505L23.3987 32.5499L23.3981 29.7999L20.6207 29.8005L20.6213 32.5505Z",
18
+ fill: "white"
19
+ }
20
+ )
21
+ }
22
+ );
23
+ }
24
+ export {
25
+ Warning
26
+ };
@@ -1,10 +1,28 @@
1
+ "use client";
1
2
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
3
+ import haptics from "../../lib/haptics.js";
2
4
  import { cn } from "../../lib/utils.js";
5
+ import { useRef, useEffect } from "react";
3
6
  import { Fail } from "../Icons/Fail.js";
4
7
  import { Success } from "../Icons/Success.js";
5
8
  import { Spinner } from "../Spinner/Spinner.js";
6
9
  import { Typography } from "../Typography/Typography.js";
10
+ function usePrevious(value) {
11
+ const ref = useRef();
12
+ useEffect(() => {
13
+ ref.current = value;
14
+ });
15
+ return ref.current;
16
+ }
7
17
  function LiveFeedback({ state, children, className, label }) {
18
+ const prevState = usePrevious(state);
19
+ if (state !== prevState) {
20
+ if (state === "success") {
21
+ haptics.notification("success");
22
+ } else if (state === "failed") {
23
+ haptics.notification("error");
24
+ }
25
+ }
8
26
  return /* @__PURE__ */ jsxs("div", { className: cn("relative", className), children: [
9
27
  /* @__PURE__ */ jsx(
10
28
  "div",
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
+ import haptics from "../../lib/haptics.js";
3
4
  import { cn } from "../../lib/utils.js";
4
5
  import { useLongPress } from "../../node_modules/.pnpm/@uidotdev_usehooks@2.4.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@uidotdev/usehooks/index.js";
5
6
  import { typographyVariants } from "../Typography/Typography.js";
@@ -32,6 +33,7 @@ const NumberPad = ({
32
33
  console.error("NumberPad value must be a valid number or empty string");
33
34
  }
34
35
  const handleButtonClick = (buttonValue) => {
36
+ haptics.impact("light");
35
37
  if (!onChange || disabled) return;
36
38
  if (buttonValue === "del") {
37
39
  onChange(value.slice(0, -1));
@@ -53,11 +55,11 @@ const NumberPad = ({
53
55
  disabled,
54
56
  className: cn(
55
57
  typographyVariants({ variant: "heading", level: 3 }),
56
- "h-12 min-w-28 flex items-center justify-center select-none group",
57
- "disabled:text-gray-300 disabled:cursor-not-allowed disabled:active:bg-transparent"
58
+ "h-12 min-w-28 flex items-center justify-center select-none",
59
+ "disabled:text-gray-300 disabled:cursor-not-allowed"
58
60
  ),
59
61
  ...button.value === "del" ? longPressAttributes : {},
60
- children: /* @__PURE__ */ jsx("span", { className: "duration-200 transition-colors size-12 flex items-center justify-center rounded-full group-active:bg-gray-50", children: button.label || button.value })
62
+ children: /* @__PURE__ */ jsx("span", { className: "duration-200 transition-colors size-12 flex items-center justify-center rounded-full", children: button.label || button.value })
61
63
  },
62
64
  button.value
63
65
  )) });
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx, Fragment } from "react/jsx-runtime";
3
+ import { withHaptics } from "../../lib/haptics.js";
3
4
  import { cn } from "../../lib/utils.js";
4
5
  import { cva } from "../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
5
6
  import { OTPInput as Lt, REGEXP_ONLY_DIGITS as Kt, REGEXP_ONLY_CHARS as Jt, REGEXP_ONLY_DIGITS_AND_CHARS as Qt } from "../../node_modules/.pnpm/input-otp@1.4.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/input-otp/dist/index.js";
@@ -34,7 +35,7 @@ const inputModeDictionary = {
34
35
  digitsAndChars: "text"
35
36
  };
36
37
  const OTPField = React.forwardRef(
37
- ({ maxLength = 6, error, children, mode = "digits", pattern, ...props }, ref) => {
38
+ ({ maxLength = 6, error, children, mode = "digits", pattern, onChange, ...props }, ref) => {
38
39
  return /* @__PURE__ */ jsx(
39
40
  Lt,
40
41
  {
@@ -43,6 +44,7 @@ const OTPField = React.forwardRef(
43
44
  maxLength,
44
45
  inputMode: inputModeDictionary[mode],
45
46
  pattern: pattern || patternDictionary[mode],
47
+ onChange: withHaptics(onChange),
46
48
  containerClassName: "flex items-center gap-2 has-[:disabled]:opacity-50",
47
49
  render: ({ slots }) => /* @__PURE__ */ jsx(Fragment, { children: slots.map(({ isActive, char }, idx) => /* @__PURE__ */ jsx(
48
50
  "div",
@@ -1,4 +1,5 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
+ import haptics from "../../lib/haptics.js";
2
3
  import * as React from "react";
3
4
  import { cn } from "../../lib/utils.js";
4
5
  import { MagicWand } from "../Icons/MagicWand.js";
@@ -11,6 +12,7 @@ const PasteButton = React.forwardRef(
11
12
  const text = await navigator.clipboard.readText();
12
13
  inputRef.current.value = text;
13
14
  onPaste == null ? void 0 : onPaste(text);
15
+ haptics.impact("light");
14
16
  }
15
17
  } catch (error) {
16
18
  console.error("Failed to read clipboard:", error);
@@ -1,4 +1,5 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { withHaptics } from "../../lib/haptics.js";
2
3
  import { Magnifier } from "../Icons/Magnifier.js";
3
4
  import CountryListItem from "./CountryListItem.js";
4
5
  import { Typography } from "../Typography/Typography.js";
@@ -21,7 +22,7 @@ function GroupedCountryList({
21
22
  {
22
23
  countryCode: country.countryCode,
23
24
  countryName: country.name,
24
- onClick: onSelect,
25
+ onClick: withHaptics(onSelect),
25
26
  isSelected: value === country.countryCode
26
27
  }
27
28
  ) }, country.countryCode)),
@@ -1,4 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import { withHaptics } from "../../lib/haptics.js";
2
3
  import { Root as Root2 } from "../../node_modules/.pnpm/@radix-ui_react-radio-group@1.2.2_@types_react-dom@18.3.5_@types_react@18.3.18__@types_react@_2u6lfd2xt65wmbxn7lgvaxqbmy/node_modules/@radix-ui/react-radio-group/dist/index.js";
3
4
  import { cva } from "../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
4
5
  import { forwardRef } from "react";
@@ -27,7 +28,7 @@ const RadioGroup = forwardRef(
27
28
  {
28
29
  ref,
29
30
  defaultValue,
30
- onValueChange,
31
+ onValueChange: withHaptics(onValueChange),
31
32
  className: radioGroupVariants({ orientation }),
32
33
  disabled,
33
34
  orientation,
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { jsxs, jsx } from "react/jsx-runtime";
3
3
  import { DROPDOWN_CONTAINER_STYLES } from "../../lib/constants/dropdownStyles.js";
4
+ import { withHaptics } from "../../lib/haptics.js";
4
5
  import { Root as Root2, Trigger, Value, Icon, Portal, Content as Content2, Viewport, Item, ItemText } from "../../node_modules/.pnpm/@radix-ui_react-select@2.1.4_@types_react-dom@18.3.5_@types_react@18.3.18__@types_react@18.3._atdh45n5c7sked5b6tbwgdz7re/node_modules/@radix-ui/react-select/dist/index.js";
5
6
  import { cva } from "../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
6
7
  import { forwardRef, useState, useEffect } from "react";
@@ -76,7 +77,7 @@ const Select = forwardRef(
76
77
  {
77
78
  value,
78
79
  open: isOpen,
79
- onValueChange: onChange,
80
+ onValueChange: withHaptics(onChange),
80
81
  defaultOpen,
81
82
  onOpenChange: handleOpenChange,
82
83
  name,
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
+ import { withHaptics } from "../../lib/haptics.js";
3
4
  import { Root, Thumb } from "../../node_modules/.pnpm/@radix-ui_react-switch@1.1.2_@types_react-dom@18.3.5_@types_react@18.3.18__@types_react@18.3._udl6ccyllphugejc6sszfrese4/node_modules/@radix-ui/react-switch/dist/index.js";
4
5
  import { forwardRef } from "react";
5
6
  const Switch = forwardRef(
@@ -9,7 +10,7 @@ const Switch = forwardRef(
9
10
  {
10
11
  ref,
11
12
  checked,
12
- onCheckedChange,
13
+ onCheckedChange: withHaptics(onCheckedChange),
13
14
  disabled,
14
15
  className: "relative inline-flex h-6 w-10 items-center rounded-full border-2 transition-all data-[state=checked]:border-gray-900 data-[state=checked]:bg-gray-900 data-[state=unchecked]:border-gray-300 data-[state=unchecked]:bg-gray-300 disabled:cursor-not-allowed disabled:opacity-20",
15
16
  ...rest,
@@ -1,12 +1,13 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { withHaptics } from "../../lib/haptics.js";
3
4
  import { Slot } from "../../node_modules/.pnpm/@radix-ui_react-slot@1.1.1_@types_react@18.3.18_react@18.3.1/node_modules/@radix-ui/react-slot/dist/index.js";
4
5
  import { Root as Root2, Item as Item2 } from "../../node_modules/.pnpm/@radix-ui_react-toggle-group@1.1.2_@types_react-dom@18.3.5_@types_react@18.3.18__@types_react_3smwloudr6a3igss4kifyxcwju/node_modules/@radix-ui/react-toggle-group/dist/index.js";
5
6
  import * as React from "react";
6
7
  import { cn } from "../../lib/utils.js";
7
8
  import { Typography } from "../Typography/Typography.js";
8
9
  const Tabs = React.forwardRef(
9
- ({ children, className, ...props }, ref) => {
10
+ ({ children, className, onValueChange, ...props }, ref) => {
10
11
  return /* @__PURE__ */ jsx(
11
12
  Root2,
12
13
  {
@@ -16,6 +17,7 @@ const Tabs = React.forwardRef(
16
17
  style: {
17
18
  gridTemplateColumns: `repeat(${React.Children.count(children)}, 1fr)`
18
19
  },
20
+ onValueChange: withHaptics(onValueChange),
19
21
  ...props,
20
22
  children
21
23
  }
@@ -34,16 +34,8 @@ declare const toast: ({ ...props }: Toast) => {
34
34
  };
35
35
  declare function useToast(): {
36
36
  toast: {
37
- success: (props: Omit<Toast, "variant">) => {
38
- id: string;
39
- dismiss: () => void;
40
- update: (props: ToasterToast) => void;
41
- };
42
- error: (props: Omit<Toast, "variant">) => {
43
- id: string;
44
- dismiss: () => void;
45
- update: (props: ToasterToast) => void;
46
- };
37
+ success: (props: Omit<Toast, "variant">) => void;
38
+ error: (props: Omit<Toast, "variant">) => void;
47
39
  };
48
40
  dismiss: (toastId?: string) => void;
49
41
  toasts: ToasterToast[];
@@ -1,4 +1,5 @@
1
1
  "use client";
2
+ import haptics from "../../lib/haptics.js";
2
3
  import { useState, useEffect } from "react";
3
4
  const TOAST_LIMIT = 1;
4
5
  const TOAST_REMOVE_DELAY = 1e6;
@@ -113,8 +114,14 @@ function useToast() {
113
114
  return {
114
115
  ...state,
115
116
  toast: {
116
- success: (props) => toast({ ...props, variant: "success" }),
117
- error: (props) => toast({ ...props, variant: "error" })
117
+ success: (props) => {
118
+ toast({ ...props, variant: "success" });
119
+ haptics.notification("success");
120
+ },
121
+ error: (props) => {
122
+ toast({ ...props, variant: "error" });
123
+ haptics.notification("error");
124
+ }
118
125
  },
119
126
  dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", toastId })
120
127
  };
@@ -1,9 +1,18 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import { withHaptics } from "../../lib/haptics.js";
2
3
  import { Root as Root2, Item as Item2 } from "../../node_modules/.pnpm/@radix-ui_react-toggle-group@1.1.2_@types_react-dom@18.3.5_@types_react@18.3.18__@types_react_3smwloudr6a3igss4kifyxcwju/node_modules/@radix-ui/react-toggle-group/dist/index.js";
3
4
  import * as React from "react";
4
5
  import { cn } from "../../lib/utils.js";
5
6
  import { typographyVariants } from "../Typography/Typography.js";
6
- const ToggleGroupRoot = React.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx(Root2, { ref, className: cn("inline-flex gap-5"), ...props }));
7
+ const ToggleGroupRoot = React.forwardRef(({ onValueChange, ...props }, ref) => /* @__PURE__ */ jsx(
8
+ Root2,
9
+ {
10
+ ref,
11
+ className: cn("inline-flex gap-5"),
12
+ onValueChange: withHaptics(onValueChange),
13
+ ...props
14
+ }
15
+ ));
7
16
  ToggleGroupRoot.displayName = "ToggleGroup";
8
17
  const ToggleGroupItem = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
9
18
  Item2,
@@ -0,0 +1,3 @@
1
+ import { IconProps } from './types';
2
+ declare const DOGE: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default DOGE;
@@ -0,0 +1,29 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { getBackgroundClass, getIconFillClass } from "./utils.js";
3
+ const DOGE = (props) => /* @__PURE__ */ jsxs(
4
+ "svg",
5
+ {
6
+ width: "88",
7
+ height: "88",
8
+ viewBox: "0 0 88 88",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ ...props,
12
+ style: { color: "#988430" },
13
+ children: [
14
+ /* @__PURE__ */ jsx("rect", { width: "88", height: "88", rx: "44", className: getBackgroundClass(props) }),
15
+ /* @__PURE__ */ jsx(
16
+ "path",
17
+ {
18
+ fillRule: "evenodd",
19
+ clipRule: "evenodd",
20
+ d: "M63.871 34.1006C59.9176 23.8914 50.1446 22 50.1446 22H22.2619L22.3695 32.3989H27.9223V55.6198H22.2615V66H49.3728C55.9067 66 61.1444 59.4339 61.1444 59.4339C69.5318 47.5297 63.8705 34.1006 63.8705 34.1006H63.871ZM49.5183 52.4379C49.5183 52.4379 47.3917 55.506 45.0779 55.506H40.4495L40.3398 32.4244H46.2796C46.2796 32.4244 49.0317 32.9998 50.9543 38.4459C50.9543 38.4459 53.5033 46.2433 49.5183 52.4379Z",
21
+ className: getIconFillClass(props)
22
+ }
23
+ )
24
+ ]
25
+ }
26
+ );
27
+ export {
28
+ DOGE as default
29
+ };
@@ -4,3 +4,8 @@ export { default as DAI } from './dai';
4
4
  export { default as USDC } from './usdc';
5
5
  export { default as USDT } from './usdt';
6
6
  export { default as WLD } from './wld';
7
+ export { default as SOL } from './sol';
8
+ export { default as SUI } from './sui';
9
+ export { default as DOGE } from './doge';
10
+ export { default as XRP } from './xrp';
11
+ export { default as LINK } from './link';
@@ -4,11 +4,21 @@ import { default as default4 } from "./dai.js";
4
4
  import { default as default5 } from "./usdc.js";
5
5
  import { default as default6 } from "./usdt.js";
6
6
  import { default as default7 } from "./wld.js";
7
+ import { default as default8 } from "./sol.js";
8
+ import { default as default9 } from "./sui.js";
9
+ import { default as default10 } from "./doge.js";
10
+ import { default as default11 } from "./xrp.js";
11
+ import { default as default12 } from "./link.js";
7
12
  export {
8
13
  default2 as BTC,
9
14
  default4 as DAI,
15
+ default10 as DOGE,
10
16
  default3 as ETH,
17
+ default12 as LINK,
18
+ default8 as SOL,
19
+ default9 as SUI,
11
20
  default5 as USDC,
12
21
  default6 as USDT,
13
- default7 as WLD
22
+ default7 as WLD,
23
+ default11 as XRP
14
24
  };
@@ -0,0 +1,3 @@
1
+ import { IconProps } from './types';
2
+ declare const LINK: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default LINK;
@@ -0,0 +1,27 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { getBackgroundClass, getIconFillClass } from "./utils.js";
3
+ const LINK = (props) => /* @__PURE__ */ jsxs(
4
+ "svg",
5
+ {
6
+ width: "88",
7
+ height: "88",
8
+ viewBox: "0 0 88 88",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ ...props,
12
+ style: { color: "#2A5ADA" },
13
+ children: [
14
+ /* @__PURE__ */ jsx("rect", { width: "88", height: "88", rx: "44", className: getBackgroundClass(props) }),
15
+ /* @__PURE__ */ jsx(
16
+ "path",
17
+ {
18
+ d: "M44 20L39.5963 22.5321L27.5963 29.4679L23.1926 32V56L27.5963 58.5321L39.7064 65.4679L44.1101 68L48.5137 65.4679L60.4036 58.5321L64.8073 56V32L60.4036 29.4679L48.4036 22.5321L44 20ZM32 50.9358V37.0642L44 30.1284L56 37.0642V50.9358L44 57.8716L32 50.9358Z",
19
+ className: getIconFillClass(props)
20
+ }
21
+ )
22
+ ]
23
+ }
24
+ );
25
+ export {
26
+ LINK as default
27
+ };
@@ -0,0 +1,3 @@
1
+ import { IconProps } from './types';
2
+ declare const SOL: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default SOL;
@@ -0,0 +1,93 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { getBackgroundClass, getIconFillClass } from "./utils.js";
3
+ const SOL = (props) => /* @__PURE__ */ jsxs(
4
+ "svg",
5
+ {
6
+ width: "88",
7
+ height: "88",
8
+ viewBox: "0 0 88 88",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ ...props,
12
+ children: [
13
+ /* @__PURE__ */ jsx("rect", { width: "88", height: "88", rx: "44", className: getBackgroundClass(props) }),
14
+ /* @__PURE__ */ jsxs("g", { "clip-path": "url(#clip0_2277_732)", children: [
15
+ /* @__PURE__ */ jsx(
16
+ "path",
17
+ {
18
+ d: "M27.6616 54.1925C27.9537 53.8944 28.3553 53.7205 28.7813 53.7205H67.4088C68.1146 53.7205 68.4676 54.59 67.9686 55.0993L60.338 62.888C60.0459 63.1862 59.6443 63.3601 59.2184 63.3601H20.5909C19.885 63.3601 19.5321 62.4905 20.031 61.9812L27.6616 54.1925Z",
19
+ className: props.variant !== "color" || props.disabled ? getIconFillClass(props) : void 0,
20
+ fill: props.variant === "color" ? "url(#paint0_linear_2277_732)" : void 0
21
+ }
22
+ ),
23
+ /* @__PURE__ */ jsx(
24
+ "path",
25
+ {
26
+ d: "M27.6616 25.1121C27.9659 24.8139 28.3675 24.64 28.7813 24.64H67.4088C68.1146 24.64 68.4676 25.5096 67.9686 26.0189L60.338 33.8076C60.0459 34.1057 59.6443 34.2796 59.2184 34.2796H20.5909C19.885 34.2796 19.5321 33.4101 20.031 32.9008L27.6616 25.1121Z",
27
+ className: props.variant !== "color" || props.disabled ? getIconFillClass(props) : void 0,
28
+ fill: props.variant === "color" ? "url(#paint1_linear_2277_732)" : void 0
29
+ }
30
+ ),
31
+ /* @__PURE__ */ jsx(
32
+ "path",
33
+ {
34
+ d: "M60.338 39.5591C60.0459 39.261 59.6443 39.0871 59.2184 39.0871H20.5909C19.885 39.0871 19.5321 39.9566 20.031 40.4659L27.6616 48.2547C27.9537 48.5528 28.3553 48.7267 28.7813 48.7267H67.4088C68.1146 48.7267 68.4676 47.8571 67.9686 47.3478L60.338 39.5591Z",
35
+ className: props.variant !== "color" || props.disabled ? getIconFillClass(props) : void 0,
36
+ fill: props.variant === "color" ? "url(#paint2_linear_2277_732)" : void 0
37
+ }
38
+ )
39
+ ] }),
40
+ /* @__PURE__ */ jsxs("defs", { children: [
41
+ /* @__PURE__ */ jsxs(
42
+ "linearGradient",
43
+ {
44
+ id: "paint0_linear_2277_732",
45
+ x1: "63.7187",
46
+ y1: "19.9873",
47
+ x2: "36.1134",
48
+ y2: "71.7889",
49
+ gradientUnits: "userSpaceOnUse",
50
+ children: [
51
+ /* @__PURE__ */ jsx("stop", { "stop-color": "#00FFA3" }),
52
+ /* @__PURE__ */ jsx("stop", { offset: "1", "stop-color": "#DC1FFF" })
53
+ ]
54
+ }
55
+ ),
56
+ /* @__PURE__ */ jsxs(
57
+ "linearGradient",
58
+ {
59
+ id: "paint1_linear_2277_732",
60
+ x1: "52.0295",
61
+ y1: "13.758",
62
+ x2: "24.4242",
63
+ y2: "65.5596",
64
+ gradientUnits: "userSpaceOnUse",
65
+ children: [
66
+ /* @__PURE__ */ jsx("stop", { "stop-color": "#00FFA3" }),
67
+ /* @__PURE__ */ jsx("stop", { offset: "1", "stop-color": "#DC1FFF" })
68
+ ]
69
+ }
70
+ ),
71
+ /* @__PURE__ */ jsxs(
72
+ "linearGradient",
73
+ {
74
+ id: "paint2_linear_2277_732",
75
+ x1: "57.8369",
76
+ y1: "16.8528",
77
+ x2: "30.2316",
78
+ y2: "68.6544",
79
+ gradientUnits: "userSpaceOnUse",
80
+ children: [
81
+ /* @__PURE__ */ jsx("stop", { "stop-color": "#00FFA3" }),
82
+ /* @__PURE__ */ jsx("stop", { offset: "1", "stop-color": "#DC1FFF" })
83
+ ]
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsx("clipPath", { id: "clip0_2277_732", children: /* @__PURE__ */ jsx("rect", { width: "48.4", height: "38.72", fill: "white", transform: "translate(19.8 24.64)" }) })
87
+ ] })
88
+ ]
89
+ }
90
+ );
91
+ export {
92
+ SOL as default
93
+ };
@@ -0,0 +1,3 @@
1
+ import { IconProps } from './types';
2
+ declare const SUI: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default SUI;
@@ -0,0 +1,29 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { getBackgroundClass, getIconFillClass } from "./utils.js";
3
+ const SUI = (props) => /* @__PURE__ */ jsxs(
4
+ "svg",
5
+ {
6
+ width: "88",
7
+ height: "88",
8
+ viewBox: "0 0 88 88",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ ...props,
12
+ style: { color: "#61BFFF" },
13
+ children: [
14
+ /* @__PURE__ */ jsx("rect", { width: "88", height: "88", rx: "44", className: getBackgroundClass(props) }),
15
+ /* @__PURE__ */ jsx(
16
+ "path",
17
+ {
18
+ fillRule: "evenodd",
19
+ clipRule: "evenodd",
20
+ d: "M55.6288 39.886C57.6422 42.4157 58.8555 45.6295 58.8555 49.1143C58.8555 52.5991 57.6164 55.9032 55.5385 58.4587L55.3578 58.6781L55.3061 58.3942C55.2674 58.1618 55.2158 57.9166 55.1642 57.6714C54.1316 53.1153 50.7501 49.2046 45.1744 46.0296C41.4186 43.9 39.2631 41.3316 38.6953 38.4146C38.3339 36.5303 38.6049 34.633 39.1212 33.0068C39.6503 31.3805 40.4247 30.0253 41.083 29.2122L43.2513 26.5663C43.6256 26.1017 44.3484 26.1017 44.7227 26.5663L55.6288 39.886ZM59.0491 37.2401L44.542 19.5064C44.2709 19.1708 43.7418 19.1708 43.4707 19.5064L28.9507 37.2401L28.8991 37.3047C26.2403 40.6217 24.6399 44.8293 24.6399 49.4111C24.6399 60.0849 33.3132 68.7453 43.9999 68.7453C54.6866 68.7453 63.3599 60.0849 63.3599 49.4111C63.3599 44.8293 61.7595 40.6217 59.0878 37.3047L59.0491 37.2401ZM32.4226 39.8344L33.7133 38.2469L33.752 38.5437C33.7778 38.776 33.8165 39.0084 33.8682 39.2407C34.7071 43.6418 37.7143 47.3202 42.7221 50.1597C47.0846 52.6378 49.6143 55.4902 50.35 58.6265C50.6597 59.9301 50.7114 61.2207 50.5823 62.3436L50.5694 62.4081L50.5049 62.434C48.543 63.3891 46.3231 63.9311 43.987 63.9311C35.7913 63.9311 29.1443 57.2971 29.1443 49.1143C29.1443 45.6037 30.3705 42.3641 32.4226 39.8344Z",
21
+ className: getIconFillClass(props)
22
+ }
23
+ )
24
+ ]
25
+ }
26
+ );
27
+ export {
28
+ SUI as default
29
+ };
@@ -0,0 +1,3 @@
1
+ import { IconProps } from './types';
2
+ declare const XRP: (props: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default XRP;
@@ -0,0 +1,34 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { getBackgroundClass, getIconFillClass } from "./utils.js";
3
+ const XRP = (props) => /* @__PURE__ */ jsxs(
4
+ "svg",
5
+ {
6
+ width: "88",
7
+ height: "88",
8
+ viewBox: "0 0 88 88",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ ...props,
12
+ style: { color: "#23292F" },
13
+ children: [
14
+ /* @__PURE__ */ jsx("rect", { width: "88", height: "88", rx: "44", className: getBackgroundClass(props) }),
15
+ /* @__PURE__ */ jsx(
16
+ "path",
17
+ {
18
+ d: "M60.9687 24.125H67.9062L53.4687 38.42C48.2403 43.5941 39.7634 43.5941 34.5312 38.42L20.0881 24.125H27.0312L38 34.9841C39.5981 36.5592 41.7519 37.4421 43.9958 37.4421C46.2397 37.4421 48.3934 36.5592 49.9916 34.9841L60.9687 24.125Z",
19
+ className: getIconFillClass(props)
20
+ }
21
+ ),
22
+ /* @__PURE__ */ jsx(
23
+ "path",
24
+ {
25
+ d: "M26.9422 63.875H20L34.5312 49.4919C39.7597 44.3178 48.2366 44.3178 53.4688 49.4919L68 63.875H61.0625L50 52.9278C48.4019 51.3527 46.2481 50.4697 44.0042 50.4697C41.7603 50.4697 39.6066 51.3527 38.0084 52.9278L26.9422 63.875Z",
26
+ className: getIconFillClass(props)
27
+ }
28
+ )
29
+ ]
30
+ }
31
+ );
32
+ export {
33
+ XRP as default
34
+ };
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { Button } from './components/Button';
2
2
  export { Checkbox } from './components/Checkbox';
3
3
  export { Chip } from './components/Chip';
4
4
  export { CircularIcon } from './components/CircularIcon';
5
+ export { CircularState } from './components/CircularState';
5
6
  export { ColorPickerItem, ColorPickerGroup } from './components/ColorPicker';
6
7
  export { Flag } from './components/Flag';
7
8
  export type { CountryCode } from './components/Flag';
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ import { Button } from "./components/Button/Button.js";
3
3
  import { Checkbox } from "./components/Checkbox/Checkbox.js";
4
4
  import { Chip } from "./components/Chip/Chip.js";
5
5
  import { CircularIcon } from "./components/CircularIcon/CircularIcon.js";
6
+ import { CircularState } from "./components/CircularState/CircularState.js";
6
7
  import { ColorPickerGroup, ColorPickerItem } from "./components/ColorPicker/ColorPicker.js";
7
8
  import { Flag } from "./components/Flag/Flag.js";
8
9
  import * as Form from "./components/Form/Form.js";
@@ -53,6 +54,7 @@ export {
53
54
  Checkbox,
54
55
  Chip,
55
56
  CircularIcon,
57
+ CircularState,
56
58
  ColorPickerGroup,
57
59
  ColorPickerItem,
58
60
  CountryDrawer,
@@ -0,0 +1,28 @@
1
+ type NotificationType = "success" | "warning" | "error";
2
+ type ImpactStyle = "light" | "medium" | "heavy" | "soft" | "rigid";
3
+ interface HapticFeedbackParams {
4
+ hapticsType: "impact" | "notification" | "selectionChanged";
5
+ style?: ImpactStyle | NotificationType;
6
+ }
7
+ declare global {
8
+ interface Window {
9
+ MiniKit?: {
10
+ commands?: {
11
+ sendHapticFeedback?: (params: HapticFeedbackParams) => void;
12
+ };
13
+ };
14
+ }
15
+ }
16
+ /**
17
+ * Wraps a function with haptic feedback
18
+ * @param fn The function to wrap (can be undefined)
19
+ * @param hapticFn The haptic feedback function to call (defaults to selection)
20
+ * @returns A new function that triggers haptic feedback and calls the original function if provided
21
+ */
22
+ export declare function withHaptics<T extends (...args: any[]) => any>(fn: T | undefined, hapticFn?: () => void): T;
23
+ declare const haptics: {
24
+ notification: (type: NotificationType) => void;
25
+ selection: () => void;
26
+ impact: (style: ImpactStyle) => void;
27
+ };
28
+ export default haptics;
@@ -0,0 +1,45 @@
1
+ const sendHapticFeedback = (params) => {
2
+ var _a, _b, _c;
3
+ try {
4
+ (_c = (_b = (_a = window.MiniKit) == null ? void 0 : _a.commands) == null ? void 0 : _b.sendHapticFeedback) == null ? void 0 : _c.call(_b, params);
5
+ } catch (error) {
6
+ console.warn("Haptic feedback not supported:", error);
7
+ }
8
+ };
9
+ function withHaptics(fn, hapticFn = haptics.selection) {
10
+ return (...args) => {
11
+ if (!fn) {
12
+ hapticFn();
13
+ return void 0;
14
+ }
15
+ const result = fn(...args);
16
+ if (result instanceof Promise) {
17
+ return result.finally(() => hapticFn());
18
+ }
19
+ hapticFn();
20
+ return result;
21
+ };
22
+ }
23
+ const haptics = {
24
+ notification: (type) => {
25
+ sendHapticFeedback({
26
+ hapticsType: "notification",
27
+ style: type
28
+ });
29
+ },
30
+ selection: () => {
31
+ sendHapticFeedback({
32
+ hapticsType: "selectionChanged"
33
+ });
34
+ },
35
+ impact: (style) => {
36
+ sendHapticFeedback({
37
+ hapticsType: "impact",
38
+ style
39
+ });
40
+ }
41
+ };
42
+ export {
43
+ haptics as default,
44
+ withHaptics
45
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@worldcoin/mini-apps-ui-kit-react",
3
- "version": "1.0.0-canary.21",
3
+ "version": "1.0.0-canary.22",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -232,6 +232,10 @@
232
232
  "types": "./dist/components/LiveFeedback/index.d.ts",
233
233
  "default": "./dist/components/LiveFeedback/index.js"
234
234
  },
235
+ "./CircularState": {
236
+ "types": "./dist/components/CircularState/index.d.ts",
237
+ "default": "./dist/components/CircularState/index.js"
238
+ },
235
239
  "./tailwind": {
236
240
  "types": "./dist/tailwind/index.d.ts",
237
241
  "import": "./dist/tailwind/index.js",
@@ -1,3 +1,3 @@
1
1
  @font-face{font-family:TWK Lausanne;src:url(../public/fonts/TWKLausanne-350.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(../public/fonts/TWKLausanne-350Italic.woff) format("woff");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(../public/fonts/TWKLausanne-500.woff) format("woff");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(../public/fonts/TWKLausanne-500Italic.woff) format("woff");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(../public/fonts/TWKLausanne-600.woff) format("woff");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:TWK Lausanne;src:url(../public/fonts/TWKLausanne-600Italic.woff) format("woff");font-weight:600;font-style:italic;font-display:swap}:root{--font-sans:"TWK Lausanne",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}input::-webkit-clear-button{display:none}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{display:none}input::-webkit-calendar-picker-indicator{display:none}input::-webkit-datetime-edit,input::-webkit-datetime-edit-ampm-field,input::-webkit-datetime-edit-day-field,input::-webkit-datetime-edit-fields-wrapper,input::-webkit-datetime-edit-hour-field,input::-webkit-datetime-edit-minute-field,input::-webkit-datetime-edit-month-field,input::-webkit-datetime-edit-second-field,input::-webkit-datetime-edit-text,input::-webkit-datetime-edit-year-field{display:none}*,: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: }
2
2
 
3
- /*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--gray-200)/1)}: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:var(--font-sans);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:rgb(var(--gray-400)/1)}input::placeholder,textarea::placeholder{opacity:1;color:rgb(var(--gray-400)/1)}[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}:root{--font-sans:TWK Lausanne;--gray-0:255 255 255;--gray-50:249 250 251;--gray-100:243 244 245;--gray-200:235 236 239;--gray-300:214 217 221;--gray-350:177 184 194;--gray-400:155 163 174;--gray-500:113 118 128;--gray-700:60 66 75;--gray-900:24 24 24;--success-100:230 249 236;--success-200:204 243 217;--success-300:153 232 179;--success-400:102 220 141;--success-500:51 209 103;--success-600:0 194 48;--success-700:0 155 38;--success-800:0 116 29;--success-900:0 77 19;--error-100:254 233 231;--error-200:253 211 207;--error-300:251 167 159;--error-400:249 123 111;--error-500:247 80 63;--error-600:242 40 13;--error-700:194 32 10;--error-800:145 24 8;--error-900:97 16 5;--warning-100:255 246 230;--warning-200:255 237 204;--warning-300:255 219 153;--warning-400:255 201 102;--warning-500:255 184 51;--warning-600:255 174 0;--warning-700:204 139 0;--warning-800:153 104 0;--warning-900:102 70 0;--info-100:230 240 255;--info-200:204 224 255;--info-300:153 194 255;--info-400:102 163 255;--info-500:51 133 255;--info-600:0 92 255;--info-700:0 74 204;--info-800:0 55 153;--info-900:0 36 102;--world-blue-primary:63,219,237;--world-blue-secondary:236,251,253;--carrot-orange-primary:255,90,0;--carrot-orange-secondary:255,237,230;--purple-primary:134,0,255;--purple-secondary:242,230,255;--green-primary:0,194,48;--green-secondary:230,249,236;--blue-primary:0,92,255;--blue-secondary:230,240,255;--worldcoin-primary:24,24,24;--worldcoin-secondary:243,244,245;--digital-dollars-primary:0,194,48;--digital-dollars-secondary:230,249,236;--bitcoin-primary:255,90,0;--bitcoin-secondary:255,237,230;--ethereum-primary:51,133,255;--ethereum-secondary:230,240,255}.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}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.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}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.start-0{inset-inline-start:0}.top-0{top:0}.top-1\/2{top:50%}.top-6{top:1.5rem}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.m-3{margin:.75rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-4{margin-left:1rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-1{margin-top:.25rem}.mt-24{margin-top:6rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.size-10{width:2.5rem;height:2.5rem}.size-11{width:2.75rem;height:2.75rem}.size-12{width:3rem;height:3rem}.size-16{width:4rem;height:4rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-\[0\.875rem\]{width:.875rem;height:.875rem}.size-\[1\.5rem\]{width:1.5rem;height:1.5rem}.size-\[1\.625rem\]{width:1.625rem;height:1.625rem}.size-\[2\.125rem\]{width:2.125rem;height:2.125rem}.size-\[3\.25rem\]{width:3.25rem;height:3.25rem}.size-\[5\.5rem\]{width:5.5rem;height:5.5rem}.size-full{width:100%;height:100%}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-20{height:5rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-9{height:2.25rem}.h-\[1\.625rem\]{height:1.625rem}.h-\[1px\]{height:1px}.h-\[3\.125rem\]{height:3.125rem}.h-\[3\.5rem\]{height:3.5rem}.h-\[3\.75rem\]{height:3.75rem}.h-\[4\.25rem\]{height:4.25rem}.h-\[4\.5rem\]{height:4.5rem}.h-\[4\.75rem\]{height:4.75rem}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.max-h-\[11\.75rem\]{max-height:11.75rem}.max-h-screen{max-height:100vh}.min-h-14{min-height:3.5rem}.min-h-\[7\.5rem\]{min-height:7.5rem}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-24{width:6rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-80{width:20rem}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[7\.5rem\]{width:7.5rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.min-w-14{min-width:3.5rem}.min-w-28{min-width:7rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-4{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-4{--tw-translate-x:1rem}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.transform,.translate-y-\[-50\%\]{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))}@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}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-5{row-gap:1.25rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden,.truncate{overflow:hidden}.truncate{white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[0\.625rem\]{border-radius:.625rem}.rounded-\[1\.75rem\]{border-radius:1.75rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-t-\[0\.625rem\]{border-top-left-radius:.625rem;border-top-right-radius:.625rem}.rounded-t-\[1\.75rem\]{border-top-left-radius:1.75rem;border-top-right-radius:1.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-\[0\.09375rem\]{border-width:.09375rem}.border-x{border-left-width:1px}.border-r,.border-x{border-right-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-error-600{--tw-border-opacity:1;border-color:rgb(var(--error-600)/var(--tw-border-opacity,1))}.border-error-700{--tw-border-opacity:1;border-color:rgb(var(--error-700)/var(--tw-border-opacity,1))}.border-gray-0{--tw-border-opacity:1;border-color:rgb(var(--gray-0)/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(var(--gray-100)/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(var(--gray-200)/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(var(--gray-400)/var(--tw-border-opacity,1))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(var(--gray-900)/var(--tw-border-opacity,1))}.bg-current{background-color:currentColor}.bg-error-100{--tw-bg-opacity:1;background-color:rgb(var(--error-100)/var(--tw-bg-opacity,1))}.bg-error-500{--tw-bg-opacity:1;background-color:rgb(var(--error-500)/var(--tw-bg-opacity,1))}.bg-gray-0{--tw-bg-opacity:1;background-color:rgb(var(--gray-0)/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(var(--gray-100)/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(var(--gray-200)/var(--tw-bg-opacity,1))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(var(--gray-300)/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(var(--gray-50)/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(var(--gray-900)/var(--tw-bg-opacity,1))}.bg-gray-900\/40{background-color:rgb(var(--gray-900)/.4)}.bg-info-100{--tw-bg-opacity:1;background-color:rgb(var(--info-100)/var(--tw-bg-opacity,1))}.bg-success-100{--tw-bg-opacity:1;background-color:rgb(var(--success-100)/var(--tw-bg-opacity,1))}.bg-success-500{--tw-bg-opacity:1;background-color:rgb(var(--success-500)/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-warning-100{--tw-bg-opacity:1;background-color:rgb(var(--warning-100)/var(--tw-bg-opacity,1))}.fill-current{fill:currentColor}.fill-gray-0{fill:rgb(var(--gray-0)/1)}.fill-gray-100{fill:rgb(var(--gray-100)/1)}.fill-gray-350{fill:rgb(var(--gray-350)/1)}.fill-gray-900{fill:rgb(var(--gray-900)/1)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[3px\]{padding:3px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem}.pb-2,.py-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:1.625rem}.text-2xs{font-size:.6875rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.125rem}.text-5xl{font-size:2.5rem}.text-6xl{font-size:2.75rem}.text-7xl{font-size:3.5rem}.text-\[1\.375rem\]{font-size:1.375rem}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[3\.5rem\]{font-size:3.5rem}.text-base{font-size:1.0625rem}.text-lg{font-size:1.1875rem}.text-sm{font-size:.9375rem}.text-xl{font-size:1.3125rem}.text-xs{font-size:.8125rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-\[1\.2\]{line-height:1.2}.leading-compact{line-height:1.3}.leading-narrow{line-height:1.2}.leading-none{line-height:1}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-normal{letter-spacing:0}.text-error-600{--tw-text-opacity:1;color:rgb(var(--error-600)/var(--tw-text-opacity,1))}.text-error-700{--tw-text-opacity:1;color:rgb(var(--error-700)/var(--tw-text-opacity,1))}.text-gray-0{--tw-text-opacity:1;color:rgb(var(--gray-0)/var(--tw-text-opacity,1))}.text-gray-350{--tw-text-opacity:1;color:rgb(var(--gray-350)/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(var(--gray-400)/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(var(--gray-900)/var(--tw-text-opacity,1))}.text-info-700{--tw-text-opacity:1;color:rgb(var(--info-700)/var(--tw-text-opacity,1))}.text-success-600{--tw-text-opacity:1;color:rgb(var(--success-600)/var(--tw-text-opacity,1))}.text-success-700{--tw-text-opacity:1;color:rgb(var(--success-700)/var(--tw-text-opacity,1))}.text-warning-700{--tw-text-opacity:1;color:rgb(var(--warning-700)/var(--tw-text-opacity,1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-20{opacity:.2}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[top\2c transform\2c scale\2c opacity\2c color\]{transition-property:top,transform,scale,opacity,color;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-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-100{animation-duration:.1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.placeholder\:text-transparent::-moz-placeholder{color:transparent}.placeholder\:text-transparent::placeholder{color:transparent}.focus-within\:isolate:focus-within{isolation:isolate}.focus-within\:border-error-600:focus-within{--tw-border-opacity:1;border-color:rgb(var(--error-600)/var(--tw-border-opacity,1))}.focus-within\:border-gray-300:focus-within{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.focus-within\:bg-gray-0:focus-within{--tw-bg-opacity:1;background-color:rgb(var(--gray-0)/var(--tw-bg-opacity,1))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(var(--gray-200)/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(var(--gray-50)/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(var(--gray-700)/var(--tw-bg-opacity,1))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.focus\:border-error-600:focus{--tw-border-opacity:1;border-color:rgb(var(--error-600)/var(--tw-border-opacity,1))}.focus\:border-gray-300:focus{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.focus\:bg-gray-0:focus{--tw-bg-opacity:1;background-color:rgb(var(--gray-0)/var(--tw-bg-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-gray-100:disabled{--tw-border-opacity:1;border-color:rgb(var(--gray-100)/var(--tw-border-opacity,1))}.disabled\:bg-gray-100:disabled{--tw-bg-opacity:1;background-color:rgb(var(--gray-100)/var(--tw-bg-opacity,1))}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgb(var(--gray-50)/var(--tw-bg-opacity,1))}.disabled\:text-gray-300:disabled{--tw-text-opacity:1;color:rgb(var(--gray-300)/var(--tw-text-opacity,1))}.disabled\:text-gray-400:disabled{--tw-text-opacity:1;color:rgb(var(--gray-400)/var(--tw-text-opacity,1))}.disabled\:opacity-20:disabled{opacity:.2}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-90:disabled{opacity:.9}.disabled\:active\:bg-transparent:active:disabled{background-color:transparent}.group:last-child .group-last\:hidden{display:none}.group:active .group-active\:bg-gray-50{--tw-bg-opacity:1;background-color:rgb(var(--gray-50)/var(--tw-bg-opacity,1))}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-sm{font-size:.9375rem}.peer:placeholder-shown~.peer-placeholder-shown\:text-sm{font-size:.9375rem}.peer:focus~.peer-focus\:pointer-events-auto{pointer-events:auto}.peer:focus~.peer-focus\:top-\[1\.125rem\]{top:1.125rem}.peer:focus~.peer-focus\:border-gray-300{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.peer:focus~.peer-focus\:bg-gray-0{--tw-bg-opacity:1;background-color:rgb(var(--gray-0)/var(--tw-bg-opacity,1))}.peer:focus~.peer-focus\:text-xs{font-size:.8125rem}.peer:not(:-moz-placeholder-shown)~.peer-\[\:not\(\:-moz-placeholder-shown\)\]\:pointer-events-auto{pointer-events:auto}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:pointer-events-auto{pointer-events:auto}.peer:not(:-moz-placeholder-shown)~.peer-\[\:not\(\:-moz-placeholder-shown\)\]\:top-\[1\.125rem\]{top:1.125rem}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:top-\[1\.125rem\]{top:1.125rem}.peer:not(:-moz-placeholder-shown)~.peer-\[\:not\(\:-moz-placeholder-shown\)\]\:text-xs{font-size:.8125rem}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:text-xs{font-size:.8125rem}.has-\[input\:disabled\]\:cursor-not-allowed:has(input:disabled){cursor:not-allowed}.has-\[\:disabled\]\:opacity-50:has(:disabled){opacity:.5}.has-\[input\:disabled\]\:opacity-50:has(input:disabled){opacity:.5}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:1rem;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))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:0px;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))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end],.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{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))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x)}.data-\[state\=checked\]\:border-gray-900[data-state=checked]{--tw-border-opacity:1;border-color:rgb(var(--gray-900)/var(--tw-border-opacity,1))}.data-\[state\=closed\]\:border-gray-100[data-state=closed]{--tw-border-opacity:1;border-color:rgb(var(--gray-100)/var(--tw-border-opacity,1))}.data-\[state\=unchecked\]\:border-gray-200[data-state=unchecked]{--tw-border-opacity:1;border-color:rgb(var(--gray-200)/var(--tw-border-opacity,1))}.data-\[state\=unchecked\]\:border-gray-300[data-state=unchecked]{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:bg-gray-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(var(--gray-900)/var(--tw-bg-opacity,1))}.data-\[state\=closed\]\:bg-gray-100[data-state=closed],.data-\[state\=on\]\:bg-gray-100[data-state=on]{--tw-bg-opacity:1;background-color:rgb(var(--gray-100)/var(--tw-bg-opacity,1))}.data-\[state\=unchecked\]\:bg-gray-300[data-state=unchecked]{--tw-bg-opacity:1;background-color:rgb(var(--gray-300)/var(--tw-bg-opacity,1))}.data-\[state\=unchecked\]\:bg-transparent[data-state=unchecked]{background-color:transparent}.data-\[placeholder\]\:text-gray-500[data-placeholder]{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.data-\[state\=on\]\:text-gray-900[data-state=on]{--tw-text-opacity:1;color:rgb(var(--gray-900)/var(--tw-text-opacity,1))}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:fade-out-50[data-state=closed]{--tw-exit-opacity:0.5}.data-\[state\=closed\]\:slide-out-to-top-full[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}.group[data-state=on] .group-data-\[state\=on\]\:block{display:block}.group[data-state=on] .group-data-\[state\=on\]\:hidden{display:none}@media (min-width:768px){.md\:grid-cols-\[1fr_2fr\]{grid-template-columns:1fr 2fr}}.\[\&\:has\(\>\*\:nth-child\(2\)\)\]\:grid-cols-2:has(>:nth-child(2)){grid-template-columns:repeat(2,minmax(0,1fr))}.\[\&\>\*\]\:col-span-1>*{grid-column:span 1/span 1}.\[\&\>span\:first-of-type\]\:line-clamp-1>span:first-of-type{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}
3
+ /*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--gray-200)/1)}: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:var(--font-sans);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:rgb(var(--gray-400)/1)}input::placeholder,textarea::placeholder{opacity:1;color:rgb(var(--gray-400)/1)}[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}:root{--font-sans:TWK Lausanne;--gray-0:255 255 255;--gray-50:249 250 251;--gray-100:243 244 245;--gray-200:235 236 239;--gray-300:214 217 221;--gray-350:177 184 194;--gray-400:155 163 174;--gray-500:113 118 128;--gray-700:60 66 75;--gray-900:24 24 24;--success-100:230 249 236;--success-200:204 243 217;--success-300:153 232 179;--success-400:102 220 141;--success-500:51 209 103;--success-600:0 194 48;--success-700:0 155 38;--success-800:0 116 29;--success-900:0 77 19;--error-100:254 233 231;--error-200:253 211 207;--error-300:251 167 159;--error-400:249 123 111;--error-500:247 80 63;--error-600:242 40 13;--error-700:194 32 10;--error-800:145 24 8;--error-900:97 16 5;--warning-100:255 246 230;--warning-200:255 237 204;--warning-300:255 219 153;--warning-400:255 201 102;--warning-500:255 184 51;--warning-600:255 174 0;--warning-700:204 139 0;--warning-800:153 104 0;--warning-900:102 70 0;--info-100:230 240 255;--info-200:204 224 255;--info-300:153 194 255;--info-400:102 163 255;--info-500:51 133 255;--info-600:0 92 255;--info-700:0 74 204;--info-800:0 55 153;--info-900:0 36 102;--world-blue-primary:63,219,237;--world-blue-secondary:236,251,253;--carrot-orange-primary:255,90,0;--carrot-orange-secondary:255,237,230;--purple-primary:134,0,255;--purple-secondary:242,230,255;--green-primary:0,194,48;--green-secondary:230,249,236;--blue-primary:0,92,255;--blue-secondary:230,240,255;--worldcoin-primary:24,24,24;--worldcoin-secondary:243,244,245;--digital-dollars-primary:0,194,48;--digital-dollars-secondary:230,249,236;--bitcoin-primary:255,90,0;--bitcoin-secondary:255,237,230;--ethereum-primary:51,133,255;--ethereum-secondary:230,240,255}.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}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.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}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.start-0{inset-inline-start:0}.top-0{top:0}.top-1\/2{top:50%}.top-6{top:1.5rem}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.m-3{margin:.75rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-4{margin-left:1rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-1{margin-top:.25rem}.mt-24{margin-top:6rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.size-10{width:2.5rem;height:2.5rem}.size-11{width:2.75rem;height:2.75rem}.size-12{width:3rem;height:3rem}.size-16{width:4rem;height:4rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-\[0\.875rem\]{width:.875rem;height:.875rem}.size-\[1\.5rem\]{width:1.5rem;height:1.5rem}.size-\[1\.625rem\]{width:1.625rem;height:1.625rem}.size-\[2\.125rem\]{width:2.125rem;height:2.125rem}.size-\[3\.25rem\]{width:3.25rem;height:3.25rem}.size-\[5\.5rem\]{width:5.5rem;height:5.5rem}.size-full{width:100%;height:100%}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-20{height:5rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-9{height:2.25rem}.h-\[1\.625rem\]{height:1.625rem}.h-\[1px\]{height:1px}.h-\[3\.125rem\]{height:3.125rem}.h-\[3\.5rem\]{height:3.5rem}.h-\[3\.75rem\]{height:3.75rem}.h-\[4\.25rem\]{height:4.25rem}.h-\[4\.5rem\]{height:4.5rem}.h-\[4\.75rem\]{height:4.75rem}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.max-h-\[11\.75rem\]{max-height:11.75rem}.max-h-screen{max-height:100vh}.min-h-14{min-height:3.5rem}.min-h-\[7\.5rem\]{min-height:7.5rem}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-24{width:6rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-80{width:20rem}.w-\[300px\]{width:300px}.w-\[400px\]{width:400px}.w-\[7\.5rem\]{width:7.5rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.min-w-14{min-width:3.5rem}.min-w-28{min-width:7rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-4{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-4{--tw-translate-x:1rem}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.transform,.translate-y-\[-50\%\]{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))}@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}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-y{resize:vertical}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-rows-4{grid-template-rows:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-5{row-gap:1.25rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden,.truncate{overflow:hidden}.truncate{white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[0\.625rem\]{border-radius:.625rem}.rounded-\[1\.75rem\]{border-radius:1.75rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-t-\[0\.625rem\]{border-top-left-radius:.625rem;border-top-right-radius:.625rem}.rounded-t-\[1\.75rem\]{border-top-left-radius:1.75rem;border-top-right-radius:1.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-\[0\.09375rem\]{border-width:.09375rem}.border-x{border-left-width:1px}.border-r,.border-x{border-right-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-error-600{--tw-border-opacity:1;border-color:rgb(var(--error-600)/var(--tw-border-opacity,1))}.border-error-700{--tw-border-opacity:1;border-color:rgb(var(--error-700)/var(--tw-border-opacity,1))}.border-gray-0{--tw-border-opacity:1;border-color:rgb(var(--gray-0)/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(var(--gray-100)/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(var(--gray-200)/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(var(--gray-400)/var(--tw-border-opacity,1))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(var(--gray-900)/var(--tw-border-opacity,1))}.bg-current{background-color:currentColor}.bg-error-100{--tw-bg-opacity:1;background-color:rgb(var(--error-100)/var(--tw-bg-opacity,1))}.bg-error-500{--tw-bg-opacity:1;background-color:rgb(var(--error-500)/var(--tw-bg-opacity,1))}.bg-error-600{--tw-bg-opacity:1;background-color:rgb(var(--error-600)/var(--tw-bg-opacity,1))}.bg-gray-0{--tw-bg-opacity:1;background-color:rgb(var(--gray-0)/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(var(--gray-100)/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(var(--gray-200)/var(--tw-bg-opacity,1))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(var(--gray-300)/var(--tw-bg-opacity,1))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(var(--gray-400)/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(var(--gray-50)/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(var(--gray-900)/var(--tw-bg-opacity,1))}.bg-gray-900\/40{background-color:rgb(var(--gray-900)/.4)}.bg-info-100{--tw-bg-opacity:1;background-color:rgb(var(--info-100)/var(--tw-bg-opacity,1))}.bg-success-100{--tw-bg-opacity:1;background-color:rgb(var(--success-100)/var(--tw-bg-opacity,1))}.bg-success-500{--tw-bg-opacity:1;background-color:rgb(var(--success-500)/var(--tw-bg-opacity,1))}.bg-success-600{--tw-bg-opacity:1;background-color:rgb(var(--success-600)/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-warning-100{--tw-bg-opacity:1;background-color:rgb(var(--warning-100)/var(--tw-bg-opacity,1))}.bg-warning-600{--tw-bg-opacity:1;background-color:rgb(var(--warning-600)/var(--tw-bg-opacity,1))}.bg-\[radial-gradient\(111\.32\%_111\.8\%_at_22\.73\%_0\%\2c _rgba\(255\2c 255\2c 255\2c 0\.2\)_0\%\2c _rgba\(255\2c 255\2c 255\2c 0\)_100\%\)\]{background-image:radial-gradient(111.32% 111.8% at 22.73% 0,hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,0) 100%)}.fill-current{fill:currentColor}.fill-gray-0{fill:rgb(var(--gray-0)/1)}.fill-gray-100{fill:rgb(var(--gray-100)/1)}.fill-gray-350{fill:rgb(var(--gray-350)/1)}.fill-gray-900{fill:rgb(var(--gray-900)/1)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[3px\]{padding:3px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem}.pb-2,.py-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:1.625rem}.text-2xs{font-size:.6875rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.125rem}.text-5xl{font-size:2.5rem}.text-6xl{font-size:2.75rem}.text-7xl{font-size:3.5rem}.text-\[1\.375rem\]{font-size:1.375rem}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[3\.5rem\]{font-size:3.5rem}.text-base{font-size:1.0625rem}.text-lg{font-size:1.1875rem}.text-sm{font-size:.9375rem}.text-xl{font-size:1.3125rem}.text-xs{font-size:.8125rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-\[1\.2\]{line-height:1.2}.leading-compact{line-height:1.3}.leading-narrow{line-height:1.2}.leading-none{line-height:1}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-normal{letter-spacing:0}.text-error-600{--tw-text-opacity:1;color:rgb(var(--error-600)/var(--tw-text-opacity,1))}.text-error-700{--tw-text-opacity:1;color:rgb(var(--error-700)/var(--tw-text-opacity,1))}.text-gray-0{--tw-text-opacity:1;color:rgb(var(--gray-0)/var(--tw-text-opacity,1))}.text-gray-350{--tw-text-opacity:1;color:rgb(var(--gray-350)/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(var(--gray-400)/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(var(--gray-900)/var(--tw-text-opacity,1))}.text-info-700{--tw-text-opacity:1;color:rgb(var(--info-700)/var(--tw-text-opacity,1))}.text-success-600{--tw-text-opacity:1;color:rgb(var(--success-600)/var(--tw-text-opacity,1))}.text-success-700{--tw-text-opacity:1;color:rgb(var(--success-700)/var(--tw-text-opacity,1))}.text-warning-700{--tw-text-opacity:1;color:rgb(var(--warning-700)/var(--tw-text-opacity,1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-20{opacity:.2}.shadow-\[inset_0_0_0_1px_rgba\(255\2c 255\2c 255\2c 0\.3\)\]{--tw-shadow:inset 0 0 0 1px hsla(0,0%,100%,.3);--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.shadow-\[inset_0_0_0_1px_rgba\(255\2c 255\2c 255\2c 0\.3\)\],.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.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,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[top\2c transform\2c scale\2c opacity\2c color\]{transition-property:top,transform,scale,opacity,color;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-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-100{animation-duration:.1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.placeholder\:text-transparent::-moz-placeholder{color:transparent}.placeholder\:text-transparent::placeholder{color:transparent}.focus-within\:isolate:focus-within{isolation:isolate}.focus-within\:border-error-600:focus-within{--tw-border-opacity:1;border-color:rgb(var(--error-600)/var(--tw-border-opacity,1))}.focus-within\:border-gray-300:focus-within{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.focus-within\:bg-gray-0:focus-within{--tw-bg-opacity:1;background-color:rgb(var(--gray-0)/var(--tw-bg-opacity,1))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(var(--gray-200)/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(var(--gray-50)/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(var(--gray-700)/var(--tw-bg-opacity,1))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.focus\:border-error-600:focus{--tw-border-opacity:1;border-color:rgb(var(--error-600)/var(--tw-border-opacity,1))}.focus\:border-gray-300:focus{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.focus\:bg-gray-0:focus{--tw-bg-opacity:1;background-color:rgb(var(--gray-0)/var(--tw-bg-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-gray-100:disabled{--tw-border-opacity:1;border-color:rgb(var(--gray-100)/var(--tw-border-opacity,1))}.disabled\:bg-gray-100:disabled{--tw-bg-opacity:1;background-color:rgb(var(--gray-100)/var(--tw-bg-opacity,1))}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgb(var(--gray-50)/var(--tw-bg-opacity,1))}.disabled\:text-gray-300:disabled{--tw-text-opacity:1;color:rgb(var(--gray-300)/var(--tw-text-opacity,1))}.disabled\:text-gray-400:disabled{--tw-text-opacity:1;color:rgb(var(--gray-400)/var(--tw-text-opacity,1))}.disabled\:opacity-20:disabled{opacity:.2}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-90:disabled{opacity:.9}.group:last-child .group-last\:hidden{display:none}.peer:-moz-placeholder-shown~.peer-placeholder-shown\:text-sm{font-size:.9375rem}.peer:placeholder-shown~.peer-placeholder-shown\:text-sm{font-size:.9375rem}.peer:focus~.peer-focus\:pointer-events-auto{pointer-events:auto}.peer:focus~.peer-focus\:top-\[1\.125rem\]{top:1.125rem}.peer:focus~.peer-focus\:border-gray-300{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.peer:focus~.peer-focus\:bg-gray-0{--tw-bg-opacity:1;background-color:rgb(var(--gray-0)/var(--tw-bg-opacity,1))}.peer:focus~.peer-focus\:text-xs{font-size:.8125rem}.peer:not(:-moz-placeholder-shown)~.peer-\[\:not\(\:-moz-placeholder-shown\)\]\:pointer-events-auto{pointer-events:auto}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:pointer-events-auto{pointer-events:auto}.peer:not(:-moz-placeholder-shown)~.peer-\[\:not\(\:-moz-placeholder-shown\)\]\:top-\[1\.125rem\]{top:1.125rem}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:top-\[1\.125rem\]{top:1.125rem}.peer:not(:-moz-placeholder-shown)~.peer-\[\:not\(\:-moz-placeholder-shown\)\]\:text-xs{font-size:.8125rem}.peer:not(:placeholder-shown)~.peer-\[\:not\(\:placeholder-shown\)\]\:text-xs{font-size:.8125rem}.has-\[input\:disabled\]\:cursor-not-allowed:has(input:disabled){cursor:not-allowed}.has-\[\:disabled\]\:opacity-50:has(:disabled){opacity:.5}.has-\[input\:disabled\]\:opacity-50:has(input:disabled){opacity:.5}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:1rem;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))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:0px;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))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end],.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{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))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x)}.data-\[state\=checked\]\:border-gray-900[data-state=checked]{--tw-border-opacity:1;border-color:rgb(var(--gray-900)/var(--tw-border-opacity,1))}.data-\[state\=closed\]\:border-gray-100[data-state=closed]{--tw-border-opacity:1;border-color:rgb(var(--gray-100)/var(--tw-border-opacity,1))}.data-\[state\=unchecked\]\:border-gray-200[data-state=unchecked]{--tw-border-opacity:1;border-color:rgb(var(--gray-200)/var(--tw-border-opacity,1))}.data-\[state\=unchecked\]\:border-gray-300[data-state=unchecked]{--tw-border-opacity:1;border-color:rgb(var(--gray-300)/var(--tw-border-opacity,1))}.data-\[state\=checked\]\:bg-gray-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(var(--gray-900)/var(--tw-bg-opacity,1))}.data-\[state\=closed\]\:bg-gray-100[data-state=closed],.data-\[state\=on\]\:bg-gray-100[data-state=on]{--tw-bg-opacity:1;background-color:rgb(var(--gray-100)/var(--tw-bg-opacity,1))}.data-\[state\=unchecked\]\:bg-gray-300[data-state=unchecked]{--tw-bg-opacity:1;background-color:rgb(var(--gray-300)/var(--tw-bg-opacity,1))}.data-\[state\=unchecked\]\:bg-transparent[data-state=unchecked]{background-color:transparent}.data-\[placeholder\]\:text-gray-500[data-placeholder]{--tw-text-opacity:1;color:rgb(var(--gray-500)/var(--tw-text-opacity,1))}.data-\[state\=on\]\:text-gray-900[data-state=on]{--tw-text-opacity:1;color:rgb(var(--gray-900)/var(--tw-text-opacity,1))}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:fade-out-50[data-state=closed]{--tw-exit-opacity:0.5}.data-\[state\=closed\]\:slide-out-to-top-full[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}.group[data-state=on] .group-data-\[state\=on\]\:block{display:block}.group[data-state=on] .group-data-\[state\=on\]\:hidden{display:none}@media (min-width:768px){.md\:grid-cols-\[1fr_2fr\]{grid-template-columns:1fr 2fr}}.\[\&\:has\(\>\*\:nth-child\(2\)\)\]\:grid-cols-2:has(>:nth-child(2)){grid-template-columns:repeat(2,minmax(0,1fr))}.\[\&\>\*\]\:col-span-1>*{grid-column:span 1/span 1}.\[\&\>span\:first-of-type\]\:line-clamp-1>span:first-of-type{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}