@adsgency_npm/adsgency-ads-ui 0.1.0-alpha.1

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.
package/dist/index.cjs ADDED
@@ -0,0 +1,4300 @@
1
+ 'use client';
2
+ "use strict";
3
+ "use client";
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
30
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
31
+
32
+ // src/index.ts
33
+ var src_exports = {};
34
+ __export(src_exports, {
35
+ AdsAccordion: () => AdsAccordion,
36
+ AdsAlert: () => Alert2,
37
+ AdsAlertDescription: () => AlertDescription2,
38
+ AdsAlertDialog: () => AdsAlertDialog,
39
+ AdsAlertDialogAction: () => AdsAlertDialogAction,
40
+ AdsAlertDialogCancel: () => AdsAlertDialogCancel,
41
+ AdsAlertDialogContent: () => AdsAlertDialogContent,
42
+ AdsAlertDialogDescription: () => AdsAlertDialogDescription,
43
+ AdsAlertDialogFooter: () => AdsAlertDialogFooter,
44
+ AdsAlertDialogHeader: () => AdsAlertDialogHeader,
45
+ AdsAlertDialogOverlay: () => AdsAlertDialogOverlay,
46
+ AdsAlertDialogPortal: () => AdsAlertDialogPortal,
47
+ AdsAlertDialogTitle: () => AdsAlertDialogTitle,
48
+ AdsAlertDialogTrigger: () => AdsAlertDialogTrigger,
49
+ AdsAlertTitle: () => AlertTitle2,
50
+ AdsBadge: () => AdsBadge,
51
+ AdsBreadcrumb: () => AdsBreadcrumb,
52
+ AdsBreadcrumbEllipsis: () => AdsBreadcrumbEllipsis,
53
+ AdsBreadcrumbItem: () => AdsBreadcrumbItem,
54
+ AdsBreadcrumbLink: () => AdsBreadcrumbLink,
55
+ AdsBreadcrumbList: () => AdsBreadcrumbList,
56
+ AdsBreadcrumbPage: () => AdsBreadcrumbPage,
57
+ AdsBreadcrumbSeparator: () => AdsBreadcrumbSeparator,
58
+ AdsButton: () => AdsButton,
59
+ AdsButtonGroup: () => AdsButtonGroup,
60
+ AdsButtonGroupInput: () => AdsButtonGroupInput,
61
+ AdsButtonGroupSeparator: () => AdsButtonGroupSeparator,
62
+ AdsButtonGroupText: () => AdsButtonGroupText,
63
+ AdsCheckbox: () => AdsCheckbox,
64
+ AdsDialog: () => AdsDialog,
65
+ AdsDialogClose: () => AdsDialogClose,
66
+ AdsDialogContent: () => AdsDialogContent,
67
+ AdsDialogDescription: () => AdsDialogDescription,
68
+ AdsDialogFooter: () => AdsDialogFooter,
69
+ AdsDialogHeader: () => AdsDialogHeader,
70
+ AdsDialogOverlay: () => AdsDialogOverlay,
71
+ AdsDialogPortal: () => AdsDialogPortal,
72
+ AdsDialogTitle: () => AdsDialogTitle,
73
+ AdsDialogTrigger: () => AdsDialogTrigger,
74
+ AdsEmpty: () => AdsEmpty,
75
+ AdsEmptyActions: () => AdsEmptyActions,
76
+ AdsEmptyContent: () => AdsEmptyContent,
77
+ AdsEmptyDescription: () => AdsEmptyDescription,
78
+ AdsEmptyFooter: () => AdsEmptyFooter,
79
+ AdsEmptyHeader: () => AdsEmptyHeader,
80
+ AdsEmptyMedia: () => AdsEmptyMedia,
81
+ AdsEmptyTitle: () => AdsEmptyTitle,
82
+ AdsField: () => AdsField,
83
+ AdsFieldActions: () => AdsFieldActions,
84
+ AdsFieldCheckboxRow: () => AdsFieldCheckboxRow,
85
+ AdsFieldChoiceCard: () => AdsFieldChoiceCard,
86
+ AdsFieldDescription: () => AdsFieldDescription,
87
+ AdsFieldError: () => AdsFieldError,
88
+ AdsFieldGroup: () => AdsFieldGroup,
89
+ AdsFieldHeader: () => AdsFieldHeader,
90
+ AdsFieldItem: () => AdsFieldItem,
91
+ AdsFieldLabel: () => AdsFieldLabel,
92
+ AdsFieldLegend: () => AdsFieldLegend,
93
+ AdsFieldSeparator: () => AdsFieldSeparator,
94
+ AdsFieldSet: () => AdsFieldSet,
95
+ AdsI18nProvider: () => AdsI18nProvider,
96
+ AdsInput: () => AdsInput,
97
+ AdsInputGroup: () => AdsInputGroup,
98
+ AdsInputGroupInput: () => AdsInputGroupInput,
99
+ AdsInputGroupTextarea: () => AdsInputGroupTextarea,
100
+ AdsInputOTP: () => AdsInputOTP,
101
+ AdsInputOTPGroup: () => AdsInputOTPGroup,
102
+ AdsInputOTPSeparator: () => AdsInputOTPSeparator,
103
+ AdsInputOTPSlot: () => AdsInputOTPSlot,
104
+ AdsPagination: () => AdsPagination,
105
+ AdsPaginationContent: () => AdsPaginationContent,
106
+ AdsPaginationEllipsis: () => AdsPaginationEllipsis,
107
+ AdsPaginationItem: () => AdsPaginationItem,
108
+ AdsPaginationLink: () => AdsPaginationLink,
109
+ AdsPaginationNext: () => AdsPaginationNext,
110
+ AdsPaginationPrevious: () => AdsPaginationPrevious,
111
+ AdsPopover: () => AdsPopover,
112
+ AdsPopoverBody: () => AdsPopoverBody,
113
+ AdsPopoverContent: () => AdsPopoverContent,
114
+ AdsPopoverDescription: () => AdsPopoverDescription,
115
+ AdsPopoverHeader: () => AdsPopoverHeader,
116
+ AdsPopoverTitle: () => AdsPopoverTitle,
117
+ AdsPopoverTrigger: () => AdsPopoverTrigger,
118
+ AdsProgress: () => AdsProgress,
119
+ AdsRadioGroup: () => AdsRadioGroup,
120
+ AdsRadioGroupCardOption: () => AdsRadioGroupCardOption,
121
+ AdsRadioGroupOption: () => AdsRadioGroupOption,
122
+ AdsSelect: () => AdsSelect,
123
+ AdsSelectContent: () => SelectContent,
124
+ AdsSelectGroup: () => SelectGroup,
125
+ AdsSelectItem: () => SelectItem,
126
+ AdsSelectLabel: () => SelectLabel,
127
+ AdsSelectRoot: () => Select,
128
+ AdsSelectScrollDownButton: () => SelectScrollDownButton,
129
+ AdsSelectScrollUpButton: () => SelectScrollUpButton,
130
+ AdsSelectSeparator: () => SelectSeparator,
131
+ AdsSelectTrigger: () => SelectTrigger,
132
+ AdsSelectValue: () => SelectValue,
133
+ AdsSeparator: () => AdsSeparator,
134
+ AdsSkeleton: () => AdsSkeleton,
135
+ AdsSlider: () => AdsSlider,
136
+ AdsSwitch: () => AdsSwitch,
137
+ AdsTable: () => AdsTable,
138
+ AdsTableBody: () => AdsTableBody,
139
+ AdsTableCaption: () => AdsTableCaption,
140
+ AdsTableCell: () => AdsTableCell,
141
+ AdsTableFooter: () => AdsTableFooter,
142
+ AdsTableHead: () => AdsTableHead,
143
+ AdsTableHeader: () => AdsTableHeader,
144
+ AdsTableRow: () => AdsTableRow,
145
+ AdsTabs: () => AdsTabs,
146
+ AdsTabsContent: () => AdsTabsContent,
147
+ AdsTabsList: () => AdsTabsList,
148
+ AdsTabsTrigger: () => AdsTabsTrigger,
149
+ AdsTextarea: () => AdsTextarea,
150
+ AdsToast: () => AdsToast,
151
+ AdsToastManager: () => AdsToastManager,
152
+ AdsToaster: () => AdsToaster,
153
+ AdsToggle: () => AdsToggle,
154
+ AdsToggleGroup: () => AdsToggleGroup,
155
+ AdsToggleGroupItem: () => AdsToggleGroupItem,
156
+ AdsTooltip: () => AdsTooltip,
157
+ AdsTooltipArrow: () => AdsTooltipArrow,
158
+ AdsTooltipContent: () => AdsTooltipContent,
159
+ AdsTooltipProvider: () => AdsTooltipProvider,
160
+ AdsTooltipTrigger: () => AdsTooltipTrigger,
161
+ adsDefaultMessages: () => adsDefaultMessages,
162
+ designTokens: () => designTokens,
163
+ useAdsI18n: () => useAdsI18n
164
+ });
165
+ module.exports = __toCommonJS(src_exports);
166
+
167
+ // src/components/AdsAccordion/index.tsx
168
+ var React3 = __toESM(require("react"), 1);
169
+
170
+ // src/i18n/AdsI18nProvider.tsx
171
+ var React = __toESM(require("react"), 1);
172
+
173
+ // src/i18n/defaultMessages.ts
174
+ var adsDefaultMessages = {
175
+ en: {
176
+ accordion: {
177
+ expand: "Expand section",
178
+ collapse: "Collapse section"
179
+ },
180
+ button: {
181
+ loading: "Loading"
182
+ },
183
+ dialog: {
184
+ close: "Close dialog"
185
+ },
186
+ input: {
187
+ chooseFile: "Choose File",
188
+ noFileChosen: "No file chosen",
189
+ optional: "Optional"
190
+ },
191
+ toast: {
192
+ notifications: "Notifications"
193
+ },
194
+ pagination: {
195
+ previous: "Previous",
196
+ next: "Next",
197
+ morePages: "More pages"
198
+ }
199
+ },
200
+ zh: {
201
+ accordion: {
202
+ expand: "\u5C55\u5F00\u5185\u5BB9",
203
+ collapse: "\u6536\u8D77\u5185\u5BB9"
204
+ },
205
+ button: {
206
+ loading: "\u52A0\u8F7D\u4E2D"
207
+ },
208
+ dialog: {
209
+ close: "\u5173\u95ED\u5F39\u7A97"
210
+ },
211
+ input: {
212
+ chooseFile: "\u9009\u62E9\u6587\u4EF6",
213
+ noFileChosen: "\u672A\u9009\u62E9\u6587\u4EF6",
214
+ optional: "\u53EF\u9009"
215
+ },
216
+ toast: {
217
+ notifications: "\u901A\u77E5"
218
+ },
219
+ pagination: {
220
+ previous: "\u4E0A\u4E00\u9875",
221
+ next: "\u4E0B\u4E00\u9875",
222
+ morePages: "\u66F4\u591A\u9875\u7801"
223
+ }
224
+ }
225
+ };
226
+
227
+ // src/i18n/AdsI18nProvider.tsx
228
+ var import_jsx_runtime = require("react/jsx-runtime");
229
+ var AdsI18nContext = React.createContext({
230
+ locale: "en",
231
+ messages: adsDefaultMessages.en
232
+ });
233
+ function mergeMessages(locale, messages) {
234
+ const baseMessages = adsDefaultMessages[locale];
235
+ return {
236
+ accordion: {
237
+ ...baseMessages.accordion,
238
+ ...messages?.accordion
239
+ },
240
+ button: {
241
+ ...baseMessages.button,
242
+ ...messages?.button
243
+ },
244
+ dialog: {
245
+ ...baseMessages.dialog,
246
+ ...messages?.dialog
247
+ },
248
+ input: {
249
+ ...baseMessages.input,
250
+ ...messages?.input
251
+ },
252
+ toast: {
253
+ ...baseMessages.toast,
254
+ ...messages?.toast
255
+ },
256
+ pagination: {
257
+ ...baseMessages.pagination,
258
+ ...messages?.pagination
259
+ }
260
+ };
261
+ }
262
+ function AdsI18nProvider({
263
+ children,
264
+ locale = "en",
265
+ messages
266
+ }) {
267
+ const value = React.useMemo(
268
+ () => ({
269
+ locale,
270
+ messages: mergeMessages(locale, messages)
271
+ }),
272
+ [locale, messages]
273
+ );
274
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AdsI18nContext.Provider, { value, children });
275
+ }
276
+ function useAdsI18n() {
277
+ return React.useContext(AdsI18nContext);
278
+ }
279
+
280
+ // src/lib/cn.ts
281
+ var import_clsx = require("clsx");
282
+ var import_tailwind_merge = require("tailwind-merge");
283
+ function cn(...inputs) {
284
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
285
+ }
286
+
287
+ // src/primitives/accordion.tsx
288
+ var React2 = __toESM(require("react"), 1);
289
+ var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
290
+ var import_lucide_react = require("lucide-react");
291
+ var import_jsx_runtime2 = require("react/jsx-runtime");
292
+ var Accordion = AccordionPrimitive.Root;
293
+ var AccordionItem = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
294
+ AccordionPrimitive.Item,
295
+ {
296
+ ref,
297
+ className: cn("border-b", className),
298
+ ...props
299
+ }
300
+ ));
301
+ AccordionItem.displayName = "AccordionItem";
302
+ var AccordionTrigger = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
303
+ AccordionPrimitive.Trigger,
304
+ {
305
+ ref,
306
+ className: cn(
307
+ "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
308
+ className
309
+ ),
310
+ ...props,
311
+ children: [
312
+ children,
313
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
314
+ ]
315
+ }
316
+ ) }));
317
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
318
+ var AccordionContent = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
319
+ AccordionPrimitive.Content,
320
+ {
321
+ ref,
322
+ className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
323
+ ...props,
324
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: cn("pb-4 pt-0", className), children })
325
+ }
326
+ ));
327
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
328
+
329
+ // src/components/AdsAccordion/index.tsx
330
+ var import_jsx_runtime3 = require("react/jsx-runtime");
331
+ function toValueSet(value) {
332
+ if (!value || value === "") {
333
+ return /* @__PURE__ */ new Set();
334
+ }
335
+ return new Set(Array.isArray(value) ? value : [value]);
336
+ }
337
+ function toExternalValue(value, mode) {
338
+ if (mode === "single") {
339
+ return Array.from(value)[0] ?? "";
340
+ }
341
+ return Array.from(value);
342
+ }
343
+ function toPrimitiveValue(value, mode) {
344
+ if (mode === "single") {
345
+ return Array.isArray(value) ? value[0] ?? "" : value ?? "";
346
+ }
347
+ if (!value) {
348
+ return [];
349
+ }
350
+ return Array.isArray(value) ? value : [value];
351
+ }
352
+ var AdsAccordion = React3.forwardRef(
353
+ ({
354
+ className,
355
+ defaultValue,
356
+ getToggleLabel,
357
+ items,
358
+ mode = "single",
359
+ onValueChange,
360
+ value,
361
+ ...props
362
+ }, ref) => {
363
+ const { messages } = useAdsI18n();
364
+ const isControlled = value !== void 0;
365
+ const [internalValue, setInternalValue] = React3.useState(
366
+ () => mode === "single" ? toPrimitiveValue(defaultValue, "single") : toPrimitiveValue(defaultValue, "multiple")
367
+ );
368
+ const resolvedValue = isControlled ? toPrimitiveValue(value, mode) : internalValue;
369
+ const openValues = toValueSet(
370
+ Array.isArray(resolvedValue) ? resolvedValue : resolvedValue || void 0
371
+ );
372
+ const handleValueChange = (nextValue) => {
373
+ if (!isControlled) {
374
+ setInternalValue(nextValue);
375
+ }
376
+ onValueChange?.(toExternalValue(toValueSet(nextValue), mode));
377
+ };
378
+ const content = items.map((item, index) => {
379
+ const isOpen = openValues.has(item.value);
380
+ const isLastItem = index === items.length - 1;
381
+ const toggleLabel = getToggleLabel?.(item, isOpen) ?? (isOpen ? messages.accordion.collapse : messages.accordion.expand);
382
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
383
+ AccordionItem,
384
+ {
385
+ className: cn("w-full border-border", (!isLastItem || isOpen) && "border-b"),
386
+ disabled: item.disabled,
387
+ value: item.value,
388
+ children: [
389
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
390
+ AccordionTrigger,
391
+ {
392
+ className: cn(
393
+ "group flex h-[52px] w-full items-center py-lg text-left text-sm font-medium leading-5 text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background hover:no-underline [&>svg]:ml-md [&>svg]:text-foreground",
394
+ item.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer hover:text-foreground"
395
+ ),
396
+ children: [
397
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "min-w-0 flex-1 pr-md", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "break-words group-hover:underline", children: item.title }) }),
398
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "sr-only", children: toggleLabel })
399
+ ]
400
+ }
401
+ ),
402
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(AccordionContent, { className: "grid overflow-hidden transition-[grid-template-rows,opacity] duration-200 ease-out data-[state=closed]:grid-rows-[0fr] data-[state=closed]:opacity-0 data-[state=open]:grid-rows-[1fr] data-[state=open]:opacity-100", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "flex w-full flex-col gap-lg pb-lg text-sm font-normal leading-5 text-foreground", children: item.content }) }) })
403
+ ]
404
+ },
405
+ item.value
406
+ );
407
+ });
408
+ if (mode === "single") {
409
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
410
+ Accordion,
411
+ {
412
+ className: cn("flex w-full max-w-[503px] flex-col", className),
413
+ collapsible: true,
414
+ onValueChange: handleValueChange,
415
+ ref,
416
+ type: "single",
417
+ value: typeof resolvedValue === "string" ? resolvedValue : "",
418
+ ...props,
419
+ children: content
420
+ }
421
+ );
422
+ }
423
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
424
+ Accordion,
425
+ {
426
+ className: cn("flex w-full max-w-[503px] flex-col", className),
427
+ onValueChange: handleValueChange,
428
+ ref,
429
+ type: "multiple",
430
+ value: Array.isArray(resolvedValue) ? resolvedValue : [],
431
+ ...props,
432
+ children: content
433
+ }
434
+ );
435
+ }
436
+ );
437
+ AdsAccordion.displayName = "AdsAccordion";
438
+
439
+ // src/components/AdsAlert/index.tsx
440
+ var React5 = __toESM(require("react"), 1);
441
+ var import_class_variance_authority2 = require("class-variance-authority");
442
+ var import_lucide_react2 = require("lucide-react");
443
+
444
+ // src/primitives/alert.tsx
445
+ var React4 = __toESM(require("react"), 1);
446
+ var import_class_variance_authority = require("class-variance-authority");
447
+ var import_jsx_runtime4 = require("react/jsx-runtime");
448
+ var alertVariants = (0, import_class_variance_authority.cva)(
449
+ "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
450
+ {
451
+ variants: {
452
+ variant: {
453
+ default: "bg-background text-foreground",
454
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
455
+ }
456
+ },
457
+ defaultVariants: {
458
+ variant: "default"
459
+ }
460
+ }
461
+ );
462
+ var Alert = React4.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
463
+ "div",
464
+ {
465
+ ref,
466
+ role: "alert",
467
+ className: cn(alertVariants({ variant }), className),
468
+ ...props
469
+ }
470
+ ));
471
+ Alert.displayName = "Alert";
472
+ var AlertTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
473
+ "h5",
474
+ {
475
+ ref,
476
+ className: cn("mb-1 font-medium leading-none tracking-tight", className),
477
+ ...props
478
+ }
479
+ ));
480
+ AlertTitle.displayName = "AlertTitle";
481
+ var AlertDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
482
+ "div",
483
+ {
484
+ ref,
485
+ className: cn("text-sm [&_p]:leading-relaxed", className),
486
+ ...props
487
+ }
488
+ ));
489
+ AlertDescription.displayName = "AlertDescription";
490
+
491
+ // src/components/AdsAlert/index.tsx
492
+ var import_jsx_runtime5 = require("react/jsx-runtime");
493
+ var adsAlertVariants = (0, import_class_variance_authority2.cva)(
494
+ "relative flex w-full rounded-radius-lg border border-border bg-card px-4 py-3 [&>[data-slot=alert-icon]]:!text-[inherit]",
495
+ {
496
+ variants: {
497
+ variant: {
498
+ default: "text-foreground",
499
+ destructive: "text-destructive",
500
+ success: "text-success",
501
+ warning: "text-warning",
502
+ info: "text-info"
503
+ },
504
+ hasSupportingContent: {
505
+ true: "items-start gap-3",
506
+ false: "items-center gap-3"
507
+ }
508
+ },
509
+ defaultVariants: {
510
+ variant: "default",
511
+ hasSupportingContent: true
512
+ }
513
+ }
514
+ );
515
+ var descriptionVariants = (0, import_class_variance_authority2.cva)(
516
+ "min-w-0 text-sm leading-5 text-current [&_p]:leading-5",
517
+ {
518
+ variants: {
519
+ variant: {
520
+ default: "font-light",
521
+ destructive: "font-normal",
522
+ success: "font-normal",
523
+ warning: "font-normal",
524
+ info: "font-normal"
525
+ }
526
+ },
527
+ defaultVariants: {
528
+ variant: "default"
529
+ }
530
+ }
531
+ );
532
+ var defaultVariantIcons = {
533
+ default: import_lucide_react2.CircleCheck,
534
+ destructive: import_lucide_react2.CircleAlert,
535
+ success: import_lucide_react2.CircleCheck,
536
+ warning: import_lucide_react2.TriangleAlert,
537
+ info: import_lucide_react2.Info
538
+ };
539
+ function isComponentElement(child, component) {
540
+ return React5.isValidElement(child) && child.type === component;
541
+ }
542
+ function cloneWithClassName(child, className, dataSlot, extraProps) {
543
+ const element = child;
544
+ return React5.cloneElement(element, {
545
+ className: cn(className, element.props.className),
546
+ "data-slot": dataSlot,
547
+ style: {
548
+ ...element.props.style,
549
+ ...extraProps?.style
550
+ }
551
+ });
552
+ }
553
+ var Alert2 = React5.forwardRef(
554
+ ({ children, className, variant, ...props }, ref) => {
555
+ const items = React5.Children.toArray(children);
556
+ let title = null;
557
+ let description = null;
558
+ let icon = null;
559
+ const extras = [];
560
+ let hasSeenBodyContent = false;
561
+ for (const child of items) {
562
+ if (!title && isComponentElement(child, AlertTitle2)) {
563
+ title = child;
564
+ hasSeenBodyContent = true;
565
+ continue;
566
+ }
567
+ if (!description && isComponentElement(child, AlertDescription2)) {
568
+ description = child;
569
+ hasSeenBodyContent = true;
570
+ continue;
571
+ }
572
+ if (!icon && !hasSeenBodyContent && React5.isValidElement(child)) {
573
+ icon = child;
574
+ continue;
575
+ }
576
+ extras.push(child);
577
+ }
578
+ const hasSupportingContent = Boolean(description || extras.length > 0);
579
+ const resolvedIcon = cloneWithClassName(
580
+ icon ?? React5.createElement(defaultVariantIcons[variant ?? "default"], {
581
+ "aria-hidden": true
582
+ }),
583
+ "size-4 shrink-0",
584
+ "alert-icon",
585
+ {
586
+ style: { color: "inherit" }
587
+ }
588
+ );
589
+ const resolvedTitle = title ? cloneWithClassName(
590
+ title,
591
+ "min-w-0 text-sm font-medium leading-5 tracking-normal text-current",
592
+ "alert-title"
593
+ ) : null;
594
+ const supportingContent = description || extras.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex min-w-0 w-full flex-col gap-1", "data-slot": "alert-supporting", children: [
595
+ description ? cloneWithClassName(
596
+ description,
597
+ descriptionVariants({ variant }),
598
+ "alert-description"
599
+ ) : null,
600
+ extras.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
601
+ "div",
602
+ {
603
+ className: cn(
604
+ "min-w-0 text-sm leading-5 text-current",
605
+ "w-full",
606
+ "[&_ol]:list-decimal [&_ol]:pl-[21px] [&_ol]:space-y-0",
607
+ "[&_ul]:list-disc [&_ul]:pl-[21px] [&_ul]:space-y-0"
608
+ ),
609
+ "data-slot": "alert-extra",
610
+ children: extras
611
+ }
612
+ ) : null
613
+ ] }) : null;
614
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
615
+ Alert,
616
+ {
617
+ ref,
618
+ className: cn(
619
+ adsAlertVariants({ variant, hasSupportingContent }),
620
+ className
621
+ ),
622
+ role: "alert",
623
+ ...props,
624
+ children: hasSupportingContent ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", "data-slot": "alert-body", children: [
625
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex min-w-0 items-center gap-3", "data-slot": "alert-heading-row", children: [
626
+ resolvedIcon,
627
+ resolvedTitle
628
+ ] }),
629
+ supportingContent ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex min-w-0 gap-3", "data-slot": "alert-content-row", children: [
630
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { "aria-hidden": true, className: "size-4 shrink-0" }),
631
+ supportingContent
632
+ ] }) : null
633
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", "data-slot": "alert-body", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex min-w-0 items-center gap-3", "data-slot": "alert-heading-row", children: [
634
+ resolvedIcon,
635
+ resolvedTitle ?? children
636
+ ] }) })
637
+ }
638
+ );
639
+ }
640
+ );
641
+ Alert2.displayName = "AdsAlert";
642
+ var AlertTitle2 = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(AlertTitle, { ref, className: cn(className), ...props }));
643
+ AlertTitle2.displayName = "AlertTitle";
644
+ var AlertDescription2 = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(AlertDescription, { ref, className: cn(className), ...props }));
645
+ AlertDescription2.displayName = "AlertDescription";
646
+
647
+ // src/components/AdsBadge/index.tsx
648
+ var React6 = __toESM(require("react"), 1);
649
+ var import_class_variance_authority4 = require("class-variance-authority");
650
+
651
+ // src/primitives/badge.tsx
652
+ var import_class_variance_authority3 = require("class-variance-authority");
653
+ var import_jsx_runtime6 = require("react/jsx-runtime");
654
+ var badgeVariants = (0, import_class_variance_authority3.cva)(
655
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
656
+ {
657
+ variants: {
658
+ variant: {
659
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
660
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
661
+ destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
662
+ outline: "text-foreground"
663
+ }
664
+ },
665
+ defaultVariants: {
666
+ variant: "default"
667
+ }
668
+ }
669
+ );
670
+ function Badge({ className, variant, ...props }) {
671
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
672
+ }
673
+
674
+ // src/components/AdsBadge/index.tsx
675
+ var import_jsx_runtime7 = require("react/jsx-runtime");
676
+ var adsBadgeVariants = (0, import_class_variance_authority4.cva)(
677
+ [
678
+ "h-5 min-h-5",
679
+ "border text-xs font-medium leading-4 tracking-normal",
680
+ "shadow-none",
681
+ "focus:ring-offset-background"
682
+ ],
683
+ {
684
+ variants: {
685
+ variant: {
686
+ default: "border-transparent bg-primary text-primary-foreground hover:bg-primary",
687
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary",
688
+ destructive: "border-transparent bg-destructive text-primary-foreground hover:bg-destructive",
689
+ outline: "border-border bg-transparent text-foreground hover:bg-transparent"
690
+ },
691
+ format: {
692
+ label: "!rounded-radius-lg px-[10px] py-[2px]",
693
+ icon: "!rounded-radius-lg gap-1 px-[10px] py-[2px]",
694
+ number: "!rounded-full px-[10px] py-[2px]"
695
+ }
696
+ },
697
+ compoundVariants: [
698
+ {
699
+ format: "number",
700
+ variant: "outline",
701
+ className: "px-1 font-mono"
702
+ }
703
+ ],
704
+ defaultVariants: {
705
+ format: "label",
706
+ variant: "default"
707
+ }
708
+ }
709
+ );
710
+ function renderIcon(icon) {
711
+ if (!icon) {
712
+ return null;
713
+ }
714
+ if (React6.isValidElement(icon)) {
715
+ return React6.cloneElement(icon, {
716
+ className: cn("h-3 w-3 shrink-0", icon.props.className)
717
+ });
718
+ }
719
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "inline-flex h-3 w-3 shrink-0 items-center justify-center", children: icon });
720
+ }
721
+ function AdsBadge({ children, className, format, icon, variant, ...props }) {
722
+ const resolvedFormat = format ?? (icon ? "icon" : "label");
723
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
724
+ Badge,
725
+ {
726
+ className: cn(adsBadgeVariants({ format: resolvedFormat, variant }), className),
727
+ variant,
728
+ ...props,
729
+ children: [
730
+ renderIcon(icon),
731
+ children
732
+ ]
733
+ }
734
+ );
735
+ }
736
+
737
+ // src/components/AdsAlertDialog/index.tsx
738
+ var React7 = __toESM(require("react"), 1);
739
+ var AlertDialogPrimitive = __toESM(require("@radix-ui/react-alert-dialog"), 1);
740
+ var import_jsx_runtime8 = require("react/jsx-runtime");
741
+ var overlayClassName = "fixed inset-0 z-50 bg-black/80 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0";
742
+ var contentClassName = "fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-[512px] -translate-x-1/2 -translate-y-1/2 gap-lg rounded-radius-lg border border-border bg-card p-xl text-foreground shadow-[0px_4px_6px_-4px_rgba(0,0,0,0.1),0px_10px_15px_-3px_rgba(0,0,0,0.1)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]";
743
+ var actionClassName = "inline-flex h-9 items-center justify-center rounded-radius-md border-0 bg-brand-gradient px-lg py-sm text-sm font-medium leading-5 tracking-normal text-primary-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none disabled:opacity-[0.65]";
744
+ var cancelClassName = "inline-flex h-9 items-center justify-center rounded-radius-md border border-border bg-card px-lg py-sm text-sm font-medium leading-5 tracking-normal text-secondary-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none disabled:opacity-[0.65]";
745
+ var AlertDialog = AlertDialogPrimitive.Root;
746
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
747
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
748
+ var AlertDialogOverlay = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
749
+ AlertDialogPrimitive.Overlay,
750
+ {
751
+ className: cn(overlayClassName, className),
752
+ ref,
753
+ ...props
754
+ }
755
+ ));
756
+ AlertDialogOverlay.displayName = "AlertDialogOverlay";
757
+ var AlertDialogContent = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(AlertDialogPortal, { children: [
758
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AlertDialogOverlay, {}),
759
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
760
+ AlertDialogPrimitive.Content,
761
+ {
762
+ className: cn(contentClassName, className),
763
+ ref,
764
+ ...props
765
+ }
766
+ )
767
+ ] }));
768
+ AlertDialogContent.displayName = "AlertDialogContent";
769
+ var AlertDialogHeader = React7.forwardRef(
770
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
771
+ "div",
772
+ {
773
+ className: cn("flex flex-col gap-sm text-left", className),
774
+ ref,
775
+ ...props
776
+ }
777
+ )
778
+ );
779
+ AlertDialogHeader.displayName = "AlertDialogHeader";
780
+ var AlertDialogFooter = React7.forwardRef(
781
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
782
+ "div",
783
+ {
784
+ className: cn(
785
+ "flex flex-col-reverse gap-sm sm:flex-row sm:justify-end",
786
+ className
787
+ ),
788
+ ref,
789
+ ...props
790
+ }
791
+ )
792
+ );
793
+ AlertDialogFooter.displayName = "AlertDialogFooter";
794
+ var AlertDialogTitle = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
795
+ AlertDialogPrimitive.Title,
796
+ {
797
+ className: cn("text-lg font-semibold leading-7 text-foreground", className),
798
+ ref,
799
+ ...props
800
+ }
801
+ ));
802
+ AlertDialogTitle.displayName = "AlertDialogTitle";
803
+ var AlertDialogDescription = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
804
+ AlertDialogPrimitive.Description,
805
+ {
806
+ className: cn("text-sm font-normal leading-5 text-muted-foreground", className),
807
+ ref,
808
+ ...props
809
+ }
810
+ ));
811
+ AlertDialogDescription.displayName = "AlertDialogDescription";
812
+ var AlertDialogAction = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
813
+ AlertDialogPrimitive.Action,
814
+ {
815
+ className: cn(actionClassName, className),
816
+ ref,
817
+ ...props
818
+ }
819
+ ));
820
+ AlertDialogAction.displayName = "AlertDialogAction";
821
+ var AlertDialogCancel = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
822
+ AlertDialogPrimitive.Cancel,
823
+ {
824
+ className: cn(cancelClassName, className),
825
+ ref,
826
+ ...props
827
+ }
828
+ ));
829
+ AlertDialogCancel.displayName = "AlertDialogCancel";
830
+ var AdsAlertDialog = AlertDialog;
831
+ var AdsAlertDialogTrigger = AlertDialogTrigger;
832
+ var AdsAlertDialogPortal = AlertDialogPortal;
833
+ var AdsAlertDialogOverlay = AlertDialogOverlay;
834
+ var AdsAlertDialogContent = AlertDialogContent;
835
+ var AdsAlertDialogHeader = AlertDialogHeader;
836
+ var AdsAlertDialogFooter = AlertDialogFooter;
837
+ var AdsAlertDialogTitle = AlertDialogTitle;
838
+ var AdsAlertDialogDescription = AlertDialogDescription;
839
+ var AdsAlertDialogAction = AlertDialogAction;
840
+ var AdsAlertDialogCancel = AlertDialogCancel;
841
+
842
+ // src/components/AdsButton/index.tsx
843
+ var React9 = __toESM(require("react"), 1);
844
+
845
+ // src/primitives/button.tsx
846
+ var React8 = __toESM(require("react"), 1);
847
+ var import_react_slot = require("@radix-ui/react-slot");
848
+ var import_class_variance_authority5 = require("class-variance-authority");
849
+ var import_jsx_runtime9 = require("react/jsx-runtime");
850
+ var buttonVariants = (0, import_class_variance_authority5.cva)(
851
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
852
+ {
853
+ variants: {
854
+ variant: {
855
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
856
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
857
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
858
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
859
+ ghost: "hover:bg-accent hover:text-accent-foreground",
860
+ link: "text-primary underline-offset-4 hover:underline"
861
+ },
862
+ size: {
863
+ default: "h-10 px-4 py-2",
864
+ sm: "h-9 rounded-md px-3",
865
+ lg: "h-11 rounded-md px-8",
866
+ icon: "h-10 w-10"
867
+ }
868
+ },
869
+ defaultVariants: {
870
+ variant: "default",
871
+ size: "default"
872
+ }
873
+ }
874
+ );
875
+ var Button = React8.forwardRef(
876
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
877
+ const Comp = asChild ? import_react_slot.Slot : "button";
878
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
879
+ Comp,
880
+ {
881
+ className: cn(buttonVariants({ variant, size, className })),
882
+ ref,
883
+ ...props
884
+ }
885
+ );
886
+ }
887
+ );
888
+ Button.displayName = "Button";
889
+
890
+ // src/components/AdsButton/index.tsx
891
+ var import_jsx_runtime10 = require("react/jsx-runtime");
892
+ var intentClassName = {
893
+ brand: "border-0 bg-brand-gradient text-primary-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:opacity-90",
894
+ primary: "border-0 bg-primary text-primary-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-brand-primary-hover",
895
+ secondary: "border border-border bg-card text-secondary-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-accent",
896
+ tertiary: "border-0 bg-card text-foreground shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]",
897
+ ghost: "border-0 bg-card text-foreground shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]",
898
+ danger: "border-0 bg-destructive text-primary-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-destructive/90",
899
+ destructive: "border-0 bg-destructive text-primary-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-destructive/90",
900
+ link: "border-0 bg-transparent text-primary shadow-none underline-offset-2 hover:bg-transparent hover:text-primary hover:underline"
901
+ };
902
+ var sizeClassName = {
903
+ sm: "!h-8 px-md py-sm",
904
+ md: "!h-9 px-lg py-sm",
905
+ lg: "!h-10 px-xl py-[10px]"
906
+ };
907
+ var focusClassName = {
908
+ brand: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
909
+ primary: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
910
+ secondary: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
911
+ tertiary: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
912
+ ghost: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
913
+ danger: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
914
+ destructive: "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
915
+ link: "focus-visible:border focus-visible:border-ring focus-visible:ring-0 focus-visible:ring-offset-0"
916
+ };
917
+ function renderLeadingIcon(icon) {
918
+ if (!icon) {
919
+ return null;
920
+ }
921
+ if (React9.isValidElement(icon)) {
922
+ const sizedIcon = React9.cloneElement(icon, {
923
+ className: cn("!h-4 !w-4 h-4 w-4", icon.props.className)
924
+ });
925
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "inline-flex h-4 w-4 items-center justify-center [&>svg]:!h-4 [&>svg]:!w-4", children: sizedIcon });
926
+ }
927
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "inline-flex h-4 w-4 items-center justify-center", children: icon });
928
+ }
929
+ function AdsButtonLoadingIcon() {
930
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
931
+ "svg",
932
+ {
933
+ "aria-hidden": true,
934
+ className: "!h-4 !w-4 h-4 w-4 animate-spin",
935
+ "data-testid": "ads-button-loading-icon",
936
+ fill: "none",
937
+ viewBox: "0 0 20 20",
938
+ xmlns: "http://www.w3.org/2000/svg",
939
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
940
+ "g",
941
+ {
942
+ stroke: "currentColor",
943
+ strokeLinecap: "round",
944
+ strokeWidth: "1.6",
945
+ transform: "translate(1.675 1.675)",
946
+ children: [
947
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M8.1667 0.6667V3.1667" }),
948
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M8.1667 13.1667V15.6667" }),
949
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M15.6667 8.1667H13.1667" }),
950
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M3.1667 8.1667H0.6667" }),
951
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M13.4696 2.8631L11.7018 4.6309" }),
952
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M4.6317 11.7018L2.8639 13.4696" }),
953
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M13.4696 13.4696L11.7018 11.7018" }),
954
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M4.6317 4.6309L2.8639 2.8631" })
955
+ ]
956
+ }
957
+ )
958
+ }
959
+ );
960
+ }
961
+ var AdsButton = React9.forwardRef(
962
+ ({
963
+ children,
964
+ className,
965
+ disabled = false,
966
+ icon,
967
+ intent = "brand",
968
+ leadingIcon,
969
+ loading = false,
970
+ loadingLabel,
971
+ size = "md",
972
+ type = "button",
973
+ ...props
974
+ }, ref) => {
975
+ const { messages } = useAdsI18n();
976
+ const isDisabled = disabled || loading;
977
+ const resolvedIcon = icon ?? leadingIcon;
978
+ const resolvedLoadingLabel = loadingLabel ?? messages.button.loading;
979
+ const hasTextContent = React9.Children.count(children) > 0;
980
+ const isIconOnly = Boolean(resolvedIcon) && !hasTextContent;
981
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
982
+ Button,
983
+ {
984
+ "aria-busy": loading || void 0,
985
+ className: cn(
986
+ "min-w-0 rounded-radius-md text-sm font-medium leading-5 tracking-normal",
987
+ "active:translate-y-px",
988
+ "active:not-aria-[haspopup]:translate-y-px",
989
+ "focus-visible:outline-none",
990
+ "disabled:pointer-events-none",
991
+ intentClassName[intent],
992
+ focusClassName[intent],
993
+ sizeClassName[size],
994
+ isIconOnly && (size === "sm" ? "!w-8 px-0" : size === "lg" ? "!w-10 px-0" : "!w-9 px-0"),
995
+ loading ? "disabled:opacity-100" : "disabled:opacity-[0.65]",
996
+ className
997
+ ),
998
+ disabled: isDisabled,
999
+ ref,
1000
+ type,
1001
+ variant: "ghost",
1002
+ ...props,
1003
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "inline-flex items-center justify-center gap-1", children: [
1004
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "inline-flex items-center justify-center gap-sm", children: [
1005
+ renderLeadingIcon(resolvedIcon),
1006
+ hasTextContent ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children }) : null
1007
+ ] }),
1008
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
1009
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(AdsButtonLoadingIcon, {}),
1010
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "sr-only", children: resolvedLoadingLabel })
1011
+ ] }) : null
1012
+ ] })
1013
+ }
1014
+ );
1015
+ }
1016
+ );
1017
+ AdsButton.displayName = "AdsButton";
1018
+
1019
+ // src/components/AdsBreadcrumb/index.tsx
1020
+ var React11 = __toESM(require("react"), 1);
1021
+ var import_lucide_react4 = require("lucide-react");
1022
+
1023
+ // src/primitives/breadcrumb.tsx
1024
+ var React10 = __toESM(require("react"), 1);
1025
+ var import_react_slot2 = require("@radix-ui/react-slot");
1026
+ var import_lucide_react3 = require("lucide-react");
1027
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1028
+ var Breadcrumb = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1029
+ "nav",
1030
+ {
1031
+ "aria-label": "breadcrumb",
1032
+ className: cn("w-full", className),
1033
+ ref,
1034
+ ...props
1035
+ }
1036
+ ));
1037
+ Breadcrumb.displayName = "Breadcrumb";
1038
+ var BreadcrumbList = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1039
+ "ul",
1040
+ {
1041
+ className: cn(
1042
+ "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground",
1043
+ className
1044
+ ),
1045
+ ref,
1046
+ ...props
1047
+ }
1048
+ ));
1049
+ BreadcrumbList.displayName = "BreadcrumbList";
1050
+ var BreadcrumbItem = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1051
+ "li",
1052
+ {
1053
+ className: cn("inline-flex items-center gap-1.5", className),
1054
+ ref,
1055
+ ...props
1056
+ }
1057
+ ));
1058
+ BreadcrumbItem.displayName = "BreadcrumbItem";
1059
+ var BreadcrumbLink = React10.forwardRef(
1060
+ ({ asChild = false, className, ...props }, ref) => {
1061
+ const Comp = asChild ? import_react_slot2.Slot : "a";
1062
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Comp, { className: cn("transition-colors", className), ref, ...props });
1063
+ }
1064
+ );
1065
+ BreadcrumbLink.displayName = "BreadcrumbLink";
1066
+ var BreadcrumbPage = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1067
+ "span",
1068
+ {
1069
+ "aria-current": "page",
1070
+ "aria-disabled": "true",
1071
+ className: cn("font-normal text-foreground", className),
1072
+ ref,
1073
+ role: "link",
1074
+ ...props
1075
+ }
1076
+ ));
1077
+ BreadcrumbPage.displayName = "BreadcrumbPage";
1078
+ var BreadcrumbSeparator = ({
1079
+ children,
1080
+ className,
1081
+ ...props
1082
+ }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1083
+ "li",
1084
+ {
1085
+ "aria-hidden": "true",
1086
+ className: cn("[&_svg]:size-3.5", className),
1087
+ role: "presentation",
1088
+ ...props,
1089
+ children: children ?? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react3.ChevronRight, {})
1090
+ }
1091
+ );
1092
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
1093
+ var BreadcrumbEllipsis = ({
1094
+ className,
1095
+ ...props
1096
+ }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1097
+ "span",
1098
+ {
1099
+ "aria-hidden": "true",
1100
+ className: cn("flex size-3.5 items-center justify-center", className),
1101
+ role: "presentation",
1102
+ ...props,
1103
+ children: [
1104
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react3.MoreHorizontal, { className: "size-3.5" }),
1105
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "sr-only", children: "More" })
1106
+ ]
1107
+ }
1108
+ );
1109
+ BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
1110
+
1111
+ // src/components/AdsBreadcrumb/index.tsx
1112
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1113
+ var AdsBreadcrumb = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Breadcrumb, { className: cn("w-full", className), ref, ...props }));
1114
+ AdsBreadcrumb.displayName = "AdsBreadcrumb";
1115
+ var AdsBreadcrumbList = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1116
+ BreadcrumbList,
1117
+ {
1118
+ className: cn(
1119
+ "flex flex-wrap items-center gap-1.5 text-sm leading-5 text-muted-foreground",
1120
+ className
1121
+ ),
1122
+ ref,
1123
+ ...props
1124
+ }
1125
+ ));
1126
+ AdsBreadcrumbList.displayName = "AdsBreadcrumbList";
1127
+ var AdsBreadcrumbItem = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1128
+ BreadcrumbItem,
1129
+ {
1130
+ className: cn("inline-flex items-center gap-1.5", className),
1131
+ ref,
1132
+ ...props
1133
+ }
1134
+ ));
1135
+ AdsBreadcrumbItem.displayName = "AdsBreadcrumbItem";
1136
+ var AdsBreadcrumbLink = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1137
+ BreadcrumbLink,
1138
+ {
1139
+ className: cn(
1140
+ "text-sm font-normal leading-5 text-muted-foreground transition-colors hover:text-foreground",
1141
+ className
1142
+ ),
1143
+ ref,
1144
+ ...props
1145
+ }
1146
+ ));
1147
+ AdsBreadcrumbLink.displayName = "AdsBreadcrumbLink";
1148
+ var AdsBreadcrumbPage = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1149
+ BreadcrumbPage,
1150
+ {
1151
+ className: cn("text-sm font-normal leading-5 text-foreground", className),
1152
+ ref,
1153
+ ...props
1154
+ }
1155
+ ));
1156
+ AdsBreadcrumbPage.displayName = "AdsBreadcrumbPage";
1157
+ var separatorIcons = {
1158
+ chevron: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react4.ChevronRight, { className: "size-3.5" }),
1159
+ slash: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react4.Slash, { className: "size-3.5" })
1160
+ };
1161
+ var AdsBreadcrumbSeparator = ({
1162
+ children,
1163
+ className,
1164
+ icon = "chevron",
1165
+ ...props
1166
+ }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1167
+ BreadcrumbSeparator,
1168
+ {
1169
+ className: cn("text-muted-foreground [&_svg]:size-3.5", className),
1170
+ ...props,
1171
+ children: children ?? separatorIcons[icon]
1172
+ }
1173
+ );
1174
+ AdsBreadcrumbSeparator.displayName = "AdsBreadcrumbSeparator";
1175
+ var AdsBreadcrumbEllipsis = ({
1176
+ className,
1177
+ children,
1178
+ ...props
1179
+ }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1180
+ BreadcrumbEllipsis,
1181
+ {
1182
+ className: cn("size-3.5 text-muted-foreground", className),
1183
+ ...props,
1184
+ children: children ?? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react4.MoreHorizontal, { className: "size-3.5" })
1185
+ }
1186
+ );
1187
+ AdsBreadcrumbEllipsis.displayName = "AdsBreadcrumbEllipsis";
1188
+
1189
+ // src/components/AdsCheckbox/index.tsx
1190
+ var React16 = __toESM(require("react"), 1);
1191
+
1192
+ // src/primitives/checkbox.tsx
1193
+ var React12 = __toESM(require("react"), 1);
1194
+ var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
1195
+ var import_lucide_react5 = require("lucide-react");
1196
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1197
+ var Checkbox = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1198
+ CheckboxPrimitive.Root,
1199
+ {
1200
+ ref,
1201
+ className: cn(
1202
+ "grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
1203
+ className
1204
+ ),
1205
+ ...props,
1206
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1207
+ CheckboxPrimitive.Indicator,
1208
+ {
1209
+ className: cn("grid place-content-center text-current"),
1210
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react5.Check, { className: "h-4 w-4" })
1211
+ }
1212
+ )
1213
+ }
1214
+ ));
1215
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
1216
+
1217
+ // src/components/AdsField/index.tsx
1218
+ var React15 = __toESM(require("react"), 1);
1219
+
1220
+ // src/primitives/field.tsx
1221
+ var import_react = require("react");
1222
+ var import_class_variance_authority7 = require("class-variance-authority");
1223
+
1224
+ // src/primitives/label.tsx
1225
+ var React13 = __toESM(require("react"), 1);
1226
+ var LabelPrimitive = __toESM(require("@radix-ui/react-label"), 1);
1227
+ var import_class_variance_authority6 = require("class-variance-authority");
1228
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1229
+ var labelVariants = (0, import_class_variance_authority6.cva)(
1230
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1231
+ );
1232
+ var Label = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1233
+ LabelPrimitive.Root,
1234
+ {
1235
+ ref,
1236
+ className: cn(labelVariants(), className),
1237
+ ...props
1238
+ }
1239
+ ));
1240
+ Label.displayName = LabelPrimitive.Root.displayName;
1241
+
1242
+ // src/primitives/separator.tsx
1243
+ var React14 = __toESM(require("react"), 1);
1244
+ var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
1245
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1246
+ var Separator = React14.forwardRef(
1247
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1248
+ SeparatorPrimitive.Root,
1249
+ {
1250
+ ref,
1251
+ decorative,
1252
+ orientation,
1253
+ className: cn(
1254
+ "shrink-0 bg-border",
1255
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
1256
+ className
1257
+ ),
1258
+ ...props
1259
+ }
1260
+ )
1261
+ );
1262
+ Separator.displayName = SeparatorPrimitive.Root.displayName;
1263
+
1264
+ // src/primitives/field.tsx
1265
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1266
+ function FieldSet({ className, ...props }) {
1267
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1268
+ "fieldset",
1269
+ {
1270
+ "data-slot": "field-set",
1271
+ className: cn(
1272
+ "flex flex-col gap-6",
1273
+ "has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",
1274
+ className
1275
+ ),
1276
+ ...props
1277
+ }
1278
+ );
1279
+ }
1280
+ function FieldLegend({
1281
+ className,
1282
+ variant = "legend",
1283
+ ...props
1284
+ }) {
1285
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1286
+ "legend",
1287
+ {
1288
+ "data-slot": "field-legend",
1289
+ "data-variant": variant,
1290
+ className: cn(
1291
+ "mb-3 font-medium",
1292
+ "data-[variant=legend]:text-base",
1293
+ "data-[variant=label]:text-sm",
1294
+ className
1295
+ ),
1296
+ ...props
1297
+ }
1298
+ );
1299
+ }
1300
+ function FieldGroup({ className, ...props }) {
1301
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1302
+ "div",
1303
+ {
1304
+ "data-slot": "field-group",
1305
+ className: cn(
1306
+ "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",
1307
+ className
1308
+ ),
1309
+ ...props
1310
+ }
1311
+ );
1312
+ }
1313
+ var fieldVariants = (0, import_class_variance_authority7.cva)(
1314
+ "group/field data-[invalid=true]:text-destructive flex w-full gap-3",
1315
+ {
1316
+ variants: {
1317
+ orientation: {
1318
+ vertical: ["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],
1319
+ horizontal: [
1320
+ "flex-row items-center",
1321
+ "[&>[data-slot=field-label]]:flex-auto",
1322
+ "has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start"
1323
+ ],
1324
+ responsive: [
1325
+ "@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto",
1326
+ "@md/field-group:[&>[data-slot=field-label]]:flex-auto",
1327
+ "@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
1328
+ ]
1329
+ }
1330
+ },
1331
+ defaultVariants: {
1332
+ orientation: "vertical"
1333
+ }
1334
+ }
1335
+ );
1336
+ function Field({
1337
+ className,
1338
+ orientation = "vertical",
1339
+ ...props
1340
+ }) {
1341
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1342
+ "div",
1343
+ {
1344
+ role: "group",
1345
+ "data-slot": "field",
1346
+ "data-orientation": orientation,
1347
+ className: cn(fieldVariants({ orientation }), className),
1348
+ ...props
1349
+ }
1350
+ );
1351
+ }
1352
+ function FieldLabel({
1353
+ className,
1354
+ ...props
1355
+ }) {
1356
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1357
+ Label,
1358
+ {
1359
+ "data-slot": "field-label",
1360
+ className: cn(
1361
+ "group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50",
1362
+ "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4",
1363
+ "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",
1364
+ className
1365
+ ),
1366
+ ...props
1367
+ }
1368
+ );
1369
+ }
1370
+ function FieldTitle({ className, ...props }) {
1371
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1372
+ "div",
1373
+ {
1374
+ "data-slot": "field-label",
1375
+ className: cn(
1376
+ "flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50",
1377
+ className
1378
+ ),
1379
+ ...props
1380
+ }
1381
+ );
1382
+ }
1383
+ function FieldDescription({ className, ...props }) {
1384
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1385
+ "p",
1386
+ {
1387
+ "data-slot": "field-description",
1388
+ className: cn(
1389
+ "text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance",
1390
+ "nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5",
1391
+ "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
1392
+ className
1393
+ ),
1394
+ ...props
1395
+ }
1396
+ );
1397
+ }
1398
+ function FieldSeparator({
1399
+ children,
1400
+ className,
1401
+ ...props
1402
+ }) {
1403
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1404
+ "div",
1405
+ {
1406
+ "data-slot": "field-separator",
1407
+ "data-content": !!children,
1408
+ className: cn(
1409
+ "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
1410
+ className
1411
+ ),
1412
+ ...props,
1413
+ children: [
1414
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Separator, { className: "absolute inset-0 top-1/2" }),
1415
+ children && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1416
+ "span",
1417
+ {
1418
+ className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
1419
+ "data-slot": "field-separator-content",
1420
+ children
1421
+ }
1422
+ )
1423
+ ]
1424
+ }
1425
+ );
1426
+ }
1427
+ function FieldError({
1428
+ className,
1429
+ children,
1430
+ errors,
1431
+ ...props
1432
+ }) {
1433
+ const content = (0, import_react.useMemo)(() => {
1434
+ if (children) {
1435
+ return children;
1436
+ }
1437
+ if (!errors) {
1438
+ return null;
1439
+ }
1440
+ if (errors?.length === 1 && errors[0]?.message) {
1441
+ return errors[0].message;
1442
+ }
1443
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: errors.map(
1444
+ (error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("li", { children: error.message }, index)
1445
+ ) });
1446
+ }, [children, errors]);
1447
+ if (!content) {
1448
+ return null;
1449
+ }
1450
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1451
+ "div",
1452
+ {
1453
+ role: "alert",
1454
+ "data-slot": "field-error",
1455
+ className: cn("text-destructive text-sm font-normal", className),
1456
+ ...props,
1457
+ children: content
1458
+ }
1459
+ );
1460
+ }
1461
+
1462
+ // src/components/AdsField/index.tsx
1463
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1464
+ function useAdsFieldDescription({
1465
+ describedBy,
1466
+ errorText,
1467
+ helperText,
1468
+ id
1469
+ }) {
1470
+ const generatedId = React15.useId();
1471
+ const inputId = id ?? generatedId;
1472
+ const helperId = helperText ? `${inputId}-helper` : void 0;
1473
+ const errorId = errorText ? `${inputId}-error` : void 0;
1474
+ const descriptionIds = [describedBy, helperId, errorId].filter(Boolean).join(" ");
1475
+ return {
1476
+ describedBy: descriptionIds || void 0,
1477
+ errorId,
1478
+ helperId,
1479
+ inputId
1480
+ };
1481
+ }
1482
+ var AdsField = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1483
+ FieldGroup,
1484
+ {
1485
+ className: cn("w-full gap-7", className),
1486
+ ref,
1487
+ ...props
1488
+ }
1489
+ ));
1490
+ AdsField.displayName = "AdsField";
1491
+ var AdsFieldHeader = React15.forwardRef(
1492
+ ({ className, description, title, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: cn("flex w-full flex-col gap-3", className), ref, ...props, children: [
1493
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FieldTitle, { className: "w-full text-base font-medium leading-6 text-foreground", children: title }),
1494
+ description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FieldDescription, { className: "w-full text-sm leading-5 text-muted-foreground", children: description }) : null
1495
+ ] })
1496
+ );
1497
+ AdsFieldHeader.displayName = "AdsFieldHeader";
1498
+ var AdsFieldItem = React15.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1499
+ Field,
1500
+ {
1501
+ className: cn("w-full gap-3", className),
1502
+ orientation,
1503
+ ref,
1504
+ ...props
1505
+ }
1506
+ ));
1507
+ AdsFieldItem.displayName = "AdsFieldItem";
1508
+ var AdsFieldLabel = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1509
+ FieldLabel,
1510
+ {
1511
+ className: cn("w-full text-sm font-medium leading-5 text-foreground", className),
1512
+ ref,
1513
+ ...props
1514
+ }
1515
+ ));
1516
+ AdsFieldLabel.displayName = "AdsFieldLabel";
1517
+ var AdsFieldLegend = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1518
+ FieldLegend,
1519
+ {
1520
+ className: cn("mb-3 text-base font-medium leading-6 text-foreground", className),
1521
+ ref,
1522
+ ...props
1523
+ }
1524
+ ));
1525
+ AdsFieldLegend.displayName = "AdsFieldLegend";
1526
+ var AdsFieldDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1527
+ FieldDescription,
1528
+ {
1529
+ className: cn("text-sm leading-5 text-muted-foreground", className),
1530
+ ref,
1531
+ ...props
1532
+ }
1533
+ ));
1534
+ AdsFieldDescription.displayName = "AdsFieldDescription";
1535
+ var AdsFieldError = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1536
+ FieldError,
1537
+ {
1538
+ className: cn("text-sm leading-5 text-destructive", className),
1539
+ ref,
1540
+ ...props
1541
+ }
1542
+ ));
1543
+ AdsFieldError.displayName = "AdsFieldError";
1544
+ var AdsFieldSeparator = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1545
+ FieldSeparator,
1546
+ {
1547
+ className: cn("py-2 text-muted-foreground", className),
1548
+ ref,
1549
+ ...props
1550
+ }
1551
+ ));
1552
+ AdsFieldSeparator.displayName = "AdsFieldSeparator";
1553
+ var AdsFieldGroup = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1554
+ FieldGroup,
1555
+ {
1556
+ className: cn("w-full gap-6", className),
1557
+ ref,
1558
+ ...props
1559
+ }
1560
+ ));
1561
+ AdsFieldGroup.displayName = "AdsFieldGroup";
1562
+ var AdsFieldSet = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(FieldSet, { className: cn("w-full gap-6", className), ref, ...props }));
1563
+ AdsFieldSet.displayName = "AdsFieldSet";
1564
+ var AdsFieldCheckboxRow = React15.forwardRef(
1565
+ ({ className, control, description, label, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1566
+ "div",
1567
+ {
1568
+ className: cn("flex w-full items-start gap-3", description ? "min-h-5" : "items-center", className),
1569
+ ref,
1570
+ ...props,
1571
+ children: [
1572
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "shrink-0 pt-px", children: control }),
1573
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
1574
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "text-sm leading-5 text-foreground", children: label }),
1575
+ description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(AdsFieldDescription, { className: "text-sm leading-5", children: description }) : null
1576
+ ] })
1577
+ ]
1578
+ }
1579
+ )
1580
+ );
1581
+ AdsFieldCheckboxRow.displayName = "AdsFieldCheckboxRow";
1582
+ var AdsFieldChoiceCard = React15.forwardRef(
1583
+ ({ checked, className, control, description, title, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1584
+ "label",
1585
+ {
1586
+ className: cn(
1587
+ "flex w-full items-start gap-3 rounded-radius-md border border-border bg-card p-md shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors",
1588
+ checked ? "border-primary bg-primary/5" : void 0,
1589
+ className
1590
+ ),
1591
+ ref,
1592
+ ...props,
1593
+ children: [
1594
+ control ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "shrink-0 pt-px", children: control }) : null,
1595
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
1596
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "text-sm font-medium leading-5 text-foreground", children: title }),
1597
+ description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(AdsFieldDescription, { className: "text-sm leading-5", children: description }) : null
1598
+ ] })
1599
+ ]
1600
+ }
1601
+ )
1602
+ );
1603
+ AdsFieldChoiceCard.displayName = "AdsFieldChoiceCard";
1604
+ var AdsFieldActions = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1605
+ "div",
1606
+ {
1607
+ className: cn("flex w-full flex-wrap items-center gap-3", className),
1608
+ ref,
1609
+ ...props
1610
+ }
1611
+ ));
1612
+ AdsFieldActions.displayName = "AdsFieldActions";
1613
+
1614
+ // src/components/AdsCheckbox/index.tsx
1615
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1616
+ var checkboxBaseClassName = "h-4 w-4 rounded-[4px] border-border bg-card text-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground";
1617
+ var Checkbox2 = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Checkbox, { className: cn(checkboxBaseClassName, className), ref, ...props }));
1618
+ Checkbox2.displayName = "Checkbox";
1619
+ var AdsCheckbox = React16.forwardRef(({ checkboxClassName, className, description, id, label, wrapperClassName, ...props }, ref) => {
1620
+ const generatedId = React16.useId();
1621
+ const inputId = id ?? generatedId;
1622
+ if (!label) {
1623
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1624
+ Checkbox2,
1625
+ {
1626
+ className: cn(className, checkboxClassName),
1627
+ id: inputId,
1628
+ ref,
1629
+ ...props
1630
+ }
1631
+ );
1632
+ }
1633
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("label", { className: cn("block w-full cursor-pointer", wrapperClassName), htmlFor: inputId, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1634
+ AdsFieldCheckboxRow,
1635
+ {
1636
+ control: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1637
+ Checkbox2,
1638
+ {
1639
+ className: cn(className, checkboxClassName),
1640
+ id: inputId,
1641
+ ref,
1642
+ ...props
1643
+ }
1644
+ ),
1645
+ description,
1646
+ label
1647
+ }
1648
+ ) });
1649
+ });
1650
+ AdsCheckbox.displayName = "AdsCheckbox";
1651
+
1652
+ // src/components/AdsButtonGroup/index.tsx
1653
+ var React18 = __toESM(require("react"), 1);
1654
+ var import_react_slot4 = require("@radix-ui/react-slot");
1655
+
1656
+ // src/primitives/input.tsx
1657
+ var React17 = __toESM(require("react"), 1);
1658
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1659
+ var Input = React17.forwardRef(
1660
+ ({ className, type, ...props }, ref) => {
1661
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1662
+ "input",
1663
+ {
1664
+ type,
1665
+ className: cn(
1666
+ "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
1667
+ className
1668
+ ),
1669
+ ref,
1670
+ ...props
1671
+ }
1672
+ );
1673
+ }
1674
+ );
1675
+ Input.displayName = "Input";
1676
+
1677
+ // src/primitives/button-group.tsx
1678
+ var import_react_slot3 = require("@radix-ui/react-slot");
1679
+ var import_class_variance_authority8 = require("class-variance-authority");
1680
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1681
+ var buttonGroupVariants = (0, import_class_variance_authority8.cva)(
1682
+ "flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
1683
+ {
1684
+ variants: {
1685
+ orientation: {
1686
+ horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
1687
+ vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
1688
+ }
1689
+ },
1690
+ defaultVariants: {
1691
+ orientation: "horizontal"
1692
+ }
1693
+ }
1694
+ );
1695
+ function ButtonGroupSeparator({
1696
+ className,
1697
+ orientation = "vertical",
1698
+ ...props
1699
+ }) {
1700
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1701
+ Separator,
1702
+ {
1703
+ "data-slot": "button-group-separator",
1704
+ orientation,
1705
+ className: cn(
1706
+ "pointer-events-none relative !m-0 shrink-0 self-stretch overflow-visible bg-transparent",
1707
+ "data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-0",
1708
+ "data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:w-full",
1709
+ "data-[orientation=vertical]:before:absolute data-[orientation=vertical]:before:inset-y-0 data-[orientation=vertical]:before:left-0 data-[orientation=vertical]:before:w-px data-[orientation=vertical]:before:bg-border",
1710
+ "data-[orientation=horizontal]:before:absolute data-[orientation=horizontal]:before:inset-x-0 data-[orientation=horizontal]:before:top-0 data-[orientation=horizontal]:before:h-px data-[orientation=horizontal]:before:bg-border",
1711
+ className
1712
+ ),
1713
+ ...props
1714
+ }
1715
+ );
1716
+ }
1717
+
1718
+ // src/components/AdsButtonGroup/index.tsx
1719
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1720
+ var buttonGroupPressClassName = "[&_button]:transition-[background-color,box-shadow,filter] [&_button]:active:translate-y-0 [&_button]:active:brightness-95";
1721
+ var segmentSizeClassName = {
1722
+ sm: "h-8 px-md text-sm",
1723
+ md: "h-9 px-lg text-sm",
1724
+ lg: "h-10 px-xl text-base"
1725
+ };
1726
+ function isAdsButtonElement(child) {
1727
+ return React18.isValidElement(child) && child.type === AdsButton;
1728
+ }
1729
+ function enhanceChildren(children, attached, size, surface) {
1730
+ return React18.Children.map(children, (child) => {
1731
+ if (!isAdsButtonElement(child)) {
1732
+ return child;
1733
+ }
1734
+ return React18.cloneElement(child, {
1735
+ className: cn(
1736
+ attached && "rounded-none shadow-none",
1737
+ attached && surface === "secondary" && "bg-secondary hover:bg-secondary/90",
1738
+ child.props.className
1739
+ ),
1740
+ size: child.props.size ?? size
1741
+ });
1742
+ });
1743
+ }
1744
+ var AdsButtonGroup = React18.forwardRef(
1745
+ ({
1746
+ attached = true,
1747
+ children,
1748
+ className,
1749
+ gap,
1750
+ orientation = "horizontal",
1751
+ size,
1752
+ surface = "default",
1753
+ variant = "default",
1754
+ ...props
1755
+ }, ref) => {
1756
+ const isVertical = orientation === "vertical";
1757
+ const resolvedAttached = attached || variant === "connected";
1758
+ const resolvedGapClassName = gap === "none" ? "gap-0" : gap === "sm" ? "gap-sm" : gap === "md" ? "gap-md" : resolvedAttached && isVertical ? "gap-0" : "gap-2";
1759
+ const attachedClassName = cn(
1760
+ buttonGroupVariants({ orientation }),
1761
+ surface === "pill" ? "rounded-full" : "rounded-radius-md"
1762
+ );
1763
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1764
+ "div",
1765
+ {
1766
+ "aria-orientation": orientation,
1767
+ className: cn(
1768
+ "inline-flex w-fit items-stretch",
1769
+ isVertical ? "flex-col" : "flex-row",
1770
+ resolvedGapClassName,
1771
+ resolvedAttached && attachedClassName,
1772
+ buttonGroupPressClassName,
1773
+ className
1774
+ ),
1775
+ "data-attached": resolvedAttached ? "true" : "false",
1776
+ "data-orientation": orientation,
1777
+ "data-surface": surface,
1778
+ "data-slot": "button-group",
1779
+ "data-variant": variant,
1780
+ role: "group",
1781
+ ref,
1782
+ ...props,
1783
+ children: enhanceChildren(children, resolvedAttached, size, surface)
1784
+ }
1785
+ );
1786
+ }
1787
+ );
1788
+ AdsButtonGroup.displayName = "AdsButtonGroup";
1789
+ var textToneClassName = {
1790
+ default: "bg-transparent text-foreground",
1791
+ muted: "bg-transparent text-muted-foreground",
1792
+ secondary: "bg-secondary text-secondary-foreground",
1793
+ field: "bg-transparent text-muted-foreground"
1794
+ };
1795
+ var textAlignClassName = {
1796
+ start: "justify-start",
1797
+ center: "justify-center",
1798
+ between: "justify-between"
1799
+ };
1800
+ var inputSizeClassName = {
1801
+ sm: "h-8 text-sm leading-5",
1802
+ md: "h-9 text-sm leading-5",
1803
+ lg: "h-10 text-base leading-6"
1804
+ };
1805
+ var AdsButtonGroupText = React18.forwardRef(
1806
+ ({
1807
+ align = "start",
1808
+ asChild = false,
1809
+ className,
1810
+ shape = "default",
1811
+ size = "md",
1812
+ tone = "default",
1813
+ ...props
1814
+ }, ref) => {
1815
+ const Comp = asChild ? import_react_slot4.Slot : "div";
1816
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1817
+ Comp,
1818
+ {
1819
+ className: cn(
1820
+ "inline-flex min-w-0 items-center gap-sm border border-border font-medium leading-5 shadow-[0px_1px_2px_rgba(0,0,0,0.08)] outline-none",
1821
+ segmentSizeClassName[size],
1822
+ textToneClassName[tone],
1823
+ textAlignClassName[align],
1824
+ shape === "pill" ? "rounded-full" : "rounded-radius-md",
1825
+ "[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none",
1826
+ className
1827
+ ),
1828
+ "data-slot": "button-group-text",
1829
+ ref,
1830
+ ...props
1831
+ }
1832
+ );
1833
+ }
1834
+ );
1835
+ AdsButtonGroupText.displayName = "AdsButtonGroupText";
1836
+ var AdsButtonGroupInput = React18.forwardRef(({ className, size = "md", type = "text", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1837
+ Input,
1838
+ {
1839
+ className: cn(
1840
+ "min-w-0 rounded-none bg-card px-md py-0 text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50",
1841
+ inputSizeClassName[size],
1842
+ className
1843
+ ),
1844
+ ref,
1845
+ type,
1846
+ ...props
1847
+ }
1848
+ ));
1849
+ AdsButtonGroupInput.displayName = "AdsButtonGroupInput";
1850
+ var AdsButtonGroupSeparator = ButtonGroupSeparator;
1851
+
1852
+ // src/components/AdsSeparator/index.tsx
1853
+ var React19 = __toESM(require("react"), 1);
1854
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1855
+ var toneClassName = {
1856
+ default: "bg-border",
1857
+ muted: "bg-border-muted"
1858
+ };
1859
+ var AdsSeparator = React19.forwardRef(({ className, orientation = "horizontal", tone = "default", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1860
+ Separator,
1861
+ {
1862
+ className: cn(
1863
+ "shrink-0",
1864
+ orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
1865
+ toneClassName[tone],
1866
+ className
1867
+ ),
1868
+ orientation,
1869
+ ref,
1870
+ ...props
1871
+ }
1872
+ ));
1873
+ AdsSeparator.displayName = "AdsSeparator";
1874
+
1875
+ // src/components/AdsSkeleton/index.tsx
1876
+ var React21 = __toESM(require("react"), 1);
1877
+
1878
+ // src/primitives/skeleton.tsx
1879
+ var React20 = __toESM(require("react"), 1);
1880
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1881
+ var Skeleton = React20.forwardRef(
1882
+ ({ animated = true, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1883
+ "div",
1884
+ {
1885
+ className: cn(
1886
+ "shrink-0 bg-accent",
1887
+ animated ? "animate-pulse" : void 0,
1888
+ className
1889
+ ),
1890
+ ref,
1891
+ ...props
1892
+ }
1893
+ )
1894
+ );
1895
+ Skeleton.displayName = "Skeleton";
1896
+
1897
+ // src/components/AdsSkeleton/index.tsx
1898
+ var import_jsx_runtime24 = require("react/jsx-runtime");
1899
+ var shapeClassName = {
1900
+ default: "rounded-radius-md",
1901
+ line: "h-4 w-full rounded-full",
1902
+ circle: "rounded-full"
1903
+ };
1904
+ var toneClassName2 = {
1905
+ default: "bg-secondary",
1906
+ muted: "bg-accent"
1907
+ };
1908
+ var AdsSkeleton = React21.forwardRef(
1909
+ ({ className, shape = "default", tone = "default", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
1910
+ Skeleton,
1911
+ {
1912
+ className: cn(shapeClassName[shape], toneClassName2[tone], className),
1913
+ ref,
1914
+ ...props
1915
+ }
1916
+ )
1917
+ );
1918
+ AdsSkeleton.displayName = "AdsSkeleton";
1919
+
1920
+ // src/components/AdsInput/index.tsx
1921
+ var React22 = __toESM(require("react"), 1);
1922
+ var import_jsx_runtime25 = require("react/jsx-runtime");
1923
+ var inputBaseClassName = "flex w-full rounded-md border border-border bg-card px-3 py-2 ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm";
1924
+ var inputSizeClasses = {
1925
+ sm: "h-8 text-sm leading-5",
1926
+ md: "h-9 text-base leading-6",
1927
+ lg: "h-10 text-base leading-6"
1928
+ };
1929
+ function getInputSurfaceClassName({
1930
+ className,
1931
+ errorText,
1932
+ hasPrefix,
1933
+ hasSuffix,
1934
+ size
1935
+ }) {
1936
+ return cn(
1937
+ inputBaseClassName,
1938
+ inputSizeClasses[size],
1939
+ errorText ? "border-destructive focus-visible:border-destructive" : "focus-visible:border-border-focus",
1940
+ "focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)]",
1941
+ hasPrefix ? "pl-2xl" : void 0,
1942
+ hasSuffix ? "pr-2xl" : void 0,
1943
+ className
1944
+ );
1945
+ }
1946
+ var AdsInput = React22.forwardRef(
1947
+ ({
1948
+ action,
1949
+ className,
1950
+ descriptionPlacement = "below",
1951
+ emptyFileLabel,
1952
+ errorText,
1953
+ fileTriggerLabel,
1954
+ helperText,
1955
+ id,
1956
+ label,
1957
+ onChange,
1958
+ prefix,
1959
+ type = "text",
1960
+ size = "md",
1961
+ suffix,
1962
+ ...props
1963
+ }, ref) => {
1964
+ const { messages } = useAdsI18n();
1965
+ const [selectedFiles, setSelectedFiles] = React22.useState([]);
1966
+ const description = useAdsFieldDescription({
1967
+ describedBy: props["aria-describedby"],
1968
+ errorText,
1969
+ helperText,
1970
+ id
1971
+ });
1972
+ const inputSurfaceClassName = getInputSurfaceClassName({
1973
+ className,
1974
+ errorText,
1975
+ hasPrefix: Boolean(prefix),
1976
+ hasSuffix: Boolean(suffix),
1977
+ size
1978
+ });
1979
+ const isFileInput = type === "file";
1980
+ const resolvedFileTriggerLabel = fileTriggerLabel ?? messages.input.chooseFile;
1981
+ const resolvedEmptyFileLabel = emptyFileLabel ?? messages.input.noFileChosen;
1982
+ const handleChange = React22.useCallback(
1983
+ (event) => {
1984
+ if (isFileInput) {
1985
+ setSelectedFiles(Array.from(event.target.files ?? [], (file) => file.name));
1986
+ }
1987
+ onChange?.(event);
1988
+ },
1989
+ [isFileInput, onChange]
1990
+ );
1991
+ const fileNameText = selectedFiles.length > 0 ? selectedFiles.join(", ") : resolvedEmptyFileLabel;
1992
+ const helperNode = helperText ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(AdsFieldDescription, { id: description.helperId, children: helperText }) : null;
1993
+ const errorNode = errorText ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(AdsFieldError, { id: description.errorId, children: errorText }) : null;
1994
+ const inputNode = isFileInput ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "relative flex w-full min-w-0 flex-1 items-center", children: [
1995
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1996
+ Input,
1997
+ {
1998
+ "aria-describedby": description.describedBy,
1999
+ "aria-invalid": errorText ? true : void 0,
2000
+ className: cn(
2001
+ inputSurfaceClassName,
2002
+ "absolute inset-0 z-10 cursor-pointer opacity-0 file:hidden",
2003
+ props.disabled ? "cursor-not-allowed" : void 0
2004
+ ),
2005
+ id: description.inputId,
2006
+ onChange: handleChange,
2007
+ ref,
2008
+ type: "file",
2009
+ ...props
2010
+ }
2011
+ ),
2012
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2013
+ "div",
2014
+ {
2015
+ "aria-hidden": "true",
2016
+ className: cn(
2017
+ inputSurfaceClassName,
2018
+ "items-center text-sm leading-5",
2019
+ props.disabled ? "cursor-not-allowed opacity-50" : void 0
2020
+ ),
2021
+ children: [
2022
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "shrink-0 pr-sm text-sm font-medium leading-5 text-foreground", children: resolvedFileTriggerLabel }),
2023
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2024
+ "span",
2025
+ {
2026
+ className: cn(
2027
+ "min-w-0 flex-1 truncate text-sm leading-5",
2028
+ selectedFiles.length > 0 ? "text-foreground" : "text-muted-foreground"
2029
+ ),
2030
+ children: fileNameText
2031
+ }
2032
+ )
2033
+ ]
2034
+ }
2035
+ )
2036
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "relative flex w-full min-w-0 flex-1 items-center", children: [
2037
+ prefix ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "pointer-events-none absolute left-md inline-flex text-icon-muted", children: prefix }) : null,
2038
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2039
+ Input,
2040
+ {
2041
+ "aria-describedby": description.describedBy,
2042
+ "aria-invalid": errorText ? true : void 0,
2043
+ className: inputSurfaceClassName,
2044
+ id: description.inputId,
2045
+ onChange: handleChange,
2046
+ ref,
2047
+ type,
2048
+ ...props
2049
+ }
2050
+ ),
2051
+ suffix ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "absolute right-md inline-flex items-center text-icon-muted", children: suffix }) : null
2052
+ ] });
2053
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(AdsFieldItem, { children: [
2054
+ label ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(AdsFieldLabel, { htmlFor: description.inputId, children: label }) : null,
2055
+ descriptionPlacement === "above" ? helperNode : null,
2056
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "flex w-full items-center gap-sm", children: [
2057
+ inputNode,
2058
+ action ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "shrink-0", children: action }) : null
2059
+ ] }),
2060
+ descriptionPlacement === "below" ? helperNode : null,
2061
+ errorNode
2062
+ ] });
2063
+ }
2064
+ );
2065
+ AdsInput.displayName = "AdsInput";
2066
+
2067
+ // src/components/AdsInputGroup/index.tsx
2068
+ var React24 = __toESM(require("react"), 1);
2069
+
2070
+ // src/primitives/textarea.tsx
2071
+ var React23 = __toESM(require("react"), 1);
2072
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2073
+ var Textarea = React23.forwardRef(({ className, ...props }, ref) => {
2074
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2075
+ "textarea",
2076
+ {
2077
+ className: cn(
2078
+ "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
2079
+ className
2080
+ ),
2081
+ ref,
2082
+ ...props
2083
+ }
2084
+ );
2085
+ });
2086
+ Textarea.displayName = "Textarea";
2087
+
2088
+ // src/components/AdsInputGroup/index.tsx
2089
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2090
+ function useAdsInputGroupDescription(describedBy, helperText, errorText, idBase) {
2091
+ const helperId = helperText ? `${idBase}-helper` : void 0;
2092
+ const errorId = errorText ? `${idBase}-error` : void 0;
2093
+ const descriptionIds = [describedBy, helperId, errorId].filter(Boolean).join(" ");
2094
+ return {
2095
+ describedBy: descriptionIds || void 0,
2096
+ errorId,
2097
+ helperId
2098
+ };
2099
+ }
2100
+ function AdsInputGroupChrome({
2101
+ children,
2102
+ errorId,
2103
+ errorText,
2104
+ helperId,
2105
+ helperText,
2106
+ label
2107
+ }) {
2108
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex w-full flex-col gap-md", children: [
2109
+ label ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "text-sm font-medium leading-5 text-foreground", children: label }) : null,
2110
+ children,
2111
+ helperText ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "text-sm leading-5 text-muted-foreground", id: helperId, children: helperText }) : null,
2112
+ errorText ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "text-sm leading-5 text-destructive", id: errorId, children: errorText }) : null
2113
+ ] });
2114
+ }
2115
+ var addonBaseClassName = "flex shrink-0 items-center self-stretch bg-secondary px-lg text-sm leading-5 text-foreground";
2116
+ var inputGroupControlBaseClassName = "w-full min-w-0 rounded-none border-0 bg-transparent px-0 py-0 text-sm leading-5 text-foreground shadow-none placeholder:text-muted-foreground focus-visible:border-transparent focus-visible:outline-none focus-visible:ring-0 disabled:cursor-not-allowed disabled:opacity-50 read-only:text-muted-foreground";
2117
+ function AdsInputGroup({
2118
+ children,
2119
+ className,
2120
+ controlWrapperClassName,
2121
+ errorText,
2122
+ footer,
2123
+ header,
2124
+ helperText,
2125
+ id,
2126
+ label,
2127
+ leadingAddon,
2128
+ leadingAddonClassName,
2129
+ surfaceClassName,
2130
+ trailingAddon,
2131
+ trailingAddonClassName
2132
+ }) {
2133
+ const generatedId = React24.useId();
2134
+ const description = useAdsInputGroupDescription(
2135
+ void 0,
2136
+ helperText,
2137
+ errorText,
2138
+ id ?? generatedId
2139
+ );
2140
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2141
+ AdsInputGroupChrome,
2142
+ {
2143
+ errorText,
2144
+ helperText,
2145
+ label,
2146
+ ...description,
2147
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: cn("w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
2148
+ "div",
2149
+ {
2150
+ className: cn(
2151
+ "overflow-hidden rounded-radius-md border border-border bg-card shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors",
2152
+ errorText ? "border-destructive focus-within:border-destructive" : "focus-within:border-border-focus",
2153
+ "focus-within:ring-[3px] focus-within:ring-[rgba(161,161,161,0.5)]",
2154
+ surfaceClassName
2155
+ ),
2156
+ children: [
2157
+ header ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "border-b border-border px-md py-md text-sm text-foreground", children: header }) : null,
2158
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex min-h-11 w-full items-stretch", children: [
2159
+ leadingAddon ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2160
+ "div",
2161
+ {
2162
+ className: cn(
2163
+ addonBaseClassName,
2164
+ "border-r border-border",
2165
+ leadingAddonClassName
2166
+ ),
2167
+ children: leadingAddon
2168
+ }
2169
+ ) : null,
2170
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2171
+ "div",
2172
+ {
2173
+ className: cn(
2174
+ "flex min-w-0 flex-1 items-center gap-sm px-md py-[10px]",
2175
+ controlWrapperClassName
2176
+ ),
2177
+ children
2178
+ }
2179
+ ),
2180
+ trailingAddon ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2181
+ "div",
2182
+ {
2183
+ className: cn(
2184
+ addonBaseClassName,
2185
+ "justify-end border-l border-border",
2186
+ trailingAddonClassName
2187
+ ),
2188
+ children: trailingAddon
2189
+ }
2190
+ ) : null
2191
+ ] }),
2192
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "border-t border-border px-md py-sm text-sm text-muted-foreground", children: footer }) : null
2193
+ ]
2194
+ }
2195
+ ) })
2196
+ }
2197
+ );
2198
+ }
2199
+ var AdsInputGroupInput = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2200
+ Input,
2201
+ {
2202
+ className: cn(
2203
+ inputGroupControlBaseClassName,
2204
+ "h-5 text-sm leading-5",
2205
+ className
2206
+ ),
2207
+ ref,
2208
+ ...props
2209
+ }
2210
+ ));
2211
+ AdsInputGroupInput.displayName = "AdsInputGroupInput";
2212
+ var AdsInputGroupTextarea = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2213
+ Textarea,
2214
+ {
2215
+ className: cn(
2216
+ inputGroupControlBaseClassName,
2217
+ "min-h-[64px] resize-none text-sm leading-5",
2218
+ className
2219
+ ),
2220
+ ref,
2221
+ ...props
2222
+ }
2223
+ ));
2224
+ AdsInputGroupTextarea.displayName = "AdsInputGroupTextarea";
2225
+
2226
+ // src/components/AdsInputOTP/index.tsx
2227
+ var React26 = __toESM(require("react"), 1);
2228
+
2229
+ // src/primitives/input-otp.tsx
2230
+ var React25 = __toESM(require("react"), 1);
2231
+ var import_input_otp = require("input-otp");
2232
+ var import_lucide_react6 = require("lucide-react");
2233
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2234
+ var InputOTP = React25.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2235
+ import_input_otp.OTPInput,
2236
+ {
2237
+ ref,
2238
+ containerClassName: cn(
2239
+ "flex items-center gap-2 has-[:disabled]:opacity-50",
2240
+ containerClassName
2241
+ ),
2242
+ className: cn("disabled:cursor-not-allowed", className),
2243
+ ...props
2244
+ }
2245
+ ));
2246
+ InputOTP.displayName = "InputOTP";
2247
+ var InputOTPGroup = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
2248
+ InputOTPGroup.displayName = "InputOTPGroup";
2249
+ var InputOTPSlot = React25.forwardRef(({ index, className, ...props }, ref) => {
2250
+ const inputOTPContext = React25.useContext(import_input_otp.OTPInputContext);
2251
+ const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
2252
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2253
+ "div",
2254
+ {
2255
+ ref,
2256
+ className: cn(
2257
+ "relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md",
2258
+ isActive && "z-10 ring-2 ring-ring ring-offset-background",
2259
+ className
2260
+ ),
2261
+ ...props,
2262
+ children: [
2263
+ char,
2264
+ hasFakeCaret && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
2265
+ ]
2266
+ }
2267
+ );
2268
+ });
2269
+ InputOTPSlot.displayName = "InputOTPSlot";
2270
+ var InputOTPSeparator = React25.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react6.Dot, {}) }));
2271
+ InputOTPSeparator.displayName = "InputOTPSeparator";
2272
+
2273
+ // src/components/AdsInputOTP/index.tsx
2274
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2275
+ function useFieldDescription(id, describedBy, helperText, errorText) {
2276
+ const generatedId = React26.useId();
2277
+ const inputId = id ?? generatedId;
2278
+ const helperId = helperText ? `${inputId}-helper` : void 0;
2279
+ const errorId = errorText ? `${inputId}-error` : void 0;
2280
+ const descriptionIds = [describedBy, helperId, errorId].filter(Boolean).join(" ");
2281
+ return {
2282
+ describedBy: descriptionIds || void 0,
2283
+ errorId,
2284
+ helperId,
2285
+ inputId
2286
+ };
2287
+ }
2288
+ function AdsInputOTPChrome({
2289
+ children,
2290
+ errorId,
2291
+ errorText,
2292
+ helperId,
2293
+ helperText,
2294
+ inputId,
2295
+ label
2296
+ }) {
2297
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex w-full flex-col gap-md", children: [
2298
+ label ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("label", { className: "text-sm font-medium leading-5 text-foreground", htmlFor: inputId, children: label }) : null,
2299
+ children,
2300
+ helperText ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "text-sm leading-5 text-muted-foreground", id: helperId, children: helperText }) : null,
2301
+ errorText ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "text-sm leading-5 text-destructive", id: errorId, children: errorText }) : null
2302
+ ] });
2303
+ }
2304
+ function buildSeparator(node, key) {
2305
+ if (node === void 0) {
2306
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AdsInputOTPSeparator, {}, key);
2307
+ }
2308
+ if (React26.isValidElement(node)) {
2309
+ return React26.cloneElement(node, { key });
2310
+ }
2311
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { children: node }, key);
2312
+ }
2313
+ function buildOtpChildren(groups, separator) {
2314
+ const defaultGroup = groups.length > 0 ? groups : [6];
2315
+ const items = [];
2316
+ let index = 0;
2317
+ defaultGroup.forEach((size, indexOfGroup) => {
2318
+ items.push(
2319
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AdsInputOTPGroup, { children: Array.from({ length: size }, (_, slotOffset) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2320
+ AdsInputOTPSlot,
2321
+ {
2322
+ index: index + slotOffset
2323
+ },
2324
+ `slot-${index + slotOffset}`
2325
+ )) }, `group-${indexOfGroup}`)
2326
+ );
2327
+ index += size;
2328
+ if (indexOfGroup < defaultGroup.length - 1) {
2329
+ items.push(buildSeparator(separator, `sep-${indexOfGroup}`));
2330
+ }
2331
+ });
2332
+ return items;
2333
+ }
2334
+ var AdsInputOTP = React26.forwardRef(({ action, errorText, groups, helperText, label, separator, children, id, ...props }, ref) => {
2335
+ const totalSlots = groups && groups.length > 0 ? groups.reduce((sum, value) => sum + value, 0) : 6;
2336
+ const description = useFieldDescription(id, props["aria-describedby"], helperText, errorText);
2337
+ const otpChildren = children ?? buildOtpChildren(groups ?? [], separator);
2338
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2339
+ AdsInputOTPChrome,
2340
+ {
2341
+ errorText,
2342
+ errorId: description.errorId,
2343
+ helperText,
2344
+ helperId: description.helperId,
2345
+ inputId: description.inputId,
2346
+ label,
2347
+ children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex w-full items-center gap-sm", children: [
2348
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2349
+ InputOTP,
2350
+ {
2351
+ "aria-describedby": description.describedBy,
2352
+ "aria-invalid": errorText ? true : void 0,
2353
+ id: description.inputId,
2354
+ maxLength: totalSlots,
2355
+ ref,
2356
+ ...props,
2357
+ children: otpChildren
2358
+ }
2359
+ ),
2360
+ action ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "shrink-0", children: action }) : null
2361
+ ] })
2362
+ }
2363
+ );
2364
+ });
2365
+ AdsInputOTP.displayName = "AdsInputOTP";
2366
+ var AdsInputOTPGroup = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(InputOTPGroup, { className, ref, ...props }));
2367
+ AdsInputOTPGroup.displayName = "AdsInputOTPGroup";
2368
+ var AdsInputOTPSeparator = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2369
+ InputOTPSeparator,
2370
+ {
2371
+ className: className ?? "h-px w-6 shrink-0 bg-border text-transparent [&_svg]:hidden",
2372
+ ref,
2373
+ ...props
2374
+ }
2375
+ ));
2376
+ AdsInputOTPSeparator.displayName = "AdsInputOTPSeparator";
2377
+ var AdsInputOTPSlot = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2378
+ InputOTPSlot,
2379
+ {
2380
+ className: [
2381
+ "border-border bg-card text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)]",
2382
+ "first:border-r-0 first:rounded-l-radius-md last:border-r last:rounded-r-radius-md",
2383
+ "data-[active=true]:border-border-focus data-[active=true]:shadow-[0px_0px_0px_3px_rgba(161,161,161,0.5)]",
2384
+ "h-9 w-9 text-sm leading-5",
2385
+ className
2386
+ ].filter(Boolean).join(" "),
2387
+ ref,
2388
+ ...props
2389
+ }
2390
+ ));
2391
+ AdsInputOTPSlot.displayName = "AdsInputOTPSlot";
2392
+
2393
+ // src/components/AdsPagination/index.tsx
2394
+ var React28 = __toESM(require("react"), 1);
2395
+ var import_lucide_react8 = require("lucide-react");
2396
+
2397
+ // src/primitives/pagination.tsx
2398
+ var React27 = __toESM(require("react"), 1);
2399
+ var import_lucide_react7 = require("lucide-react");
2400
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2401
+ var Pagination = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2402
+ "nav",
2403
+ {
2404
+ role: "navigation",
2405
+ "aria-label": "pagination",
2406
+ className: cn("mx-auto flex w-full justify-center", className),
2407
+ ...props
2408
+ }
2409
+ );
2410
+ Pagination.displayName = "Pagination";
2411
+ var PaginationContent = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2412
+ "ul",
2413
+ {
2414
+ ref,
2415
+ className: cn("flex flex-row items-center gap-1", className),
2416
+ ...props
2417
+ }
2418
+ ));
2419
+ PaginationContent.displayName = "PaginationContent";
2420
+ var PaginationItem = React27.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { ref, className: cn("", className), ...props }));
2421
+ PaginationItem.displayName = "PaginationItem";
2422
+ var PaginationLink = ({
2423
+ className,
2424
+ isActive,
2425
+ size = "icon",
2426
+ ...props
2427
+ }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2428
+ "a",
2429
+ {
2430
+ "aria-current": isActive ? "page" : void 0,
2431
+ className: cn(
2432
+ buttonVariants({
2433
+ variant: isActive ? "outline" : "ghost",
2434
+ size
2435
+ }),
2436
+ className
2437
+ ),
2438
+ ...props
2439
+ }
2440
+ );
2441
+ PaginationLink.displayName = "PaginationLink";
2442
+ var PaginationPrevious = ({
2443
+ className,
2444
+ ...props
2445
+ }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2446
+ PaginationLink,
2447
+ {
2448
+ "aria-label": "Go to previous page",
2449
+ size: "default",
2450
+ className: cn("gap-1 pl-2.5", className),
2451
+ ...props,
2452
+ children: [
2453
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react7.ChevronLeft, { className: "h-4 w-4" }),
2454
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: "Previous" })
2455
+ ]
2456
+ }
2457
+ );
2458
+ PaginationPrevious.displayName = "PaginationPrevious";
2459
+ var PaginationNext = ({
2460
+ className,
2461
+ ...props
2462
+ }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2463
+ PaginationLink,
2464
+ {
2465
+ "aria-label": "Go to next page",
2466
+ size: "default",
2467
+ className: cn("gap-1 pr-2.5", className),
2468
+ ...props,
2469
+ children: [
2470
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { children: "Next" }),
2471
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react7.ChevronRight, { className: "h-4 w-4" })
2472
+ ]
2473
+ }
2474
+ );
2475
+ PaginationNext.displayName = "PaginationNext";
2476
+ var PaginationEllipsis = ({
2477
+ className,
2478
+ ...props
2479
+ }) => /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2480
+ "span",
2481
+ {
2482
+ "aria-hidden": true,
2483
+ className: cn("flex h-9 w-9 items-center justify-center", className),
2484
+ ...props,
2485
+ children: [
2486
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_lucide_react7.MoreHorizontal, { className: "h-4 w-4" }),
2487
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "sr-only", children: "More pages" })
2488
+ ]
2489
+ }
2490
+ );
2491
+ PaginationEllipsis.displayName = "PaginationEllipsis";
2492
+
2493
+ // src/components/AdsPagination/index.tsx
2494
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2495
+ var paginationLinkBaseClassName = "inline-flex h-9 min-w-9 items-center justify-center rounded-radius-md border text-sm font-medium leading-5 tracking-normal transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background";
2496
+ var paginationLinkInactiveClassName = "border-transparent bg-transparent px-[10px] text-foreground shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]";
2497
+ var paginationLinkActiveClassName = "border-border bg-card px-[10px] text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)]";
2498
+ function AdsPagination({ className, ...props }) {
2499
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2500
+ Pagination,
2501
+ {
2502
+ className: cn("mx-0 w-auto justify-start", className),
2503
+ ...props
2504
+ }
2505
+ );
2506
+ }
2507
+ AdsPagination.displayName = "AdsPagination";
2508
+ var AdsPaginationContent = React28.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(PaginationContent, { ref, className: cn("gap-1", className), ...props }));
2509
+ AdsPaginationContent.displayName = "AdsPaginationContent";
2510
+ var AdsPaginationItem = React28.forwardRef(
2511
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(PaginationItem, { ref, className, ...props })
2512
+ );
2513
+ AdsPaginationItem.displayName = "AdsPaginationItem";
2514
+ var AdsPaginationLink = React28.forwardRef(
2515
+ ({ className, isActive = false, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
2516
+ "a",
2517
+ {
2518
+ "aria-current": isActive ? "page" : void 0,
2519
+ className: cn(
2520
+ paginationLinkBaseClassName,
2521
+ isActive ? paginationLinkActiveClassName : paginationLinkInactiveClassName,
2522
+ className
2523
+ ),
2524
+ ref,
2525
+ ...props
2526
+ }
2527
+ )
2528
+ );
2529
+ AdsPaginationLink.displayName = "AdsPaginationLink";
2530
+ var AdsPaginationPrevious = React28.forwardRef(({ "aria-label": ariaLabel, children, className, ...props }, ref) => {
2531
+ const { messages } = useAdsI18n();
2532
+ const label = children ?? messages.pagination.previous;
2533
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2534
+ AdsPaginationLink,
2535
+ {
2536
+ "aria-label": ariaLabel ?? messages.pagination.previous,
2537
+ className: cn("gap-1 px-md py-sm", className),
2538
+ ref,
2539
+ ...props,
2540
+ children: [
2541
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react8.ChevronLeft, { "aria-hidden": true, className: "h-4 w-4" }),
2542
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { children: label })
2543
+ ]
2544
+ }
2545
+ );
2546
+ });
2547
+ AdsPaginationPrevious.displayName = "AdsPaginationPrevious";
2548
+ var AdsPaginationNext = React28.forwardRef(
2549
+ ({ "aria-label": ariaLabel, children, className, ...props }, ref) => {
2550
+ const { messages } = useAdsI18n();
2551
+ const label = children ?? messages.pagination.next;
2552
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2553
+ AdsPaginationLink,
2554
+ {
2555
+ "aria-label": ariaLabel ?? messages.pagination.next,
2556
+ className: cn("gap-1 px-md py-sm", className),
2557
+ ref,
2558
+ ...props,
2559
+ children: [
2560
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { children: label }),
2561
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react8.ChevronRight, { "aria-hidden": true, className: "h-4 w-4" })
2562
+ ]
2563
+ }
2564
+ );
2565
+ }
2566
+ );
2567
+ AdsPaginationNext.displayName = "AdsPaginationNext";
2568
+ function AdsPaginationEllipsis({
2569
+ className,
2570
+ label,
2571
+ ...props
2572
+ }) {
2573
+ const { messages } = useAdsI18n();
2574
+ const resolvedLabel = label ?? messages.pagination.morePages;
2575
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2576
+ "span",
2577
+ {
2578
+ "aria-hidden": true,
2579
+ className: cn(
2580
+ "inline-flex h-9 w-9 items-center justify-center rounded-radius-md border border-transparent text-foreground",
2581
+ className
2582
+ ),
2583
+ ...props,
2584
+ children: [
2585
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_lucide_react8.MoreHorizontal, { className: "h-4 w-4" }),
2586
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "sr-only", children: resolvedLabel })
2587
+ ]
2588
+ }
2589
+ );
2590
+ }
2591
+ AdsPaginationEllipsis.displayName = "AdsPaginationEllipsis";
2592
+
2593
+ // src/components/AdsPopover/index.tsx
2594
+ var React30 = __toESM(require("react"), 1);
2595
+
2596
+ // src/primitives/popover.tsx
2597
+ var React29 = __toESM(require("react"), 1);
2598
+ var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
2599
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2600
+ var Popover = PopoverPrimitive.Root;
2601
+ var PopoverTrigger = PopoverPrimitive.Trigger;
2602
+ var PopoverContent = React29.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
2603
+ PopoverPrimitive.Content,
2604
+ {
2605
+ ref,
2606
+ align,
2607
+ sideOffset,
2608
+ className: cn(
2609
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",
2610
+ className
2611
+ ),
2612
+ ...props
2613
+ }
2614
+ ) }));
2615
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
2616
+
2617
+ // src/components/AdsPopover/index.tsx
2618
+ var import_jsx_runtime33 = require("react/jsx-runtime");
2619
+ var popoverContentClassName = "z-50 w-[320px] rounded-radius-lg border border-border bg-popover p-lg text-popover-foreground shadow-[0px_2px_4px_-2px_rgba(0,0,0,0.1),0px_4px_6px_-1px_rgba(0,0,0,0.1)] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]";
2620
+ var AdsPopover = Popover;
2621
+ var AdsPopoverTrigger = PopoverTrigger;
2622
+ var AdsPopoverContent = React30.forwardRef(({ align = "center", className, inset = false, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2623
+ PopoverContent,
2624
+ {
2625
+ align,
2626
+ className: cn(
2627
+ popoverContentClassName,
2628
+ inset ? "p-0" : void 0,
2629
+ className
2630
+ ),
2631
+ ref,
2632
+ sideOffset,
2633
+ ...props
2634
+ }
2635
+ ));
2636
+ AdsPopoverContent.displayName = "AdsPopoverContent";
2637
+ var AdsPopoverHeader = React30.forwardRef(
2638
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2639
+ "div",
2640
+ {
2641
+ className: cn("flex flex-col gap-sm", className),
2642
+ ref,
2643
+ ...props
2644
+ }
2645
+ )
2646
+ );
2647
+ AdsPopoverHeader.displayName = "AdsPopoverHeader";
2648
+ var AdsPopoverBody = React30.forwardRef(
2649
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: cn("mt-md flex flex-col gap-md", className), ref, ...props })
2650
+ );
2651
+ AdsPopoverBody.displayName = "AdsPopoverBody";
2652
+ var AdsPopoverTitle = React30.forwardRef(
2653
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2654
+ "h4",
2655
+ {
2656
+ className: cn("text-base font-medium leading-6 text-foreground", className),
2657
+ ref,
2658
+ ...props
2659
+ }
2660
+ )
2661
+ );
2662
+ AdsPopoverTitle.displayName = "AdsPopoverTitle";
2663
+ var AdsPopoverDescription = React30.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
2664
+ "p",
2665
+ {
2666
+ className: cn("text-sm leading-5 text-muted-foreground", className),
2667
+ ref,
2668
+ ...props
2669
+ }
2670
+ ));
2671
+ AdsPopoverDescription.displayName = "AdsPopoverDescription";
2672
+
2673
+ // src/components/AdsProgress/index.tsx
2674
+ var React32 = __toESM(require("react"), 1);
2675
+
2676
+ // src/primitives/progress.tsx
2677
+ var React31 = __toESM(require("react"), 1);
2678
+ var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"), 1);
2679
+ var import_jsx_runtime34 = require("react/jsx-runtime");
2680
+ var Progress = React31.forwardRef(({ className, indicatorClassName, value, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2681
+ ProgressPrimitive.Root,
2682
+ {
2683
+ className: cn("relative h-4 w-full overflow-hidden rounded-full bg-secondary", className),
2684
+ ref,
2685
+ value,
2686
+ ...props,
2687
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
2688
+ ProgressPrimitive.Indicator,
2689
+ {
2690
+ className: cn("h-full w-full flex-1 bg-primary transition-all", indicatorClassName),
2691
+ style: { transform: `translateX(-${100 - (value ?? 0)}%)` }
2692
+ }
2693
+ )
2694
+ }
2695
+ ));
2696
+ Progress.displayName = ProgressPrimitive.Root.displayName;
2697
+
2698
+ // src/components/AdsProgress/index.tsx
2699
+ var import_jsx_runtime35 = require("react/jsx-runtime");
2700
+ var progressBaseClassName = "h-2 rounded-radius-full bg-[color:color-mix(in_srgb,var(--primary)_20%,transparent)]";
2701
+ var progressIndicatorVariantClassName = {
2702
+ ai: "bg-brand-gradient",
2703
+ default: "bg-primary"
2704
+ };
2705
+ var Progress2 = React32.forwardRef(({ className, indicatorClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2706
+ Progress,
2707
+ {
2708
+ className: cn(progressBaseClassName, className),
2709
+ indicatorClassName: cn(progressIndicatorVariantClassName.default, indicatorClassName),
2710
+ ref,
2711
+ ...props
2712
+ }
2713
+ ));
2714
+ Progress2.displayName = "Progress";
2715
+ var AdsProgress = React32.forwardRef(
2716
+ ({
2717
+ className,
2718
+ descriptionPlacement = "above",
2719
+ errorText,
2720
+ helperText,
2721
+ id,
2722
+ indicatorClassName,
2723
+ label,
2724
+ trackClassName,
2725
+ variant = "default",
2726
+ ...props
2727
+ }, ref) => {
2728
+ const description = useAdsFieldDescription({
2729
+ errorText,
2730
+ helperText,
2731
+ id
2732
+ });
2733
+ const labelId = label ? `${description.inputId}-label` : void 0;
2734
+ const helperNode = helperText ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AdsFieldDescription, { id: description.helperId, children: helperText }) : null;
2735
+ const errorNode = errorText ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AdsFieldError, { id: description.errorId, children: errorText }) : null;
2736
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(AdsFieldItem, { children: [
2737
+ label ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AdsFieldLabel, { id: labelId, children: label }) : null,
2738
+ descriptionPlacement === "above" ? helperNode : null,
2739
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
2740
+ Progress,
2741
+ {
2742
+ "aria-describedby": description.describedBy,
2743
+ "aria-invalid": errorText ? true : void 0,
2744
+ "aria-labelledby": labelId,
2745
+ className: cn(progressBaseClassName, trackClassName, className),
2746
+ id: description.inputId,
2747
+ indicatorClassName: cn(
2748
+ progressIndicatorVariantClassName[variant],
2749
+ indicatorClassName
2750
+ ),
2751
+ ref,
2752
+ ...props
2753
+ }
2754
+ ),
2755
+ descriptionPlacement === "below" ? helperNode : null,
2756
+ errorNode
2757
+ ] });
2758
+ }
2759
+ );
2760
+ AdsProgress.displayName = "AdsProgress";
2761
+
2762
+ // src/components/AdsRadioGroup/index.tsx
2763
+ var React34 = __toESM(require("react"), 1);
2764
+
2765
+ // src/primitives/radio-group.tsx
2766
+ var React33 = __toESM(require("react"), 1);
2767
+ var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
2768
+ var import_lucide_react9 = require("lucide-react");
2769
+ var import_jsx_runtime36 = require("react/jsx-runtime");
2770
+ var RadioGroup = React33.forwardRef(({ className, ...props }, ref) => {
2771
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2772
+ RadioGroupPrimitive.Root,
2773
+ {
2774
+ className: cn("grid gap-2", className),
2775
+ ...props,
2776
+ ref
2777
+ }
2778
+ );
2779
+ });
2780
+ RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
2781
+ var RadioGroupItem = React33.forwardRef(({ className, ...props }, ref) => {
2782
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
2783
+ RadioGroupPrimitive.Item,
2784
+ {
2785
+ ref,
2786
+ className: cn(
2787
+ "aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
2788
+ className
2789
+ ),
2790
+ ...props,
2791
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react9.Circle, { className: "h-2.5 w-2.5 fill-current text-current" }) })
2792
+ }
2793
+ );
2794
+ });
2795
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
2796
+
2797
+ // src/components/AdsRadioGroup/index.tsx
2798
+ var import_jsx_runtime37 = require("react/jsx-runtime");
2799
+ var radioGroupBaseClassName = "gap-3";
2800
+ var radioItemBaseClassName = "h-4 w-4 border-border bg-card text-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0";
2801
+ var RadioGroup2 = React34.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(RadioGroup, { className: cn(radioGroupBaseClassName, className), ref, ...props }));
2802
+ RadioGroup2.displayName = "RadioGroup";
2803
+ var RadioGroupItem2 = React34.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2804
+ RadioGroupItem,
2805
+ {
2806
+ className: cn(radioItemBaseClassName, className),
2807
+ ref,
2808
+ ...props
2809
+ }
2810
+ ));
2811
+ RadioGroupItem2.displayName = "RadioGroupItem";
2812
+ var AdsRadioGroup = React34.forwardRef(
2813
+ ({
2814
+ children,
2815
+ className,
2816
+ descriptionPlacement = "below",
2817
+ errorText,
2818
+ helperText,
2819
+ id,
2820
+ label,
2821
+ ...props
2822
+ }, ref) => {
2823
+ const description = useAdsFieldDescription({
2824
+ errorText,
2825
+ helperText,
2826
+ id
2827
+ });
2828
+ const helperNode = helperText ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(AdsFieldDescription, { id: description.helperId, children: helperText }) : null;
2829
+ const errorNode = errorText ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(AdsFieldError, { id: description.errorId, children: errorText }) : null;
2830
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(AdsFieldItem, { children: [
2831
+ label ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(AdsFieldLabel, { children: label }) : null,
2832
+ descriptionPlacement === "above" ? helperNode : null,
2833
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2834
+ RadioGroup2,
2835
+ {
2836
+ "aria-describedby": description.describedBy,
2837
+ className,
2838
+ ref,
2839
+ ...props,
2840
+ children
2841
+ }
2842
+ ),
2843
+ descriptionPlacement === "below" ? helperNode : null,
2844
+ errorNode
2845
+ ] });
2846
+ }
2847
+ );
2848
+ AdsRadioGroup.displayName = "AdsRadioGroup";
2849
+ var AdsRadioGroupOption = React34.forwardRef(({ className, description, id, label, value, ...props }, ref) => {
2850
+ const generatedId = React34.useId();
2851
+ const inputId = id ?? generatedId;
2852
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("label", { className: "flex w-full cursor-pointer items-start gap-2", htmlFor: inputId, children: [
2853
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2854
+ RadioGroupItem2,
2855
+ {
2856
+ className: cn(className),
2857
+ id: inputId,
2858
+ ref,
2859
+ value,
2860
+ ...props
2861
+ }
2862
+ ),
2863
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
2864
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-sm leading-5 text-foreground", children: label }),
2865
+ description ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(AdsFieldDescription, { className: "text-sm leading-5", children: description }) : null
2866
+ ] })
2867
+ ] });
2868
+ });
2869
+ AdsRadioGroupOption.displayName = "AdsRadioGroupOption";
2870
+ var AdsRadioGroupCardOption = React34.forwardRef(({ className, description, disabled, id, label, value, ...props }, ref) => {
2871
+ const generatedId = React34.useId();
2872
+ const inputId = id ?? generatedId;
2873
+ const titleId = `${inputId}-label`;
2874
+ const descriptionId = description ? `${inputId}-description` : void 0;
2875
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "relative", children: [
2876
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2877
+ RadioGroupItem2,
2878
+ {
2879
+ "aria-describedby": descriptionId,
2880
+ "aria-labelledby": titleId,
2881
+ className: "peer absolute inset-0 h-full w-full rounded-radius-md opacity-0 focus-visible:outline-none focus-visible:ring-0",
2882
+ disabled,
2883
+ id: inputId,
2884
+ ref,
2885
+ value,
2886
+ ...props
2887
+ }
2888
+ ),
2889
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
2890
+ "div",
2891
+ {
2892
+ className: cn(
2893
+ "flex min-h-[72px] w-full items-center gap-3 rounded-radius-md border border-border bg-card p-md shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors [&_[data-indicator]]:border-border [&_[data-indicator-span]]:opacity-0 peer-data-[state=checked]:border-primary peer-data-[state=checked]:bg-accent peer-data-[state=checked]:[&_[data-indicator]]:border-primary peer-data-[state=checked]:[&_[data-indicator-span]]:opacity-100 peer-focus-visible:ring-[3px] peer-focus-visible:ring-[rgba(161,161,161,0.5)] peer-focus-visible:ring-offset-0",
2894
+ disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
2895
+ className
2896
+ ),
2897
+ children: [
2898
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
2899
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "text-sm font-medium leading-5 text-foreground", id: titleId, children: label }),
2900
+ description ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(AdsFieldDescription, { className: "text-xs leading-4", id: descriptionId, children: description }) : null
2901
+ ] }),
2902
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "flex h-full shrink-0 items-start justify-center pt-px", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2903
+ "div",
2904
+ {
2905
+ className: "grid h-4 w-4 place-content-center rounded-full border bg-card shadow-[0px_1px_2px_rgba(0,0,0,0.1)]",
2906
+ "data-indicator": true,
2907
+ children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
2908
+ "span",
2909
+ {
2910
+ className: "h-2 w-2 rounded-full bg-primary transition-opacity",
2911
+ "data-indicator-span": true
2912
+ }
2913
+ )
2914
+ }
2915
+ ) })
2916
+ ]
2917
+ }
2918
+ )
2919
+ ] });
2920
+ });
2921
+ AdsRadioGroupCardOption.displayName = "AdsRadioGroupCardOption";
2922
+
2923
+ // src/primitives/select.tsx
2924
+ var React35 = __toESM(require("react"), 1);
2925
+ var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
2926
+ var import_lucide_react10 = require("lucide-react");
2927
+ var import_jsx_runtime38 = require("react/jsx-runtime");
2928
+ var Select = SelectPrimitive.Root;
2929
+ var SelectGroup = SelectPrimitive.Group;
2930
+ var SelectValue = SelectPrimitive.Value;
2931
+ var SelectTrigger = React35.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
2932
+ SelectPrimitive.Trigger,
2933
+ {
2934
+ ref,
2935
+ className: cn(
2936
+ "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2937
+ className
2938
+ ),
2939
+ ...props,
2940
+ children: [
2941
+ children,
2942
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react10.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
2943
+ ]
2944
+ }
2945
+ ));
2946
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2947
+ var SelectScrollUpButton = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2948
+ SelectPrimitive.ScrollUpButton,
2949
+ {
2950
+ ref,
2951
+ className: cn(
2952
+ "flex cursor-default items-center justify-center py-1",
2953
+ className
2954
+ ),
2955
+ ...props,
2956
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react10.ChevronUp, { className: "h-4 w-4" })
2957
+ }
2958
+ ));
2959
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2960
+ var SelectScrollDownButton = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2961
+ SelectPrimitive.ScrollDownButton,
2962
+ {
2963
+ ref,
2964
+ className: cn(
2965
+ "flex cursor-default items-center justify-center py-1",
2966
+ className
2967
+ ),
2968
+ ...props,
2969
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react10.ChevronDown, { className: "h-4 w-4" })
2970
+ }
2971
+ ));
2972
+ SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2973
+ var SelectContent = React35.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
2974
+ SelectPrimitive.Content,
2975
+ {
2976
+ ref,
2977
+ className: cn(
2978
+ "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
2979
+ position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
2980
+ className
2981
+ ),
2982
+ position,
2983
+ ...props,
2984
+ children: [
2985
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectScrollUpButton, {}),
2986
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
2987
+ SelectPrimitive.Viewport,
2988
+ {
2989
+ className: cn(
2990
+ "p-1",
2991
+ position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
2992
+ ),
2993
+ children
2994
+ }
2995
+ ),
2996
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectScrollDownButton, {})
2997
+ ]
2998
+ }
2999
+ ) }));
3000
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
3001
+ var SelectLabel = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3002
+ SelectPrimitive.Label,
3003
+ {
3004
+ ref,
3005
+ className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className),
3006
+ ...props
3007
+ }
3008
+ ));
3009
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
3010
+ var SelectItem = React35.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3011
+ SelectPrimitive.Item,
3012
+ {
3013
+ ref,
3014
+ className: cn(
3015
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
3016
+ className
3017
+ ),
3018
+ ...props,
3019
+ children: [
3020
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react10.Check, { className: "h-4 w-4" }) }) }),
3021
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(SelectPrimitive.ItemText, { children })
3022
+ ]
3023
+ }
3024
+ ));
3025
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
3026
+ var SelectSeparator = React35.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3027
+ SelectPrimitive.Separator,
3028
+ {
3029
+ ref,
3030
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
3031
+ ...props
3032
+ }
3033
+ ));
3034
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
3035
+
3036
+ // src/components/AdsSelect/index.tsx
3037
+ var import_jsx_runtime39 = require("react/jsx-runtime");
3038
+ var selectTriggerBaseClassName = "h-9 rounded-radius-md border border-border bg-card px-md py-2 text-sm leading-5 text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus:border-border-focus focus:ring-[3px] focus:ring-[rgba(161,161,161,0.5)] focus:ring-offset-0 data-[placeholder]:text-muted-foreground";
3039
+ var selectContentBaseClassName = "rounded-radius-md border-border bg-popover text-popover-foreground shadow-[0px_8px_24px_rgba(0,0,0,0.22)]";
3040
+ function AdsSelect({
3041
+ children,
3042
+ contentClassName: contentClassName3,
3043
+ descriptionPlacement = "below",
3044
+ errorText,
3045
+ helperText,
3046
+ id,
3047
+ label,
3048
+ placeholder,
3049
+ triggerClassName,
3050
+ ...props
3051
+ }) {
3052
+ const description = useAdsFieldDescription({
3053
+ describedBy: void 0,
3054
+ errorText,
3055
+ helperText,
3056
+ id
3057
+ });
3058
+ const helperNode = helperText ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(AdsFieldDescription, { id: description.helperId, children: helperText }) : null;
3059
+ const errorNode = errorText ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(AdsFieldError, { id: description.errorId, children: errorText }) : null;
3060
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(AdsFieldItem, { children: [
3061
+ label ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(AdsFieldLabel, { htmlFor: description.inputId, children: label }) : null,
3062
+ descriptionPlacement === "above" ? helperNode : null,
3063
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(Select, { ...props, children: [
3064
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3065
+ SelectTrigger,
3066
+ {
3067
+ "aria-describedby": description.describedBy,
3068
+ "aria-invalid": errorText ? true : void 0,
3069
+ className: cn(selectTriggerBaseClassName, triggerClassName),
3070
+ id: description.inputId,
3071
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SelectValue, { placeholder })
3072
+ }
3073
+ ),
3074
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(SelectContent, { className: cn(selectContentBaseClassName, contentClassName3), children })
3075
+ ] }),
3076
+ descriptionPlacement === "below" ? helperNode : null,
3077
+ errorNode
3078
+ ] });
3079
+ }
3080
+
3081
+ // src/components/AdsSlider/index.tsx
3082
+ var React37 = __toESM(require("react"), 1);
3083
+
3084
+ // src/primitives/slider.tsx
3085
+ var React36 = __toESM(require("react"), 1);
3086
+ var SliderPrimitive = __toESM(require("@radix-ui/react-slider"), 1);
3087
+ var import_jsx_runtime40 = require("react/jsx-runtime");
3088
+ var Slider = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
3089
+ SliderPrimitive.Root,
3090
+ {
3091
+ ref,
3092
+ className: cn(
3093
+ "relative flex w-full touch-none select-none items-center",
3094
+ className
3095
+ ),
3096
+ ...props,
3097
+ children: [
3098
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SliderPrimitive.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-secondary", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
3099
+ Array.from({
3100
+ length: Array.isArray(props.value) ? props.value.length : Array.isArray(props.defaultValue) ? props.defaultValue.length : 1
3101
+ }).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3102
+ SliderPrimitive.Thumb,
3103
+ {
3104
+ className: "block h-5 w-5 rounded-full border border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50"
3105
+ },
3106
+ index
3107
+ ))
3108
+ ]
3109
+ }
3110
+ ));
3111
+ Slider.displayName = SliderPrimitive.Root.displayName;
3112
+
3113
+ // src/components/AdsSlider/index.tsx
3114
+ var import_jsx_runtime41 = require("react/jsx-runtime");
3115
+ var sliderBaseClassName = "py-1";
3116
+ var Slider2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Slider, { className: cn(sliderBaseClassName, className), ref, ...props }));
3117
+ Slider2.displayName = "Slider";
3118
+ var AdsSlider = React37.forwardRef(
3119
+ ({
3120
+ className,
3121
+ descriptionPlacement = "above",
3122
+ errorText,
3123
+ helperText,
3124
+ id,
3125
+ label,
3126
+ ...props
3127
+ }, ref) => {
3128
+ const description = useAdsFieldDescription({
3129
+ errorText,
3130
+ helperText,
3131
+ id
3132
+ });
3133
+ const helperNode = helperText ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(AdsFieldDescription, { id: description.helperId, children: helperText }) : null;
3134
+ const errorNode = errorText ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(AdsFieldError, { id: description.errorId, children: errorText }) : null;
3135
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(AdsFieldItem, { children: [
3136
+ label ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(AdsFieldLabel, { children: label }) : null,
3137
+ descriptionPlacement === "above" ? helperNode : null,
3138
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3139
+ Slider2,
3140
+ {
3141
+ "aria-describedby": description.describedBy,
3142
+ className,
3143
+ ref,
3144
+ ...props
3145
+ }
3146
+ ),
3147
+ descriptionPlacement === "below" ? helperNode : null,
3148
+ errorNode
3149
+ ] });
3150
+ }
3151
+ );
3152
+ AdsSlider.displayName = "AdsSlider";
3153
+
3154
+ // src/components/AdsSwitch/index.tsx
3155
+ var React39 = __toESM(require("react"), 1);
3156
+
3157
+ // src/primitives/switch.tsx
3158
+ var React38 = __toESM(require("react"), 1);
3159
+ var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"), 1);
3160
+ var import_jsx_runtime42 = require("react/jsx-runtime");
3161
+ var Switch = React38.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3162
+ SwitchPrimitives.Root,
3163
+ {
3164
+ className: cn(
3165
+ "peer inline-flex h-[18px] w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
3166
+ className
3167
+ ),
3168
+ ...props,
3169
+ ref,
3170
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
3171
+ SwitchPrimitives.Thumb,
3172
+ {
3173
+ className: cn(
3174
+ "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-[0px_1px_2px_rgba(0,0,0,0.1)] ring-0 transition-transform data-[state=checked]:translate-x-[20px] data-[state=unchecked]:translate-x-[2px]"
3175
+ )
3176
+ }
3177
+ )
3178
+ }
3179
+ ));
3180
+ Switch.displayName = SwitchPrimitives.Root.displayName;
3181
+
3182
+ // src/components/AdsSwitch/index.tsx
3183
+ var import_jsx_runtime43 = require("react/jsx-runtime");
3184
+ var switchBaseClassName = "h-6 w-11 border border-transparent bg-muted shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted";
3185
+ var Switch2 = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Switch, { className: cn(switchBaseClassName, className), ref, ...props }));
3186
+ Switch2.displayName = "Switch";
3187
+ var AdsSwitch = React39.forwardRef(({ className, description, id, label, switchClassName, wrapperClassName, ...props }, ref) => {
3188
+ const generatedId = React39.useId();
3189
+ const inputId = id ?? generatedId;
3190
+ if (!label) {
3191
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
3192
+ Switch2,
3193
+ {
3194
+ className: cn(className, switchClassName),
3195
+ id: inputId,
3196
+ ref,
3197
+ ...props
3198
+ }
3199
+ );
3200
+ }
3201
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("label", { className: cn("block w-full cursor-pointer", wrapperClassName), htmlFor: inputId, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex w-full items-start gap-3", children: [
3202
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5 pt-0.5", children: [
3203
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "text-sm font-medium leading-5 text-foreground", children: label }),
3204
+ description ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(AdsFieldDescription, { className: "text-sm leading-5", children: description }) : null
3205
+ ] }),
3206
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
3207
+ Switch2,
3208
+ {
3209
+ className: cn(className, switchClassName),
3210
+ id: inputId,
3211
+ ref,
3212
+ ...props
3213
+ }
3214
+ ) })
3215
+ ] }) });
3216
+ });
3217
+ AdsSwitch.displayName = "AdsSwitch";
3218
+
3219
+ // src/components/AdsTabs/index.tsx
3220
+ var React41 = __toESM(require("react"), 1);
3221
+
3222
+ // src/primitives/tabs.tsx
3223
+ var React40 = __toESM(require("react"), 1);
3224
+ var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"), 1);
3225
+ var import_jsx_runtime44 = require("react/jsx-runtime");
3226
+ var Tabs = TabsPrimitive.Root;
3227
+ var TabsList = React40.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3228
+ TabsPrimitive.List,
3229
+ {
3230
+ className: cn("inline-flex items-center", className),
3231
+ ref,
3232
+ ...props
3233
+ }
3234
+ ));
3235
+ TabsList.displayName = TabsPrimitive.List.displayName;
3236
+ var TabsTrigger = React40.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3237
+ TabsPrimitive.Trigger,
3238
+ {
3239
+ className: cn(
3240
+ "inline-flex items-center justify-center whitespace-nowrap focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50",
3241
+ className
3242
+ ),
3243
+ ref,
3244
+ ...props
3245
+ }
3246
+ ));
3247
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
3248
+ var TabsContent = React40.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3249
+ TabsPrimitive.Content,
3250
+ {
3251
+ className: cn("focus-visible:outline-none", className),
3252
+ ref,
3253
+ ...props
3254
+ }
3255
+ ));
3256
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
3257
+
3258
+ // src/components/AdsTabs/index.tsx
3259
+ var import_jsx_runtime45 = require("react/jsx-runtime");
3260
+ var AdsTabs = Tabs;
3261
+ var AdsTabsList = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3262
+ TabsList,
3263
+ {
3264
+ className: cn(
3265
+ "inline-flex items-center gap-0 rounded-radius-lg bg-muted p-[2px]",
3266
+ className
3267
+ ),
3268
+ ref,
3269
+ ...props
3270
+ }
3271
+ ));
3272
+ AdsTabsList.displayName = "AdsTabsList";
3273
+ var AdsTabsTrigger = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3274
+ TabsTrigger,
3275
+ {
3276
+ className: cn(
3277
+ "inline-flex h-8 items-center justify-center rounded-radius-md px-md py-xs text-sm font-medium leading-5 text-foreground transition-[background-color,border-color,box-shadow] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=active]:border data-[state=active]:border-border data-[state=active]:bg-card data-[state=active]:shadow-[0px_1px_1.5px_rgba(0,0,0,0.1)]",
3278
+ className
3279
+ ),
3280
+ ref,
3281
+ ...props
3282
+ }
3283
+ ));
3284
+ AdsTabsTrigger.displayName = "AdsTabsTrigger";
3285
+ var AdsTabsContent = React41.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3286
+ TabsContent,
3287
+ {
3288
+ className: cn(
3289
+ "mt-2 rounded-[12px] border border-border bg-card shadow-[0px_1px_1.5px_rgba(0,0,0,0.1)] focus-visible:ring-0",
3290
+ className
3291
+ ),
3292
+ ref,
3293
+ ...props
3294
+ }
3295
+ ));
3296
+ AdsTabsContent.displayName = "AdsTabsContent";
3297
+
3298
+ // src/components/AdsToggle/index.tsx
3299
+ var React43 = __toESM(require("react"), 1);
3300
+
3301
+ // src/primitives/toggle.tsx
3302
+ var React42 = __toESM(require("react"), 1);
3303
+ var TogglePrimitive = __toESM(require("@radix-ui/react-toggle"), 1);
3304
+ var import_jsx_runtime46 = require("react/jsx-runtime");
3305
+ var Toggle = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
3306
+ TogglePrimitive.Root,
3307
+ {
3308
+ className: cn(
3309
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-[background-color,box-shadow,color] focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3310
+ className
3311
+ ),
3312
+ ref,
3313
+ ...props
3314
+ }
3315
+ ));
3316
+ Toggle.displayName = TogglePrimitive.Root.displayName;
3317
+
3318
+ // src/components/AdsToggle/index.tsx
3319
+ var import_jsx_runtime47 = require("react/jsx-runtime");
3320
+ var sizeClassName2 = {
3321
+ sm: "!h-8 px-[6px] text-sm",
3322
+ md: "!h-9 px-md text-sm",
3323
+ lg: "!h-10 px-[10px] text-sm"
3324
+ };
3325
+ var iconOnlySizeClassName = {
3326
+ sm: "!w-8",
3327
+ md: "!w-9",
3328
+ lg: "!w-10"
3329
+ };
3330
+ var variantClassName = {
3331
+ default: "border border-transparent bg-transparent text-foreground shadow-none hover:bg-muted/70 data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]",
3332
+ outline: "border border-border bg-transparent text-foreground shadow-none hover:bg-muted/70 data-[state=on]:border-transparent data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]"
3333
+ };
3334
+ var AdsToggle = React43.forwardRef(({ children, className, size = "md", variant = "default", ...props }, ref) => {
3335
+ const childCount = React43.Children.count(children);
3336
+ const isIconOnly = childCount === 1 && React43.isValidElement(children);
3337
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
3338
+ Toggle,
3339
+ {
3340
+ className: cn(
3341
+ "inline-flex shrink-0 items-center justify-center gap-2 rounded-radius-md font-medium leading-5 text-foreground focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:opacity-50",
3342
+ sizeClassName2[size],
3343
+ variantClassName[variant],
3344
+ isIconOnly && iconOnlySizeClassName[size],
3345
+ className
3346
+ ),
3347
+ ref,
3348
+ ...props,
3349
+ children
3350
+ }
3351
+ );
3352
+ });
3353
+ AdsToggle.displayName = "AdsToggle";
3354
+
3355
+ // src/components/AdsToggleGroup/index.tsx
3356
+ var React45 = __toESM(require("react"), 1);
3357
+
3358
+ // src/primitives/toggle-group.tsx
3359
+ var React44 = __toESM(require("react"), 1);
3360
+ var ToggleGroupPrimitive = __toESM(require("@radix-ui/react-toggle-group"), 1);
3361
+ var import_jsx_runtime48 = require("react/jsx-runtime");
3362
+ var ToggleGroup = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3363
+ ToggleGroupPrimitive.Root,
3364
+ {
3365
+ className: cn("inline-flex items-center justify-start", className),
3366
+ ref,
3367
+ ...props
3368
+ }
3369
+ ));
3370
+ ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
3371
+ var ToggleGroupItem = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
3372
+ ToggleGroupPrimitive.Item,
3373
+ {
3374
+ className: cn(
3375
+ "inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-[background-color,box-shadow,color] focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3376
+ className
3377
+ ),
3378
+ ref,
3379
+ ...props
3380
+ }
3381
+ ));
3382
+ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
3383
+
3384
+ // src/components/AdsToggleGroup/index.tsx
3385
+ var import_jsx_runtime49 = require("react/jsx-runtime");
3386
+ var sizeClassName3 = {
3387
+ sm: "h-8 min-w-7 px-[6px] text-sm",
3388
+ md: "h-9 min-w-[34px] px-md text-sm",
3389
+ lg: "h-10 min-w-9 px-[10px] text-sm"
3390
+ };
3391
+ var variantClassName2 = {
3392
+ default: "border-transparent bg-transparent text-foreground hover:bg-muted/70 data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]",
3393
+ outline: "border border-border bg-transparent text-foreground hover:bg-muted/70 data-[state=on]:border-transparent data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]"
3394
+ };
3395
+ var AdsToggleGroupContext = React45.createContext(null);
3396
+ var AdsToggleGroup = React45.forwardRef(
3397
+ ({
3398
+ children,
3399
+ className,
3400
+ orientation = "horizontal",
3401
+ size = "md",
3402
+ variant = "default",
3403
+ ...props
3404
+ }, ref) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(AdsToggleGroupContext.Provider, { value: { orientation, size, variant }, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3405
+ ToggleGroup,
3406
+ {
3407
+ className: cn(
3408
+ "inline-flex items-start justify-start",
3409
+ orientation === "vertical" ? "flex-col" : "flex-row",
3410
+ className
3411
+ ),
3412
+ orientation,
3413
+ ref,
3414
+ ...props,
3415
+ children
3416
+ }
3417
+ ) })
3418
+ );
3419
+ AdsToggleGroup.displayName = "AdsToggleGroup";
3420
+ var AdsToggleGroupItem = React45.forwardRef(({ className, size, variant, ...props }, ref) => {
3421
+ const context = React45.useContext(AdsToggleGroupContext);
3422
+ const resolvedOrientation = context?.orientation ?? "horizontal";
3423
+ const resolvedSize = size ?? context?.size ?? "md";
3424
+ const resolvedVariant = variant ?? context?.variant ?? "default";
3425
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3426
+ ToggleGroupItem,
3427
+ {
3428
+ className: cn(
3429
+ "inline-flex shrink-0 items-center justify-center font-medium leading-5 text-foreground focus-visible:relative focus-visible:z-10 focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:opacity-50",
3430
+ sizeClassName3[resolvedSize],
3431
+ variantClassName2[resolvedVariant],
3432
+ resolvedOrientation === "horizontal" ? "first:rounded-l-radius-md first:rounded-r-none last:rounded-l-none last:rounded-r-radius-md not-first:not-last:rounded-none" : "first:rounded-t-radius-md first:rounded-b-none last:rounded-t-none last:rounded-b-radius-md not-first:not-last:rounded-none",
3433
+ className
3434
+ ),
3435
+ ref,
3436
+ ...props
3437
+ }
3438
+ );
3439
+ });
3440
+ AdsToggleGroupItem.displayName = "AdsToggleGroupItem";
3441
+
3442
+ // src/components/AdsTextarea/index.tsx
3443
+ var React46 = __toESM(require("react"), 1);
3444
+ var import_jsx_runtime50 = require("react/jsx-runtime");
3445
+ var textareaBaseClassName = "w-full rounded-radius-md border border-border bg-card px-md py-md text-base leading-6 text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] placeholder:text-muted-foreground focus-visible:border-border-focus focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:cursor-not-allowed disabled:opacity-50";
3446
+ var AdsTextarea = React46.forwardRef(
3447
+ ({
3448
+ action,
3449
+ className,
3450
+ descriptionPlacement = "below",
3451
+ errorText,
3452
+ helperText,
3453
+ id,
3454
+ label,
3455
+ resizable = true,
3456
+ rows = 3,
3457
+ ...props
3458
+ }, ref) => {
3459
+ const description = useAdsFieldDescription({
3460
+ describedBy: props["aria-describedby"],
3461
+ errorText,
3462
+ helperText,
3463
+ id
3464
+ });
3465
+ const helperNode = helperText ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AdsFieldDescription, { id: description.helperId, children: helperText }) : null;
3466
+ const errorNode = errorText ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AdsFieldError, { id: description.errorId, children: errorText }) : null;
3467
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(AdsFieldItem, { children: [
3468
+ label ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(AdsFieldLabel, { htmlFor: description.inputId, children: label }) : null,
3469
+ descriptionPlacement === "above" ? helperNode : null,
3470
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
3471
+ Textarea,
3472
+ {
3473
+ "aria-describedby": description.describedBy,
3474
+ "aria-invalid": errorText ? true : void 0,
3475
+ className: cn(
3476
+ textareaBaseClassName,
3477
+ "min-h-[80px]",
3478
+ resizable ? "resize-y" : "resize-none",
3479
+ className
3480
+ ),
3481
+ id: description.inputId,
3482
+ ref,
3483
+ rows,
3484
+ ...props
3485
+ }
3486
+ ),
3487
+ action ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "w-full [&>*]:w-full", children: action }) : null,
3488
+ descriptionPlacement === "below" ? helperNode : null,
3489
+ errorNode
3490
+ ] });
3491
+ }
3492
+ );
3493
+ AdsTextarea.displayName = "AdsTextarea";
3494
+
3495
+ // src/components/AdsTooltip/index.tsx
3496
+ var React48 = __toESM(require("react"), 1);
3497
+
3498
+ // src/primitives/tooltip.tsx
3499
+ var React47 = __toESM(require("react"), 1);
3500
+ var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
3501
+ var import_jsx_runtime51 = require("react/jsx-runtime");
3502
+ var TooltipProvider = TooltipPrimitive.Provider;
3503
+ var Tooltip = TooltipPrimitive.Root;
3504
+ var TooltipTrigger = TooltipPrimitive.Trigger;
3505
+ var TooltipArrow = TooltipPrimitive.Arrow;
3506
+ var TooltipContent = React47.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
3507
+ TooltipPrimitive.Content,
3508
+ {
3509
+ className: cn(
3510
+ "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
3511
+ className
3512
+ ),
3513
+ ref,
3514
+ sideOffset,
3515
+ ...props
3516
+ }
3517
+ ) }));
3518
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
3519
+
3520
+ // src/components/AdsTooltip/index.tsx
3521
+ var import_jsx_runtime52 = require("react/jsx-runtime");
3522
+ var tooltipContentClassName = "z-50 rounded-[6px] border-0 bg-[#844fff] px-3 py-2 text-sm font-normal leading-5 text-[#fdfdfd] shadow-[0px_8px_24px_rgba(0,0,0,0.22)]";
3523
+ var AdsTooltipProvider = TooltipProvider;
3524
+ var AdsTooltip = Tooltip;
3525
+ var AdsTooltipTrigger = TooltipTrigger;
3526
+ var AdsTooltipContent = React48.forwardRef(({ align = "center", className, sideOffset = 10, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3527
+ TooltipContent,
3528
+ {
3529
+ align,
3530
+ className: cn(tooltipContentClassName, className),
3531
+ ref,
3532
+ sideOffset,
3533
+ ...props
3534
+ }
3535
+ ));
3536
+ AdsTooltipContent.displayName = "AdsTooltipContent";
3537
+ var AdsTooltipArrow = React48.forwardRef(({ className, height = 5, width = 10, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3538
+ TooltipArrow,
3539
+ {
3540
+ className: cn("fill-[#844fff]", className),
3541
+ height,
3542
+ ref,
3543
+ width,
3544
+ ...props
3545
+ }
3546
+ ));
3547
+ AdsTooltipArrow.displayName = "AdsTooltipArrow";
3548
+
3549
+ // src/components/AdsToast/index.tsx
3550
+ var React49 = __toESM(require("react"), 1);
3551
+ var import_lucide_react11 = require("lucide-react");
3552
+ var import_sonner = require("sonner");
3553
+ var import_jsx_runtime53 = require("react/jsx-runtime");
3554
+ var adsToastIconMap = {
3555
+ success: import_lucide_react11.CircleCheck,
3556
+ info: import_lucide_react11.Info,
3557
+ warning: import_lucide_react11.TriangleAlert,
3558
+ error: import_lucide_react11.OctagonX,
3559
+ loading: import_lucide_react11.LoaderCircle
3560
+ };
3561
+ function resolveToastIcon(intent, icon) {
3562
+ if (icon) {
3563
+ return icon;
3564
+ }
3565
+ if (intent === "default") {
3566
+ return null;
3567
+ }
3568
+ const Icon2 = adsToastIconMap[intent];
3569
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3570
+ Icon2,
3571
+ {
3572
+ "aria-hidden": true,
3573
+ className: cn("h-4 w-4 shrink-0 text-foreground", intent === "loading" && "animate-spin"),
3574
+ "data-testid": "ads-toast-icon"
3575
+ }
3576
+ );
3577
+ }
3578
+ var AdsToast = React49.forwardRef(
3579
+ ({
3580
+ action,
3581
+ className,
3582
+ description,
3583
+ icon,
3584
+ intent = "default",
3585
+ title,
3586
+ ...props
3587
+ }, ref) => {
3588
+ const resolvedIcon = resolveToastIcon(intent, icon);
3589
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
3590
+ "div",
3591
+ {
3592
+ className: cn(
3593
+ "flex min-w-[356px] max-w-[356px] items-center rounded-radius-lg border border-border bg-popover p-4 text-foreground",
3594
+ "shadow-[0px_10px_15px_-3px_rgba(0,0,0,0.1),0px_4px_6px_-4px_rgba(0,0,0,0.1)]",
3595
+ resolvedIcon ? "gap-1.5" : action ? "gap-6" : "gap-0",
3596
+ className
3597
+ ),
3598
+ "data-testid": "ads-toast",
3599
+ ref,
3600
+ ...props,
3601
+ children: [
3602
+ resolvedIcon,
3603
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
3604
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-sm font-medium leading-5 text-foreground", children: title }),
3605
+ description ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("p", { className: "text-xs font-normal leading-4 text-muted-foreground", children: description }) : null
3606
+ ] }),
3607
+ action ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3608
+ AdsButton,
3609
+ {
3610
+ className: "shrink-0 rounded-radius-lg",
3611
+ intent: "primary",
3612
+ onClick: action.onClick,
3613
+ size: "sm",
3614
+ children: action.label
3615
+ }
3616
+ ) : null
3617
+ ]
3618
+ }
3619
+ );
3620
+ }
3621
+ );
3622
+ AdsToast.displayName = "AdsToast";
3623
+ function AdsToaster({
3624
+ containerAriaLabel,
3625
+ duration = 4e3,
3626
+ expand = false,
3627
+ gap = 16,
3628
+ position = "bottom-right",
3629
+ visibleToasts = 6,
3630
+ ...props
3631
+ }) {
3632
+ const { messages } = useAdsI18n();
3633
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3634
+ import_sonner.Toaster,
3635
+ {
3636
+ closeButton: false,
3637
+ containerAriaLabel: containerAriaLabel ?? messages.toast.notifications,
3638
+ duration,
3639
+ expand,
3640
+ gap,
3641
+ position,
3642
+ toastOptions: {
3643
+ unstyled: true
3644
+ },
3645
+ visibleToasts,
3646
+ ...props
3647
+ }
3648
+ );
3649
+ }
3650
+ function toStageNode(intent, title, options) {
3651
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3652
+ AdsToast,
3653
+ {
3654
+ action: options?.action,
3655
+ description: options?.description,
3656
+ icon: options?.icon,
3657
+ intent,
3658
+ title
3659
+ }
3660
+ );
3661
+ }
3662
+ function showAdsToast(intent, title, options) {
3663
+ const { action, description, icon, ...toastOptions } = options ?? {};
3664
+ return import_sonner.toast.custom(
3665
+ (id) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
3666
+ AdsToast,
3667
+ {
3668
+ action: action ? {
3669
+ ...action,
3670
+ onClick: (event) => {
3671
+ action.onClick?.(event);
3672
+ import_sonner.toast.dismiss(id);
3673
+ }
3674
+ } : void 0,
3675
+ description,
3676
+ icon,
3677
+ intent,
3678
+ title
3679
+ }
3680
+ ),
3681
+ {
3682
+ ...toastOptions,
3683
+ unstyled: true
3684
+ }
3685
+ );
3686
+ }
3687
+ function resolvePromiseStage(stage, value) {
3688
+ return typeof stage === "function" ? stage(value) : stage;
3689
+ }
3690
+ var AdsToastManager = Object.assign(
3691
+ (title, options) => showAdsToast("default", title, options),
3692
+ {
3693
+ success: (title, options) => showAdsToast("success", title, options),
3694
+ info: (title, options) => showAdsToast("info", title, options),
3695
+ warning: (title, options) => showAdsToast("warning", title, options),
3696
+ error: (title, options) => showAdsToast("error", title, options),
3697
+ loading: (title, options) => showAdsToast("loading", title, options),
3698
+ dismiss: (id) => import_sonner.toast.dismiss(id),
3699
+ promise: (promise, options) => {
3700
+ const { error, loading, success, ...toastOptions } = options;
3701
+ return import_sonner.toast.promise(promise, {
3702
+ ...toastOptions,
3703
+ unstyled: true,
3704
+ loading: toStageNode("loading", loading.title, loading),
3705
+ success: (value) => {
3706
+ const stage = resolvePromiseStage(success, value);
3707
+ return toStageNode("success", stage.title, stage);
3708
+ },
3709
+ error: (reason) => {
3710
+ const stage = resolvePromiseStage(error, reason);
3711
+ return toStageNode("error", stage.title, stage);
3712
+ }
3713
+ });
3714
+ }
3715
+ }
3716
+ );
3717
+
3718
+ // src/components/AdsDialog/index.tsx
3719
+ var React50 = __toESM(require("react"), 1);
3720
+ var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
3721
+ var import_lucide_react12 = require("lucide-react");
3722
+ var import_jsx_runtime54 = require("react/jsx-runtime");
3723
+ var overlayClassName2 = "fixed inset-0 z-50 bg-black/80 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0";
3724
+ var contentClassName2 = "fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-[423px] -translate-x-1/2 -translate-y-1/2 gap-lg rounded-radius-md border border-border bg-card p-xl text-foreground shadow-[0px_4px_6px_-4px_rgba(0,0,0,0.1),0px_10px_15px_-3px_rgba(0,0,0,0.1)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]";
3725
+ var closeButtonClassName = "absolute right-xl top-xl inline-flex h-6 w-6 items-center justify-center rounded-sm text-foreground/80 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none";
3726
+ var Dialog = DialogPrimitive.Root;
3727
+ var DialogTrigger = DialogPrimitive.Trigger;
3728
+ var DialogPortal = DialogPrimitive.Portal;
3729
+ var DialogOverlay = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3730
+ DialogPrimitive.Overlay,
3731
+ {
3732
+ className: cn(overlayClassName2, className),
3733
+ ref,
3734
+ ...props
3735
+ }
3736
+ ));
3737
+ DialogOverlay.displayName = "DialogOverlay";
3738
+ var DialogClose = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3739
+ DialogPrimitive.Close,
3740
+ {
3741
+ className: cn(
3742
+ "inline-flex items-center justify-center rounded-radius-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none",
3743
+ className
3744
+ ),
3745
+ ref,
3746
+ ...props
3747
+ }
3748
+ ));
3749
+ DialogClose.displayName = "DialogClose";
3750
+ var DialogContent = React50.forwardRef(({ children, className, closeLabel, hideCloseButton = false, ...props }, ref) => {
3751
+ const { messages } = useAdsI18n();
3752
+ const resolvedCloseLabel = closeLabel ?? messages.dialog.close;
3753
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(DialogPortal, { children: [
3754
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(DialogOverlay, {}),
3755
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
3756
+ DialogPrimitive.Content,
3757
+ {
3758
+ className: cn(contentClassName2, className),
3759
+ ref,
3760
+ ...props,
3761
+ children: [
3762
+ children,
3763
+ !hideCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
3764
+ DialogPrimitive.Close,
3765
+ {
3766
+ "aria-label": resolvedCloseLabel,
3767
+ className: closeButtonClassName,
3768
+ children: [
3769
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react12.X, { "aria-hidden": true, className: "h-4 w-4" }),
3770
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "sr-only", children: resolvedCloseLabel })
3771
+ ]
3772
+ }
3773
+ ) : null
3774
+ ]
3775
+ }
3776
+ )
3777
+ ] });
3778
+ });
3779
+ DialogContent.displayName = "DialogContent";
3780
+ var DialogHeader = React50.forwardRef(
3781
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3782
+ "div",
3783
+ {
3784
+ className: cn("flex flex-col gap-sm pr-8 text-left", className),
3785
+ ref,
3786
+ ...props
3787
+ }
3788
+ )
3789
+ );
3790
+ DialogHeader.displayName = "DialogHeader";
3791
+ var DialogFooter = React50.forwardRef(
3792
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3793
+ "div",
3794
+ {
3795
+ className: cn(
3796
+ "flex flex-col-reverse gap-sm sm:flex-row sm:justify-end",
3797
+ className
3798
+ ),
3799
+ ref,
3800
+ ...props
3801
+ }
3802
+ )
3803
+ );
3804
+ DialogFooter.displayName = "DialogFooter";
3805
+ var DialogTitle = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3806
+ DialogPrimitive.Title,
3807
+ {
3808
+ className: cn("text-lg font-semibold leading-7 text-foreground", className),
3809
+ ref,
3810
+ ...props
3811
+ }
3812
+ ));
3813
+ DialogTitle.displayName = "DialogTitle";
3814
+ var DialogDescription = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
3815
+ DialogPrimitive.Description,
3816
+ {
3817
+ className: cn("text-sm leading-5 text-muted-foreground", className),
3818
+ ref,
3819
+ ...props
3820
+ }
3821
+ ));
3822
+ DialogDescription.displayName = "DialogDescription";
3823
+ var AdsDialog = Dialog;
3824
+ var AdsDialogTrigger = DialogTrigger;
3825
+ var AdsDialogPortal = DialogPortal;
3826
+ var AdsDialogOverlay = DialogOverlay;
3827
+ var AdsDialogClose = DialogClose;
3828
+ var AdsDialogContent = DialogContent;
3829
+ var AdsDialogHeader = DialogHeader;
3830
+ var AdsDialogFooter = DialogFooter;
3831
+ var AdsDialogTitle = DialogTitle;
3832
+ var AdsDialogDescription = DialogDescription;
3833
+
3834
+ // src/components/AdsEmpty/index.tsx
3835
+ var import_class_variance_authority9 = require("class-variance-authority");
3836
+ var import_jsx_runtime55 = require("react/jsx-runtime");
3837
+ var adsEmptyVariants = (0, import_class_variance_authority9.cva)(
3838
+ "flex w-full flex-col items-center justify-center gap-6 p-12 text-center",
3839
+ {
3840
+ variants: {
3841
+ variant: {
3842
+ default: "bg-transparent",
3843
+ outline: "rounded-radius-lg border border-dashed border-border",
3844
+ background: "rounded-radius-lg bg-popover"
3845
+ }
3846
+ },
3847
+ defaultVariants: {
3848
+ variant: "default"
3849
+ }
3850
+ }
3851
+ );
3852
+ function AdsEmpty({ className, variant, ...props }) {
3853
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3854
+ "div",
3855
+ {
3856
+ "data-slot": "ads-empty",
3857
+ className: cn(adsEmptyVariants({ variant }), className),
3858
+ ...props
3859
+ }
3860
+ );
3861
+ }
3862
+ function AdsEmptyHeader({ className, ...props }) {
3863
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3864
+ "div",
3865
+ {
3866
+ "data-slot": "ads-empty-header",
3867
+ className: cn("flex w-full max-w-[384px] flex-col items-center gap-2", className),
3868
+ ...props
3869
+ }
3870
+ );
3871
+ }
3872
+ function AdsEmptyMedia({ className, ...props }) {
3873
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3874
+ "div",
3875
+ {
3876
+ "data-slot": "ads-empty-media",
3877
+ "data-testid": "ads-empty-media",
3878
+ className: cn(
3879
+ "flex size-10 items-center justify-center rounded-radius-lg bg-muted text-muted-foreground [&_svg]:size-6 [&_svg]:shrink-0",
3880
+ className
3881
+ ),
3882
+ ...props
3883
+ }
3884
+ );
3885
+ }
3886
+ function AdsEmptyTitle({ className, ...props }) {
3887
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3888
+ "div",
3889
+ {
3890
+ "data-slot": "ads-empty-title",
3891
+ className: cn("text-lg font-medium leading-7 text-foreground", className),
3892
+ ...props
3893
+ }
3894
+ );
3895
+ }
3896
+ function AdsEmptyDescription({ className, ...props }) {
3897
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3898
+ "p",
3899
+ {
3900
+ "data-slot": "ads-empty-description",
3901
+ className: cn("max-w-[384px] text-sm leading-5 text-muted-foreground text-center", className),
3902
+ ...props
3903
+ }
3904
+ );
3905
+ }
3906
+ function AdsEmptyContent({ className, ...props }) {
3907
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3908
+ "div",
3909
+ {
3910
+ "data-slot": "ads-empty-content",
3911
+ className: cn("flex w-full max-w-[384px] flex-col items-center gap-4", className),
3912
+ ...props
3913
+ }
3914
+ );
3915
+ }
3916
+ function AdsEmptyActions({ className, ...props }) {
3917
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3918
+ "div",
3919
+ {
3920
+ "data-slot": "ads-empty-actions",
3921
+ className: cn("flex flex-wrap items-center justify-center gap-3", className),
3922
+ ...props
3923
+ }
3924
+ );
3925
+ }
3926
+ function AdsEmptyFooter({ className, ...props }) {
3927
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
3928
+ "div",
3929
+ {
3930
+ "data-slot": "ads-empty-footer",
3931
+ className: cn("text-sm font-medium leading-5 text-muted-foreground", className),
3932
+ ...props
3933
+ }
3934
+ );
3935
+ }
3936
+
3937
+ // src/components/AdsTable/index.tsx
3938
+ var React52 = __toESM(require("react"), 1);
3939
+
3940
+ // src/primitives/table.tsx
3941
+ var React51 = __toESM(require("react"), 1);
3942
+ var import_jsx_runtime56 = require("react/jsx-runtime");
3943
+ var Table = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3944
+ "table",
3945
+ {
3946
+ ref,
3947
+ className: cn("w-full caption-bottom text-sm", className),
3948
+ ...props
3949
+ }
3950
+ ) }));
3951
+ Table.displayName = "Table";
3952
+ var TableHeader = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
3953
+ TableHeader.displayName = "TableHeader";
3954
+ var TableBody = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3955
+ "tbody",
3956
+ {
3957
+ ref,
3958
+ className: cn("[&_tr:last-child]:border-0", className),
3959
+ ...props
3960
+ }
3961
+ ));
3962
+ TableBody.displayName = "TableBody";
3963
+ var TableFooter = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3964
+ "tfoot",
3965
+ {
3966
+ ref,
3967
+ className: cn(
3968
+ "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
3969
+ className
3970
+ ),
3971
+ ...props
3972
+ }
3973
+ ));
3974
+ TableFooter.displayName = "TableFooter";
3975
+ var TableRow = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3976
+ "tr",
3977
+ {
3978
+ ref,
3979
+ className: cn(
3980
+ "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
3981
+ className
3982
+ ),
3983
+ ...props
3984
+ }
3985
+ ));
3986
+ TableRow.displayName = "TableRow";
3987
+ var TableHead = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
3988
+ "th",
3989
+ {
3990
+ ref,
3991
+ className: cn(
3992
+ "h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
3993
+ className
3994
+ ),
3995
+ ...props
3996
+ }
3997
+ ));
3998
+ TableHead.displayName = "TableHead";
3999
+ var TableCell = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4000
+ "td",
4001
+ {
4002
+ ref,
4003
+ className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
4004
+ ...props
4005
+ }
4006
+ ));
4007
+ TableCell.displayName = "TableCell";
4008
+ var TableCaption = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
4009
+ "caption",
4010
+ {
4011
+ ref,
4012
+ className: cn("mt-4 text-sm text-muted-foreground", className),
4013
+ ...props
4014
+ }
4015
+ ));
4016
+ TableCaption.displayName = "TableCaption";
4017
+
4018
+ // src/components/AdsTable/index.tsx
4019
+ var import_jsx_runtime57 = require("react/jsx-runtime");
4020
+ var AdsTable = React52.forwardRef(
4021
+ ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "w-full overflow-hidden rounded-radius-md border border-border bg-card", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4022
+ Table,
4023
+ {
4024
+ ref,
4025
+ className: cn("w-full caption-bottom text-sm text-foreground", className),
4026
+ ...props
4027
+ }
4028
+ ) })
4029
+ );
4030
+ AdsTable.displayName = "AdsTable";
4031
+ var AdsTableHeader = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4032
+ TableHeader,
4033
+ {
4034
+ ref,
4035
+ className: cn("[&_tr]:border-border", className),
4036
+ ...props
4037
+ }
4038
+ ));
4039
+ AdsTableHeader.displayName = "AdsTableHeader";
4040
+ var AdsTableBody = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4041
+ TableBody,
4042
+ {
4043
+ ref,
4044
+ className: cn("[&_tr:last-child]:border-0", className),
4045
+ ...props
4046
+ }
4047
+ ));
4048
+ AdsTableBody.displayName = "AdsTableBody";
4049
+ var AdsTableFooter = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4050
+ TableFooter,
4051
+ {
4052
+ ref,
4053
+ className: cn("border-border bg-card text-foreground", className),
4054
+ ...props
4055
+ }
4056
+ ));
4057
+ AdsTableFooter.displayName = "AdsTableFooter";
4058
+ var AdsTableRow = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4059
+ TableRow,
4060
+ {
4061
+ ref,
4062
+ className: cn(
4063
+ "border-border hover:bg-transparent data-[state=selected]:bg-accent/30",
4064
+ className
4065
+ ),
4066
+ ...props
4067
+ }
4068
+ ));
4069
+ AdsTableRow.displayName = "AdsTableRow";
4070
+ var AdsTableHead = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4071
+ TableHead,
4072
+ {
4073
+ ref,
4074
+ className: cn(
4075
+ "h-10 px-2 align-middle text-sm font-medium leading-5 text-foreground [&:has([role=checkbox])]:pr-0",
4076
+ className
4077
+ ),
4078
+ ...props
4079
+ }
4080
+ ));
4081
+ AdsTableHead.displayName = "AdsTableHead";
4082
+ var AdsTableCell = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4083
+ TableCell,
4084
+ {
4085
+ ref,
4086
+ className: cn(
4087
+ "p-2 align-middle text-sm font-normal leading-5 text-foreground [&:has([role=checkbox])]:pr-0",
4088
+ className
4089
+ ),
4090
+ ...props
4091
+ }
4092
+ ));
4093
+ AdsTableCell.displayName = "AdsTableCell";
4094
+ var AdsTableCaption = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4095
+ TableCaption,
4096
+ {
4097
+ ref,
4098
+ className: cn("text-sm leading-5 text-muted-foreground", className),
4099
+ ...props
4100
+ }
4101
+ ));
4102
+ AdsTableCaption.displayName = "AdsTableCaption";
4103
+
4104
+ // src/tokens/designTokens.ts
4105
+ var designTokens = {
4106
+ background: "#151619",
4107
+ foreground: "#fdfdfd",
4108
+ card: "#1b1c21",
4109
+ cardForeground: "#fdfdfd",
4110
+ popover: "#2a2b2f",
4111
+ popoverForeground: "#fdfdfd",
4112
+ primary: "#844fff",
4113
+ primaryForeground: "#fdfdfd",
4114
+ secondary: "#3f4043",
4115
+ secondaryForeground: "#fdfdfd",
4116
+ muted: "#3f4043",
4117
+ mutedForeground: "#7e7f81",
4118
+ accent: "#3f4043",
4119
+ accentForeground: "#fdfdfd",
4120
+ destructive: "#dc2626",
4121
+ destructiveForeground: "#ff9b9b",
4122
+ border: "#545558",
4123
+ input: "#151619",
4124
+ ring: "#a984ff",
4125
+ brandSecondary: "#af41ff",
4126
+ brandSecondaryForeground: "#151619",
4127
+ brandGradientFrom: "#6859ff",
4128
+ brandGradientTo: "#af41ff",
4129
+ success: "#008e61",
4130
+ successForeground: "#fdfdfd",
4131
+ warning: "#cd6c00",
4132
+ warningForeground: "#fdfdfd",
4133
+ info: "#844fff",
4134
+ infoForeground: "#fdfdfd",
4135
+ borderMuted: "#3f4043",
4136
+ active: "#422880",
4137
+ activeForeground: "#fdfdfd",
4138
+ labelForeground: "#a8a9aa",
4139
+ icon: "#939496",
4140
+ iconMuted: "#545558",
4141
+ spacing: {
4142
+ xs: "0.25rem",
4143
+ sm: "0.5rem",
4144
+ md: "0.75rem",
4145
+ lg: "1rem",
4146
+ xl: "1.5rem",
4147
+ "2xl": "2rem"
4148
+ },
4149
+ radius: {
4150
+ sm: "0.25rem",
4151
+ md: "0.375rem",
4152
+ lg: "0.5rem",
4153
+ xl: "0.75rem",
4154
+ full: "9999px"
4155
+ },
4156
+ size: {
4157
+ controlHeight: "2.5rem",
4158
+ modalWidth: "42rem",
4159
+ sidebarWidth: "17.5rem"
4160
+ },
4161
+ zIndex: {
4162
+ toolbar: 30,
4163
+ overlay: 40,
4164
+ modal: 50,
4165
+ toast: 60
4166
+ }
4167
+ };
4168
+ // Annotate the CommonJS export names for ESM import in node:
4169
+ 0 && (module.exports = {
4170
+ AdsAccordion,
4171
+ AdsAlert,
4172
+ AdsAlertDescription,
4173
+ AdsAlertDialog,
4174
+ AdsAlertDialogAction,
4175
+ AdsAlertDialogCancel,
4176
+ AdsAlertDialogContent,
4177
+ AdsAlertDialogDescription,
4178
+ AdsAlertDialogFooter,
4179
+ AdsAlertDialogHeader,
4180
+ AdsAlertDialogOverlay,
4181
+ AdsAlertDialogPortal,
4182
+ AdsAlertDialogTitle,
4183
+ AdsAlertDialogTrigger,
4184
+ AdsAlertTitle,
4185
+ AdsBadge,
4186
+ AdsBreadcrumb,
4187
+ AdsBreadcrumbEllipsis,
4188
+ AdsBreadcrumbItem,
4189
+ AdsBreadcrumbLink,
4190
+ AdsBreadcrumbList,
4191
+ AdsBreadcrumbPage,
4192
+ AdsBreadcrumbSeparator,
4193
+ AdsButton,
4194
+ AdsButtonGroup,
4195
+ AdsButtonGroupInput,
4196
+ AdsButtonGroupSeparator,
4197
+ AdsButtonGroupText,
4198
+ AdsCheckbox,
4199
+ AdsDialog,
4200
+ AdsDialogClose,
4201
+ AdsDialogContent,
4202
+ AdsDialogDescription,
4203
+ AdsDialogFooter,
4204
+ AdsDialogHeader,
4205
+ AdsDialogOverlay,
4206
+ AdsDialogPortal,
4207
+ AdsDialogTitle,
4208
+ AdsDialogTrigger,
4209
+ AdsEmpty,
4210
+ AdsEmptyActions,
4211
+ AdsEmptyContent,
4212
+ AdsEmptyDescription,
4213
+ AdsEmptyFooter,
4214
+ AdsEmptyHeader,
4215
+ AdsEmptyMedia,
4216
+ AdsEmptyTitle,
4217
+ AdsField,
4218
+ AdsFieldActions,
4219
+ AdsFieldCheckboxRow,
4220
+ AdsFieldChoiceCard,
4221
+ AdsFieldDescription,
4222
+ AdsFieldError,
4223
+ AdsFieldGroup,
4224
+ AdsFieldHeader,
4225
+ AdsFieldItem,
4226
+ AdsFieldLabel,
4227
+ AdsFieldLegend,
4228
+ AdsFieldSeparator,
4229
+ AdsFieldSet,
4230
+ AdsI18nProvider,
4231
+ AdsInput,
4232
+ AdsInputGroup,
4233
+ AdsInputGroupInput,
4234
+ AdsInputGroupTextarea,
4235
+ AdsInputOTP,
4236
+ AdsInputOTPGroup,
4237
+ AdsInputOTPSeparator,
4238
+ AdsInputOTPSlot,
4239
+ AdsPagination,
4240
+ AdsPaginationContent,
4241
+ AdsPaginationEllipsis,
4242
+ AdsPaginationItem,
4243
+ AdsPaginationLink,
4244
+ AdsPaginationNext,
4245
+ AdsPaginationPrevious,
4246
+ AdsPopover,
4247
+ AdsPopoverBody,
4248
+ AdsPopoverContent,
4249
+ AdsPopoverDescription,
4250
+ AdsPopoverHeader,
4251
+ AdsPopoverTitle,
4252
+ AdsPopoverTrigger,
4253
+ AdsProgress,
4254
+ AdsRadioGroup,
4255
+ AdsRadioGroupCardOption,
4256
+ AdsRadioGroupOption,
4257
+ AdsSelect,
4258
+ AdsSelectContent,
4259
+ AdsSelectGroup,
4260
+ AdsSelectItem,
4261
+ AdsSelectLabel,
4262
+ AdsSelectRoot,
4263
+ AdsSelectScrollDownButton,
4264
+ AdsSelectScrollUpButton,
4265
+ AdsSelectSeparator,
4266
+ AdsSelectTrigger,
4267
+ AdsSelectValue,
4268
+ AdsSeparator,
4269
+ AdsSkeleton,
4270
+ AdsSlider,
4271
+ AdsSwitch,
4272
+ AdsTable,
4273
+ AdsTableBody,
4274
+ AdsTableCaption,
4275
+ AdsTableCell,
4276
+ AdsTableFooter,
4277
+ AdsTableHead,
4278
+ AdsTableHeader,
4279
+ AdsTableRow,
4280
+ AdsTabs,
4281
+ AdsTabsContent,
4282
+ AdsTabsList,
4283
+ AdsTabsTrigger,
4284
+ AdsTextarea,
4285
+ AdsToast,
4286
+ AdsToastManager,
4287
+ AdsToaster,
4288
+ AdsToggle,
4289
+ AdsToggleGroup,
4290
+ AdsToggleGroupItem,
4291
+ AdsTooltip,
4292
+ AdsTooltipArrow,
4293
+ AdsTooltipContent,
4294
+ AdsTooltipProvider,
4295
+ AdsTooltipTrigger,
4296
+ adsDefaultMessages,
4297
+ designTokens,
4298
+ useAdsI18n
4299
+ });
4300
+ //# sourceMappingURL=index.cjs.map