@nexub/react 0.0.2 → 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 (199) hide show
  1. package/dist/chunk-24CZFBTG.js +83 -0
  2. package/dist/chunk-2MKB5FQI.js +122 -0
  3. package/dist/chunk-2RLSIOGB.js +173 -0
  4. package/dist/chunk-2VDP2ML4.js +105 -0
  5. package/dist/chunk-3CSKW56L.js +44 -0
  6. package/dist/chunk-3U54QLYB.js +87 -0
  7. package/dist/chunk-46CFSBEO.js +48 -0
  8. package/dist/chunk-4BTP4464.js +92 -0
  9. package/dist/chunk-4NGB7XIM.js +88 -0
  10. package/dist/chunk-4OCXGNP3.js +85 -0
  11. package/dist/chunk-52KTX5A7.js +119 -0
  12. package/dist/chunk-6AZP6VBM.js +62 -0
  13. package/dist/chunk-6Y734SXN.js +51 -0
  14. package/dist/chunk-7B4FS7VQ.js +150 -0
  15. package/dist/chunk-7W2YDJ5W.js +128 -0
  16. package/dist/chunk-A7L75YXY.js +61 -0
  17. package/dist/chunk-ADO2DB6Q.js +1 -0
  18. package/dist/chunk-AHZQQ7OT.js +83 -0
  19. package/dist/chunk-AT6RPKU3.js +12 -0
  20. package/dist/chunk-BBVOB4EC.js +36 -0
  21. package/dist/chunk-BGY23Y5O.js +104 -0
  22. package/dist/chunk-BJKW3G2L.js +99 -0
  23. package/dist/chunk-BMVAZIAJ.js +187 -0
  24. package/dist/chunk-BTZW34TX.js +76 -0
  25. package/dist/chunk-BUBYXAJK.js +20 -0
  26. package/dist/chunk-BV3U3ATL.js +1 -0
  27. package/dist/chunk-BYCTJHXY.js +75 -0
  28. package/dist/chunk-BYF223HT.js +92 -0
  29. package/dist/chunk-CPV367VS.js +106 -0
  30. package/dist/chunk-CVBAWKNG.js +124 -0
  31. package/dist/chunk-CZUNTABW.js +25 -0
  32. package/dist/chunk-DAXDAFNG.js +92 -0
  33. package/dist/chunk-DD6XCW6R.js +53 -0
  34. package/dist/chunk-DEH2Z27F.js +50 -0
  35. package/dist/chunk-DOHXBNOP.js +119 -0
  36. package/dist/chunk-DR2Y3PIT.js +91 -0
  37. package/dist/chunk-ELC2NBGH.js +89 -0
  38. package/dist/chunk-EV43I5J6.js +1 -0
  39. package/dist/chunk-FS4XKWFA.js +308 -0
  40. package/dist/chunk-FUJOSPNQ.js +38 -0
  41. package/dist/chunk-GTQIA62H.js +60 -0
  42. package/dist/chunk-H4MXRAXP.js +37 -0
  43. package/dist/chunk-HW3I7I3R.js +29 -0
  44. package/dist/chunk-HY3JWSG4.js +1 -0
  45. package/dist/chunk-I5Z3A7N3.js +40 -0
  46. package/dist/chunk-IBCYG6HR.js +55 -0
  47. package/dist/chunk-IHW2L532.js +175 -0
  48. package/dist/chunk-IU76LV3W.js +101 -0
  49. package/dist/chunk-IZ6ZPEZ2.js +1 -0
  50. package/dist/chunk-JCUVWDUC.js +57 -0
  51. package/dist/chunk-JKTZMWWC.js +63 -0
  52. package/dist/chunk-JQDLCN5D.js +66 -0
  53. package/dist/chunk-K7CUCLLI.js +43 -0
  54. package/dist/chunk-KBB7M6WO.js +65 -0
  55. package/dist/chunk-KLTQJZOX.js +1 -0
  56. package/dist/chunk-KWWV3CM3.js +62 -0
  57. package/dist/chunk-KZW37FQZ.js +40 -0
  58. package/dist/chunk-L6GBZ2HB.js +145 -0
  59. package/dist/chunk-LAWZQ6R6.js +76 -0
  60. package/dist/chunk-LOP63AVE.js +49 -0
  61. package/dist/chunk-MY6XUJ5P.js +216 -0
  62. package/dist/chunk-N2GIMMTF.js +98 -0
  63. package/dist/chunk-NAIZ7R2L.js +59 -0
  64. package/dist/chunk-NHUQLIHL.js +9 -0
  65. package/dist/chunk-NZ7UK3G6.js +1 -0
  66. package/dist/chunk-OUBBOOZE.js +34 -0
  67. package/dist/chunk-OZPPL76D.js +82 -0
  68. package/dist/chunk-P6BZNFVU.js +38 -0
  69. package/dist/chunk-PANDAMD2.js +54 -0
  70. package/dist/chunk-PBLEGOLM.js +71 -0
  71. package/dist/chunk-PER3O4FD.js +33 -0
  72. package/dist/chunk-PICMOOAZ.js +1 -0
  73. package/dist/chunk-POBSY7EZ.js +155 -0
  74. package/dist/chunk-POFKKYHY.js +37 -0
  75. package/dist/chunk-QF7GUDOE.js +67 -0
  76. package/dist/chunk-QHJ43Q2T.js +70 -0
  77. package/dist/chunk-QURKXXNS.js +46 -0
  78. package/dist/chunk-ROZVVWPV.js +8 -0
  79. package/dist/chunk-S344IRK4.js +63 -0
  80. package/dist/chunk-SZKUSLHI.js +176 -0
  81. package/dist/chunk-T4IVMVMQ.js +32 -0
  82. package/dist/chunk-TCTFQYLH.js +115 -0
  83. package/dist/chunk-U3AEA4BZ.js +56 -0
  84. package/dist/chunk-U3EGB3JL.js +43 -0
  85. package/dist/chunk-UALYS4XI.js +67 -0
  86. package/dist/chunk-UTBUIBEP.js +153 -0
  87. package/dist/chunk-UWWL5FPC.js +80 -0
  88. package/dist/chunk-V3FZHIEB.js +52 -0
  89. package/dist/chunk-V6GZZFTV.js +106 -0
  90. package/dist/chunk-VPZCQFVY.js +33 -0
  91. package/dist/chunk-VT7RKY46.js +49 -0
  92. package/dist/chunk-W4IEXUD4.js +127 -0
  93. package/dist/chunk-WPPNDU2E.js +36 -0
  94. package/dist/chunk-XNDCVVNE.js +45 -0
  95. package/dist/chunk-Y45JAJKW.js +44 -0
  96. package/dist/chunk-YAGVMERC.js +81 -0
  97. package/dist/chunk-YGOR3KT7.js +46 -0
  98. package/dist/chunk-YJD66LTV.js +54 -0
  99. package/dist/chunk-YJU4ZRQZ.js +1 -0
  100. package/dist/chunk-YUFCNHZF.js +27 -0
  101. package/dist/chunk-YUNWZAAD.js +57 -0
  102. package/dist/chunk-ZFVBFCYV.js +84 -0
  103. package/dist/chunk-ZXLACKEB.js +8 -0
  104. package/dist/components/Accordion/index.js +8 -0
  105. package/dist/components/Alert/index.js +10 -0
  106. package/dist/components/AlertDialog/index.js +8 -0
  107. package/dist/components/AppShell/index.js +8 -0
  108. package/dist/components/AspectRatio/index.js +8 -0
  109. package/dist/components/Autocomplete/index.js +9 -0
  110. package/dist/components/Avatar/index.js +11 -0
  111. package/dist/components/AvatarGroup/index.js +11 -0
  112. package/dist/components/Badge/index.js +10 -0
  113. package/dist/components/Banner/index.js +10 -0
  114. package/dist/components/Box/index.js +8 -0
  115. package/dist/components/Breadcrumb/index.js +8 -0
  116. package/dist/components/Button/index.js +10 -0
  117. package/dist/components/ButtonGroup/index.js +8 -0
  118. package/dist/components/Callout/index.js +10 -0
  119. package/dist/components/Card/index.js +11 -0
  120. package/dist/components/CheckList/index.js +10 -0
  121. package/dist/components/Checkbox/index.js +8 -0
  122. package/dist/components/Chip/index.js +10 -0
  123. package/dist/components/Code/index.js +8 -0
  124. package/dist/components/Collapsible/index.js +8 -0
  125. package/dist/components/Combobox/index.js +9 -0
  126. package/dist/components/CommandPalette/index.js +8 -0
  127. package/dist/components/Container/index.js +10 -0
  128. package/dist/components/ContextMenu/index.js +8 -0
  129. package/dist/components/CountryBadge/index.js +9 -0
  130. package/dist/components/DataTable/index.js +8 -0
  131. package/dist/components/DatePicker/index.js +8 -0
  132. package/dist/components/DateRangePicker/index.js +8 -0
  133. package/dist/components/Dialog/index.js +9 -0
  134. package/dist/components/Drawer/index.js +11 -0
  135. package/dist/components/DropdownMenu/index.js +8 -0
  136. package/dist/components/EmptyState/index.js +8 -0
  137. package/dist/components/ErrorState/index.js +8 -0
  138. package/dist/components/EyebrowChip/index.js +8 -0
  139. package/dist/components/FileUpload/index.js +8 -0
  140. package/dist/components/FilterChip/index.js +8 -0
  141. package/dist/components/Flag/index.js +9 -0
  142. package/dist/components/Flex/index.js +8 -0
  143. package/dist/components/FormError/index.js +9 -0
  144. package/dist/components/FormField/index.js +11 -0
  145. package/dist/components/GradientDivider/index.js +8 -0
  146. package/dist/components/Grid/index.js +8 -0
  147. package/dist/components/Heading/index.js +10 -0
  148. package/dist/components/HelperText/index.js +9 -0
  149. package/dist/components/HoverCard/index.js +8 -0
  150. package/dist/components/IconButton/index.js +10 -0
  151. package/dist/components/Input/index.js +15 -0
  152. package/dist/components/Kbd/index.js +9 -0
  153. package/dist/components/KeyboardShortcut/index.js +9 -0
  154. package/dist/components/Label/index.js +11 -0
  155. package/dist/components/Link/index.js +10 -0
  156. package/dist/components/Logo/index.js +10 -0
  157. package/dist/components/Menubar/index.js +8 -0
  158. package/dist/components/Motion/index.js +13 -0
  159. package/dist/components/NavigationMenu/index.js +8 -0
  160. package/dist/components/NumberInput/index.js +9 -0
  161. package/dist/components/PageHeader/index.js +8 -0
  162. package/dist/components/Pagination/index.js +8 -0
  163. package/dist/components/PasswordInput/index.js +9 -0
  164. package/dist/components/Popover/index.js +9 -0
  165. package/dist/components/Progress/index.js +12 -0
  166. package/dist/components/RadioGroup/index.js +8 -0
  167. package/dist/components/Rating/index.js +11 -0
  168. package/dist/components/ScrollArea/index.js +8 -0
  169. package/dist/components/SearchInput/index.js +9 -0
  170. package/dist/components/Section/index.js +10 -0
  171. package/dist/components/SegmentedControl/index.js +8 -0
  172. package/dist/components/Select/index.js +8 -0
  173. package/dist/components/Separator/index.js +10 -0
  174. package/dist/components/Sidebar/index.js +8 -0
  175. package/dist/components/Skeleton/index.js +10 -0
  176. package/dist/components/Slider/index.js +8 -0
  177. package/dist/components/Spinner/index.js +10 -0
  178. package/dist/components/Stack/index.js +8 -0
  179. package/dist/components/StatusPill/index.js +10 -0
  180. package/dist/components/Switch/index.js +8 -0
  181. package/dist/components/Table/index.js +8 -0
  182. package/dist/components/Tabs/index.js +8 -0
  183. package/dist/components/Tag/index.js +10 -0
  184. package/dist/components/Text/index.js +10 -0
  185. package/dist/components/TextGradient/index.js +8 -0
  186. package/dist/components/Textarea/index.js +10 -0
  187. package/dist/components/ThemeProvider/index.js +10 -0
  188. package/dist/components/Toast/index.js +14 -0
  189. package/dist/components/Toggle/index.js +11 -0
  190. package/dist/components/ToggleGroup/index.js +9 -0
  191. package/dist/components/Toolbar/index.js +8 -0
  192. package/dist/components/Tooltip/index.js +16 -0
  193. package/dist/components/TopNav/index.js +9 -0
  194. package/dist/components/VisuallyHidden/index.js +7 -0
  195. package/dist/index.d.ts +41 -13
  196. package/dist/index.js +479 -5856
  197. package/package.json +24 -12
  198. package/dist/index.cjs +0 -6072
  199. package/dist/index.d.cts +0 -1234
@@ -0,0 +1,175 @@
1
+ 'use client';
2
+ import {
3
+ cn
4
+ } from "./chunk-AT6RPKU3.js";
5
+
6
+ // src/components/Toast/Toast.tsx
7
+ import * as React from "react";
8
+ import * as RadixToast from "@radix-ui/react-toast";
9
+ import { jsx } from "react/jsx-runtime";
10
+ var Provider2 = RadixToast.Provider;
11
+ var Viewport2 = React.forwardRef(
12
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
13
+ RadixToast.Viewport,
14
+ {
15
+ ref,
16
+ className: cn(
17
+ "fixed top-0 right-0 z-[var(--z-toast,2000)] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-sm gap-2",
18
+ className
19
+ ),
20
+ ...props
21
+ }
22
+ )
23
+ );
24
+ Viewport2.displayName = "Toast.Viewport";
25
+ var Root2 = React.forwardRef(
26
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
27
+ RadixToast.Root,
28
+ {
29
+ ref,
30
+ className: cn(
31
+ "group pointer-events-auto relative flex w-full items-center justify-between gap-2 overflow-hidden rounded-lg border border-[var(--color-border-default)] bg-[var(--color-bg-default)] p-4 shadow-md transition-all",
32
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-80 data-[state=open]:slide-in-from-top-full data-[state=closed]:slide-out-to-right-full",
33
+ className
34
+ ),
35
+ ...props
36
+ }
37
+ )
38
+ );
39
+ Root2.displayName = "Toast.Root";
40
+ var Title2 = React.forwardRef(
41
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(RadixToast.Title, { ref, className: cn("text-sm font-semibold", className), ...props })
42
+ );
43
+ Title2.displayName = "Toast.Title";
44
+ var Description2 = React.forwardRef(
45
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
46
+ RadixToast.Description,
47
+ {
48
+ ref,
49
+ className: cn("text-sm text-[var(--color-text-muted)]", className),
50
+ ...props
51
+ }
52
+ )
53
+ );
54
+ Description2.displayName = "Toast.Description";
55
+ var Action2 = React.forwardRef(
56
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
57
+ RadixToast.Action,
58
+ {
59
+ ref,
60
+ className: cn(
61
+ "inline-flex min-h-[44px] min-w-[44px] items-center justify-center rounded-md border px-3 text-xs font-medium transition-colors hover:bg-[var(--color-bg-subtle)]",
62
+ className
63
+ ),
64
+ ...props
65
+ }
66
+ )
67
+ );
68
+ Action2.displayName = "Toast.Action";
69
+ var Close2 = React.forwardRef(
70
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(RadixToast.Close, { ref, className: cn("rounded p-1", className), ...props })
71
+ );
72
+ Close2.displayName = "Toast.Close";
73
+ var Toast = { Provider: Provider2, Viewport: Viewport2, Root: Root2, Title: Title2, Description: Description2, Action: Action2, Close: Close2 };
74
+
75
+ // src/components/Toast/Toaster.tsx
76
+ import "react";
77
+ import * as RadixToast2 from "@radix-ui/react-toast";
78
+ import { X } from "@nexub/icons";
79
+
80
+ // src/components/Toast/useToast.ts
81
+ import { useState, useEffect } from "react";
82
+ var g = typeof window !== "undefined" ? (() => {
83
+ const _g = globalThis;
84
+ _g.__nexub_toast_items ??= [];
85
+ _g.__nexub_toast_listeners ??= /* @__PURE__ */ new Set();
86
+ _g.__nexub_toast_counter ??= 0;
87
+ return _g;
88
+ })() : { __nexub_toast_items: [], __nexub_toast_listeners: /* @__PURE__ */ new Set(), __nexub_toast_counter: 0 };
89
+ function notify() {
90
+ g.__nexub_toast_listeners.forEach((l) => l([...g.__nexub_toast_items]));
91
+ }
92
+ function add(item) {
93
+ const id = String(++g.__nexub_toast_counter);
94
+ g.__nexub_toast_items = [...g.__nexub_toast_items, { ...item, id }];
95
+ notify();
96
+ return id;
97
+ }
98
+ function useToastStore() {
99
+ const [state, setState] = useState([...g.__nexub_toast_items]);
100
+ useEffect(() => {
101
+ g.__nexub_toast_listeners.add(setState);
102
+ return () => {
103
+ g.__nexub_toast_listeners.delete(setState);
104
+ };
105
+ }, []);
106
+ return state;
107
+ }
108
+ function dismiss(id) {
109
+ g.__nexub_toast_items = id ? g.__nexub_toast_items.filter((i) => i.id !== id) : [];
110
+ notify();
111
+ }
112
+ var toast = {
113
+ success: (title, opts) => add({ title, tone: "success", ...opts }),
114
+ error: (title, opts) => add({ title, tone: "error", ...opts }),
115
+ info: (title, opts) => add({ title, tone: "info", ...opts }),
116
+ warning: (title, opts) => add({ title, tone: "warning", ...opts }),
117
+ custom: (title, opts) => add({ title, tone: "neutral", ...opts }),
118
+ dismiss
119
+ };
120
+
121
+ // src/components/Toast/Toaster.tsx
122
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
123
+ var toneMap = {
124
+ success: "border-l-4 border-[var(--color-semantic-success-default)]",
125
+ error: "border-l-4 border-[var(--color-semantic-error-default)]",
126
+ warning: "border-l-4 border-[var(--color-semantic-warning-default)]",
127
+ info: "border-l-4 border-[var(--color-semantic-info-default)]",
128
+ neutral: ""
129
+ };
130
+ function Toaster() {
131
+ const toasts = useToastStore();
132
+ return /* @__PURE__ */ jsxs(RadixToast2.Provider, { swipeDirection: "right", children: [
133
+ toasts.map((t) => /* @__PURE__ */ jsxs(
134
+ RadixToast2.Root,
135
+ {
136
+ className: cn(
137
+ "group pointer-events-auto relative flex w-full items-center justify-between gap-2 overflow-hidden rounded-lg border border-[var(--color-border-default)] bg-[var(--color-bg-default)] p-4 shadow-md transition-all",
138
+ "data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none",
139
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-80 data-[state=open]:slide-in-from-top-full data-[state=closed]:slide-out-to-right-full",
140
+ toneMap[t.tone ?? "neutral"]
141
+ ),
142
+ duration: t.duration ?? 5e3,
143
+ children: [
144
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-1", children: [
145
+ /* @__PURE__ */ jsx2(RadixToast2.Title, { className: "text-sm font-semibold", children: t.title }),
146
+ t.description && /* @__PURE__ */ jsx2(RadixToast2.Description, { className: "text-sm text-[var(--color-text-muted)]", children: t.description })
147
+ ] }),
148
+ t.action && /* @__PURE__ */ jsx2(
149
+ RadixToast2.Action,
150
+ {
151
+ altText: t.action.label,
152
+ onClick: t.action.onClick,
153
+ className: "shrink-0 rounded-md border border-[var(--color-border-default)] px-3 py-1.5 text-sm font-medium hover:bg-[var(--color-bg-subtle)] focus:outline-none focus:ring-2 focus:ring-[var(--color-ring-default)]",
154
+ children: t.action.label
155
+ }
156
+ ),
157
+ /* @__PURE__ */ jsxs(RadixToast2.Close, { className: "rounded-md p-1 transition-opacity [@media(hover:hover)]:opacity-0 group-hover:opacity-100 focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-[var(--color-ring-default)]", children: [
158
+ /* @__PURE__ */ jsx2(X, { size: "sm", "aria-hidden": "true" }),
159
+ /* @__PURE__ */ jsx2("span", { className: "sr-only", children: "Close" })
160
+ ] })
161
+ ]
162
+ },
163
+ t.id
164
+ )),
165
+ /* @__PURE__ */ jsx2(RadixToast2.Viewport, { className: "fixed top-0 right-0 z-[var(--z-toast,2000)] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-sm gap-2" })
166
+ ] });
167
+ }
168
+ Toaster.displayName = "Toaster";
169
+
170
+ export {
171
+ Toast,
172
+ useToastStore,
173
+ toast,
174
+ Toaster
175
+ };
@@ -0,0 +1,101 @@
1
+ 'use client';
2
+ import {
3
+ Label
4
+ } from "./chunk-JKTZMWWC.js";
5
+ import {
6
+ FormError
7
+ } from "./chunk-OUBBOOZE.js";
8
+ import {
9
+ HelperText
10
+ } from "./chunk-T4IVMVMQ.js";
11
+ import {
12
+ cn
13
+ } from "./chunk-AT6RPKU3.js";
14
+
15
+ // src/components/FormField/FormField.tsx
16
+ import * as React from "react";
17
+ import { jsx } from "react/jsx-runtime";
18
+ var FormFieldContext = React.createContext(null);
19
+ function useFormField() {
20
+ const ctx = React.useContext(FormFieldContext);
21
+ if (!ctx) {
22
+ throw new Error("FormField parts must be used inside <FormField.Root>");
23
+ }
24
+ return ctx;
25
+ }
26
+ var Root = React.forwardRef(function Root2({ id: idProp, name, invalid, required, disabled, className, children, ...props }, ref) {
27
+ const generatedId = React.useId();
28
+ const id = idProp ?? generatedId;
29
+ const value = React.useMemo(
30
+ () => ({
31
+ id,
32
+ name,
33
+ invalid,
34
+ required,
35
+ disabled,
36
+ descriptionId: `${id}-description`,
37
+ errorId: `${id}-error`
38
+ }),
39
+ [id, name, invalid, required, disabled]
40
+ );
41
+ return /* @__PURE__ */ jsx(FormFieldContext.Provider, { value, children: /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col gap-1.5", className), ...props, children }) });
42
+ });
43
+ Root.displayName = "FormField.Root";
44
+ function FieldLabel({
45
+ className,
46
+ children,
47
+ ...props
48
+ }) {
49
+ const { id, required, disabled } = useFormField();
50
+ return /* @__PURE__ */ jsx(
51
+ Label,
52
+ {
53
+ htmlFor: id,
54
+ required,
55
+ disabled,
56
+ className,
57
+ ...props,
58
+ children
59
+ }
60
+ );
61
+ }
62
+ FieldLabel.displayName = "FormField.Label";
63
+ function Control({ children }) {
64
+ const { id, name, invalid, required, disabled, descriptionId, errorId } = useFormField();
65
+ const describedBy = [descriptionId, invalid ? errorId : null].filter(Boolean).join(" ") || void 0;
66
+ return React.cloneElement(children, {
67
+ id,
68
+ name: children.props["name"] ?? name,
69
+ invalid: children.props["invalid"] ?? invalid,
70
+ required: children.props["required"] ?? required,
71
+ disabled: children.props["disabled"] ?? disabled,
72
+ "aria-describedby": describedBy,
73
+ "aria-invalid": invalid ?? void 0,
74
+ "aria-required": required ?? void 0
75
+ });
76
+ }
77
+ Control.displayName = "FormField.Control";
78
+ function Description({
79
+ className,
80
+ children,
81
+ ...props
82
+ }) {
83
+ const { descriptionId } = useFormField();
84
+ return /* @__PURE__ */ jsx(HelperText, { id: descriptionId, className, ...props, children });
85
+ }
86
+ Description.displayName = "FormField.Description";
87
+ function FieldError({
88
+ className,
89
+ children,
90
+ ...props
91
+ }) {
92
+ const { errorId, invalid } = useFormField();
93
+ if (!invalid) return null;
94
+ return /* @__PURE__ */ jsx(FormError, { id: errorId, className, ...props, children });
95
+ }
96
+ FieldError.displayName = "FormField.Error";
97
+ var FormField = { Root, Label: FieldLabel, Control, Description, Error: FieldError };
98
+
99
+ export {
100
+ FormField
101
+ };
@@ -0,0 +1 @@
1
+ 'use client';
@@ -0,0 +1,57 @@
1
+ 'use client';
2
+ import {
3
+ cn
4
+ } from "./chunk-AT6RPKU3.js";
5
+
6
+ // src/components/SegmentedControl/SegmentedControl.tsx
7
+ import * as React from "react";
8
+ import * as RadixToggleGroup from "@radix-ui/react-toggle-group";
9
+ import { jsx } from "react/jsx-runtime";
10
+ var sizeMap = {
11
+ sm: "h-7 px-2.5 text-xs",
12
+ md: "h-8 px-3 text-sm",
13
+ lg: "h-9 px-4 text-sm"
14
+ };
15
+ var SegmentedControlContext = React.createContext({ size: "md" });
16
+ var Root2 = React.forwardRef(
17
+ ({ className, size = "md", children, ...props }, ref) => /* @__PURE__ */ jsx(SegmentedControlContext.Provider, { value: { size }, children: /* @__PURE__ */ jsx(
18
+ RadixToggleGroup.Root,
19
+ {
20
+ ref,
21
+ type: "single",
22
+ className: cn(
23
+ "inline-flex items-center rounded-lg bg-[var(--color-bg-subtle)] p-0.5 gap-0.5",
24
+ className
25
+ ),
26
+ ...props,
27
+ children
28
+ }
29
+ ) })
30
+ );
31
+ Root2.displayName = "SegmentedControl.Root";
32
+ var Item2 = React.forwardRef(
33
+ ({ className, ...props }, ref) => {
34
+ const { size } = React.useContext(SegmentedControlContext);
35
+ return /* @__PURE__ */ jsx(
36
+ RadixToggleGroup.Item,
37
+ {
38
+ ref,
39
+ className: cn(
40
+ "inline-flex items-center justify-center rounded-md font-medium transition-all",
41
+ "text-[var(--color-text-muted)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring-default)]",
42
+ "data-[state=on]:bg-[var(--color-bg-default)] data-[state=on]:text-[var(--color-text-primary)] data-[state=on]:shadow-sm",
43
+ "disabled:pointer-events-none disabled:opacity-50",
44
+ sizeMap[size],
45
+ className
46
+ ),
47
+ ...props
48
+ }
49
+ );
50
+ }
51
+ );
52
+ Item2.displayName = "SegmentedControl.Item";
53
+ var SegmentedControl = { Root: Root2, Item: Item2 };
54
+
55
+ export {
56
+ SegmentedControl
57
+ };
@@ -0,0 +1,63 @@
1
+ 'use client';
2
+ import {
3
+ cn
4
+ } from "./chunk-AT6RPKU3.js";
5
+
6
+ // src/components/Label/Label.tsx
7
+ import * as React from "react";
8
+ import { cva } from "class-variance-authority";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ var labelVariants = cva(
11
+ ["inline-flex items-center gap-1 font-medium leading-none select-none"],
12
+ {
13
+ variants: {
14
+ size: {
15
+ sm: "text-xs",
16
+ md: "text-sm",
17
+ lg: "text-base"
18
+ },
19
+ disabled: {
20
+ true: "opacity-50 cursor-not-allowed"
21
+ }
22
+ },
23
+ defaultVariants: {
24
+ size: "md"
25
+ }
26
+ }
27
+ );
28
+ var Label = React.forwardRef(
29
+ ({ className, size, required, disabled, tone, style, children, ...props }, ref) => {
30
+ const toneStyle = tone ? { color: `var(--color-text-${tone})` } : {};
31
+ return /* @__PURE__ */ jsxs(
32
+ "label",
33
+ {
34
+ ref,
35
+ "data-tone": tone,
36
+ style: { ...toneStyle, ...style },
37
+ className: cn(
38
+ labelVariants({ size, disabled }),
39
+ "text-[var(--color-text-primary)]",
40
+ className
41
+ ),
42
+ ...props,
43
+ children: [
44
+ children,
45
+ required && /* @__PURE__ */ jsx(
46
+ "span",
47
+ {
48
+ "aria-hidden": "true",
49
+ className: "text-[var(--color-danger-500)] leading-none",
50
+ children: "*"
51
+ }
52
+ )
53
+ ]
54
+ }
55
+ );
56
+ }
57
+ );
58
+ Label.displayName = "Label";
59
+
60
+ export {
61
+ labelVariants,
62
+ Label
63
+ };
@@ -0,0 +1,66 @@
1
+ 'use client';
2
+ import {
3
+ cn
4
+ } from "./chunk-AT6RPKU3.js";
5
+
6
+ // src/components/Accordion/Accordion.tsx
7
+ import * as React from "react";
8
+ import * as RadixAccordion from "@radix-ui/react-accordion";
9
+ import { ChevronDown } from "@nexub/icons";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ var Root2 = React.forwardRef(
12
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
13
+ RadixAccordion.Root,
14
+ {
15
+ ref,
16
+ className: cn("divide-y divide-[var(--color-border-default)]", className),
17
+ ...props
18
+ }
19
+ )
20
+ );
21
+ Root2.displayName = "Accordion.Root";
22
+ var Item2 = React.forwardRef(
23
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(RadixAccordion.Item, { ref, className: cn("", className), ...props })
24
+ );
25
+ Item2.displayName = "Accordion.Item";
26
+ var Trigger2 = React.forwardRef(
27
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(RadixAccordion.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
28
+ RadixAccordion.Trigger,
29
+ {
30
+ ref,
31
+ className: cn(
32
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all",
33
+ "hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring-default)]",
34
+ "[&[data-state=open]>svg]:rotate-180",
35
+ className
36
+ ),
37
+ ...props,
38
+ children: [
39
+ children,
40
+ /* @__PURE__ */ jsx(ChevronDown, { size: "sm", className: "shrink-0 transition-transform duration-200", "aria-hidden": "true" })
41
+ ]
42
+ }
43
+ ) })
44
+ );
45
+ Trigger2.displayName = "Accordion.Trigger";
46
+ var Content2 = React.forwardRef(
47
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
48
+ RadixAccordion.Content,
49
+ {
50
+ ref,
51
+ className: cn(
52
+ "overflow-hidden text-sm",
53
+ "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
54
+ className
55
+ ),
56
+ ...props,
57
+ children: /* @__PURE__ */ jsx("div", { className: "pb-4", children })
58
+ }
59
+ )
60
+ );
61
+ Content2.displayName = "Accordion.Content";
62
+ var Accordion = { Root: Root2, Item: Item2, Trigger: Trigger2, Content: Content2 };
63
+
64
+ export {
65
+ Accordion
66
+ };
@@ -0,0 +1,43 @@
1
+ 'use client';
2
+ import {
3
+ toggleVariants
4
+ } from "./chunk-U3EGB3JL.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-AT6RPKU3.js";
8
+
9
+ // src/components/ToggleGroup/ToggleGroup.tsx
10
+ import * as React from "react";
11
+ import * as RadixToggleGroup from "@radix-ui/react-toggle-group";
12
+ import { jsx } from "react/jsx-runtime";
13
+ var ToggleGroupContext = React.createContext({});
14
+ var Root2 = React.forwardRef(
15
+ ({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size }, children: /* @__PURE__ */ jsx(
16
+ RadixToggleGroup.Root,
17
+ {
18
+ ref,
19
+ className: cn("flex items-center gap-1", className),
20
+ ...props
21
+ }
22
+ ) })
23
+ );
24
+ Root2.displayName = "ToggleGroup.Root";
25
+ var Item2 = React.forwardRef(
26
+ ({ className, variant, size, ...props }, ref) => {
27
+ const ctx = React.useContext(ToggleGroupContext);
28
+ return /* @__PURE__ */ jsx(
29
+ RadixToggleGroup.Item,
30
+ {
31
+ ref,
32
+ className: cn(toggleVariants({ variant: variant ?? ctx.variant, size: size ?? ctx.size }), className),
33
+ ...props
34
+ }
35
+ );
36
+ }
37
+ );
38
+ Item2.displayName = "ToggleGroup.Item";
39
+ var ToggleGroup = { Root: Root2, Item: Item2 };
40
+
41
+ export {
42
+ ToggleGroup
43
+ };
@@ -0,0 +1,65 @@
1
+ 'use client';
2
+ import {
3
+ cn
4
+ } from "./chunk-AT6RPKU3.js";
5
+
6
+ // src/components/Stack/Stack.tsx
7
+ import * as React from "react";
8
+ import { Slot } from "@radix-ui/react-slot";
9
+ import { jsx } from "react/jsx-runtime";
10
+ function injectDividers(children, divider) {
11
+ const childArray = React.Children.toArray(children);
12
+ return childArray.reduce((acc, child, index) => {
13
+ if (index > 0) {
14
+ acc.push(
15
+ /* @__PURE__ */ jsx(React.Fragment, { children: divider }, `divider-${index}`)
16
+ );
17
+ }
18
+ acc.push(child);
19
+ return acc;
20
+ }, []);
21
+ }
22
+ var Stack = React.forwardRef(
23
+ ({
24
+ direction = "column",
25
+ gap,
26
+ align,
27
+ justify,
28
+ wrap = false,
29
+ divider,
30
+ asChild = false,
31
+ className,
32
+ style,
33
+ children,
34
+ ...rest
35
+ }, ref) => {
36
+ const Comp = asChild ? Slot : "div";
37
+ const inlineStyle = {
38
+ ...gap !== void 0 ? { gap: typeof gap === "number" ? `${gap * 0.25}rem` : gap } : {},
39
+ ...align ? { alignItems: align } : {},
40
+ ...justify ? { justifyContent: justify } : {},
41
+ ...style
42
+ };
43
+ const content = divider ? injectDividers(children, divider) : children;
44
+ return /* @__PURE__ */ jsx(
45
+ Comp,
46
+ {
47
+ ref,
48
+ className: cn(
49
+ "flex",
50
+ direction === "row" ? "flex-row" : "flex-col",
51
+ wrap && "flex-wrap",
52
+ className
53
+ ),
54
+ style: inlineStyle,
55
+ ...rest,
56
+ children: content
57
+ }
58
+ );
59
+ }
60
+ );
61
+ Stack.displayName = "Stack";
62
+
63
+ export {
64
+ Stack
65
+ };
@@ -0,0 +1 @@
1
+ 'use client';
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+ import {
3
+ cn
4
+ } from "./chunk-AT6RPKU3.js";
5
+
6
+ // src/components/Separator/Separator.tsx
7
+ import * as React from "react";
8
+ import { cva } from "class-variance-authority";
9
+ import { jsx } from "react/jsx-runtime";
10
+ var separatorVariants = cva("", {
11
+ variants: {
12
+ orientation: {
13
+ horizontal: "w-full border-t",
14
+ vertical: "h-full border-l self-stretch"
15
+ },
16
+ tone: {
17
+ neutral: "border-[var(--color-border-default)]",
18
+ info: "border-[var(--color-semantic-info-default)]/30",
19
+ success: "border-[var(--color-semantic-success-default)]/30",
20
+ warning: "border-[var(--color-semantic-warning-default)]/30",
21
+ danger: "border-[var(--color-semantic-error-default)]/30",
22
+ leap: "border-[var(--color-leap-500)]/30",
23
+ bookub: "border-[var(--color-bookub-500)]/30",
24
+ payub: "border-[var(--color-payub-500)]/30",
25
+ founderub: "border-[var(--color-founderub-500)]/30"
26
+ }
27
+ },
28
+ defaultVariants: {
29
+ orientation: "horizontal",
30
+ tone: "neutral"
31
+ }
32
+ });
33
+ var Separator = React.forwardRef(({ className, orientation = "horizontal", tone = "neutral", ...props }, ref) => {
34
+ if (orientation === "horizontal") {
35
+ return /* @__PURE__ */ jsx(
36
+ "hr",
37
+ {
38
+ ref,
39
+ role: "separator",
40
+ "aria-orientation": "horizontal",
41
+ className: cn(separatorVariants({ orientation, tone }), className),
42
+ ...props
43
+ }
44
+ );
45
+ }
46
+ return /* @__PURE__ */ jsx(
47
+ "div",
48
+ {
49
+ ref,
50
+ role: "separator",
51
+ "aria-orientation": "vertical",
52
+ className: cn(separatorVariants({ orientation, tone }), className),
53
+ ...props
54
+ }
55
+ );
56
+ });
57
+ Separator.displayName = "Separator";
58
+
59
+ export {
60
+ separatorVariants,
61
+ Separator
62
+ };
@@ -0,0 +1,40 @@
1
+ 'use client';
2
+ import {
3
+ cn
4
+ } from "./chunk-AT6RPKU3.js";
5
+
6
+ // src/components/AppShell/AppShell.tsx
7
+ import * as React from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ var Root = React.forwardRef(
10
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
11
+ "div",
12
+ {
13
+ ref,
14
+ className: cn("grid h-screen grid-rows-[auto_1fr] overflow-hidden", className),
15
+ ...props
16
+ }
17
+ )
18
+ );
19
+ Root.displayName = "AppShell.Root";
20
+ var Header = React.forwardRef(
21
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("col-span-full row-start-1", className), ...props })
22
+ );
23
+ Header.displayName = "AppShell.Header";
24
+ var Body = React.forwardRef(
25
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex overflow-hidden row-start-2", className), ...props })
26
+ );
27
+ Body.displayName = "AppShell.Body";
28
+ var SidebarSlot = React.forwardRef(
29
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("shrink-0 overflow-y-auto", className), ...props })
30
+ );
31
+ SidebarSlot.displayName = "AppShell.Sidebar";
32
+ var Main = React.forwardRef(
33
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("main", { ref, className: cn("flex-1 overflow-y-auto p-6", className), ...props })
34
+ );
35
+ Main.displayName = "AppShell.Main";
36
+ var AppShell = { Root, Header, Body, Sidebar: SidebarSlot, Main };
37
+
38
+ export {
39
+ AppShell
40
+ };