ctc-component-library 0.2.0 → 1.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/DESIGN.md +408 -0
  2. package/MIGRATION.md +301 -0
  3. package/README.md +41 -72
  4. package/dist/components/Alert/Alert.d.ts +14 -0
  5. package/dist/components/Alert/Alert.js +73 -0
  6. package/dist/components/Alert/index.d.ts +1 -0
  7. package/dist/components/Alert/index.js +2 -0
  8. package/dist/components/Avatar/Avatar.d.ts +5 -0
  9. package/dist/components/Avatar/Avatar.js +25 -0
  10. package/dist/components/Avatar/index.d.ts +1 -0
  11. package/dist/components/Avatar/index.js +2 -0
  12. package/dist/components/Badge/Badge.d.ts +23 -0
  13. package/dist/components/Badge/Badge.js +159 -0
  14. package/dist/components/Badge/index.d.ts +2 -0
  15. package/dist/components/Badge/index.js +2 -0
  16. package/dist/components/Button/Button.d.ts +7 -0
  17. package/dist/components/Button/Button.js +44 -0
  18. package/dist/components/Button/button.variants.d.ts +22 -0
  19. package/dist/components/Button/button.variants.js +62 -0
  20. package/dist/components/Button/index.d.ts +2 -0
  21. package/dist/components/Button/index.js +3 -0
  22. package/dist/components/Checkbox/Checkbox.d.ts +7 -0
  23. package/dist/components/Checkbox/Checkbox.js +23 -0
  24. package/dist/components/Checkbox/index.d.ts +1 -0
  25. package/dist/components/Checkbox/index.js +2 -0
  26. package/dist/components/Chip/Chip.d.ts +17 -0
  27. package/dist/components/Chip/Chip.js +59 -0
  28. package/dist/components/Chip/index.d.ts +2 -0
  29. package/dist/components/Chip/index.js +2 -0
  30. package/dist/components/Combobox/Combobox.d.ts +31 -0
  31. package/dist/components/Combobox/Combobox.js +98 -0
  32. package/dist/components/Combobox/index.d.ts +1 -0
  33. package/dist/components/Combobox/index.js +2 -0
  34. package/dist/components/DataTable/DataTable.d.ts +24 -0
  35. package/dist/components/DataTable/DataTable.js +74 -0
  36. package/dist/components/DataTable/Table.d.ts +9 -0
  37. package/dist/components/DataTable/Table.js +57 -0
  38. package/dist/components/DataTable/index.d.ts +3 -0
  39. package/dist/components/DataTable/index.js +3 -0
  40. package/dist/components/DatePicker/DatePicker.d.ts +20 -0
  41. package/dist/components/DatePicker/DatePicker.js +74 -0
  42. package/dist/components/DatePicker/index.d.ts +1 -0
  43. package/dist/components/DatePicker/index.js +2 -0
  44. package/dist/components/Dialog/Dialog.d.ts +21 -0
  45. package/dist/components/Dialog/Dialog.js +50 -0
  46. package/dist/components/Dialog/index.d.ts +1 -0
  47. package/dist/components/Dialog/index.js +2 -0
  48. package/dist/components/Field/Field.d.ts +22 -0
  49. package/dist/components/Field/Field.js +43 -0
  50. package/dist/components/Field/index.d.ts +1 -0
  51. package/dist/components/Field/index.js +2 -0
  52. package/dist/components/Icon/Icon.d.ts +7 -0
  53. package/dist/components/Icon/Icon.js +13 -0
  54. package/dist/components/Icon/index.d.ts +13 -0
  55. package/dist/components/Icon/index.js +2 -0
  56. package/dist/components/Input/Input.d.ts +41 -0
  57. package/dist/components/Input/Input.js +87 -0
  58. package/dist/components/Input/index.d.ts +1 -0
  59. package/dist/components/Input/index.js +2 -0
  60. package/dist/components/Label/Label.d.ts +3 -0
  61. package/dist/components/Label/Label.js +13 -0
  62. package/dist/components/Label/index.js +2 -0
  63. package/dist/components/MultiSelect/MultiSelect.d.ts +23 -0
  64. package/dist/components/MultiSelect/MultiSelect.js +99 -0
  65. package/dist/components/MultiSelect/index.d.ts +1 -0
  66. package/dist/components/MultiSelect/index.js +2 -0
  67. package/dist/components/NumberInput/NumberInput.d.ts +11 -0
  68. package/dist/components/NumberInput/NumberInput.js +58 -0
  69. package/dist/components/NumberInput/index.d.ts +1 -0
  70. package/dist/components/NumberInput/index.js +2 -0
  71. package/dist/components/Popover/Popover.d.ts +12 -0
  72. package/dist/components/Popover/Popover.js +20 -0
  73. package/dist/components/Popover/index.d.ts +1 -0
  74. package/dist/components/Popover/index.js +2 -0
  75. package/dist/components/RadioGroup/RadioGroup.d.ts +8 -0
  76. package/dist/components/RadioGroup/RadioGroup.js +30 -0
  77. package/dist/components/RadioGroup/index.d.ts +1 -0
  78. package/dist/components/RadioGroup/index.js +2 -0
  79. package/dist/components/Select/Select.d.ts +15 -0
  80. package/dist/components/Select/Select.js +83 -0
  81. package/dist/components/Select/index.d.ts +1 -0
  82. package/dist/components/Select/index.js +2 -0
  83. package/dist/components/Spinner/Spinner.d.ts +9 -0
  84. package/dist/components/Spinner/Spinner.js +24 -0
  85. package/dist/components/Spinner/index.d.ts +1 -0
  86. package/dist/components/Spinner/index.js +2 -0
  87. package/dist/components/Switch/Switch.d.ts +7 -0
  88. package/dist/components/Switch/Switch.js +23 -0
  89. package/dist/components/Switch/index.d.ts +1 -0
  90. package/dist/components/Switch/index.js +2 -0
  91. package/dist/components/Tabs/Tabs.d.ts +17 -0
  92. package/dist/components/Tabs/Tabs.js +78 -0
  93. package/dist/components/Tabs/index.d.ts +1 -0
  94. package/dist/components/Tabs/index.js +2 -0
  95. package/dist/components/TimePicker/TimePicker.d.ts +20 -0
  96. package/dist/components/TimePicker/TimePicker.js +62 -0
  97. package/dist/components/TimePicker/index.d.ts +1 -0
  98. package/dist/components/TimePicker/index.js +2 -0
  99. package/dist/components/Toast/Toast.d.ts +57 -0
  100. package/dist/components/Toast/Toast.js +40 -0
  101. package/dist/components/Toast/index.d.ts +1 -0
  102. package/dist/components/Toast/index.js +2 -0
  103. package/dist/components/Tooltip/Tooltip.d.ts +12 -0
  104. package/dist/components/Tooltip/Tooltip.js +23 -0
  105. package/dist/components/Tooltip/index.d.ts +1 -0
  106. package/dist/components/Tooltip/index.js +2 -0
  107. package/dist/components/Typography/Typography.d.ts +13 -0
  108. package/dist/components/Typography/Typography.js +63 -0
  109. package/dist/components/Typography/index.d.ts +1 -0
  110. package/dist/components/Typography/index.js +2 -0
  111. package/dist/lib/cn.d.ts +2 -0
  112. package/dist/lib/cn.js +6 -0
  113. package/dist/presets/SelectCountry/SelectCountry.d.ts +16 -0
  114. package/dist/presets/SelectCountry/SelectCountry.js +21 -0
  115. package/dist/presets/SelectCountry/countries.d.ts +11 -0
  116. package/dist/presets/SelectCountry/countries.js +120 -0
  117. package/dist/presets/SelectCountry/index.d.ts +2 -0
  118. package/dist/presets/SelectCountry/index.js +3 -0
  119. package/dist/presets/SelectPhone/SelectPhone.d.ts +15 -0
  120. package/dist/presets/SelectPhone/SelectPhone.js +21 -0
  121. package/dist/presets/SelectPhone/index.d.ts +2 -0
  122. package/dist/presets/SelectPhone/index.js +3 -0
  123. package/dist/presets/SelectPhone/phoneCodes.d.ts +7 -0
  124. package/dist/presets/SelectPhone/phoneCodes.js +131 -0
  125. package/dist/tailwind-preset.d.ts +10 -0
  126. package/dist/tailwind-preset.js +4 -0
  127. package/dist/test-setup.d.ts +0 -0
  128. package/dist/theme/colors.d.ts +57 -0
  129. package/dist/theme/colors.js +59 -0
  130. package/dist/theme/index.d.ts +3 -0
  131. package/dist/theme/index.js +4 -0
  132. package/dist/theme/shapes.d.ts +17 -0
  133. package/dist/theme/shapes.js +18 -0
  134. package/dist/theme/spacing.d.ts +18 -0
  135. package/dist/theme/spacing.js +19 -0
  136. package/dist/theme.css +2 -0
  137. package/llms.txt +296 -736
  138. package/package.json +193 -69
  139. package/dist/index.css +0 -1
  140. package/dist/index.d.ts +0 -9
  141. package/dist/index.es.js +0 -45361
  142. package/dist/src/commons/colors.d.ts +0 -47
  143. package/dist/src/commons/colors.es.js +0 -50
  144. package/dist/src/commons/shapes.d.ts +0 -15
  145. package/dist/src/commons/shapes.es.js +0 -18
  146. package/dist/src/commons/spacing.d.ts +0 -15
  147. package/dist/src/commons/spacing.es.js +0 -18
  148. package/dist/src/components/atoms/Avatar/Avatar.d.ts +0 -2
  149. package/dist/src/components/atoms/Avatar/index.d.ts +0 -2
  150. package/dist/src/components/atoms/Avatar/types.d.ts +0 -7
  151. package/dist/src/components/atoms/Badge/Badge.d.ts +0 -3
  152. package/dist/src/components/atoms/Badge/index.d.ts +0 -2
  153. package/dist/src/components/atoms/Badge/types.d.ts +0 -18
  154. package/dist/src/components/atoms/Button/Button.d.ts +0 -3
  155. package/dist/src/components/atoms/Button/ButtonV2.d.ts +0 -4
  156. package/dist/src/components/atoms/Button/index.d.ts +0 -4
  157. package/dist/src/components/atoms/Button/types.d.ts +0 -33
  158. package/dist/src/components/atoms/Checkbox/Checkbox.d.ts +0 -3
  159. package/dist/src/components/atoms/Checkbox/index.d.ts +0 -2
  160. package/dist/src/components/atoms/Checkbox/types.d.ts +0 -18
  161. package/dist/src/components/atoms/Datepicker/Datepicker.d.ts +0 -3
  162. package/dist/src/components/atoms/Datepicker/index.d.ts +0 -2
  163. package/dist/src/components/atoms/Datepicker/types.d.ts +0 -9
  164. package/dist/src/components/atoms/Icon/Icon.d.ts +0 -3
  165. package/dist/src/components/atoms/Icon/index.d.ts +0 -3
  166. package/dist/src/components/atoms/Icon/types.d.ts +0 -11
  167. package/dist/src/components/atoms/InputNumber/InputNumber.d.ts +0 -3
  168. package/dist/src/components/atoms/InputNumber/index.d.ts +0 -2
  169. package/dist/src/components/atoms/InputNumber/types.d.ts +0 -7
  170. package/dist/src/components/atoms/Label/Label.d.ts +0 -9
  171. package/dist/src/components/atoms/Popover/Popover.d.ts +0 -2
  172. package/dist/src/components/atoms/Popover/index.d.ts +0 -2
  173. package/dist/src/components/atoms/Popover/types.d.ts +0 -8
  174. package/dist/src/components/atoms/RadioButton/RadioButton.d.ts +0 -3
  175. package/dist/src/components/atoms/RadioButton/index.d.ts +0 -2
  176. package/dist/src/components/atoms/RadioButton/types.d.ts +0 -20
  177. package/dist/src/components/atoms/TextInput/TextInput.d.ts +0 -12
  178. package/dist/src/components/atoms/TextInput/index.d.ts +0 -1
  179. package/dist/src/components/atoms/TextInput/types.d.ts +0 -5
  180. package/dist/src/components/atoms/Timepicker/TimePicker.d.ts +0 -3
  181. package/dist/src/components/atoms/Timepicker/index.d.ts +0 -2
  182. package/dist/src/components/atoms/Timepicker/types.d.ts +0 -15
  183. package/dist/src/components/atoms/Toast/Toast.d.ts +0 -20
  184. package/dist/src/components/atoms/Toast/index.d.ts +0 -1
  185. package/dist/src/components/atoms/Toggle/Toggle.d.ts +0 -3
  186. package/dist/src/components/atoms/Toggle/index.d.ts +0 -2
  187. package/dist/src/components/atoms/Toggle/types.d.ts +0 -6
  188. package/dist/src/components/atoms/Typography/Typography.d.ts +0 -7
  189. package/dist/src/components/atoms/Typography/index.d.ts +0 -2
  190. package/dist/src/components/atoms/Typography/types.d.ts +0 -38
  191. package/dist/src/components/atoms/index.d.ts +0 -16
  192. package/dist/src/components/atoms/tooltips/Tooltip/Tooltip.d.ts +0 -2
  193. package/dist/src/components/atoms/tooltips/Tooltip/index.d.ts +0 -2
  194. package/dist/src/components/atoms/tooltips/Tooltip/types.d.ts +0 -10
  195. package/dist/src/components/atoms/tooltips/TooltipWrapper/TooltipWrapper.d.ts +0 -2
  196. package/dist/src/components/atoms/tooltips/TooltipWrapper/index.d.ts +0 -2
  197. package/dist/src/components/atoms/tooltips/TooltipWrapper/types.d.ts +0 -11
  198. package/dist/src/components/atoms/tooltips/index.d.ts +0 -2
  199. package/dist/src/components/index.d.ts +0 -3
  200. package/dist/src/components/molecules/Table/Table.d.ts +0 -3
  201. package/dist/src/components/molecules/Table/index.d.ts +0 -2
  202. package/dist/src/components/molecules/Table/types.d.ts +0 -28
  203. package/dist/src/components/molecules/alert/Alert.d.ts +0 -15
  204. package/dist/src/components/molecules/alert/index.d.ts +0 -1
  205. package/dist/src/components/molecules/dropdowns/Dropdown/Dropdown.d.ts +0 -3
  206. package/dist/src/components/molecules/dropdowns/Dropdown/index.d.ts +0 -2
  207. package/dist/src/components/molecules/dropdowns/Dropdown/types.d.ts +0 -33
  208. package/dist/src/components/molecules/dropdowns/DropdownCountry/DropdownCountry.d.ts +0 -5
  209. package/dist/src/components/molecules/dropdowns/DropdownCountry/index.d.ts +0 -1
  210. package/dist/src/components/molecules/dropdowns/DropdownFilter/DropdownFilter.d.ts +0 -3
  211. package/dist/src/components/molecules/dropdowns/DropdownFilter/index.d.ts +0 -1
  212. package/dist/src/components/molecules/dropdowns/DropdownFilter/types.d.ts +0 -38
  213. package/dist/src/components/molecules/dropdowns/DropdownMultiple/DropdownMultiple.d.ts +0 -3
  214. package/dist/src/components/molecules/dropdowns/DropdownMultiple/index.d.ts +0 -2
  215. package/dist/src/components/molecules/dropdowns/DropdownMultiple/types.d.ts +0 -11
  216. package/dist/src/components/molecules/dropdowns/DropdownPhone/DropdownPhone.d.ts +0 -6
  217. package/dist/src/components/molecules/dropdowns/DropdownPhone/index.d.ts +0 -1
  218. package/dist/src/components/molecules/dropdowns/index.d.ts +0 -5
  219. package/dist/src/components/molecules/index.d.ts +0 -4
  220. package/dist/src/components/molecules/tabs/Tab/Tab.d.ts +0 -3
  221. package/dist/src/components/molecules/tabs/Tab/index.d.ts +0 -2
  222. package/dist/src/components/molecules/tabs/Tab/types.d.ts +0 -16
  223. package/dist/src/components/molecules/tabs/TabButton/TabButton.d.ts +0 -3
  224. package/dist/src/components/molecules/tabs/TabButton/index.d.ts +0 -2
  225. package/dist/src/components/molecules/tabs/TabButton/types.d.ts +0 -15
  226. package/dist/src/components/molecules/tabs/index.d.ts +0 -2
  227. package/dist/src/components/organisms/Modal/Modal.d.ts +0 -3
  228. package/dist/src/components/organisms/Modal/ModalV2.d.ts +0 -53
  229. package/dist/src/components/organisms/Modal/index.d.ts +0 -3
  230. package/dist/src/components/organisms/Modal/types.d.ts +0 -24
  231. package/dist/src/components/organisms/index.d.ts +0 -1
  232. package/dist/src/constants/countries.d.ts +0 -7
  233. package/dist/src/hooks/useClickOutside.d.ts +0 -2
  234. package/dist/src/vite-env.d.ts +0 -1
  235. /package/dist/{src/components/atoms → components}/Label/index.d.ts +0 -0
@@ -0,0 +1,23 @@
1
+ export interface MultiSelectOption {
2
+ value: string;
3
+ label: string;
4
+ disabled?: boolean;
5
+ }
6
+ export interface MultiSelectProps {
7
+ options: MultiSelectOption[];
8
+ value?: string[];
9
+ defaultValue?: string[];
10
+ onValueChange?: (value: string[]) => void;
11
+ placeholder?: string;
12
+ searchPlaceholder?: string;
13
+ emptyText?: string;
14
+ /** Max chips rendered in the trigger before collapsing to "+N more". */
15
+ maxTags?: number;
16
+ disabled?: boolean;
17
+ size?: 'sm' | 'lg';
18
+ className?: string;
19
+ }
20
+ export declare const MultiSelect: {
21
+ ({ options, value, defaultValue, onValueChange, placeholder, searchPlaceholder, emptyText, maxTags, disabled, size, className }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
22
+ displayName: string;
23
+ };
@@ -0,0 +1,99 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import { inputVariants as t } from "../Input/Input.js";
3
+ import { Popover as n, PopoverContent as r, PopoverTrigger as i } from "../Popover/Popover.js";
4
+ import { Badge as a } from "../Badge/Badge.js";
5
+ import * as o from "react";
6
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
7
+ import { CaretDown as l, Check as u, MagnifyingGlass as d, X as f } from "@phosphor-icons/react";
8
+ import { Command as p } from "cmdk";
9
+ //#region src/components/MultiSelect/MultiSelect.tsx
10
+ var m = ({ options: m, value: h, defaultValue: g = [], onValueChange: _, placeholder: v = "Seleccionar opciones", searchPlaceholder: y = "Buscar...", emptyText: b = "Sin resultados", maxTags: x = 3, disabled: S, size: C = "sm", className: w }) => {
11
+ let [T, E] = o.useState(!1), [D, O] = o.useState(g), k = h !== void 0, A = k ? h : D, j = (e) => {
12
+ k || O(e), _?.(e);
13
+ }, M = (e) => {
14
+ j(A.includes(e) ? A.filter((t) => t !== e) : [...A, e]);
15
+ }, N = (e, t) => {
16
+ t.stopPropagation(), j(A.filter((t) => t !== e));
17
+ }, P = A.map((e) => m.find((t) => t.value === e)).filter(Boolean), F = P.slice(0, x), I = P.length - F.length;
18
+ return /* @__PURE__ */ c(n, {
19
+ open: T,
20
+ onOpenChange: E,
21
+ children: [/* @__PURE__ */ s(i, {
22
+ asChild: !0,
23
+ children: /* @__PURE__ */ c("button", {
24
+ type: "button",
25
+ role: "combobox",
26
+ "data-pressable": "",
27
+ "aria-expanded": T,
28
+ disabled: S,
29
+ className: e(t({ size: C }), "inline-flex items-center justify-between text-left h-auto min-h-10 py-x2 flex-wrap gap-x1", "active:scale-[var(--press-scale)] disabled:active:transform-none", A.length === 0 && "text-gray-40", w),
30
+ children: [A.length === 0 ? /* @__PURE__ */ s("span", { children: v }) : /* @__PURE__ */ c("span", {
31
+ className: "flex flex-wrap items-center gap-x1",
32
+ children: [F.map((e) => /* @__PURE__ */ c(a, {
33
+ variant: "neutral",
34
+ className: "gap-x1 [animation:ctc-scale-in_var(--duration-fast)_var(--ease-out)]",
35
+ children: [e.label, /* @__PURE__ */ s("span", {
36
+ role: "button",
37
+ "aria-label": `Quitar ${e.label}`,
38
+ onClick: (t) => N(e.value, t),
39
+ className: "hover:text-error cursor-pointer",
40
+ children: /* @__PURE__ */ s(f, {
41
+ weight: "bold",
42
+ className: "size-3"
43
+ })
44
+ })]
45
+ }, e.value)), I > 0 && /* @__PURE__ */ c(a, {
46
+ variant: "outline",
47
+ children: ["+", I]
48
+ })]
49
+ }), /* @__PURE__ */ s(l, {
50
+ weight: "bold",
51
+ className: e("size-4 text-gray-60 shrink-0 ml-x2", "[transition:transform_var(--duration-fast)_var(--ease-out)]", "[[data-state=open]_&]:rotate-180")
52
+ })]
53
+ })
54
+ }), /* @__PURE__ */ s(r, {
55
+ className: "w-[var(--radix-popover-trigger-width)] p-0",
56
+ align: "start",
57
+ children: /* @__PURE__ */ c(p, {
58
+ className: "flex flex-col",
59
+ children: [/* @__PURE__ */ c("div", {
60
+ className: "flex items-center border-b border-gray-20 px-x3",
61
+ children: [/* @__PURE__ */ s(d, {
62
+ weight: "regular",
63
+ className: "size-4 text-gray-60 mr-x2 shrink-0"
64
+ }), /* @__PURE__ */ s(p.Input, {
65
+ placeholder: y,
66
+ className: e("flex h-10 w-full bg-transparent py-x2 font-sans text-[14px] text-gray-80 outline-none", "placeholder:text-gray-40")
67
+ })]
68
+ }), /* @__PURE__ */ c(p.List, {
69
+ className: "max-h-64 overflow-y-auto p-x1",
70
+ children: [/* @__PURE__ */ s(p.Empty, {
71
+ className: "py-x6 text-center text-[14px] text-gray-60",
72
+ children: b
73
+ }), m.map((t) => {
74
+ let n = A.includes(t.value);
75
+ return /* @__PURE__ */ c(p.Item, {
76
+ value: t.value,
77
+ disabled: t.disabled,
78
+ onSelect: M,
79
+ className: e("relative flex cursor-default select-none items-center rounded-x1 py-x2 pl-x8 pr-x3", "text-[14px] text-gray-80 outline-none", "[transition:background-color_var(--duration-fast)_var(--ease-out)]", "data-[selected=true]:bg-gray-20 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50"),
80
+ children: [/* @__PURE__ */ s("span", {
81
+ className: e("absolute left-x3 size-4 rounded-x1 border-2 inline-flex items-center justify-center", n ? "bg-primary border-primary text-gray-00" : "border-gray-40"),
82
+ children: n && /* @__PURE__ */ s(u, {
83
+ weight: "bold",
84
+ className: "size-3"
85
+ })
86
+ }), /* @__PURE__ */ s("span", {
87
+ className: "truncate",
88
+ children: t.label
89
+ })]
90
+ }, t.value);
91
+ })]
92
+ })]
93
+ })
94
+ })]
95
+ });
96
+ };
97
+ m.displayName = "MultiSelect";
98
+ //#endregion
99
+ export { m as MultiSelect };
@@ -0,0 +1 @@
1
+ export { MultiSelect, type MultiSelectProps, type MultiSelectOption } from './MultiSelect';
@@ -0,0 +1,2 @@
1
+ import { MultiSelect as e } from "./MultiSelect.js";
2
+ export { e as MultiSelect };
@@ -0,0 +1,11 @@
1
+ import { InputProps } from '../Input/Input';
2
+ import * as React from 'react';
3
+ export interface NumberInputProps extends Omit<InputProps, 'type' | 'value' | 'defaultValue' | 'onChange'> {
4
+ value?: number;
5
+ defaultValue?: number;
6
+ min?: number;
7
+ max?: number;
8
+ step?: number;
9
+ onValueChange?: (value: number | undefined) => void;
10
+ }
11
+ export declare const NumberInput: React.ForwardRefExoticComponent<NumberInputProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,58 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import { Input as t, inputVariants as n } from "../Input/Input.js";
3
+ import * as r from "react";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ import { Minus as o, Plus as s } from "@phosphor-icons/react";
6
+ //#region src/components/NumberInput/NumberInput.tsx
7
+ var c = r.forwardRef(({ className: c, value: l, defaultValue: u, min: d, max: f, step: p = 1, disabled: m, onValueChange: h, size: g, ..._ }, v) => {
8
+ let [y, b] = r.useState(u), x = l !== void 0, S = x ? l : y, C = (e) => {
9
+ e !== void 0 && (d !== void 0 && e < d && (e = d), f !== void 0 && e > f && (e = f)), x || b(e), h?.(e);
10
+ }, w = (e) => {
11
+ C((S ?? 0) + e);
12
+ };
13
+ return /* @__PURE__ */ a("div", {
14
+ className: "relative inline-flex w-full",
15
+ children: [
16
+ /* @__PURE__ */ i("button", {
17
+ type: "button",
18
+ onClick: () => w(-p),
19
+ disabled: m || d !== void 0 && (S ?? 0) <= d,
20
+ "aria-label": "Decrement",
21
+ "data-pressable": "",
22
+ className: e("absolute left-0 top-0 h-full px-x3 inline-flex items-center justify-center", "text-gray-80 hover:text-primary disabled:text-gray-40 disabled:cursor-not-allowed", "[transition:color_var(--duration-fast)_var(--ease-out),transform_var(--duration-fast)_var(--ease-out)]", "active:scale-[var(--press-scale)] disabled:active:transform-none"),
23
+ children: /* @__PURE__ */ i(o, {
24
+ weight: "bold",
25
+ className: "size-4"
26
+ })
27
+ }),
28
+ /* @__PURE__ */ i(t, {
29
+ ref: v,
30
+ type: "number",
31
+ value: S ?? "",
32
+ onChange: (e) => C(e.target.value === "" ? void 0 : Number(e.target.value)),
33
+ min: d,
34
+ max: f,
35
+ step: p,
36
+ disabled: m,
37
+ size: g,
38
+ className: e(n({ size: g }), "text-center tabular-nums", "[&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none", "[appearance:textfield]", c),
39
+ ..._
40
+ }),
41
+ /* @__PURE__ */ i("button", {
42
+ type: "button",
43
+ onClick: () => w(p),
44
+ disabled: m || f !== void 0 && (S ?? 0) >= f,
45
+ "aria-label": "Increment",
46
+ "data-pressable": "",
47
+ className: e("absolute right-0 top-0 h-full px-x3 inline-flex items-center justify-center", "text-gray-80 hover:text-primary disabled:text-gray-40 disabled:cursor-not-allowed", "[transition:color_var(--duration-fast)_var(--ease-out),transform_var(--duration-fast)_var(--ease-out)]", "active:scale-[var(--press-scale)] disabled:active:transform-none"),
48
+ children: /* @__PURE__ */ i(s, {
49
+ weight: "bold",
50
+ className: "size-4"
51
+ })
52
+ })
53
+ ]
54
+ });
55
+ });
56
+ c.displayName = "NumberInput";
57
+ //#endregion
58
+ export { c as NumberInput };
@@ -0,0 +1 @@
1
+ export { NumberInput, type NumberInputProps } from './NumberInput';
@@ -0,0 +1,2 @@
1
+ import { NumberInput as e } from "./NumberInput.js";
2
+ export { e as NumberInput };
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
3
+ export declare const Popover: React.FC<PopoverPrimitive.PopoverProps>;
4
+ export declare const PopoverTrigger: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ export declare const PopoverAnchor: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React.RefAttributes<HTMLDivElement>>;
6
+ export declare const PopoverClose: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverCloseProps & React.RefAttributes<HTMLButtonElement>>;
7
+ export declare const PopoverPortal: React.FC<PopoverPrimitive.PopoverPortalProps>;
8
+ export interface PopoverContentProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {
9
+ /** Render an arrow pointing to the anchor. */
10
+ arrow?: boolean;
11
+ }
12
+ export declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,20 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import * as t from "react";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import * as i from "@radix-ui/react-popover";
5
+ //#region src/components/Popover/Popover.tsx
6
+ var a = i.Root, o = i.Trigger, s = i.Anchor, c = i.Close, l = i.Portal, u = t.forwardRef(({ className: t, align: a = "center", sideOffset: o = 8, arrow: s = !1, children: c, ...l }, u) => /* @__PURE__ */ n(i.Portal, { children: /* @__PURE__ */ r(i.Content, {
7
+ ref: u,
8
+ align: a,
9
+ sideOffset: o,
10
+ className: e("z-50 rounded-x4 border border-gray-20 bg-gray-00 p-x4 shadow-md outline-none", "[transform-origin:var(--radix-popover-content-transform-origin)]", "opacity-0 scale-[var(--dropdown-pre-scale)]", "data-[state=open]:opacity-100 data-[state=open]:scale-100", "[transition:opacity_var(--dropdown-open-dur)_var(--dropdown-ease),transform_var(--dropdown-open-dur)_var(--dropdown-ease)]", "data-[state=closed]:[transition-duration:var(--dropdown-close-dur)]", "data-[state=closed]:scale-[var(--dropdown-closing-scale)] data-[state=closed]:opacity-0", t),
11
+ ...l,
12
+ children: [c, s && /* @__PURE__ */ n(i.Arrow, {
13
+ className: "fill-gray-00 stroke-gray-20",
14
+ width: 12,
15
+ height: 6
16
+ })]
17
+ }) }));
18
+ u.displayName = "PopoverContent";
19
+ //#endregion
20
+ export { a as Popover, s as PopoverAnchor, c as PopoverClose, u as PopoverContent, l as PopoverPortal, o as PopoverTrigger };
@@ -0,0 +1 @@
1
+ export { Popover, PopoverTrigger, PopoverAnchor, PopoverClose, PopoverPortal, PopoverContent, type PopoverContentProps } from './Popover';
@@ -0,0 +1,2 @@
1
+ import { Popover as e, PopoverAnchor as t, PopoverClose as n, PopoverContent as r, PopoverPortal as i, PopoverTrigger as a } from "./Popover.js";
2
+ export { e as Popover, t as PopoverAnchor, n as PopoverClose, r as PopoverContent, i as PopoverPortal, a as PopoverTrigger };
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
3
+ export interface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {
4
+ /** lg=22px (default), sm=16px */
5
+ size?: 'sm' | 'lg';
6
+ }
7
+ export declare const RadioGroup: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
8
+ export declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,30 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import * as t from "react";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ import * as r from "@radix-ui/react-radio-group";
5
+ //#region src/components/RadioGroup/RadioGroup.tsx
6
+ var i = t.createContext({ size: "lg" }), a = t.forwardRef(({ className: t, size: a = "lg", ...o }, s) => /* @__PURE__ */ n(i.Provider, {
7
+ value: { size: a },
8
+ children: /* @__PURE__ */ n(r.Root, {
9
+ ref: s,
10
+ className: e("grid gap-x2", t),
11
+ ...o
12
+ })
13
+ }));
14
+ a.displayName = "RadioGroup";
15
+ var o = t.forwardRef(({ className: a, ...o }, s) => {
16
+ let { size: c } = t.useContext(i);
17
+ return /* @__PURE__ */ n(r.Item, {
18
+ ref: s,
19
+ "data-pressable": "",
20
+ className: e("group peer aspect-square shrink-0 rounded-full border bg-gray-00", "inline-flex items-center justify-center", "[transition:border-color_var(--duration-fast)_var(--ease-out),background-color_var(--duration-fast)_var(--ease-out),transform_var(--duration-fast)_var(--ease-out)]", "active:scale-[0.92]", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", "border-gray-80 hover:border-gray-100", "data-[state=checked]:border-gray-80 hover:data-[state=checked]:border-gray-100", "disabled:cursor-not-allowed disabled:border-gray-40 disabled:bg-gray-20 disabled:active:transform-none", "disabled:data-[state=checked]:border-gray-40", "aria-invalid:border-error", c === "lg" && "size-[22px]", c === "sm" && "size-[16px]", a),
21
+ ...o,
22
+ children: /* @__PURE__ */ n(r.Indicator, {
23
+ className: "flex items-center justify-center",
24
+ children: /* @__PURE__ */ n("span", { className: e("block rounded-full bg-gray-80", "[transition:background-color_var(--duration-fast)_var(--ease-out)]", "group-hover:bg-gray-100", "group-disabled:bg-gray-40", "[animation:ctc-scale-in_var(--duration-fast)_var(--ease-out)]", c === "lg" && "size-[10px]", c === "sm" && "size-[8px]") })
25
+ })
26
+ });
27
+ });
28
+ o.displayName = "RadioGroupItem";
29
+ //#endregion
30
+ export { a as RadioGroup, o as RadioGroupItem };
@@ -0,0 +1 @@
1
+ export { RadioGroup, RadioGroupItem } from './RadioGroup';
@@ -0,0 +1,2 @@
1
+ import { RadioGroup as e, RadioGroupItem as t } from "./RadioGroup.js";
2
+ export { e as RadioGroup, t as RadioGroupItem };
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import * as SelectPrimitive from '@radix-ui/react-select';
3
+ export declare const Select: React.FC<SelectPrimitive.SelectProps>;
4
+ export declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
5
+ export declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
6
+ export interface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {
7
+ size?: 'sm' | 'lg';
8
+ }
9
+ export declare const SelectTrigger: React.ForwardRefExoticComponent<SelectTriggerProps & React.RefAttributes<HTMLButtonElement>>;
10
+ export declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
+ export declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
+ export declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
+ export declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
14
+ export declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
+ export declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,83 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import { inputVariants as t } from "../Input/Input.js";
3
+ import * as n from "react";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ import { CaretDown as a, CaretUp as o, Check as s } from "@phosphor-icons/react";
6
+ import * as c from "@radix-ui/react-select";
7
+ //#region src/components/Select/Select.tsx
8
+ var l = c.Root, u = c.Group, d = c.Value, f = n.forwardRef(({ className: n, size: o = "sm", children: s, ...l }, u) => /* @__PURE__ */ i(c.Trigger, {
9
+ ref: u,
10
+ "data-pressable": "",
11
+ className: e(t({ size: o }), "inline-flex items-center justify-between", "active:scale-[var(--press-scale)] disabled:active:transform-none", "data-[placeholder]:text-gray-40", n),
12
+ ...l,
13
+ children: [s, /* @__PURE__ */ r(c.Icon, {
14
+ asChild: !0,
15
+ children: /* @__PURE__ */ r(a, {
16
+ weight: "bold",
17
+ className: e("size-4 text-gray-60 shrink-0 ml-x2", "[transition:transform_var(--duration-base)_var(--ease-out)]", "group-data-[state=open]/select:rotate-180", "[[data-state=open]_&]:rotate-180")
18
+ })
19
+ })]
20
+ }));
21
+ f.displayName = "SelectTrigger";
22
+ var p = n.forwardRef(({ className: t, ...n }, i) => /* @__PURE__ */ r(c.ScrollUpButton, {
23
+ ref: i,
24
+ className: e("flex cursor-default items-center justify-center py-x1", t),
25
+ ...n,
26
+ children: /* @__PURE__ */ r(o, {
27
+ weight: "bold",
28
+ className: "size-4"
29
+ })
30
+ }));
31
+ p.displayName = "SelectScrollUpButton";
32
+ var m = n.forwardRef(({ className: t, ...n }, i) => /* @__PURE__ */ r(c.ScrollDownButton, {
33
+ ref: i,
34
+ className: e("flex cursor-default items-center justify-center py-x1", t),
35
+ ...n,
36
+ children: /* @__PURE__ */ r(a, {
37
+ weight: "bold",
38
+ className: "size-4"
39
+ })
40
+ }));
41
+ m.displayName = "SelectScrollDownButton";
42
+ var h = n.forwardRef(({ className: t, children: n, position: a = "popper", ...o }, s) => /* @__PURE__ */ r(c.Portal, { children: /* @__PURE__ */ i(c.Content, {
43
+ ref: s,
44
+ position: a,
45
+ className: e("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-x2 border border-gray-20 bg-gray-00", "shadow-md text-gray-80", "[transform-origin:var(--radix-select-content-transform-origin)]", "opacity-0 scale-[0.96]", "data-[state=open]:opacity-100 data-[state=open]:scale-100", "[transition:opacity_var(--duration-base)_var(--ease-out),transform_var(--duration-base)_var(--ease-out)]", "data-[state=closed]:[transition-duration:var(--duration-fast)]", "data-[state=closed]:opacity-0 data-[state=closed]:scale-[0.97]", t),
46
+ ...o,
47
+ children: [
48
+ /* @__PURE__ */ r(p, {}),
49
+ /* @__PURE__ */ r(c.Viewport, {
50
+ className: e("p-x1 ctc-stagger", a === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),
51
+ children: n
52
+ }),
53
+ /* @__PURE__ */ r(m, {})
54
+ ]
55
+ }) }));
56
+ h.displayName = "SelectContent";
57
+ var g = n.forwardRef(({ className: t, ...n }, i) => /* @__PURE__ */ r(c.Label, {
58
+ ref: i,
59
+ className: e("px-x3 py-x2 text-[12px] text-gray-60", t),
60
+ ...n
61
+ }));
62
+ g.displayName = "SelectLabel";
63
+ var _ = n.forwardRef(({ className: t, children: n, ...a }, o) => /* @__PURE__ */ i(c.Item, {
64
+ ref: o,
65
+ className: e("relative flex w-full cursor-default select-none items-center rounded-x1 py-x2 pl-x3 pr-x8 text-[14px]", "outline-none focus:bg-gray-20", "[transition:background-color_var(--duration-fast)_var(--ease-out),color_var(--duration-fast)_var(--ease-out)]", "data-[disabled]:pointer-events-none data-[disabled]:opacity-50", t),
66
+ ...a,
67
+ children: [/* @__PURE__ */ r("span", {
68
+ className: "absolute right-x2 flex size-4 items-center justify-center",
69
+ children: /* @__PURE__ */ r(c.ItemIndicator, { children: /* @__PURE__ */ r(s, {
70
+ weight: "bold",
71
+ className: "size-4 text-primary"
72
+ }) })
73
+ }), /* @__PURE__ */ r(c.ItemText, { children: n })]
74
+ }));
75
+ _.displayName = "SelectItem";
76
+ var v = n.forwardRef(({ className: t, ...n }, i) => /* @__PURE__ */ r(c.Separator, {
77
+ ref: i,
78
+ className: e("-mx-1 my-x1 h-px bg-gray-20", t),
79
+ ...n
80
+ }));
81
+ v.displayName = "SelectSeparator";
82
+ //#endregion
83
+ export { l as Select, h as SelectContent, u as SelectGroup, _ as SelectItem, g as SelectLabel, m as SelectScrollDownButton, p as SelectScrollUpButton, v as SelectSeparator, f as SelectTrigger, d as SelectValue };
@@ -0,0 +1 @@
1
+ export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, type SelectTriggerProps } from './Select';
@@ -0,0 +1,2 @@
1
+ import { Select as e, SelectContent as t, SelectGroup as n, SelectItem as r, SelectLabel as i, SelectScrollDownButton as a, SelectScrollUpButton as o, SelectSeparator as s, SelectTrigger as c, SelectValue as l } from "./Select.js";
2
+ export { e as Select, t as SelectContent, n as SelectGroup, r as SelectItem, i as SelectLabel, a as SelectScrollDownButton, o as SelectScrollUpButton, s as SelectSeparator, c as SelectTrigger, l as SelectValue };
@@ -0,0 +1,9 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ declare const spinnerVariants: (props?: ({
4
+ size?: "sm" | "lg" | "md" | null | undefined;
5
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
6
+ export interface SpinnerProps extends React.SVGAttributes<SVGSVGElement>, VariantProps<typeof spinnerVariants> {
7
+ }
8
+ export declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<SVGSVGElement>>;
9
+ export {};
@@ -0,0 +1,24 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import * as t from "react";
3
+ import { cva as n } from "class-variance-authority";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ import { CircleNotch as i } from "@phosphor-icons/react";
6
+ //#region src/components/Spinner/Spinner.tsx
7
+ var a = n("shrink-0 [animation:ctc-spin_700ms_linear_infinite]", {
8
+ variants: { size: {
9
+ sm: "size-4",
10
+ md: "size-5",
11
+ lg: "size-6"
12
+ } },
13
+ defaultVariants: { size: "md" }
14
+ }), o = t.forwardRef(({ className: t, size: n, ...o }, s) => /* @__PURE__ */ r(i, {
15
+ ref: s,
16
+ weight: "bold",
17
+ role: "status",
18
+ "aria-label": "Cargando",
19
+ className: e(a({ size: n }), t),
20
+ ...o
21
+ }));
22
+ o.displayName = "Spinner";
23
+ //#endregion
24
+ export { o as Spinner };
@@ -0,0 +1 @@
1
+ export { Spinner, type SpinnerProps } from './Spinner';
@@ -0,0 +1,2 @@
1
+ import { Spinner as e } from "./Spinner.js";
2
+ export { e as Spinner };
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
3
+ export interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root> {
4
+ /** lg=40×22 (default), sm=30×16 */
5
+ size?: 'sm' | 'lg';
6
+ }
7
+ export declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,23 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import * as t from "react";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ import * as r from "@radix-ui/react-switch";
5
+ //#region src/components/Switch/Switch.tsx
6
+ var i = t.forwardRef(({ className: t, size: i = "lg", ...a }, o) => /* @__PURE__ */ n(r.Root, {
7
+ ref: o,
8
+ "data-pressable": "",
9
+ className: e("peer relative inline-flex shrink-0 cursor-pointer items-center rounded-full", "[transition:background-color_var(--duration-base)_var(--ease-out),transform_var(--duration-fast)_var(--ease-out)]", "active:scale-[0.95]", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", "data-[state=unchecked]:bg-gray-40", "data-[state=checked]:bg-gray-80", "hover:data-[state=checked]:bg-gray-100", "disabled:cursor-not-allowed disabled:active:transform-none", "disabled:data-[state=unchecked]:bg-gray-20", "disabled:data-[state=checked]:bg-gray-40", i === "lg" && "h-[22px] w-[40px]", i === "sm" && "h-[16px] w-[30px]", t),
10
+ ...a,
11
+ children: /* @__PURE__ */ n(r.Thumb, { className: e("pointer-events-none block rounded-full bg-gray-00", "[transition:transform_180ms_var(--ease-back),background-color_var(--duration-fast)_var(--ease-out)]", "group-disabled:bg-gray-40 peer-disabled:bg-gray-40", i === "lg" && [
12
+ "size-[18px]",
13
+ "translate-x-[2px]",
14
+ "data-[state=checked]:translate-x-[20px]"
15
+ ], i === "sm" && [
16
+ "size-[12px]",
17
+ "translate-x-[2px]",
18
+ "data-[state=checked]:translate-x-[16px]"
19
+ ]) })
20
+ }));
21
+ i.displayName = "Switch";
22
+ //#endregion
23
+ export { i as Switch };
@@ -0,0 +1 @@
1
+ export { Switch, type SwitchProps } from './Switch';
@@ -0,0 +1,2 @@
1
+ import { Switch as e } from "./Switch.js";
2
+ export { e as Switch };
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
3
+ type TabsVariant = 'segmented' | 'underline';
4
+ type TabsSize = 'sm' | 'lg';
5
+ type TabsSpacing = 'condensed' | 'expanded';
6
+ export interface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {
7
+ variant?: TabsVariant;
8
+ /** Underline only. lg=Big (16px), sm=Small (12px). */
9
+ size?: TabsSize;
10
+ /** Underline only. condensed=tighter gaps, expanded=wider gaps. */
11
+ spacing?: TabsSpacing;
12
+ }
13
+ export declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
14
+ export declare const TabsList: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
+ export declare const TabsTrigger: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
16
+ export declare const TabsContent: React.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
+ export {};
@@ -0,0 +1,78 @@
1
+ import { cn as e } from "../../lib/cn.js";
2
+ import * as t from "react";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import * as i from "@radix-ui/react-tabs";
5
+ //#region src/components/Tabs/Tabs.tsx
6
+ var a = t.createContext({
7
+ variant: "underline",
8
+ size: "lg",
9
+ spacing: "condensed"
10
+ }), o = t.forwardRef(({ className: t, variant: r = "underline", size: o = "lg", spacing: s = "condensed", ...c }, l) => /* @__PURE__ */ n(a.Provider, {
11
+ value: {
12
+ variant: r,
13
+ size: o,
14
+ spacing: s
15
+ },
16
+ children: /* @__PURE__ */ n(i.Root, {
17
+ ref: l,
18
+ className: e("flex flex-col gap-x4", t),
19
+ ...c
20
+ })
21
+ }));
22
+ o.displayName = "Tabs";
23
+ var s = {
24
+ lg: {
25
+ condensed: "gap-x8",
26
+ expanded: "gap-x12"
27
+ },
28
+ sm: {
29
+ condensed: "gap-x4",
30
+ expanded: "gap-x8"
31
+ }
32
+ }, c = t.forwardRef(({ className: r, ...o }, c) => {
33
+ let { variant: l, size: u, spacing: d } = t.useContext(a);
34
+ return /* @__PURE__ */ n(i.List, {
35
+ ref: c,
36
+ className: e("inline-flex", l === "segmented" && "rounded-x2 bg-gray-20 p-x1 gap-x1", l === "underline" && [
37
+ "relative items-end",
38
+ s[u][d],
39
+ "after:absolute after:left-0 after:right-0 after:bottom-0 after:h-px after:bg-gray-80",
40
+ "after:[transition:background-color_var(--duration-fast)_var(--ease-out)]",
41
+ "has-[[data-state=active]:hover]:after:bg-gray-100",
42
+ "has-[:disabled]:after:bg-gray-40"
43
+ ], r),
44
+ ...o
45
+ });
46
+ });
47
+ c.displayName = "TabsList";
48
+ var l = t.forwardRef(({ className: o, children: s, ...c }, l) => {
49
+ let { variant: u, size: d } = t.useContext(a);
50
+ return u === "segmented" ? /* @__PURE__ */ n(i.Trigger, {
51
+ ref: l,
52
+ "data-pressable": "",
53
+ className: e("inline-flex items-center justify-center font-sans text-[14px] leading-[20px]", "rounded-x2 px-x4 py-x2 text-gray-60", "[transition:color_var(--duration-fast)_var(--ease-out),background-color_var(--duration-fast)_var(--ease-out),box-shadow_var(--duration-fast)_var(--ease-out),transform_var(--duration-fast)_var(--ease-out)]", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none disabled:opacity-50", "data-[state=active]:bg-gray-00 data-[state=active]:text-gray-80 data-[state=active]:shadow-sm", o),
54
+ ...c,
55
+ children: s
56
+ }) : /* @__PURE__ */ r(i.Trigger, {
57
+ ref: l,
58
+ "data-pressable": "",
59
+ className: e("group relative inline-flex flex-col items-stretch gap-x1 min-w-[100px] font-sans tracking-[-0.5px]", "text-center text-gray-80", "focus-visible:outline-none focus-visible:[&_span]:underline focus-visible:[&_span]:underline-offset-2", "[transition:color_var(--duration-fast)_var(--ease-out)]", "hover:text-gray-100", "disabled:text-gray-40 disabled:cursor-not-allowed", "data-[state=active]:font-bold", "data-[state=inactive]:font-normal", d === "lg" && "text-[16px] leading-[22px]", d === "sm" && "text-[12px] leading-[16px]", o),
60
+ ...c,
61
+ children: [/* @__PURE__ */ n("span", {
62
+ className: "px-x1",
63
+ children: s
64
+ }), /* @__PURE__ */ n("span", {
65
+ "aria-hidden": !0,
66
+ className: e("self-stretch h-[4px] rounded-tl-x1 rounded-tr-x1", "[transition:background-color_var(--duration-fast)_var(--ease-out)]", "bg-transparent", "group-hover:group-data-[state=inactive]:bg-gray-20", "group-data-[state=active]:bg-gray-80", "group-hover:group-data-[state=active]:bg-gray-100", "group-disabled:group-data-[state=active]:bg-gray-40")
67
+ })]
68
+ });
69
+ });
70
+ l.displayName = "TabsTrigger";
71
+ var u = t.forwardRef(({ className: t, ...r }, a) => /* @__PURE__ */ n(i.Content, {
72
+ ref: a,
73
+ className: e("focus-visible:outline-none", "data-[state=active]:[animation:ctc-fade-rise_var(--duration-base)_var(--ease-out)]", t),
74
+ ...r
75
+ }));
76
+ u.displayName = "TabsContent";
77
+ //#endregion
78
+ export { o as Tabs, u as TabsContent, c as TabsList, l as TabsTrigger };
@@ -0,0 +1 @@
1
+ export { Tabs, TabsList, TabsTrigger, TabsContent, type TabsProps } from './Tabs';
@@ -0,0 +1,2 @@
1
+ import { Tabs as e, TabsContent as t, TabsList as n, TabsTrigger as r } from "./Tabs.js";
2
+ export { e as Tabs, t as TabsContent, n as TabsList, r as TabsTrigger };
@@ -0,0 +1,20 @@
1
+ export interface TimeValue {
2
+ hours: number;
3
+ minutes: number;
4
+ }
5
+ export interface TimePickerProps {
6
+ value?: TimeValue;
7
+ defaultValue?: TimeValue;
8
+ onValueChange?: (value: TimeValue) => void;
9
+ /** Step in minutes for the minutes select. Default: 5. */
10
+ minuteStep?: number;
11
+ hour12?: boolean;
12
+ disabled?: boolean;
13
+ size?: 'sm' | 'lg';
14
+ className?: string;
15
+ 'data-testid'?: string;
16
+ }
17
+ export declare const TimePicker: {
18
+ ({ value, defaultValue, onValueChange, minuteStep, hour12, disabled, size, className, ...props }: TimePickerProps): import("react/jsx-runtime").JSX.Element;
19
+ displayName: string;
20
+ };