@fanvue/ui 0.1.0-alpha.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/README.md +30 -8
  2. package/dist/cjs/components/Alert/Alert.cjs +72 -0
  3. package/dist/cjs/components/Alert/Alert.cjs.map +1 -0
  4. package/dist/cjs/components/Avatar/Avatar.cjs +162 -0
  5. package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -0
  6. package/dist/cjs/components/Badge/Badge.cjs +99 -0
  7. package/dist/cjs/components/Badge/Badge.cjs.map +1 -0
  8. package/dist/cjs/components/Button/Button.cjs +172 -0
  9. package/dist/cjs/components/Button/Button.cjs.map +1 -0
  10. package/dist/cjs/components/Checkbox/Checkbox.cjs +157 -0
  11. package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -0
  12. package/dist/cjs/components/Chip/Chip.cjs +92 -0
  13. package/dist/cjs/components/Chip/Chip.cjs.map +1 -0
  14. package/dist/cjs/components/Count/Count.cjs +56 -0
  15. package/dist/cjs/components/Count/Count.cjs.map +1 -0
  16. package/dist/cjs/components/DatePicker/DatePicker.cjs +133 -0
  17. package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -0
  18. package/dist/cjs/components/Divider/Divider.cjs +69 -0
  19. package/dist/cjs/components/Divider/Divider.cjs.map +1 -0
  20. package/dist/cjs/components/IconButton/IconButton.cjs +92 -0
  21. package/dist/cjs/components/IconButton/IconButton.cjs.map +1 -0
  22. package/dist/cjs/components/Icons/ArrowRightIcon.cjs +47 -0
  23. package/dist/cjs/components/Icons/ArrowRightIcon.cjs.map +1 -0
  24. package/dist/cjs/components/Icons/ArrowUpRightIcon.cjs +47 -0
  25. package/dist/cjs/components/Icons/ArrowUpRightIcon.cjs.map +1 -0
  26. package/dist/cjs/components/Icons/CheckCircleIcon.cjs +47 -0
  27. package/dist/cjs/components/Icons/CheckCircleIcon.cjs.map +1 -0
  28. package/dist/cjs/components/Icons/CheckIcon.cjs +49 -0
  29. package/dist/cjs/components/Icons/CheckIcon.cjs.map +1 -0
  30. package/dist/cjs/components/Icons/ChevronLeftIcon.cjs +49 -0
  31. package/dist/cjs/components/Icons/ChevronLeftIcon.cjs.map +1 -0
  32. package/dist/cjs/components/Icons/ChevronRightIcon.cjs +49 -0
  33. package/dist/cjs/components/Icons/ChevronRightIcon.cjs.map +1 -0
  34. package/dist/cjs/components/Icons/CloseIcon.cjs +46 -0
  35. package/dist/cjs/components/Icons/CloseIcon.cjs.map +1 -0
  36. package/dist/cjs/components/Icons/CrossIcon.cjs +40 -0
  37. package/dist/cjs/components/Icons/CrossIcon.cjs.map +1 -0
  38. package/dist/cjs/components/Icons/CrownIcon.cjs +40 -0
  39. package/dist/cjs/components/Icons/CrownIcon.cjs.map +1 -0
  40. package/dist/cjs/components/Icons/ErrorCircleIcon.cjs +47 -0
  41. package/dist/cjs/components/Icons/ErrorCircleIcon.cjs.map +1 -0
  42. package/dist/cjs/components/Icons/ErrorIcon.cjs +30 -0
  43. package/dist/cjs/components/Icons/ErrorIcon.cjs.map +1 -0
  44. package/dist/cjs/components/Icons/FireIcon.cjs +47 -0
  45. package/dist/cjs/components/Icons/FireIcon.cjs.map +1 -0
  46. package/dist/cjs/components/Icons/HomeIcon.cjs +40 -0
  47. package/dist/cjs/components/Icons/HomeIcon.cjs.map +1 -0
  48. package/dist/cjs/components/Icons/InfoCircleIcon.cjs +47 -0
  49. package/dist/cjs/components/Icons/InfoCircleIcon.cjs.map +1 -0
  50. package/dist/cjs/components/Icons/InfoIcon.cjs +30 -0
  51. package/dist/cjs/components/Icons/InfoIcon.cjs.map +1 -0
  52. package/dist/cjs/components/Icons/MicrophoneIcon.cjs +55 -0
  53. package/dist/cjs/components/Icons/MicrophoneIcon.cjs.map +1 -0
  54. package/dist/cjs/components/Icons/MinusIcon.cjs +40 -0
  55. package/dist/cjs/components/Icons/MinusIcon.cjs.map +1 -0
  56. package/dist/cjs/components/Icons/PlusIcon.cjs +40 -0
  57. package/dist/cjs/components/Icons/PlusIcon.cjs.map +1 -0
  58. package/dist/cjs/components/Icons/SpinnerIcon.cjs +43 -0
  59. package/dist/cjs/components/Icons/SpinnerIcon.cjs.map +1 -0
  60. package/dist/cjs/components/Icons/StopIcon.cjs +46 -0
  61. package/dist/cjs/components/Icons/StopIcon.cjs.map +1 -0
  62. package/dist/cjs/components/Icons/SuccessIcon.cjs +30 -0
  63. package/dist/cjs/components/Icons/SuccessIcon.cjs.map +1 -0
  64. package/dist/cjs/components/Icons/VipBadgeIcon.cjs +97 -0
  65. package/dist/cjs/components/Icons/VipBadgeIcon.cjs.map +1 -0
  66. package/dist/cjs/components/Icons/WarningIcon.cjs +30 -0
  67. package/dist/cjs/components/Icons/WarningIcon.cjs.map +1 -0
  68. package/dist/cjs/components/Icons/WarningTriangleIcon.cjs +47 -0
  69. package/dist/cjs/components/Icons/WarningTriangleIcon.cjs.map +1 -0
  70. package/dist/cjs/components/Logo/Logo.cjs +182 -0
  71. package/dist/cjs/components/Logo/Logo.cjs.map +1 -0
  72. package/dist/cjs/components/Pagination/Pagination.cjs +144 -0
  73. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -0
  74. package/dist/cjs/components/Pill/Pill.cjs +69 -0
  75. package/dist/cjs/components/Pill/Pill.cjs.map +1 -0
  76. package/dist/cjs/components/ProgressBar/ProgressBar.cjs +112 -0
  77. package/dist/cjs/components/ProgressBar/ProgressBar.cjs.map +1 -0
  78. package/dist/cjs/components/Radio/Radio.cjs +74 -0
  79. package/dist/cjs/components/Radio/Radio.cjs.map +1 -0
  80. package/dist/cjs/components/RadioGroup/RadioGroup.cjs +30 -0
  81. package/dist/cjs/components/RadioGroup/RadioGroup.cjs.map +1 -0
  82. package/dist/cjs/components/Slider/Slider.cjs +96 -0
  83. package/dist/cjs/components/Slider/Slider.cjs.map +1 -0
  84. package/dist/cjs/components/Slider/SliderLayout.cjs +31 -0
  85. package/dist/cjs/components/Slider/SliderLayout.cjs.map +1 -0
  86. package/dist/cjs/components/Slider/SliderThumb.cjs +87 -0
  87. package/dist/cjs/components/Slider/SliderThumb.cjs.map +1 -0
  88. package/dist/cjs/components/Snackbar/Snackbar.cjs +215 -0
  89. package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -0
  90. package/dist/cjs/components/Switch/Switch.cjs +57 -0
  91. package/dist/cjs/components/Switch/Switch.cjs.map +1 -0
  92. package/dist/cjs/components/SwitchField/SwitchField.cjs +103 -0
  93. package/dist/cjs/components/SwitchField/SwitchField.cjs.map +1 -0
  94. package/dist/cjs/components/SwitchToggle/SwitchToggle.cjs +110 -0
  95. package/dist/cjs/components/SwitchToggle/SwitchToggle.cjs.map +1 -0
  96. package/dist/cjs/components/Tabs/Tabs.cjs +24 -0
  97. package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -0
  98. package/dist/cjs/components/Tabs/TabsContent.cjs +36 -0
  99. package/dist/cjs/components/Tabs/TabsContent.cjs.map +1 -0
  100. package/dist/cjs/components/Tabs/TabsList.cjs +42 -0
  101. package/dist/cjs/components/Tabs/TabsList.cjs.map +1 -0
  102. package/dist/cjs/components/Tabs/TabsTrigger.cjs +50 -0
  103. package/dist/cjs/components/Tabs/TabsTrigger.cjs.map +1 -0
  104. package/dist/cjs/components/Toast/Toast.cjs +128 -0
  105. package/dist/cjs/components/Toast/Toast.cjs.map +1 -0
  106. package/dist/cjs/index.cjs +111 -0
  107. package/dist/cjs/index.cjs.map +1 -0
  108. package/dist/cjs/utils/cn.cjs +10 -0
  109. package/dist/cjs/utils/cn.cjs.map +1 -0
  110. package/dist/components/Alert/Alert.mjs +55 -0
  111. package/dist/components/Alert/Alert.mjs.map +1 -0
  112. package/dist/components/Avatar/Avatar.mjs +144 -0
  113. package/dist/components/Avatar/Avatar.mjs.map +1 -0
  114. package/dist/components/Badge/Badge.mjs +82 -0
  115. package/dist/components/Badge/Badge.mjs.map +1 -0
  116. package/dist/components/Button/Button.mjs +155 -0
  117. package/dist/components/Button/Button.mjs.map +1 -0
  118. package/dist/components/Checkbox/Checkbox.mjs +139 -0
  119. package/dist/components/Checkbox/Checkbox.mjs.map +1 -0
  120. package/dist/components/Chip/Chip.mjs +75 -0
  121. package/dist/components/Chip/Chip.mjs.map +1 -0
  122. package/dist/components/Count/Count.mjs +39 -0
  123. package/dist/components/Count/Count.mjs.map +1 -0
  124. package/dist/components/DatePicker/DatePicker.mjs +133 -0
  125. package/dist/components/DatePicker/DatePicker.mjs.map +1 -0
  126. package/dist/components/Divider/Divider.mjs +51 -0
  127. package/dist/components/Divider/Divider.mjs.map +1 -0
  128. package/dist/components/IconButton/IconButton.mjs +75 -0
  129. package/dist/components/IconButton/IconButton.mjs.map +1 -0
  130. package/dist/components/Icons/ArrowRightIcon.mjs +30 -0
  131. package/dist/components/Icons/ArrowRightIcon.mjs.map +1 -0
  132. package/dist/components/Icons/ArrowUpRightIcon.mjs +30 -0
  133. package/dist/components/Icons/ArrowUpRightIcon.mjs.map +1 -0
  134. package/dist/components/Icons/CheckCircleIcon.mjs +30 -0
  135. package/dist/components/Icons/CheckCircleIcon.mjs.map +1 -0
  136. package/dist/components/Icons/CheckIcon.mjs +32 -0
  137. package/dist/components/Icons/CheckIcon.mjs.map +1 -0
  138. package/dist/components/Icons/ChevronLeftIcon.mjs +32 -0
  139. package/dist/components/Icons/ChevronLeftIcon.mjs.map +1 -0
  140. package/dist/components/Icons/ChevronRightIcon.mjs +32 -0
  141. package/dist/components/Icons/ChevronRightIcon.mjs.map +1 -0
  142. package/dist/components/Icons/CloseIcon.mjs +29 -0
  143. package/dist/components/Icons/CloseIcon.mjs.map +1 -0
  144. package/dist/components/Icons/CrossIcon.mjs +23 -0
  145. package/dist/components/Icons/CrossIcon.mjs.map +1 -0
  146. package/dist/components/Icons/CrownIcon.mjs +23 -0
  147. package/dist/components/Icons/CrownIcon.mjs.map +1 -0
  148. package/dist/components/Icons/ErrorCircleIcon.mjs +30 -0
  149. package/dist/components/Icons/ErrorCircleIcon.mjs.map +1 -0
  150. package/dist/components/Icons/ErrorIcon.mjs +30 -0
  151. package/dist/components/Icons/ErrorIcon.mjs.map +1 -0
  152. package/dist/components/Icons/FireIcon.mjs +30 -0
  153. package/dist/components/Icons/FireIcon.mjs.map +1 -0
  154. package/dist/components/Icons/HomeIcon.mjs +23 -0
  155. package/dist/components/Icons/HomeIcon.mjs.map +1 -0
  156. package/dist/components/Icons/InfoCircleIcon.mjs +30 -0
  157. package/dist/components/Icons/InfoCircleIcon.mjs.map +1 -0
  158. package/dist/components/Icons/InfoIcon.mjs +30 -0
  159. package/dist/components/Icons/InfoIcon.mjs.map +1 -0
  160. package/dist/components/Icons/MicrophoneIcon.mjs +38 -0
  161. package/dist/components/Icons/MicrophoneIcon.mjs.map +1 -0
  162. package/dist/components/Icons/MinusIcon.mjs +23 -0
  163. package/dist/components/Icons/MinusIcon.mjs.map +1 -0
  164. package/dist/components/Icons/PlusIcon.mjs +23 -0
  165. package/dist/components/Icons/PlusIcon.mjs.map +1 -0
  166. package/dist/components/Icons/SpinnerIcon.mjs +26 -0
  167. package/dist/components/Icons/SpinnerIcon.mjs.map +1 -0
  168. package/dist/components/Icons/StopIcon.mjs +29 -0
  169. package/dist/components/Icons/StopIcon.mjs.map +1 -0
  170. package/dist/components/Icons/SuccessIcon.mjs +30 -0
  171. package/dist/components/Icons/SuccessIcon.mjs.map +1 -0
  172. package/dist/components/Icons/VipBadgeIcon.mjs +80 -0
  173. package/dist/components/Icons/VipBadgeIcon.mjs.map +1 -0
  174. package/dist/components/Icons/WarningIcon.mjs +30 -0
  175. package/dist/components/Icons/WarningIcon.mjs.map +1 -0
  176. package/dist/components/Icons/WarningTriangleIcon.mjs +30 -0
  177. package/dist/components/Icons/WarningTriangleIcon.mjs.map +1 -0
  178. package/dist/components/Logo/Logo.mjs +165 -0
  179. package/dist/components/Logo/Logo.mjs.map +1 -0
  180. package/dist/components/Pagination/Pagination.mjs +127 -0
  181. package/dist/components/Pagination/Pagination.mjs.map +1 -0
  182. package/dist/components/Pill/Pill.mjs +52 -0
  183. package/dist/components/Pill/Pill.mjs.map +1 -0
  184. package/dist/components/ProgressBar/ProgressBar.mjs +95 -0
  185. package/dist/components/ProgressBar/ProgressBar.mjs.map +1 -0
  186. package/dist/components/Radio/Radio.mjs +56 -0
  187. package/dist/components/Radio/Radio.mjs.map +1 -0
  188. package/dist/components/RadioGroup/RadioGroup.mjs +12 -0
  189. package/dist/components/RadioGroup/RadioGroup.mjs.map +1 -0
  190. package/dist/components/Slider/Slider.mjs +78 -0
  191. package/dist/components/Slider/Slider.mjs.map +1 -0
  192. package/dist/components/Slider/SliderLayout.mjs +31 -0
  193. package/dist/components/Slider/SliderLayout.mjs.map +1 -0
  194. package/dist/components/Slider/SliderThumb.mjs +69 -0
  195. package/dist/components/Slider/SliderThumb.mjs.map +1 -0
  196. package/dist/components/Snackbar/Snackbar.mjs +198 -0
  197. package/dist/components/Snackbar/Snackbar.mjs.map +1 -0
  198. package/dist/components/Switch/Switch.mjs +39 -0
  199. package/dist/components/Switch/Switch.mjs.map +1 -0
  200. package/dist/components/SwitchField/SwitchField.mjs +86 -0
  201. package/dist/components/SwitchField/SwitchField.mjs.map +1 -0
  202. package/dist/components/SwitchToggle/SwitchToggle.mjs +93 -0
  203. package/dist/components/SwitchToggle/SwitchToggle.mjs.map +1 -0
  204. package/dist/components/Tabs/Tabs.mjs +7 -0
  205. package/dist/components/Tabs/Tabs.mjs.map +1 -0
  206. package/dist/components/Tabs/TabsContent.mjs +18 -0
  207. package/dist/components/Tabs/TabsContent.mjs.map +1 -0
  208. package/dist/components/Tabs/TabsList.mjs +24 -0
  209. package/dist/components/Tabs/TabsList.mjs.map +1 -0
  210. package/dist/components/Tabs/TabsTrigger.mjs +32 -0
  211. package/dist/components/Tabs/TabsTrigger.mjs.map +1 -0
  212. package/dist/components/Toast/Toast.mjs +110 -0
  213. package/dist/components/Toast/Toast.mjs.map +1 -0
  214. package/dist/index.d.ts +41 -61
  215. package/dist/index.mjs +107 -10507
  216. package/dist/index.mjs.map +1 -1
  217. package/dist/styles/theme.css +1 -1
  218. package/dist/utils/cn.mjs +10 -0
  219. package/dist/utils/cn.mjs.map +1 -0
  220. package/package.json +15 -4
  221. package/dist/index.cjs +0 -2
  222. package/dist/index.cjs.map +0 -1
@@ -0,0 +1,93 @@
1
+ "use client";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../../utils/cn.mjs";
5
+ const SwitchToggle = React.forwardRef(
6
+ ({
7
+ className,
8
+ size = "24",
9
+ options,
10
+ value: controlledValue,
11
+ defaultValue,
12
+ onChange,
13
+ disabled = false,
14
+ ...props
15
+ }, ref) => {
16
+ const groupName = React.useId();
17
+ const [internalValue, setInternalValue] = React.useState(defaultValue ?? options[0].value);
18
+ const isControlled = controlledValue !== void 0;
19
+ const currentValue = isControlled ? controlledValue : internalValue;
20
+ const isSecondSelected = currentValue === options[1].value;
21
+ const sizeClass = size === "24" ? "px-2 py-1 typography-caption-semibold" : size === "32" ? "px-3 py-1.75 typography-body-2-semibold" : "h-10 px-4 py-2.25 typography-button-small";
22
+ const handleSelect = (optionValue) => {
23
+ if (disabled) return;
24
+ if (!isControlled) {
25
+ setInternalValue(optionValue);
26
+ }
27
+ onChange?.(optionValue);
28
+ };
29
+ return /* @__PURE__ */ jsxs(
30
+ "div",
31
+ {
32
+ ref,
33
+ role: "radiogroup",
34
+ className: cn(
35
+ "relative inline-grid grid-cols-2 rounded-full border border-neutral-200 p-1",
36
+ disabled && "cursor-not-allowed opacity-50",
37
+ className
38
+ ),
39
+ ...props,
40
+ children: [
41
+ /* @__PURE__ */ jsx(
42
+ "span",
43
+ {
44
+ "aria-hidden": "true",
45
+ className: cn(
46
+ "absolute inset-y-1 left-1 w-[calc(50%-4px)] rounded-full border border-brand-green-500 bg-brand-green-50",
47
+ "motion-safe:transition-transform motion-safe:duration-200 motion-safe:ease-in-out",
48
+ isSecondSelected && "translate-x-full"
49
+ )
50
+ }
51
+ ),
52
+ options.map((option) => {
53
+ const optionId = `${groupName}-${option.value}`;
54
+ return /* @__PURE__ */ jsxs(
55
+ "label",
56
+ {
57
+ htmlFor: optionId,
58
+ className: cn(
59
+ "relative z-10 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full border border-transparent text-body-100",
60
+ "has-focus-visible:shadow-focus-ring has-focus-visible:outline-none",
61
+ disabled && "pointer-events-none",
62
+ sizeClass
63
+ ),
64
+ children: [
65
+ /* @__PURE__ */ jsx(
66
+ "input",
67
+ {
68
+ id: optionId,
69
+ type: "radio",
70
+ name: groupName,
71
+ value: option.value,
72
+ checked: currentValue === option.value,
73
+ disabled,
74
+ onChange: () => handleSelect(option.value),
75
+ className: "sr-only"
76
+ }
77
+ ),
78
+ option.label
79
+ ]
80
+ },
81
+ option.value
82
+ );
83
+ })
84
+ ]
85
+ }
86
+ );
87
+ }
88
+ );
89
+ SwitchToggle.displayName = "SwitchToggle";
90
+ export {
91
+ SwitchToggle
92
+ };
93
+ //# sourceMappingURL=SwitchToggle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitchToggle.mjs","sources":["../../../src/components/SwitchToggle/SwitchToggle.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type SwitchToggleSize = \"24\" | \"32\" | \"40\";\n\nexport interface SwitchToggleOption {\n /** Display label for the option */\n label: string;\n /** Value identifier for the option */\n value: string;\n}\n\nexport interface SwitchToggleProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Size variant */\n size?: SwitchToggleSize;\n /** The two options to toggle between */\n options: [SwitchToggleOption, SwitchToggleOption];\n /** Currently selected value */\n value?: string;\n /** Default selected value (uncontrolled) */\n defaultValue?: string;\n /** Callback when the selected value changes */\n onChange?: (value: string) => void;\n /** Whether the toggle is disabled */\n disabled?: boolean;\n}\n\nexport const SwitchToggle = React.forwardRef<HTMLDivElement, SwitchToggleProps>(\n (\n {\n className,\n size = \"24\",\n options,\n value: controlledValue,\n defaultValue,\n onChange,\n disabled = false,\n ...props\n },\n ref,\n ) => {\n const groupName = React.useId();\n // Tracks selection for uncontrolled usage; ignored when `value` prop is provided\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? options[0].value);\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n const isSecondSelected = currentValue === options[1].value;\n\n const sizeClass =\n size === \"24\"\n ? \"px-2 py-1 typography-caption-semibold\"\n : size === \"32\"\n ? \"px-3 py-1.75 typography-body-2-semibold\"\n : \"h-10 px-4 py-2.25 typography-button-small\";\n\n const handleSelect = (optionValue: string) => {\n if (disabled) return;\n if (!isControlled) {\n setInternalValue(optionValue);\n }\n onChange?.(optionValue);\n };\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n className={cn(\n \"relative inline-grid grid-cols-2 rounded-full border border-neutral-200 p-1\",\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n {...props}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n \"absolute inset-y-1 left-1 w-[calc(50%-4px)] rounded-full border border-brand-green-500 bg-brand-green-50\",\n \"motion-safe:transition-transform motion-safe:duration-200 motion-safe:ease-in-out\",\n isSecondSelected && \"translate-x-full\",\n )}\n />\n {options.map((option) => {\n const optionId = `${groupName}-${option.value}`;\n return (\n <label\n key={option.value}\n htmlFor={optionId}\n className={cn(\n \"relative z-10 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full border border-transparent text-body-100\",\n \"has-focus-visible:shadow-focus-ring has-focus-visible:outline-none\",\n disabled && \"pointer-events-none\",\n sizeClass,\n )}\n >\n <input\n id={optionId}\n type=\"radio\"\n name={groupName}\n value={option.value}\n checked={currentValue === option.value}\n disabled={disabled}\n onChange={() => handleSelect(option.value)}\n className=\"sr-only\"\n />\n {option.label}\n </label>\n );\n })}\n </div>\n );\n },\n);\n\nSwitchToggle.displayName = \"SwitchToggle\";\n"],"names":[],"mappings":";;;;AA2BO,MAAM,eAAe,MAAM;AAAA,EAChC,CACE;AAAA,IACE;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,YAAY,MAAM,MAAA;AAExB,UAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAS,gBAAgB,QAAQ,CAAC,EAAE,KAAK;AACzF,UAAM,eAAe,oBAAoB;AACzC,UAAM,eAAe,eAAe,kBAAkB;AACtD,UAAM,mBAAmB,iBAAiB,QAAQ,CAAC,EAAE;AAErD,UAAM,YACJ,SAAS,OACL,0CACA,SAAS,OACP,4CACA;AAER,UAAM,eAAe,CAAC,gBAAwB;AAC5C,UAAI,SAAU;AACd,UAAI,CAAC,cAAc;AACjB,yBAAiB,WAAW;AAAA,MAC9B;AACA,iBAAW,WAAW;AAAA,IACxB;AAEA,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,WAAW;AAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEJ,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eAAY;AAAA,cACZ,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA,oBAAoB;AAAA,cAAA;AAAA,YACtB;AAAA,UAAA;AAAA,UAED,QAAQ,IAAI,CAAC,WAAW;AACvB,kBAAM,WAAW,GAAG,SAAS,IAAI,OAAO,KAAK;AAC7C,mBACE;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,SAAS;AAAA,gBACT,WAAW;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA,YAAY;AAAA,kBACZ;AAAA,gBAAA;AAAA,gBAGF,UAAA;AAAA,kBAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,sBACJ,MAAK;AAAA,sBACL,MAAM;AAAA,sBACN,OAAO,OAAO;AAAA,sBACd,SAAS,iBAAiB,OAAO;AAAA,sBACjC;AAAA,sBACA,UAAU,MAAM,aAAa,OAAO,KAAK;AAAA,sBACzC,WAAU;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAEX,OAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,cAnBH,OAAO;AAAA,YAAA;AAAA,UAsBlB,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,aAAa,cAAc;"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
3
+ const Tabs = TabsPrimitive.Root;
4
+ export {
5
+ Tabs
6
+ };
7
+ //# sourceMappingURL=Tabs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.mjs","sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport type * as React from \"react\";\n\nexport type TabsProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root>;\n\nexport const Tabs = TabsPrimitive.Root;\n"],"names":[],"mappings":";;AAKO,MAAM,OAAO,cAAc;"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
4
+ import * as React from "react";
5
+ import { cn } from "../../utils/cn.mjs";
6
+ const TabsContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7
+ TabsPrimitive.Content,
8
+ {
9
+ ref,
10
+ className: cn("focus-visible:outline-none", className),
11
+ ...props
12
+ }
13
+ ));
14
+ TabsContent.displayName = "TabsContent";
15
+ export {
16
+ TabsContent
17
+ };
18
+ //# sourceMappingURL=TabsContent.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabsContent.mjs","sources":["../../../src/components/Tabs/TabsContent.tsx"],"sourcesContent":["import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type TabsContentProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>;\n\nexport const TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n TabsContentProps\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\"focus-visible:outline-none\", className)}\n {...props}\n />\n));\n\nTabsContent.displayName = \"TabsContent\";\n"],"names":[],"mappings":";;;;;AAMO,MAAM,cAAc,MAAM,WAG/B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1B;AAAA,EAAC,cAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAW,GAAG,8BAA8B,SAAS;AAAA,IACpD,GAAG;AAAA,EAAA;AACN,CACD;AAED,YAAY,cAAc;"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
4
+ import * as React from "react";
5
+ import { cn } from "../../utils/cn.mjs";
6
+ const TabsList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7
+ TabsPrimitive.List,
8
+ {
9
+ ref,
10
+ className: cn(
11
+ "inline-flex",
12
+ // !TODO setup shadows tokens https://linear.app/fanvue/issue/ENG-7368/setup-shadow-tokens
13
+ "data-[orientation=horizontal]:items-center data-[orientation=horizontal]:shadow-[inset_0_-1px_0_0_var(--color-neutral-200)]",
14
+ "data-[orientation=vertical]:flex-col data-[orientation=vertical]:shadow-[inset_-1px_0_0_0_var(--color-neutral-200)]",
15
+ className
16
+ ),
17
+ ...props
18
+ }
19
+ ));
20
+ TabsList.displayName = "TabsList";
21
+ export {
22
+ TabsList
23
+ };
24
+ //# sourceMappingURL=TabsList.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabsList.mjs","sources":["../../../src/components/Tabs/TabsList.tsx"],"sourcesContent":["import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type TabsListProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>;\n\nexport const TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex\", // !TODO setup shadows tokens https://linear.app/fanvue/issue/ENG-7368/setup-shadow-tokens\n \"data-[orientation=horizontal]:items-center data-[orientation=horizontal]:shadow-[inset_0_-1px_0_0_var(--color-neutral-200)]\",\n \"data-[orientation=vertical]:flex-col data-[orientation=vertical]:shadow-[inset_-1px_0_0_0_var(--color-neutral-200)]\",\n className,\n )}\n {...props}\n />\n));\n\nTabsList.displayName = \"TabsList\";\n"],"names":[],"mappings":";;;;;AAMO,MAAM,WAAW,MAAM,WAG5B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1B;AAAA,EAAC,cAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AAED,SAAS,cAAc;"}
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
4
+ import * as React from "react";
5
+ import { cn } from "../../utils/cn.mjs";
6
+ const TabsTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
7
+ TabsPrimitive.Trigger,
8
+ {
9
+ ref,
10
+ className: cn(
11
+ "inline-flex items-center justify-center",
12
+ "rounded-xs border-transparent",
13
+ "typography-body-1-semibold cursor-pointer text-body-100",
14
+ "data-[orientation=horizontal]:border-b-4 data-[orientation=horizontal]:px-3 data-[orientation=horizontal]:pb-4",
15
+ "data-[orientation=vertical]:justify-start data-[orientation=vertical]:border-r-4 data-[orientation=vertical]:px-4 data-[orientation=vertical]:py-3",
16
+ "data-[state=active]:border-brand-green-500",
17
+ "data-[state=active]:hover:text-hover-100",
18
+ "data-[state=inactive]:hover:text-hover-200",
19
+ "data-disabled:pointer-events-none",
20
+ "data-disabled:data-[state=active]:text-disabled-100",
21
+ "data-disabled:data-[state=inactive]:text-disabled-400",
22
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 focus-visible:ring-offset-2 focus-visible:ring-offset-background-inverse-solid",
23
+ className
24
+ ),
25
+ ...props
26
+ }
27
+ ));
28
+ TabsTrigger.displayName = "TabsTrigger";
29
+ export {
30
+ TabsTrigger
31
+ };
32
+ //# sourceMappingURL=TabsTrigger.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabsTrigger.mjs","sources":["../../../src/components/Tabs/TabsTrigger.tsx"],"sourcesContent":["import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\nexport type TabsTriggerProps = React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>;\n\nexport const TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center\",\n \"rounded-xs border-transparent\",\n \"typography-body-1-semibold cursor-pointer text-body-100\",\n \"data-[orientation=horizontal]:border-b-4 data-[orientation=horizontal]:px-3 data-[orientation=horizontal]:pb-4\",\n \"data-[orientation=vertical]:justify-start data-[orientation=vertical]:border-r-4 data-[orientation=vertical]:px-4 data-[orientation=vertical]:py-3\",\n \"data-[state=active]:border-brand-green-500\",\n \"data-[state=active]:hover:text-hover-100\",\n \"data-[state=inactive]:hover:text-hover-200\",\n \"data-disabled:pointer-events-none\",\n \"data-disabled:data-[state=active]:text-disabled-100\",\n \"data-disabled:data-[state=inactive]:text-disabled-400\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 focus-visible:ring-offset-2 focus-visible:ring-offset-background-inverse-solid\",\n className,\n )}\n {...props}\n />\n));\n\nTabsTrigger.displayName = \"TabsTrigger\";\n"],"names":[],"mappings":";;;;;AAMO,MAAM,cAAc,MAAM,WAG/B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1B;AAAA,EAAC,cAAc;AAAA,EAAd;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AAED,YAAY,cAAc;"}
@@ -0,0 +1,110 @@
1
+ "use client";
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import * as ToastPrimitive from "@radix-ui/react-toast";
4
+ import * as React from "react";
5
+ import { cn } from "../../utils/cn.mjs";
6
+ import { Avatar } from "../Avatar/Avatar.mjs";
7
+ import { Button } from "../Button/Button.mjs";
8
+ import { IconButton } from "../IconButton/IconButton.mjs";
9
+ import { CloseIcon } from "../Icons/CloseIcon.mjs";
10
+ import { ErrorIcon } from "../Icons/ErrorIcon.mjs";
11
+ import { InfoIcon } from "../Icons/InfoIcon.mjs";
12
+ import { SuccessIcon } from "../Icons/SuccessIcon.mjs";
13
+ import { WarningIcon } from "../Icons/WarningIcon.mjs";
14
+ const ToastProvider = ToastPrimitive.Provider;
15
+ const ToastViewport = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
16
+ ToastPrimitive.Viewport,
17
+ {
18
+ ref,
19
+ className: cn(
20
+ "fixed top-0 right-0 z-100 flex max-h-screen w-full flex-col-reverse gap-3 p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-[420px]",
21
+ className
22
+ ),
23
+ ...props
24
+ }
25
+ ));
26
+ ToastViewport.displayName = "ToastViewport";
27
+ const VariantIcon = ({ variant }) => {
28
+ switch (variant) {
29
+ case "info":
30
+ return /* @__PURE__ */ jsx(InfoIcon, { className: "size-5 text-info-500" });
31
+ case "warning":
32
+ return /* @__PURE__ */ jsx(WarningIcon, { className: "size-5 text-warning-500" });
33
+ case "success":
34
+ return /* @__PURE__ */ jsx(SuccessIcon, { className: "size-5 text-success-500" });
35
+ case "error":
36
+ return /* @__PURE__ */ jsx(ErrorIcon, { className: "size-5 text-error-500" });
37
+ }
38
+ };
39
+ const Toast = React.forwardRef(
40
+ ({
41
+ className,
42
+ variant = "info",
43
+ title,
44
+ description,
45
+ actionLabel,
46
+ onActionClick,
47
+ showClose = true,
48
+ avatarSrc,
49
+ avatarAlt,
50
+ avatarFallback,
51
+ children,
52
+ ...props
53
+ }, ref) => {
54
+ return /* @__PURE__ */ jsxs(
55
+ ToastPrimitive.Root,
56
+ {
57
+ ref,
58
+ "data-testid": "toast",
59
+ className: cn(
60
+ // Base styles
61
+ "group pointer-events-auto relative flex w-full flex-col items-start gap-3 overflow-hidden rounded-lg border-none bg-background-solid p-4 text-background-inverse-solid shadow-lg transition-all",
62
+ // Dark mode
63
+ "dark:border-opacity-100",
64
+ // Animation
65
+ "data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-bottom-full data-[state=open]:sm:slide-in-from-top-full data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x) data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) data-[state=closed]:animate-out data-[state=open]:animate-in data-[swipe=end]:animate-out data-[swipe=move]:transition-none",
66
+ // Manual CSS overrides
67
+ className
68
+ ),
69
+ ...props,
70
+ children: [
71
+ /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center gap-3", children: [
72
+ /* @__PURE__ */ jsx("div", { className: "self-start", children: variant === "messageToast" ? avatarSrc && /* @__PURE__ */ jsx(Avatar, { src: avatarSrc, alt: avatarAlt, fallback: avatarFallback }) : /* @__PURE__ */ jsx(VariantIcon, { variant }) }),
73
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col items-start", children: [
74
+ title && /* @__PURE__ */ jsx(ToastPrimitive.Title, { className: "typography-body-2-semibold", children: title }),
75
+ description && /* @__PURE__ */ jsx(ToastPrimitive.Description, { className: "typography-body-2-regular mt-1 opacity-90", children: description }),
76
+ children,
77
+ onActionClick && /* @__PURE__ */ jsx(
78
+ Button,
79
+ {
80
+ variant: "secondary",
81
+ className: "mt-4 border-body-400 text-body-400",
82
+ size: "32",
83
+ onClick: onActionClick,
84
+ children: actionLabel ?? "Action"
85
+ }
86
+ )
87
+ ] })
88
+ ] }),
89
+ showClose && /* @__PURE__ */ jsx(ToastPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx(
90
+ IconButton,
91
+ {
92
+ icon: /* @__PURE__ */ jsx(CloseIcon, {}),
93
+ "aria-label": "Close notification",
94
+ className: "absolute top-2 right-2 text-body-300",
95
+ variant: "tertiary",
96
+ size: "24"
97
+ }
98
+ ) })
99
+ ]
100
+ }
101
+ );
102
+ }
103
+ );
104
+ Toast.displayName = "Toast";
105
+ export {
106
+ Toast,
107
+ ToastProvider,
108
+ ToastViewport
109
+ };
110
+ //# sourceMappingURL=Toast.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.mjs","sources":["../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Avatar } from \"../Avatar/Avatar\";\nimport { Button } from \"../Button/Button\";\nimport { IconButton } from \"../IconButton/IconButton\";\nimport { CloseIcon } from \"../Icons/CloseIcon\";\nimport { ErrorIcon } from \"../Icons/ErrorIcon\";\nimport { InfoIcon } from \"../Icons/InfoIcon\";\nimport { SuccessIcon } from \"../Icons/SuccessIcon\";\nimport { WarningIcon } from \"../Icons/WarningIcon\";\n\nexport type ToastVariant = \"info\" | \"warning\" | \"success\" | \"error\" | \"messageToast\";\n\n// Override \"title\" prop to allow React.ReactNode instead of string | undefined\nexport interface ToastProps\n extends Omit<Omit<React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>, \"type\">, \"title\"> {\n /** Variant of the toast */\n variant?: ToastVariant;\n /** Toast title */\n title?: string;\n /** Toast description/message */\n description?: React.ReactNode;\n /** Action button label */\n actionLabel?: string;\n /** Action button click handler */\n onActionClick?: () => void;\n /** Show close button */\n showClose?: boolean;\n /** Avatar image source */\n avatarSrc?: string;\n /** Avatar alt text */\n avatarAlt?: string;\n /** Avatar fallback text */\n avatarFallback?: string;\n}\n\nexport interface ToastProviderProps extends ToastPrimitive.ToastProviderProps {}\nexport interface ToastViewportProps\n extends React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport> {}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ToastPrimitive.Provider;\n\nexport const ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Viewport>,\n ToastViewportProps\n>(({ className, ...props }, ref) => (\n <ToastPrimitive.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 right-0 z-100 flex max-h-screen w-full flex-col-reverse gap-3 p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-[420px]\",\n className,\n )}\n {...props}\n />\n));\n\nToastViewport.displayName = \"ToastViewport\";\n\nconst VariantIcon = ({ variant }: { variant: ToastVariant }) => {\n switch (variant) {\n case \"info\":\n return <InfoIcon className=\"size-5 text-info-500\" />;\n case \"warning\":\n return <WarningIcon className=\"size-5 text-warning-500\" />;\n case \"success\":\n return <SuccessIcon className=\"size-5 text-success-500\" />;\n case \"error\":\n return <ErrorIcon className=\"size-5 text-error-500\" />;\n }\n};\n\nexport const Toast = React.forwardRef<React.ComponentRef<typeof ToastPrimitive.Root>, ToastProps>(\n (\n {\n className,\n variant = \"info\",\n title,\n description,\n actionLabel,\n onActionClick,\n showClose = true,\n avatarSrc,\n avatarAlt,\n avatarFallback,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <ToastPrimitive.Root\n ref={ref}\n data-testid=\"toast\"\n className={cn(\n // Base styles\n \"group pointer-events-auto relative flex w-full flex-col items-start gap-3 overflow-hidden rounded-lg border-none bg-background-solid p-4 text-background-inverse-solid shadow-lg transition-all\",\n // Dark mode\n \"dark:border-opacity-100\",\n // Animation\n \"data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-bottom-full data-[state=open]:sm:slide-in-from-top-full data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x) data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) data-[state=closed]:animate-out data-[state=open]:animate-in data-[swipe=end]:animate-out data-[swipe=move]:transition-none\",\n // Manual CSS overrides\n className,\n )}\n {...props}\n >\n <div className=\"flex w-full items-center gap-3\">\n <div className=\"self-start\">\n {variant === \"messageToast\" ? (\n avatarSrc && <Avatar src={avatarSrc} alt={avatarAlt} fallback={avatarFallback} />\n ) : (\n <VariantIcon variant={variant} />\n )}\n </div>\n <div className=\"flex flex-1 flex-col items-start\">\n {title && (\n <ToastPrimitive.Title className=\"typography-body-2-semibold\">\n {title}\n </ToastPrimitive.Title>\n )}\n {description && (\n <ToastPrimitive.Description className=\"typography-body-2-regular mt-1 opacity-90\">\n {description}\n </ToastPrimitive.Description>\n )}\n {children}\n {onActionClick && (\n <Button\n variant=\"secondary\"\n // These styles are basically inverted from the selected theme\n className=\"mt-4 border-body-400 text-body-400\"\n size=\"32\"\n onClick={onActionClick}\n >\n {actionLabel ?? \"Action\"}\n </Button>\n )}\n </div>\n </div>\n {showClose && (\n <ToastPrimitive.Close asChild>\n <IconButton\n icon={<CloseIcon />}\n aria-label=\"Close notification\"\n // same as the button above\n className=\"absolute top-2 right-2 text-body-300\"\n variant=\"tertiary\"\n size=\"24\"\n />\n </ToastPrimitive.Close>\n )}\n </ToastPrimitive.Root>\n );\n },\n);\n\nToast.displayName = \"Toast\";\n"],"names":[],"mappings":";;;;;;;;;;;;;AAyCO,MAAM,gBAA8C,eAAe;AAEnE,MAAM,gBAAgB,MAAM,WAGjC,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1B;AAAA,EAAC,eAAe;AAAA,EAAf;AAAA,IACC;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,EAAA;AACN,CACD;AAED,cAAc,cAAc;AAE5B,MAAM,cAAc,CAAC,EAAE,cAAyC;AAC9D,UAAQ,SAAA;AAAA,IACN,KAAK;AACH,aAAO,oBAAC,UAAA,EAAS,WAAU,uBAAA,CAAuB;AAAA,IACpD,KAAK;AACH,aAAO,oBAAC,aAAA,EAAY,WAAU,0BAAA,CAA0B;AAAA,IAC1D,KAAK;AACH,aAAO,oBAAC,aAAA,EAAY,WAAU,0BAAA,CAA0B;AAAA,IAC1D,KAAK;AACH,aAAO,oBAAC,WAAA,EAAU,WAAU,wBAAA,CAAwB;AAAA,EAAA;AAE1D;AAEO,MAAM,QAAQ,MAAM;AAAA,EACzB,CACE;AAAA,IACE;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,QACG;AACH,WACE;AAAA,MAAC,eAAe;AAAA,MAAf;AAAA,QACC;AAAA,QACA,eAAY;AAAA,QACZ,WAAW;AAAA;AAAA,UAET;AAAA;AAAA,UAEA;AAAA;AAAA,UAEA;AAAA;AAAA,UAEA;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEJ,UAAA;AAAA,UAAA,qBAAC,OAAA,EAAI,WAAU,kCACb,UAAA;AAAA,YAAA,oBAAC,SAAI,WAAU,cACZ,sBAAY,iBACX,iCAAc,QAAA,EAAO,KAAK,WAAW,KAAK,WAAW,UAAU,eAAA,CAAgB,IAE/E,oBAAC,aAAA,EAAY,SAAkB,EAAA,CAEnC;AAAA,YACA,qBAAC,OAAA,EAAI,WAAU,oCACZ,UAAA;AAAA,cAAA,6BACE,eAAe,OAAf,EAAqB,WAAU,8BAC7B,UAAA,OACH;AAAA,cAED,eACC,oBAAC,eAAe,aAAf,EAA2B,WAAU,6CACnC,UAAA,aACH;AAAA,cAED;AAAA,cACA,iBACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAQ;AAAA,kBAER,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,SAAS;AAAA,kBAER,UAAA,eAAe;AAAA,gBAAA;AAAA,cAAA;AAAA,YAClB,EAAA,CAEJ;AAAA,UAAA,GACF;AAAA,UACC,aACC,oBAAC,eAAe,OAAf,EAAqB,SAAO,MAC3B,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,0BAAO,WAAA,EAAU;AAAA,cACjB,cAAW;AAAA,cAEX,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,MAAK;AAAA,YAAA;AAAA,UAAA,EACP,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEA,MAAM,cAAc;"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
3
3
  import { ClassValue } from 'clsx';
4
4
  import { DateRange } from 'react-day-picker';
5
5
  import { DayPickerProps } from 'react-day-picker';
6
+ import { default as default_2 } from 'react';
6
7
  import { ForwardRefExoticComponent } from 'react';
7
8
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
8
9
  import * as React_2 from 'react';
@@ -93,38 +94,7 @@ export declare interface BadgeProps extends React_2.HTMLAttributes<HTMLSpanEleme
93
94
  asChild?: boolean;
94
95
  }
95
96
 
96
- export declare type BadgeVariant = keyof typeof badgeVariants.variant;
97
-
98
- declare const badgeVariants: {
99
- readonly variant: {
100
- readonly default: "bg-neutral-100 text-neutral-400";
101
- readonly dark: "bg-background-800 text-body-300 dark:text-body-white-solid-constant";
102
- readonly success: "bg-neutral-100 text-neutral-400";
103
- readonly warning: "bg-neutral-100 text-neutral-400";
104
- readonly error: "bg-neutral-100 text-neutral-400";
105
- readonly special: "bg-neutral-100 text-neutral-400";
106
- readonly info: "bg-neutral-100 text-neutral-400";
107
- readonly online: "bg-background-200 text-brand-green-500";
108
- readonly brand: "bg-brand-green-500 text-body-black-solid-constant";
109
- readonly pink: "bg-brand-pink-500 text-body-black-solid-constant";
110
- readonly brandLight: "bg-brand-green-50 text-body-black-solid-constant";
111
- readonly pinkLight: "bg-brand-pink-50 text-body-black-solid-constant";
112
- };
113
- readonly dotColor: {
114
- readonly default: "bg-body-black-solid-constant";
115
- readonly dark: "bg-body-300 dark:bg-body-white-solid-constant";
116
- readonly success: "bg-success-500";
117
- readonly warning: "bg-warning-500";
118
- readonly error: "bg-error-500";
119
- readonly special: "bg-special-500";
120
- readonly info: "bg-info-500";
121
- readonly online: "bg-brand-green-500";
122
- readonly brand: "bg-body-black-solid-constant";
123
- readonly pink: "bg-body-black-solid-constant";
124
- readonly brandLight: "bg-body-black-solid-constant";
125
- readonly pinkLight: "bg-body-black-solid-constant";
126
- };
127
- };
97
+ export declare type BadgeVariant = "default" | "dark" | "success" | "warning" | "error" | "special" | "info" | "online" | "brand" | "pink" | "brandLight" | "pinkLight";
128
98
 
129
99
  export declare const Button: React_2.ForwardRefExoticComponent<ButtonProps & React_2.RefAttributes<HTMLButtonElement>>;
130
100
 
@@ -151,6 +121,11 @@ export declare type ButtonSize = "48" | "40" | "32" | "24";
151
121
 
152
122
  export declare type ButtonVariant = "primary" | "secondary" | "tertiary" | "link" | "brand" | "destructive" | "white" | "tertiaryDestructive" | "text";
153
123
 
124
+ /**
125
+ * The ref type is intentionally `HTMLInputElement` (not `HTMLButtonElement`) for form library
126
+ * compatibility. Libraries like react-hook-form call `register()` which expects an `HTMLInputElement`
127
+ * ref. A hidden `<input>` is synced to the Radix checkbox state via `useImperativeHandle`.
128
+ */
154
129
  export declare const Checkbox: React_2.ForwardRefExoticComponent<CheckboxProps & React_2.RefAttributes<HTMLInputElement>>;
155
130
 
156
131
  export declare interface CheckboxProps extends Omit<React_2.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, "asChild"> {
@@ -210,6 +185,10 @@ export declare type ChipSize = "32" | "40";
210
185
 
211
186
  export declare type ChipVariant = "rounded" | "square" | "dark";
212
187
 
188
+ export declare const CloseIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
189
+ className?: string;
190
+ } & React_2.RefAttributes<SVGSVGElement>>;
191
+
213
192
  export declare function cn(...inputs: ClassValue[]): string;
214
193
 
215
194
  export declare const Count: React_2.ForwardRefExoticComponent<CountProps & React_2.RefAttributes<HTMLSpanElement>>;
@@ -225,7 +204,7 @@ export declare interface CountProps extends React_2.HTMLAttributes<HTMLSpanEleme
225
204
  asChild?: boolean;
226
205
  }
227
206
 
228
- export declare type CountVariant = "Default" | "Brand" | "Pink" | "Info" | "Success" | "Warning";
207
+ export declare type CountVariant = "default" | "brand" | "pink" | "info" | "success" | "warning";
229
208
 
230
209
  export declare const CrossIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
231
210
  className?: string;
@@ -271,6 +250,10 @@ export declare const ErrorCircleIcon: React_2.ForwardRefExoticComponent<React_2.
271
250
  className?: string;
272
251
  } & React_2.RefAttributes<SVGSVGElement>>;
273
252
 
253
+ export declare const ErrorIcon: default_2.ForwardRefExoticComponent<default_2.SVGAttributes<SVGSVGElement> & {
254
+ className?: string;
255
+ } & default_2.RefAttributes<SVGSVGElement>>;
256
+
274
257
  export declare const FireIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
275
258
  className?: string;
276
259
  } & React_2.RefAttributes<SVGSVGElement>>;
@@ -281,7 +264,7 @@ export declare const HomeIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttr
281
264
 
282
265
  export declare const IconButton: React_2.ForwardRefExoticComponent<IconButtonProps & React_2.RefAttributes<HTMLButtonElement>>;
283
266
 
284
- export declare interface IconButtonProps extends Omit<React_2.ButtonHTMLAttributes<HTMLButtonElement>, "style"> {
267
+ export declare interface IconButtonProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement> {
285
268
  /** Visual style variant of the icon button */
286
269
  variant?: IconButtonVariant;
287
270
  /** Size of the button */
@@ -305,9 +288,13 @@ export declare const InfoCircleIcon: React_2.ForwardRefExoticComponent<React_2.S
305
288
  className?: string;
306
289
  } & React_2.RefAttributes<SVGSVGElement>>;
307
290
 
291
+ export declare const InfoIcon: default_2.ForwardRefExoticComponent<default_2.SVGAttributes<SVGSVGElement> & {
292
+ className?: string;
293
+ } & default_2.RefAttributes<SVGSVGElement>>;
294
+
308
295
  export declare const Logo: React_2.ForwardRefExoticComponent<LogoProps & React_2.RefAttributes<HTMLDivElement>>;
309
296
 
310
- export declare type LogoColor = "Full colour" | "Decolour" | "White Always" | "Black Always";
297
+ export declare type LogoColor = "fullColour" | "decolour" | "whiteAlways" | "blackAlways";
311
298
 
312
299
  export declare interface LogoProps extends React_2.HTMLAttributes<HTMLDivElement> {
313
300
  /** Logo layout type (matches Figma "Type" property) */
@@ -322,7 +309,11 @@ export declare interface LogoProps extends React_2.HTMLAttributes<HTMLDivElement
322
309
  "aria-label"?: string;
323
310
  }
324
311
 
325
- export declare type LogoType = "Full" | "Icon" | "Wordmark" | "Portrait";
312
+ export declare type LogoType = "full" | "icon" | "wordmark" | "portrait";
313
+
314
+ export declare const MicrophoneIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
315
+ className?: string;
316
+ } & React_2.RefAttributes<SVGSVGElement>>;
326
317
 
327
318
  /** Small minus/indeterminate icon for use in checkbox components (12x12 viewBox) */
328
319
  export declare const MinusIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
@@ -380,22 +371,7 @@ export declare interface PillProps extends React_2.HTMLAttributes<HTMLSpanElemen
380
371
  asChild?: boolean;
381
372
  }
382
373
 
383
- export declare type PillVariant = keyof typeof pillVariants.variant;
384
-
385
- declare const pillVariants: {
386
- readonly variant: {
387
- readonly green: "bg-success-50 text-success-500";
388
- readonly grey: "bg-neutral-100 text-body-200";
389
- readonly blue: "bg-info-50 text-info-500";
390
- readonly gold: "bg-warning-50 text-warning-500";
391
- readonly pinkLight: "bg-brand-pink-50 text-body-100";
392
- readonly base: "bg-neutral-400 text-body-300";
393
- readonly brand: "bg-brand-green-500 text-body-black-solid-constant";
394
- readonly brandLight: "bg-brand-green-50 text-body-black-solid-constant";
395
- readonly beta: "bg-brand-pink-500 text-body-black-solid-constant";
396
- readonly error: "bg-error-500 text-error-50";
397
- };
398
- };
374
+ export declare type PillVariant = "green" | "grey" | "blue" | "gold" | "pinkLight" | "base" | "brand" | "brandLight" | "beta" | "error";
399
375
 
400
376
  export declare const PlusIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
401
377
  className?: string;
@@ -501,6 +477,14 @@ export declare const SpinnerIcon: React_2.ForwardRefExoticComponent<React_2.SVGA
501
477
  className?: string;
502
478
  } & React_2.RefAttributes<SVGSVGElement>>;
503
479
 
480
+ export declare const StopIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
481
+ className?: string;
482
+ } & React_2.RefAttributes<SVGSVGElement>>;
483
+
484
+ export declare const SuccessIcon: default_2.ForwardRefExoticComponent<default_2.SVGAttributes<SVGSVGElement> & {
485
+ className?: string;
486
+ } & default_2.RefAttributes<SVGSVGElement>>;
487
+
504
488
  export declare const Switch: React_2.ForwardRefExoticComponent<SwitchProps & React_2.RefAttributes<HTMLButtonElement>>;
505
489
 
506
490
  export declare const SwitchField: React_2.ForwardRefExoticComponent<SwitchFieldProps & React_2.RefAttributes<HTMLButtonElement>>;
@@ -599,15 +583,7 @@ export declare const ToastProvider: React_2.FC<ToastProviderProps>;
599
583
  export declare interface ToastProviderProps extends ToastPrimitive.ToastProviderProps {
600
584
  }
601
585
 
602
- export declare type ToastVariant = keyof typeof toastVariants;
603
-
604
- declare enum toastVariants {
605
- info = "info",
606
- warning = "warning",
607
- success = "success",
608
- error = "error",
609
- messageToast = "messageToast"
610
- }
586
+ export declare type ToastVariant = "info" | "warning" | "success" | "error" | "messageToast";
611
587
 
612
588
  export declare const ToastViewport: React_2.ForwardRefExoticComponent<ToastViewportProps & React_2.RefAttributes<HTMLOListElement>>;
613
589
 
@@ -619,6 +595,10 @@ export declare const VipBadgeIcon: React_2.ForwardRefExoticComponent<React_2.SVG
619
595
  className?: string;
620
596
  } & React_2.RefAttributes<SVGSVGElement>>;
621
597
 
598
+ export declare const WarningIcon: default_2.ForwardRefExoticComponent<default_2.SVGAttributes<SVGSVGElement> & {
599
+ className?: string;
600
+ } & default_2.RefAttributes<SVGSVGElement>>;
601
+
622
602
  export declare const WarningTriangleIcon: React_2.ForwardRefExoticComponent<React_2.SVGAttributes<SVGSVGElement> & {
623
603
  className?: string;
624
604
  } & React_2.RefAttributes<SVGSVGElement>>;