@lexydesign/designsystem 0.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 (94) hide show
  1. package/README.md +72 -0
  2. package/dist/components/Accordion/Accordion.d.ts +13 -0
  3. package/dist/components/Accordion/Accordion.js +33 -0
  4. package/dist/components/Avatar/Avatar.d.ts +7 -0
  5. package/dist/components/Avatar/Avatar.js +39 -0
  6. package/dist/components/Badge/Badge.d.ts +9 -0
  7. package/dist/components/Badge/Badge.js +137 -0
  8. package/dist/components/Breadcrumb/Breadcrumb.d.ts +14 -0
  9. package/dist/components/Breadcrumb/Breadcrumb.js +51 -0
  10. package/dist/components/Button/Button.d.ts +10 -0
  11. package/dist/components/Button/Button.js +145 -0
  12. package/dist/components/Checkbox/Checkbox.d.ts +6 -0
  13. package/dist/components/Checkbox/Checkbox.js +46 -0
  14. package/dist/components/Combobox/Combobox.d.ts +16 -0
  15. package/dist/components/Combobox/Combobox.js +57 -0
  16. package/dist/components/CounterBadge/CounterBadge.d.ts +8 -0
  17. package/dist/components/CounterBadge/CounterBadge.js +25 -0
  18. package/dist/components/Divider/Divider.d.ts +4 -0
  19. package/dist/components/Divider/Divider.js +14 -0
  20. package/dist/components/Dropdown/Dropdown.d.ts +21 -0
  21. package/dist/components/Dropdown/Dropdown.js +64 -0
  22. package/dist/components/FeatureCard/FeatureCard.d.ts +9 -0
  23. package/dist/components/FeatureCard/FeatureCard.js +31 -0
  24. package/dist/components/HeaderBar/HeaderBar.d.ts +13 -0
  25. package/dist/components/HeaderBar/HeaderBar.js +41 -0
  26. package/dist/components/InfoLabel/InfoLabel.d.ts +5 -0
  27. package/dist/components/InfoLabel/InfoLabel.js +26 -0
  28. package/dist/components/Input/Input.d.ts +7 -0
  29. package/dist/components/Input/Input.js +39 -0
  30. package/dist/components/Logo/Logo.d.ts +20 -0
  31. package/dist/components/Logo/Logo.js +84 -0
  32. package/dist/components/Logo/assets/lexy-dark-horizontal-slogan.js +5 -0
  33. package/dist/components/Logo/assets/lexy-dark-horizontal.js +5 -0
  34. package/dist/components/Logo/assets/lexy-dark-isotipe.js +5 -0
  35. package/dist/components/Logo/assets/lexy-dark-vertical-slogan.js +5 -0
  36. package/dist/components/Logo/assets/lexy-dark-vertical.js +5 -0
  37. package/dist/components/Logo/assets/lexy-light-horizontal-slogan.js +5 -0
  38. package/dist/components/Logo/assets/lexy-light-horizontal.js +5 -0
  39. package/dist/components/Logo/assets/lexy-light-isotipe.js +5 -0
  40. package/dist/components/Logo/assets/lexy-light-vertical-slogan.js +5 -0
  41. package/dist/components/Logo/assets/lexy-light-vertical.js +5 -0
  42. package/dist/components/Logo/assets/lexydeudor-dark-v1.js +5 -0
  43. package/dist/components/Logo/assets/lexydeudor-dark-v2.js +5 -0
  44. package/dist/components/Logo/assets/lexydeudor-light-v1.js +5 -0
  45. package/dist/components/Logo/assets/lexydeudor-light-v2.js +5 -0
  46. package/dist/components/Logo/assets/lexysalud-dark-v1.js +5 -0
  47. package/dist/components/Logo/assets/lexysalud-dark-v2.js +5 -0
  48. package/dist/components/Logo/assets/lexysalud-light-v1.js +5 -0
  49. package/dist/components/Logo/assets/lexysalud-light-v2.js +5 -0
  50. package/dist/components/Menu/Menu.d.ts +49 -0
  51. package/dist/components/Menu/Menu.js +108 -0
  52. package/dist/components/Modal/Modal.d.ts +33 -0
  53. package/dist/components/Modal/Modal.js +89 -0
  54. package/dist/components/Nav/Nav.d.ts +20 -0
  55. package/dist/components/Nav/Nav.js +44 -0
  56. package/dist/components/ProfileCard/ProfileCard.d.ts +11 -0
  57. package/dist/components/ProfileCard/ProfileCard.js +46 -0
  58. package/dist/components/ProgressBar/ProgressBar.d.ts +6 -0
  59. package/dist/components/ProgressBar/ProgressBar.js +31 -0
  60. package/dist/components/Radio/Radio.d.ts +5 -0
  61. package/dist/components/Radio/Radio.js +28 -0
  62. package/dist/components/Searchbox/Searchbox.d.ts +10 -0
  63. package/dist/components/Searchbox/Searchbox.js +62 -0
  64. package/dist/components/Skeleton/Skeleton.d.ts +4 -0
  65. package/dist/components/Skeleton/Skeleton.js +13 -0
  66. package/dist/components/Slider/Slider.d.ts +9 -0
  67. package/dist/components/Slider/Slider.js +41 -0
  68. package/dist/components/Snippet/Snippet.d.ts +11 -0
  69. package/dist/components/Snippet/Snippet.js +52 -0
  70. package/dist/components/StatusDot/StatusDot.d.ts +8 -0
  71. package/dist/components/StatusDot/StatusDot.js +31 -0
  72. package/dist/components/Switch/Switch.d.ts +6 -0
  73. package/dist/components/Switch/Switch.js +27 -0
  74. package/dist/components/Tabs/Tabs.d.ts +24 -0
  75. package/dist/components/Tabs/Tabs.js +69 -0
  76. package/dist/components/Tag/Tag.d.ts +12 -0
  77. package/dist/components/Tag/Tag.js +49 -0
  78. package/dist/components/Textarea/Textarea.d.ts +9 -0
  79. package/dist/components/Textarea/Textarea.js +54 -0
  80. package/dist/components/Toast/Toast.d.ts +7 -0
  81. package/dist/components/Toast/Toast.js +60 -0
  82. package/dist/components/Tooltip/Tooltip.d.ts +7 -0
  83. package/dist/components/Tooltip/Tooltip.js +58 -0
  84. package/dist/components/Tree/Tree.d.ts +14 -0
  85. package/dist/components/Tree/Tree.js +39 -0
  86. package/dist/globals.css +243 -0
  87. package/dist/index.d.ts +36 -0
  88. package/dist/index.js +37 -0
  89. package/dist/lib/useFloating.d.ts +20 -0
  90. package/dist/lib/useFloating.js +54 -0
  91. package/dist/lib/utils.d.ts +2 -0
  92. package/dist/lib/utils.js +9 -0
  93. package/dist/tokens.css +256 -0
  94. package/package.json +57 -0
@@ -0,0 +1,243 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap");
2
+
3
+ /* ---- Reset ---- */
4
+ *, *::before, *::after { box-sizing: border-box; }
5
+ * { margin: 0; }
6
+ html { -webkit-text-size-adjust: 100%; }
7
+ img, picture, svg, video { display: block; max-width: 100%; }
8
+
9
+ /* ---- Semantic aliases (app layer) ---- */
10
+ :root {
11
+ --background: var(--color-surface-background);
12
+ --foreground: var(--color-text-foreground);
13
+ --muted: var(--color-text-foreground-muted);
14
+ --surface: var(--color-surface);
15
+ --primary: var(--color-primary);
16
+ --primary-foreground: var(--color-primary-foreground);
17
+ --border: var(--color-border);
18
+ --danger: var(--color-status-danger);
19
+ --success: var(--color-status-success);
20
+ --warning: var(--color-status-warning);
21
+ --info: var(--color-status-info);
22
+ --radius: var(--radius-md);
23
+ }
24
+
25
+ /* ---- Base ---- */
26
+ body {
27
+ font-family: var(--font-base);
28
+ background-color: var(--color-surface-background);
29
+ color: var(--color-text-foreground);
30
+ -webkit-font-smoothing: antialiased;
31
+ }
32
+
33
+ /* ---- Typography utilities ---- */
34
+ .type-emphasized-headline-large {
35
+ font-family: var(--font-base);
36
+ font-size: 32px;
37
+ font-weight: var(--font-weight-medium);
38
+ line-height: 40px;
39
+ letter-spacing: 0px;
40
+ }
41
+ .type-emphasized-display-large {
42
+ font-family: var(--font-base);
43
+ font-size: 57px;
44
+ font-weight: var(--font-weight-medium);
45
+ line-height: 64px;
46
+ letter-spacing: -0.25px;
47
+ }
48
+ .type-emphasized-display-medium {
49
+ font-family: var(--font-base);
50
+ font-size: 45px;
51
+ font-weight: var(--font-weight-medium);
52
+ line-height: 52px;
53
+ letter-spacing: 0px;
54
+ }
55
+ .type-emphasized-display-small {
56
+ font-family: var(--font-base);
57
+ font-size: 36px;
58
+ font-weight: var(--font-weight-medium);
59
+ line-height: 44px;
60
+ letter-spacing: 0px;
61
+ }
62
+ .type-emphasized-headline-medium {
63
+ font-family: var(--font-base);
64
+ font-size: 28px;
65
+ font-weight: var(--font-weight-medium);
66
+ line-height: 36px;
67
+ letter-spacing: 0px;
68
+ }
69
+ .type-emphasized-headline-small {
70
+ font-family: var(--font-base);
71
+ font-size: 24px;
72
+ font-weight: var(--font-weight-medium);
73
+ line-height: 32px;
74
+ letter-spacing: 0px;
75
+ }
76
+ .type-emphasized-title-large {
77
+ font-family: var(--font-base);
78
+ font-size: 22px;
79
+ font-weight: var(--font-weight-medium);
80
+ line-height: 28px;
81
+ letter-spacing: 0px;
82
+ }
83
+ .type-emphasized-title-medium {
84
+ font-family: var(--font-base);
85
+ font-size: 16px;
86
+ font-weight: var(--font-weight-bold);
87
+ line-height: 24px;
88
+ letter-spacing: 0.15000000596046448px;
89
+ }
90
+ .type-emphasized-title-small {
91
+ font-family: var(--font-base);
92
+ font-size: 14px;
93
+ font-weight: var(--font-weight-bold);
94
+ line-height: 20px;
95
+ letter-spacing: 0.10000000149011612px;
96
+ }
97
+ .type-emphasized-body-large {
98
+ font-family: var(--font-base);
99
+ font-size: 16px;
100
+ font-weight: var(--font-weight-medium);
101
+ line-height: 24px;
102
+ letter-spacing: 0.5px;
103
+ }
104
+ .type-emphasized-body-medium {
105
+ font-family: var(--font-base);
106
+ font-size: 14px;
107
+ font-weight: var(--font-weight-medium);
108
+ line-height: 24px;
109
+ letter-spacing: 0.25px;
110
+ }
111
+ .type-emphasized-body-small {
112
+ font-family: var(--font-base);
113
+ font-size: 12px;
114
+ font-weight: var(--font-weight-medium);
115
+ line-height: 16px;
116
+ letter-spacing: 0.4000000059604645px;
117
+ }
118
+ .type-emphasized-label-large {
119
+ font-family: var(--font-base);
120
+ font-size: 14px;
121
+ font-weight: var(--font-weight-bold);
122
+ line-height: 20px;
123
+ letter-spacing: 0.10000000149011612px;
124
+ }
125
+ .type-emphasized-label-medium {
126
+ font-family: var(--font-base);
127
+ font-size: 12px;
128
+ font-weight: var(--font-weight-bold);
129
+ line-height: 16px;
130
+ letter-spacing: 0.5px;
131
+ }
132
+ .type-emphasized-label-small {
133
+ font-family: var(--font-base);
134
+ font-size: 11px;
135
+ font-weight: var(--font-weight-bold);
136
+ line-height: 16px;
137
+ letter-spacing: 0.5px;
138
+ }
139
+ .type-baseline-display-large {
140
+ font-family: var(--font-base);
141
+ font-size: 57px;
142
+ font-weight: var(--font-weight-regular);
143
+ line-height: 64px;
144
+ letter-spacing: -0.25px;
145
+ }
146
+ .type-baseline-display-medium {
147
+ font-family: var(--font-base);
148
+ font-size: 45px;
149
+ font-weight: var(--font-weight-regular);
150
+ line-height: 52px;
151
+ letter-spacing: 0px;
152
+ }
153
+ .type-baseline-display-small {
154
+ font-family: var(--font-base);
155
+ font-size: 36px;
156
+ font-weight: var(--font-weight-regular);
157
+ line-height: 44px;
158
+ letter-spacing: 0px;
159
+ }
160
+ .type-baseline-headline-large {
161
+ font-family: var(--font-base);
162
+ font-size: 32px;
163
+ font-weight: var(--font-weight-regular);
164
+ line-height: 40px;
165
+ letter-spacing: 0px;
166
+ }
167
+ .type-baseline-headline-medium {
168
+ font-family: var(--font-base);
169
+ font-size: 28px;
170
+ font-weight: var(--font-weight-regular);
171
+ line-height: 36px;
172
+ letter-spacing: 0px;
173
+ }
174
+ .type-baseline-headline-small {
175
+ font-family: var(--font-base);
176
+ font-size: 24px;
177
+ font-weight: var(--font-weight-regular);
178
+ line-height: 32px;
179
+ letter-spacing: 0px;
180
+ }
181
+ .type-baseline-title-large {
182
+ font-family: var(--font-base);
183
+ font-size: 22px;
184
+ font-weight: var(--font-weight-regular);
185
+ line-height: 28px;
186
+ letter-spacing: 0px;
187
+ }
188
+ .type-baseline-title-medium {
189
+ font-family: var(--font-base);
190
+ font-size: 16px;
191
+ font-weight: var(--font-weight-medium);
192
+ line-height: 24px;
193
+ letter-spacing: 0.15000000596046448px;
194
+ }
195
+ .type-baseline-title-small {
196
+ font-family: var(--font-base);
197
+ font-size: 14px;
198
+ font-weight: var(--font-weight-medium);
199
+ line-height: 20px;
200
+ letter-spacing: 0.10000000149011612px;
201
+ }
202
+ .type-baseline-body-large {
203
+ font-family: var(--font-base);
204
+ font-size: 16px;
205
+ font-weight: var(--font-weight-regular);
206
+ line-height: 24px;
207
+ letter-spacing: 0.5px;
208
+ }
209
+ .type-baseline-body-medium {
210
+ font-family: var(--font-base);
211
+ font-size: 14px;
212
+ font-weight: var(--font-weight-regular);
213
+ line-height: 24px;
214
+ letter-spacing: 0.25px;
215
+ }
216
+ .type-baseline-body-small {
217
+ font-family: var(--font-base);
218
+ font-size: 12px;
219
+ font-weight: var(--font-weight-regular);
220
+ line-height: 16px;
221
+ letter-spacing: 0.4000000059604645px;
222
+ }
223
+ .type-baseline-label-large {
224
+ font-family: var(--font-base);
225
+ font-size: 14px;
226
+ font-weight: var(--font-weight-medium);
227
+ line-height: 20px;
228
+ letter-spacing: 0.10000000149011612px;
229
+ }
230
+ .type-baseline-label-medium {
231
+ font-family: var(--font-base);
232
+ font-size: 12px;
233
+ font-weight: var(--font-weight-medium);
234
+ line-height: 16px;
235
+ letter-spacing: 0.5px;
236
+ }
237
+ .type-baseline-label-small {
238
+ font-family: var(--font-base);
239
+ font-size: 11px;
240
+ font-weight: var(--font-weight-medium);
241
+ line-height: 16px;
242
+ letter-spacing: 0.5px;
243
+ }
@@ -0,0 +1,36 @@
1
+ export * from './components/Accordion/Accordion';
2
+ export * from './components/Avatar/Avatar';
3
+ export * from './components/Badge/Badge';
4
+ export * from './components/Breadcrumb/Breadcrumb';
5
+ export * from './components/Button/Button';
6
+ export * from './components/Checkbox/Checkbox';
7
+ export * from './components/Combobox/Combobox';
8
+ export * from './components/CounterBadge/CounterBadge';
9
+ export * from './components/Divider/Divider';
10
+ export * from './components/Dropdown/Dropdown';
11
+ export * from './components/FeatureCard/FeatureCard';
12
+ export * from './components/HeaderBar/HeaderBar';
13
+ export * from './components/InfoLabel/InfoLabel';
14
+ export * from './components/Input/Input';
15
+ export * from './components/Logo/Logo';
16
+ export * from './components/Menu/Menu';
17
+ export * from './components/Modal/Modal';
18
+ export * from './components/Nav/Nav';
19
+ export * from './components/ProfileCard/ProfileCard';
20
+ export * from './components/ProgressBar/ProgressBar';
21
+ export * from './components/Radio/Radio';
22
+ export * from './components/Searchbox/Searchbox';
23
+ export * from './components/Skeleton/Skeleton';
24
+ export * from './components/Slider/Slider';
25
+ export * from './components/Snippet/Snippet';
26
+ export * from './components/StatusDot/StatusDot';
27
+ export * from './components/Switch/Switch';
28
+ export * from './components/Tabs/Tabs';
29
+ export * from './components/Tag/Tag';
30
+ export * from './components/Textarea/Textarea';
31
+ export * from './components/Toast/Toast';
32
+ export * from './components/Tooltip/Tooltip';
33
+ export * from './components/Tree/Tree';
34
+ export { cn } from './lib/utils';
35
+ export { useFloating } from './lib/useFloating';
36
+ export type { UseFloatingOptions, FloatingPlacement } from './lib/useFloating';
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { cn as e } from "./lib/utils.js";
3
+ import { Accordion as t } from "./components/Accordion/Accordion.js";
4
+ import { Avatar as n } from "./components/Avatar/Avatar.js";
5
+ import { Badge as r } from "./components/Badge/Badge.js";
6
+ import { Breadcrumb as i } from "./components/Breadcrumb/Breadcrumb.js";
7
+ import { Button as a } from "./components/Button/Button.js";
8
+ import { Checkbox as o } from "./components/Checkbox/Checkbox.js";
9
+ import { useFloating as s } from "./lib/useFloating.js";
10
+ import { Combobox as c } from "./components/Combobox/Combobox.js";
11
+ import { CounterBadge as l } from "./components/CounterBadge/CounterBadge.js";
12
+ import { Divider as u } from "./components/Divider/Divider.js";
13
+ import { Dropdown as d } from "./components/Dropdown/Dropdown.js";
14
+ import { FeatureCard as f } from "./components/FeatureCard/FeatureCard.js";
15
+ import { Logo as p } from "./components/Logo/Logo.js";
16
+ import { HeaderBar as m } from "./components/HeaderBar/HeaderBar.js";
17
+ import { Tooltip as h } from "./components/Tooltip/Tooltip.js";
18
+ import { InfoLabel as g } from "./components/InfoLabel/InfoLabel.js";
19
+ import { Input as _ } from "./components/Input/Input.js";
20
+ import { Menu as v } from "./components/Menu/Menu.js";
21
+ import { Modal as y } from "./components/Modal/Modal.js";
22
+ import { Nav as b } from "./components/Nav/Nav.js";
23
+ import { ProfileCard as x } from "./components/ProfileCard/ProfileCard.js";
24
+ import { ProgressBar as S } from "./components/ProgressBar/ProgressBar.js";
25
+ import { Radio as C } from "./components/Radio/Radio.js";
26
+ import { ExpandingSearchbox as w, Searchbox as T } from "./components/Searchbox/Searchbox.js";
27
+ import { Skeleton as E } from "./components/Skeleton/Skeleton.js";
28
+ import { Slider as D } from "./components/Slider/Slider.js";
29
+ import { Snippet as O } from "./components/Snippet/Snippet.js";
30
+ import { StatusDot as k } from "./components/StatusDot/StatusDot.js";
31
+ import { Switch as A } from "./components/Switch/Switch.js";
32
+ import { Tabs as j } from "./components/Tabs/Tabs.js";
33
+ import { Tag as M } from "./components/Tag/Tag.js";
34
+ import { Textarea as N } from "./components/Textarea/Textarea.js";
35
+ import { Toast as P } from "./components/Toast/Toast.js";
36
+ import { Tree as F } from "./components/Tree/Tree.js";
37
+ export { t as Accordion, n as Avatar, r as Badge, i as Breadcrumb, a as Button, o as Checkbox, c as Combobox, l as CounterBadge, u as Divider, d as Dropdown, w as ExpandingSearchbox, f as FeatureCard, m as HeaderBar, g as InfoLabel, _ as Input, p as Logo, v as Menu, y as Modal, b as Nav, x as ProfileCard, S as ProgressBar, C as Radio, T as Searchbox, E as Skeleton, D as Slider, O as Snippet, k as StatusDot, A as Switch, j as Tabs, M as Tag, N as Textarea, P as Toast, h as Tooltip, F as Tree, e as cn, s as useFloating };
@@ -0,0 +1,20 @@
1
+ export type FloatingPlacement = 'bottom-start' | 'bottom-end';
2
+ export interface UseFloatingOptions {
3
+ placement?: FloatingPlacement;
4
+ /** Match the floating panel's min-width to the trigger width. */
5
+ matchTriggerWidth?: boolean;
6
+ /** Gap between trigger and panel, in px. */
7
+ offset?: number;
8
+ }
9
+ /**
10
+ * Dependency-free anchored-popover positioning: fixed-position panel below the
11
+ * trigger, flips above when there isn't room, clamps to the viewport, and
12
+ * closes on outside pointerdown / Escape. Shared by Dropdown, Combobox, Menu.
13
+ */
14
+ export declare function useFloating<T extends HTMLElement = HTMLElement, F extends HTMLElement = HTMLElement>(options?: UseFloatingOptions): {
15
+ triggerRef: import('react').RefObject<T | null>;
16
+ floatingRef: import('react').RefObject<F | null>;
17
+ open: boolean;
18
+ setOpen: import('react').Dispatch<import('react').SetStateAction<boolean>>;
19
+ floatingStyle: import('react').CSSProperties;
20
+ };
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ import { useCallback as e, useEffect as t, useLayoutEffect as n, useRef as r, useState as i } from "react";
3
+ //#region src/lib/useFloating.ts
4
+ var a = 8;
5
+ function o(o = {}) {
6
+ let { placement: s = "bottom-start", matchTriggerWidth: c = !1, offset: l = 6 } = o, u = r(null), d = r(null), [f, p] = i(!1), [m, h] = i({
7
+ position: "fixed",
8
+ top: 0,
9
+ left: 0,
10
+ visibility: "hidden"
11
+ }), g = e(() => {
12
+ let e = u.current, t = d.current;
13
+ if (!e || !t) return;
14
+ let n = e.getBoundingClientRect(), r = t.getBoundingClientRect(), i = n.bottom + l;
15
+ i + r.height > window.innerHeight - a && n.top - l - r.height > a && (i = n.top - l - r.height);
16
+ let o = s === "bottom-end" ? n.right - r.width : n.left;
17
+ o = Math.min(Math.max(a, o), window.innerWidth - r.width - a), i = Math.min(Math.max(a, i), window.innerHeight - r.height - a), h({
18
+ position: "fixed",
19
+ top: i,
20
+ left: o,
21
+ visibility: "visible",
22
+ ...c ? { minWidth: n.width } : {}
23
+ });
24
+ }, [
25
+ s,
26
+ c,
27
+ l
28
+ ]);
29
+ return n(() => {
30
+ f ? g() : h((e) => ({
31
+ ...e,
32
+ visibility: "hidden"
33
+ }));
34
+ }, [f, g]), t(() => {
35
+ if (!f) return;
36
+ let e = (e) => {
37
+ let t = e.target;
38
+ !u.current?.contains(t) && !d.current?.contains(t) && p(!1);
39
+ }, t = (e) => {
40
+ e.key === "Escape" && p(!1);
41
+ }, n = () => g();
42
+ return document.addEventListener("pointerdown", e, !0), document.addEventListener("keydown", t), window.addEventListener("resize", n), window.addEventListener("scroll", n, !0), () => {
43
+ document.removeEventListener("pointerdown", e, !0), document.removeEventListener("keydown", t), window.removeEventListener("resize", n), window.removeEventListener("scroll", n, !0);
44
+ };
45
+ }, [f, g]), {
46
+ triggerRef: u,
47
+ floatingRef: d,
48
+ open: f,
49
+ setOpen: p,
50
+ floatingStyle: m
51
+ };
52
+ }
53
+ //#endregion
54
+ export { o as useFloating };
@@ -0,0 +1,2 @@
1
+ import { ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import { clsx as e } from "clsx";
3
+ import { twMerge as t } from "tailwind-merge";
4
+ //#region src/lib/utils.ts
5
+ function n(...n) {
6
+ return t(e(n));
7
+ }
8
+ //#endregion
9
+ export { n as cn };
@@ -0,0 +1,256 @@
1
+ @theme {
2
+ /* ---- Colors ---- */
3
+ --color-primary: #4429cc;
4
+ --color-primary-hover: #3620a3;
5
+ --color-primary-pressed: #27177a;
6
+ --color-primary-selected: #3721a7;
7
+ --color-primary-subtle: #f2f0fb;
8
+ --color-primary-subtle-hover: #e5e1f8;
9
+ --color-primary-subtle-pressed: #d2ccf3;
10
+ --color-primary-foreground: #ffffff;
11
+ --color-accent: #eeebfe;
12
+ --color-accent-subtle: #f8f7ff;
13
+ --color-accent-strong: #dad4ff;
14
+ --color-surface-background: #f9fafb;
15
+ --color-surface-background-subtle: #fafafa;
16
+ --color-surface-background-muted: #f5f5f5;
17
+ --color-surface-background-inverse: #292929;
18
+ --color-surface: #ffffff;
19
+ --color-surface-pressed: #e0e0e0;
20
+ --color-surface-selected: #ebebeb;
21
+ --color-surface-disabled: #f0f0f0;
22
+ --color-text-foreground: #242424;
23
+ --color-text-foreground-secondary: #424242;
24
+ --color-text-foreground-muted: #616161;
25
+ --color-text-foreground-subtle: #707070;
26
+ --color-text-foreground-disabled: #bdbdbd;
27
+ --color-text-ink: #0b013c;
28
+ --color-text-ink-secondary: #3a3368;
29
+ --color-text-link: #4b41e1;
30
+ --color-border: #e4e4e7;
31
+ --color-border-hover: #c7c7c7;
32
+ --color-border-pressed: #b3b3b3;
33
+ --color-border-selected: #bdbdbd;
34
+ --color-border-subtle: #e0e0e0;
35
+ --color-border-muted: #f0f0f0;
36
+ --color-border-strong: #616161;
37
+ --color-border-accent: #e6e4f2;
38
+ --color-border-accent-focus: #9d90fc;
39
+ --color-neutral-black: #000000;
40
+ --color-neutral-gray: #666666;
41
+ --color-neutral-border: #cecdd2;
42
+ --color-neutral-surface-muted: #f2f2f2;
43
+ --color-neutral-surface-subtle: #fafafa;
44
+ --color-neutral-white: #ffffff;
45
+ --color-status-success: #39ac39;
46
+ --color-status-success-hover: #339933;
47
+ --color-status-success-foreground-strong: #174517;
48
+ --color-status-success-background: #eff8ef;
49
+ --color-status-success-background-strong: #b4dfb4;
50
+ --color-status-success-border: #b4dfb4;
51
+ --color-status-success-pressed: #267326;
52
+ --color-status-warning: #f49c0b;
53
+ --color-status-warning-hover: #c37d09;
54
+ --color-status-warning-foreground-strong: #623e04;
55
+ --color-status-warning-background: #fef8ee;
56
+ --color-status-warning-background-strong: #fbd79d;
57
+ --color-status-warning-border: #fbd79d;
58
+ --color-status-warning-pressed: #925e07;
59
+ --color-status-danger: #da272d;
60
+ --color-status-danger-hover: #ae1e23;
61
+ --color-status-danger-pressed: #83161a;
62
+ --color-status-danger-background: #fcf0f0;
63
+ --color-status-danger-background-strong: #f1adaf;
64
+ --color-status-danger-border: #f1adaf;
65
+ --color-status-danger-foreground-strong: #6e0811;
66
+ --color-status-danger-foreground: #8f0a15;
67
+ --color-status-info: #4429cc;
68
+ --color-status-info-hover: #3620a3;
69
+ --color-status-info-foreground-strong: #27177a;
70
+ --color-status-info-background: #f2f0fb;
71
+ --color-status-info-background-strong: #e1ddf7;
72
+ --color-status-info-border: #e1ddf7;
73
+ --color-alpha-primary-alpha-hover: #4429cc0d;
74
+ --color-alpha-primary-alpha-pressed: #4429cc1a;
75
+ --color-alpha-success-alpha-hover: #39ac390d;
76
+ --color-alpha-success-alpha-pressed: #39ac391a;
77
+ --color-alpha-warning-alpha-hover: #f49c0b0d;
78
+ --color-alpha-warning-alpha-pressed: #f49c0b1a;
79
+ --color-alpha-danger-alpha-hover: #da272d0d;
80
+ --color-alpha-danger-alpha-pressed: #da272d1a;
81
+ --color-alpha-neutral-alpha-hover: #6666660d;
82
+ --color-alpha-neutral-alpha-pressed: #6666661a;
83
+ --color-subbrand-salud: #00b7b7;
84
+ --color-subbrand-salud-hover: #038387;
85
+ --color-subbrand-salud-pressed: #00666d;
86
+ --color-subbrand-salud-foreground-strong: #002d30;
87
+ --color-subbrand-salud-background: #e6ffff;
88
+ --color-subbrand-salud-background-strong: #a6e9ed;
89
+ --color-subbrand-salud-border: #ccf7f7;
90
+ --color-subbrand-deudor: #9d1aee;
91
+ --color-subbrand-deudor-hover: #881798;
92
+ --color-subbrand-deudor-pressed: #63276d;
93
+ --color-subbrand-deudor-foreground: #4d0673;
94
+ --color-subbrand-deudor-background: #fcf4ff;
95
+ --color-subbrand-deudor-background-strong: #e6bfed;
96
+ --color-subbrand-deudor-border: #f2dffb;
97
+ --color-lexy-navy: #0B013C; /* deep navy, used as the ink/dark surface background */
98
+
99
+ /* ---- Spacing ---- */
100
+ --spacing-0: 0px;
101
+ --spacing-0-5: 2px;
102
+ --spacing-1: 4px;
103
+ --spacing-1-5: 6px;
104
+ --spacing-2: 8px;
105
+ --spacing-2-5: 10px;
106
+ --spacing-3: 12px;
107
+ --spacing-4: 16px;
108
+ --spacing-5: 20px;
109
+ --spacing-6: 24px;
110
+ --spacing-8: 32px;
111
+ --spacing-10: 40px;
112
+ --spacing-12: 48px;
113
+ --spacing-15: 60px;
114
+ --spacing-16: 64px;
115
+ --spacing-20: 80px;
116
+ --spacing-30: 120px;
117
+ --spacing-32: 128px;
118
+ --spacing-unit: var(--spacing-1);
119
+ --spacing-stack-xs: var(--spacing-1-5);
120
+ --spacing-stack-sm: var(--spacing-2);
121
+ --spacing-stack-md: var(--spacing-4);
122
+ --spacing-stack-lg: var(--spacing-8);
123
+ --spacing-stack-xl: var(--spacing-16);
124
+ --spacing-inline-xs: var(--spacing-1-5);
125
+ --spacing-inline-sm: var(--spacing-2);
126
+ --spacing-inline-md: var(--spacing-3);
127
+ --spacing-inline-lg: var(--spacing-4);
128
+ --spacing-inset-xs: var(--spacing-2);
129
+ --spacing-inset-sm: var(--spacing-3);
130
+ --spacing-inset-md: var(--spacing-4);
131
+ --spacing-inset-lg: var(--spacing-6);
132
+ --spacing-gutter: var(--spacing-6);
133
+ --spacing-section: var(--spacing-10);
134
+ --spacing-page-top: var(--spacing-12);
135
+ --spacing-page-bottom: var(--spacing-32);
136
+
137
+ /* ---- Radius ---- */
138
+ --radius-none: 0px;
139
+ --radius-xs: 2px;
140
+ --radius-sm: 4px;
141
+ --radius-md: 6px;
142
+ --radius-lg: 8px;
143
+ --radius-xl: 10px;
144
+ --radius-2xl: 12px;
145
+ --radius-3xl: 14px;
146
+ --radius-4xl: 24px;
147
+ --radius-full: 9999px;
148
+ --radius-circular: 10000px;
149
+ --radius-control-sm: var(--radius-xs);
150
+ --radius-control: var(--radius-sm);
151
+ --radius-control-lg: var(--radius-md);
152
+ --radius-surface-sm: var(--radius-md);
153
+ --radius-surface: var(--radius-lg);
154
+ --radius-surface-lg: var(--radius-3xl);
155
+ --radius-card: var(--radius-lg);
156
+ --radius-card-docs: var(--radius-3xl);
157
+ --radius-popover: var(--radius-lg);
158
+ --radius-modal: var(--radius-lg);
159
+ --radius-tooltip: var(--radius-md);
160
+ --radius-badge: var(--radius-full);
161
+ --radius-avatar: var(--radius-full);
162
+ --radius-hero: var(--radius-4xl);
163
+
164
+ /* ---- Stroke / border width ---- */
165
+ --stroke-none: 0px;
166
+ --stroke-thin: 1px;
167
+ --stroke-thick: 2px;
168
+ --stroke-thicker: 3px;
169
+ --stroke-thickest: 4px;
170
+ --stroke-focus: 1px;
171
+ --stroke-divider: 1px;
172
+ --stroke-control: 1px;
173
+
174
+ /* ---- Typography scale ---- */
175
+ --text-button: 14px;
176
+ --font-weight-button: 500;
177
+ --font-base: "Geist", system-ui, sans-serif;
178
+ --font-weight-regular: 400;
179
+ --font-weight-medium: 500;
180
+ --font-weight-bold: 700;
181
+ --text-11: 11px;
182
+ --text-12: 12px;
183
+ --text-14: 14px;
184
+ --text-16: 16px;
185
+ --text-22: 22px;
186
+ --text-24: 24px;
187
+ --text-28: 28px;
188
+ --text-32: 32px;
189
+ --text-36: 36px;
190
+ --text-45: 45px;
191
+ --text-57: 57px;
192
+ --leading-16: 16px;
193
+ --leading-20: 20px;
194
+ --leading-24: 24px;
195
+ --leading-28: 28px;
196
+ --leading-32: 32px;
197
+ --leading-36: 36px;
198
+ --leading-40: 40px;
199
+ --leading-44: 44px;
200
+ --leading-52: 52px;
201
+ --leading-64: 64px;
202
+ --tracking-minus-025: -0.25px;
203
+ --tracking-0: 0px;
204
+ --tracking-010: 0.1px;
205
+ --tracking-015: 0.15px;
206
+ --tracking-025: 0.25px;
207
+ --tracking-040: 0.4px;
208
+ --tracking-050: 0.5px;
209
+
210
+ /* ---- Component · gap ---- */
211
+ --gap-button: var(--spacing-2-5);
212
+ --gap-input: 8px;
213
+ --gap-dropdown-menu: 4px;
214
+ --gap-dropdown-option: 8px;
215
+
216
+ /* ---- Component · padding ---- */
217
+ --padding-button-horizontal-sm: 12px;
218
+ --padding-button-horizontal-md: var(--spacing-4);
219
+ --padding-button-horizontal-lg: 20px;
220
+ --padding-input-horizontal-sm: 10px;
221
+ --padding-input-horizontal-md: 12px;
222
+ --padding-input-horizontal-lg: 12px;
223
+ --padding-dropdown-menu: 4px;
224
+ --padding-dropdown-option-horizontal: 8px;
225
+
226
+ /* ---- Component · height ---- */
227
+ --height-button-sm: 32px;
228
+ --height-button-md: 40px;
229
+ --height-button-lg: 48px;
230
+ --height-input-sm: 32px;
231
+ --height-input-md: 40px;
232
+ --height-input-lg: 48px;
233
+ --height-dropdown-option: 32px;
234
+
235
+ /* ---- Layout ---- */
236
+ --layout-gap: var(--spacing-6);
237
+ --layout-gap-half: var(--spacing-3);
238
+ --layout-gap-quarter: var(--spacing-1-5);
239
+ --layout-page-margin-mobile: var(--spacing-4);
240
+ --layout-page-margin: var(--spacing-5);
241
+ --layout-page-margin-desktop: var(--spacing-8);
242
+ --layout-content-gap: var(--spacing-15);
243
+ --layout-section-gap: var(--spacing-10);
244
+ --layout-scroll-margin: var(--spacing-30);
245
+ --layout-page-bottom: var(--spacing-32);
246
+ --layout-page-width: 1200px;
247
+ --layout-container-max: 1280px;
248
+
249
+ /* ---- Shadows ---- */
250
+ --shadow-sm: 0px 0px 2px rgba(0, 0, 0, 0.12);
251
+ --shadow-md: 0px 0px 2px rgba(0, 0, 0, 0.12);
252
+ --shadow-lg: 0px 0px 2px rgba(0, 0, 0, 0.12);
253
+ --shadow-xl: 0px 0px 2px rgba(0, 0, 0, 0.12);
254
+ --shadow-2xl: 0px 0px 8px rgba(0, 0, 0, 0.12);
255
+ --shadow-focus: 0px 0px 8px rgba(0, 0, 0, 0.12);
256
+ }