@douglasneuroinformatics/libui 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -24,6 +24,7 @@
24
24
 
25
25
  ![license](https://img.shields.io/github/license/DouglasNeuroInformatics/libui)
26
26
  ![version](https://img.shields.io/github/package-json/v/DouglasNeuroInformatics/libui)
27
+ [![codecov](https://codecov.io/gh/DouglasNeuroInformatics/libui/graph/badge.svg?token=t9PkBDS01T)](https://codecov.io/gh/DouglasNeuroInformatics/libui)
27
28
 
28
29
  </div>
29
30
  <hr />
@@ -4,8 +4,12 @@ import { twMerge } from "tailwind-merge";
4
4
  function cn(...inputs) {
5
5
  return twMerge(clsx(inputs));
6
6
  }
7
+ function isBrowser() {
8
+ return typeof window !== "undefined";
9
+ }
7
10
 
8
11
  export {
9
- cn
12
+ cn,
13
+ isBrowser
10
14
  };
11
- //# sourceMappingURL=chunk-57KC6SAE.js.map
15
+ //# sourceMappingURL=chunk-PAAJ5AH3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function isBrowser() {\n return typeof window !== 'undefined';\n}\n"],"mappings":";AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;AAEO,SAAS,YAAY;AAC1B,SAAO,OAAO,WAAW;AAC3B;","names":[]}
@@ -1,10 +1,17 @@
1
- import * as class_variance_authority_types from 'class-variance-authority/types';
2
1
  import * as React from 'react';
3
2
  import React__default from 'react';
4
- import { VariantProps } from 'class-variance-authority';
3
+ import * as _radix_ui_react_accordion from '@radix-ui/react-accordion';
5
4
  import { Simplify } from 'type-fest';
5
+ import * as class_variance_authority_types from 'class-variance-authority/types';
6
+ import { VariantProps } from 'class-variance-authority';
6
7
  import * as LabelPrimitive from '@radix-ui/react-label';
7
8
 
9
+ declare const Accordion: React.ForwardRefExoticComponent<(Omit<_radix_ui_react_accordion.AccordionSingleProps & React.RefAttributes<HTMLDivElement>, "ref"> | Omit<_radix_ui_react_accordion.AccordionMultipleProps & React.RefAttributes<HTMLDivElement>, "ref">) & React.RefAttributes<HTMLDivElement>> & {
10
+ Content: React.ForwardRefExoticComponent<Omit<_radix_ui_react_accordion.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
+ Item: React.ForwardRefExoticComponent<Omit<_radix_ui_react_accordion.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
+ Trigger: React.ForwardRefExoticComponent<Omit<_radix_ui_react_accordion.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
13
+ };
14
+
8
15
  declare const BUTTON_ICON_SIZE: {
9
16
  lg: number;
10
17
  md: number;
@@ -12,7 +19,7 @@ declare const BUTTON_ICON_SIZE: {
12
19
  };
13
20
  declare const buttonVariants: (props?: ({
14
21
  size?: "md" | "icon" | "lg" | "sm" | null | undefined;
15
- variant?: "primary" | "danger" | "ghost" | "link" | "outline" | "secondary" | null | undefined;
22
+ variant?: "link" | "primary" | "danger" | "ghost" | "outline" | "secondary" | null | undefined;
16
23
  } & class_variance_authority_types.ClassProp) | undefined) => string;
17
24
  type ButtonProps = Simplify<React__default.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof buttonVariants> & {
18
25
  asChild?: boolean;
@@ -76,8 +83,9 @@ declare const Button: React__default.ForwardRefExoticComponent<{
76
83
  results?: number | undefined;
77
84
  security?: string | undefined;
78
85
  unselectable?: "on" | "off" | undefined;
79
- inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
86
+ inputMode?: "search" | "text" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
80
87
  is?: string | undefined;
88
+ children?: React__default.ReactNode | Iterable<React__default.ReactNode>;
81
89
  "aria-activedescendant"?: string | undefined;
82
90
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
83
91
  "aria-autocomplete"?: "list" | "none" | "inline" | "both" | undefined;
@@ -90,7 +98,7 @@ declare const Button: React__default.ForwardRefExoticComponent<{
90
98
  "aria-colindextext"?: string | undefined;
91
99
  "aria-colspan"?: number | undefined;
92
100
  "aria-controls"?: string | undefined;
93
- "aria-current"?: boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time" | undefined;
101
+ "aria-current"?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
94
102
  "aria-describedby"?: string | undefined;
95
103
  "aria-description"?: string | undefined;
96
104
  "aria-details"?: string | undefined;
@@ -100,7 +108,7 @@ declare const Button: React__default.ForwardRefExoticComponent<{
100
108
  "aria-expanded"?: (boolean | "true" | "false") | undefined;
101
109
  "aria-flowto"?: string | undefined;
102
110
  "aria-grabbed"?: (boolean | "true" | "false") | undefined;
103
- "aria-haspopup"?: boolean | "true" | "false" | "dialog" | "grid" | "listbox" | "menu" | "tree" | undefined;
111
+ "aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
104
112
  "aria-hidden"?: (boolean | "true" | "false") | undefined;
105
113
  "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
106
114
  "aria-keyshortcuts"?: string | undefined;
@@ -131,7 +139,6 @@ declare const Button: React__default.ForwardRefExoticComponent<{
131
139
  "aria-valuemin"?: number | undefined;
132
140
  "aria-valuenow"?: number | undefined;
133
141
  "aria-valuetext"?: string | undefined;
134
- children?: React__default.ReactNode;
135
142
  dangerouslySetInnerHTML?: {
136
143
  __html: string | TrustedHTML;
137
144
  } | undefined;
@@ -298,14 +305,298 @@ declare const Button: React__default.ForwardRefExoticComponent<{
298
305
  onTransitionEnd?: React__default.TransitionEventHandler<HTMLButtonElement> | undefined;
299
306
  onTransitionEndCapture?: React__default.TransitionEventHandler<HTMLButtonElement> | undefined;
300
307
  size?: "md" | "icon" | "lg" | "sm" | null | undefined;
301
- variant?: "primary" | "danger" | "ghost" | "link" | "outline" | "secondary" | null | undefined;
308
+ variant?: "link" | "primary" | "danger" | "ghost" | "outline" | "secondary" | null | undefined;
302
309
  asChild?: boolean | undefined;
303
310
  label?: string | undefined;
304
311
  } & React__default.RefAttributes<HTMLButtonElement>>;
305
312
 
313
+ type ArrowToggleProps = Simplify<React__default.HTMLAttributes<HTMLButtonElement> & {
314
+ /** Whether or not the arrow is currently toggled */
315
+ isToggled?: boolean;
316
+ /** The starting position of the arrow (i.e., which direction does it point to) */
317
+ position: 'down' | 'left' | 'right' | 'up';
318
+ /** The clockwise rotation of the arrow when toggled (e.g., if the position is 'right' and rotation is 90, the arrow will point down) */
319
+ rotation?: number;
320
+ /** The variant of button to use */
321
+ variant?: Extract<ButtonProps['variant'], 'ghost' | 'outline'>;
322
+ }>;
323
+ declare const ArrowToggle: React__default.ForwardRefExoticComponent<{
324
+ defaultChecked?: boolean | undefined;
325
+ defaultValue?: string | number | readonly string[] | undefined;
326
+ suppressContentEditableWarning?: boolean | undefined;
327
+ suppressHydrationWarning?: boolean | undefined;
328
+ accessKey?: string | undefined;
329
+ autoFocus?: boolean | undefined;
330
+ className?: string | undefined;
331
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
332
+ contextMenu?: string | undefined;
333
+ dir?: string | undefined;
334
+ draggable?: (boolean | "true" | "false") | undefined;
335
+ hidden?: boolean | undefined;
336
+ id?: string | undefined;
337
+ lang?: string | undefined;
338
+ nonce?: string | undefined;
339
+ slot?: string | undefined;
340
+ spellCheck?: (boolean | "true" | "false") | undefined;
341
+ style?: React__default.CSSProperties | undefined;
342
+ tabIndex?: number | undefined;
343
+ title?: string | undefined;
344
+ translate?: "yes" | "no" | undefined;
345
+ radioGroup?: string | undefined;
346
+ role?: React__default.AriaRole | undefined;
347
+ about?: string | undefined;
348
+ content?: string | undefined;
349
+ datatype?: string | undefined;
350
+ inlist?: any;
351
+ prefix?: string | undefined;
352
+ property?: string | undefined;
353
+ rel?: string | undefined;
354
+ resource?: string | undefined;
355
+ rev?: string | undefined;
356
+ typeof?: string | undefined;
357
+ vocab?: string | undefined;
358
+ autoCapitalize?: string | undefined;
359
+ autoCorrect?: string | undefined;
360
+ autoSave?: string | undefined;
361
+ color?: string | undefined;
362
+ itemProp?: string | undefined;
363
+ itemScope?: boolean | undefined;
364
+ itemType?: string | undefined;
365
+ itemID?: string | undefined;
366
+ itemRef?: string | undefined;
367
+ results?: number | undefined;
368
+ security?: string | undefined;
369
+ unselectable?: "on" | "off" | undefined;
370
+ inputMode?: "search" | "text" | "none" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
371
+ is?: string | undefined;
372
+ children?: React__default.ReactNode | Iterable<React__default.ReactNode>;
373
+ "aria-activedescendant"?: string | undefined;
374
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
375
+ "aria-autocomplete"?: "list" | "none" | "inline" | "both" | undefined;
376
+ "aria-braillelabel"?: string | undefined;
377
+ "aria-brailleroledescription"?: string | undefined;
378
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
379
+ "aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
380
+ "aria-colcount"?: number | undefined;
381
+ "aria-colindex"?: number | undefined;
382
+ "aria-colindextext"?: string | undefined;
383
+ "aria-colspan"?: number | undefined;
384
+ "aria-controls"?: string | undefined;
385
+ "aria-current"?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
386
+ "aria-describedby"?: string | undefined;
387
+ "aria-description"?: string | undefined;
388
+ "aria-details"?: string | undefined;
389
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
390
+ "aria-dropeffect"?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
391
+ "aria-errormessage"?: string | undefined;
392
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
393
+ "aria-flowto"?: string | undefined;
394
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
395
+ "aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
396
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
397
+ "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
398
+ "aria-keyshortcuts"?: string | undefined;
399
+ "aria-label"?: string | undefined;
400
+ "aria-labelledby"?: string | undefined;
401
+ "aria-level"?: number | undefined;
402
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
403
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
404
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
405
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
406
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
407
+ "aria-owns"?: string | undefined;
408
+ "aria-placeholder"?: string | undefined;
409
+ "aria-posinset"?: number | undefined;
410
+ "aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
411
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
412
+ "aria-relevant"?: "text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
413
+ "aria-required"?: (boolean | "true" | "false") | undefined;
414
+ "aria-roledescription"?: string | undefined;
415
+ "aria-rowcount"?: number | undefined;
416
+ "aria-rowindex"?: number | undefined;
417
+ "aria-rowindextext"?: string | undefined;
418
+ "aria-rowspan"?: number | undefined;
419
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
420
+ "aria-setsize"?: number | undefined;
421
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
422
+ "aria-valuemax"?: number | undefined;
423
+ "aria-valuemin"?: number | undefined;
424
+ "aria-valuenow"?: number | undefined;
425
+ "aria-valuetext"?: string | undefined;
426
+ dangerouslySetInnerHTML?: {
427
+ __html: string | TrustedHTML;
428
+ } | undefined;
429
+ onCopy?: React__default.ClipboardEventHandler<HTMLButtonElement> | undefined;
430
+ onCopyCapture?: React__default.ClipboardEventHandler<HTMLButtonElement> | undefined;
431
+ onCut?: React__default.ClipboardEventHandler<HTMLButtonElement> | undefined;
432
+ onCutCapture?: React__default.ClipboardEventHandler<HTMLButtonElement> | undefined;
433
+ onPaste?: React__default.ClipboardEventHandler<HTMLButtonElement> | undefined;
434
+ onPasteCapture?: React__default.ClipboardEventHandler<HTMLButtonElement> | undefined;
435
+ onCompositionEnd?: React__default.CompositionEventHandler<HTMLButtonElement> | undefined;
436
+ onCompositionEndCapture?: React__default.CompositionEventHandler<HTMLButtonElement> | undefined;
437
+ onCompositionStart?: React__default.CompositionEventHandler<HTMLButtonElement> | undefined;
438
+ onCompositionStartCapture?: React__default.CompositionEventHandler<HTMLButtonElement> | undefined;
439
+ onCompositionUpdate?: React__default.CompositionEventHandler<HTMLButtonElement> | undefined;
440
+ onCompositionUpdateCapture?: React__default.CompositionEventHandler<HTMLButtonElement> | undefined;
441
+ onFocus?: React__default.FocusEventHandler<HTMLButtonElement> | undefined;
442
+ onFocusCapture?: React__default.FocusEventHandler<HTMLButtonElement> | undefined;
443
+ onBlur?: React__default.FocusEventHandler<HTMLButtonElement> | undefined;
444
+ onBlurCapture?: React__default.FocusEventHandler<HTMLButtonElement> | undefined;
445
+ onChange?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
446
+ onChangeCapture?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
447
+ onBeforeInput?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
448
+ onBeforeInputCapture?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
449
+ onInput?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
450
+ onInputCapture?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
451
+ onReset?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
452
+ onResetCapture?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
453
+ onSubmit?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
454
+ onSubmitCapture?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
455
+ onInvalid?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
456
+ onInvalidCapture?: React__default.FormEventHandler<HTMLButtonElement> | undefined;
457
+ onLoad?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
458
+ onLoadCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
459
+ onError?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
460
+ onErrorCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
461
+ onKeyDown?: React__default.KeyboardEventHandler<HTMLButtonElement> | undefined;
462
+ onKeyDownCapture?: React__default.KeyboardEventHandler<HTMLButtonElement> | undefined;
463
+ onKeyPress?: React__default.KeyboardEventHandler<HTMLButtonElement> | undefined;
464
+ onKeyPressCapture?: React__default.KeyboardEventHandler<HTMLButtonElement> | undefined;
465
+ onKeyUp?: React__default.KeyboardEventHandler<HTMLButtonElement> | undefined;
466
+ onKeyUpCapture?: React__default.KeyboardEventHandler<HTMLButtonElement> | undefined;
467
+ onAbort?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
468
+ onAbortCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
469
+ onCanPlay?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
470
+ onCanPlayCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
471
+ onCanPlayThrough?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
472
+ onCanPlayThroughCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
473
+ onDurationChange?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
474
+ onDurationChangeCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
475
+ onEmptied?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
476
+ onEmptiedCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
477
+ onEncrypted?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
478
+ onEncryptedCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
479
+ onEnded?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
480
+ onEndedCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
481
+ onLoadedData?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
482
+ onLoadedDataCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
483
+ onLoadedMetadata?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
484
+ onLoadedMetadataCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
485
+ onLoadStart?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
486
+ onLoadStartCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
487
+ onPause?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
488
+ onPauseCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
489
+ onPlay?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
490
+ onPlayCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
491
+ onPlaying?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
492
+ onPlayingCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
493
+ onProgress?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
494
+ onProgressCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
495
+ onRateChange?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
496
+ onRateChangeCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
497
+ onResize?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
498
+ onResizeCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
499
+ onSeeked?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
500
+ onSeekedCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
501
+ onSeeking?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
502
+ onSeekingCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
503
+ onStalled?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
504
+ onStalledCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
505
+ onSuspend?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
506
+ onSuspendCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
507
+ onTimeUpdate?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
508
+ onTimeUpdateCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
509
+ onVolumeChange?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
510
+ onVolumeChangeCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
511
+ onWaiting?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
512
+ onWaitingCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
513
+ onAuxClick?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
514
+ onAuxClickCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
515
+ onClick?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
516
+ onClickCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
517
+ onContextMenu?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
518
+ onContextMenuCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
519
+ onDoubleClick?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
520
+ onDoubleClickCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
521
+ onDrag?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
522
+ onDragCapture?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
523
+ onDragEnd?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
524
+ onDragEndCapture?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
525
+ onDragEnter?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
526
+ onDragEnterCapture?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
527
+ onDragExit?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
528
+ onDragExitCapture?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
529
+ onDragLeave?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
530
+ onDragLeaveCapture?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
531
+ onDragOver?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
532
+ onDragOverCapture?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
533
+ onDragStart?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
534
+ onDragStartCapture?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
535
+ onDrop?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
536
+ onDropCapture?: React__default.DragEventHandler<HTMLButtonElement> | undefined;
537
+ onMouseDown?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
538
+ onMouseDownCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
539
+ onMouseEnter?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
540
+ onMouseLeave?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
541
+ onMouseMove?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
542
+ onMouseMoveCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
543
+ onMouseOut?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
544
+ onMouseOutCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
545
+ onMouseOver?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
546
+ onMouseOverCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
547
+ onMouseUp?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
548
+ onMouseUpCapture?: React__default.MouseEventHandler<HTMLButtonElement> | undefined;
549
+ onSelect?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
550
+ onSelectCapture?: React__default.ReactEventHandler<HTMLButtonElement> | undefined;
551
+ onTouchCancel?: React__default.TouchEventHandler<HTMLButtonElement> | undefined;
552
+ onTouchCancelCapture?: React__default.TouchEventHandler<HTMLButtonElement> | undefined;
553
+ onTouchEnd?: React__default.TouchEventHandler<HTMLButtonElement> | undefined;
554
+ onTouchEndCapture?: React__default.TouchEventHandler<HTMLButtonElement> | undefined;
555
+ onTouchMove?: React__default.TouchEventHandler<HTMLButtonElement> | undefined;
556
+ onTouchMoveCapture?: React__default.TouchEventHandler<HTMLButtonElement> | undefined;
557
+ onTouchStart?: React__default.TouchEventHandler<HTMLButtonElement> | undefined;
558
+ onTouchStartCapture?: React__default.TouchEventHandler<HTMLButtonElement> | undefined;
559
+ onPointerDown?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
560
+ onPointerDownCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
561
+ onPointerMove?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
562
+ onPointerMoveCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
563
+ onPointerUp?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
564
+ onPointerUpCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
565
+ onPointerCancel?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
566
+ onPointerCancelCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
567
+ onPointerEnter?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
568
+ onPointerEnterCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
569
+ onPointerLeave?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
570
+ onPointerLeaveCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
571
+ onPointerOver?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
572
+ onPointerOverCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
573
+ onPointerOut?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
574
+ onPointerOutCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
575
+ onGotPointerCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
576
+ onGotPointerCaptureCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
577
+ onLostPointerCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
578
+ onLostPointerCaptureCapture?: React__default.PointerEventHandler<HTMLButtonElement> | undefined;
579
+ onScroll?: React__default.UIEventHandler<HTMLButtonElement> | undefined;
580
+ onScrollCapture?: React__default.UIEventHandler<HTMLButtonElement> | undefined;
581
+ onWheel?: React__default.WheelEventHandler<HTMLButtonElement> | undefined;
582
+ onWheelCapture?: React__default.WheelEventHandler<HTMLButtonElement> | undefined;
583
+ onAnimationStart?: React__default.AnimationEventHandler<HTMLButtonElement> | undefined;
584
+ onAnimationStartCapture?: React__default.AnimationEventHandler<HTMLButtonElement> | undefined;
585
+ onAnimationEnd?: React__default.AnimationEventHandler<HTMLButtonElement> | undefined;
586
+ onAnimationEndCapture?: React__default.AnimationEventHandler<HTMLButtonElement> | undefined;
587
+ onAnimationIteration?: React__default.AnimationEventHandler<HTMLButtonElement> | undefined;
588
+ onAnimationIterationCapture?: React__default.AnimationEventHandler<HTMLButtonElement> | undefined;
589
+ onTransitionEnd?: React__default.TransitionEventHandler<HTMLButtonElement> | undefined;
590
+ onTransitionEndCapture?: React__default.TransitionEventHandler<HTMLButtonElement> | undefined;
591
+ isToggled?: boolean | undefined;
592
+ position: 'down' | 'left' | 'right' | 'up';
593
+ rotation?: number | undefined;
594
+ variant?: "ghost" | "outline" | undefined;
595
+ } & React__default.RefAttributes<HTMLButtonElement>>;
596
+
306
597
  type InputProps = React.InputHTMLAttributes<HTMLInputElement>;
307
598
  declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
308
599
 
309
600
  declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: class_variance_authority_types.ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
310
601
 
311
- export { BUTTON_ICON_SIZE, Button, type ButtonProps, Input, type InputProps, Label, buttonVariants };
602
+ export { Accordion, ArrowToggle, type ArrowToggleProps, BUTTON_ICON_SIZE, Button, type ButtonProps, Input, type InputProps, Label, buttonVariants };
@@ -1,12 +1,78 @@
1
1
  import {
2
2
  cn
3
- } from "../chunk-57KC6SAE.js";
3
+ } from "../chunk-PAAJ5AH3.js";
4
+
5
+ // src/components/Accordion/AccordionContent.tsx
6
+ import * as React from "react";
7
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
8
+ import { jsx } from "react/jsx-runtime";
9
+ var AccordionContent = React.forwardRef(function AccordionContent2({ children, className, ...props }, ref) {
10
+ return /* @__PURE__ */ jsx(
11
+ AccordionPrimitive.Content,
12
+ {
13
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
14
+ ref,
15
+ ...props,
16
+ children: /* @__PURE__ */ jsx("div", { className: cn("pb-4 pt-0", className), children })
17
+ }
18
+ );
19
+ });
20
+
21
+ // src/components/Accordion/AccordionItem.tsx
22
+ import * as React2 from "react";
23
+ import * as AccordionPrimitive2 from "@radix-ui/react-accordion";
24
+ import { jsx as jsx2 } from "react/jsx-runtime";
25
+ var AccordionItem = React2.forwardRef(function AccordionItem2({ className, ...props }, ref) {
26
+ return /* @__PURE__ */ jsx2(AccordionPrimitive2.Item, { className: cn("border-b", className), ref, ...props });
27
+ });
28
+
29
+ // src/components/Accordion/AccordionRoot.tsx
30
+ import * as React3 from "react";
31
+ import * as AccordionPrimitive3 from "@radix-ui/react-accordion";
32
+ import { jsx as jsx3 } from "react/jsx-runtime";
33
+ var AccordionRoot = React3.forwardRef(function AccordionRoot2(props, ref) {
34
+ return /* @__PURE__ */ jsx3(AccordionPrimitive3.Root, { "data-testid": "accordion", ref, ...props });
35
+ });
36
+
37
+ // src/components/Accordion/AccordionTrigger.tsx
38
+ import * as React4 from "react";
39
+ import * as AccordionPrimitive4 from "@radix-ui/react-accordion";
40
+ import { ChevronDownIcon } from "@radix-ui/react-icons";
41
+ import { jsx as jsx4, jsxs } from "react/jsx-runtime";
42
+ var AccordionTrigger = React4.forwardRef(function AccordionTrigger2({ children, className, ...props }, ref) {
43
+ return /* @__PURE__ */ jsx4(AccordionPrimitive4.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
44
+ AccordionPrimitive4.Trigger,
45
+ {
46
+ className: cn(
47
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
48
+ className
49
+ ),
50
+ ref,
51
+ ...props,
52
+ children: [
53
+ children,
54
+ /* @__PURE__ */ jsx4(ChevronDownIcon, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
55
+ ]
56
+ }
57
+ ) });
58
+ });
59
+
60
+ // src/components/Accordion/Accordion.tsx
61
+ var Accordion = Object.assign(AccordionRoot, {
62
+ Content: AccordionContent,
63
+ Item: AccordionItem,
64
+ Trigger: AccordionTrigger
65
+ });
66
+
67
+ // src/components/ArrowToggle/ArrowToggle.tsx
68
+ import React6, { useMemo } from "react";
69
+ import { ChevronUpIcon } from "@radix-ui/react-icons";
4
70
 
5
71
  // src/components/Button/Button.tsx
6
- import React from "react";
7
- import { Slot } from "@radix-ui/react-slot";
72
+ import React5 from "react";
73
+ import { Slot, Slottable } from "@radix-ui/react-slot";
8
74
  import { cva } from "class-variance-authority";
9
- import { jsxs } from "react/jsx-runtime";
75
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
10
76
  var BUTTON_ICON_SIZE = {
11
77
  lg: 18,
12
78
  md: 16,
@@ -37,25 +103,64 @@ var buttonVariants = cva(
37
103
  }
38
104
  }
39
105
  );
40
- var Button = React.forwardRef(function Button2({ asChild = false, children, className, label, size = "md", variant = "primary", ...props }, ref) {
106
+ var Button = React5.forwardRef(function Button2({ asChild, children, className, label, size = "md", variant = "primary", ...props }, ref) {
41
107
  const Comp = asChild ? Slot : "button";
42
- return /* @__PURE__ */ jsxs(Comp, { className: cn(buttonVariants({ className, size, variant })), ref, ...props, children: [
108
+ return /* @__PURE__ */ jsxs2(Comp, { className: cn(buttonVariants({ className, size, variant })), ref, ...props, children: [
43
109
  label,
44
- children
110
+ /* @__PURE__ */ jsx5(Slottable, { children })
45
111
  ] });
46
112
  });
47
113
 
114
+ // src/components/ArrowToggle/ArrowToggle.tsx
115
+ import { jsx as jsx6 } from "react/jsx-runtime";
116
+ var ArrowToggle = React6.forwardRef(function ArrowToggle2({ className, isToggled, position, rotation = 0, variant = "ghost", ...props }, ref) {
117
+ const computedRotation = useMemo(() => {
118
+ const toggleRotation = isToggled ? rotation : 0;
119
+ switch (position) {
120
+ case "up":
121
+ return 0 + toggleRotation;
122
+ case "right":
123
+ return 90 + toggleRotation;
124
+ case "down":
125
+ return 180 + toggleRotation;
126
+ case "left":
127
+ return 270 + toggleRotation;
128
+ }
129
+ }, [position, rotation, isToggled]);
130
+ return /* @__PURE__ */ jsx6(
131
+ Button,
132
+ {
133
+ className: cn("h-6 w-6", className),
134
+ "data-testid": "arrow-toggle",
135
+ ref,
136
+ size: "icon",
137
+ type: "button",
138
+ variant,
139
+ ...props,
140
+ children: /* @__PURE__ */ jsx6(
141
+ ChevronUpIcon,
142
+ {
143
+ className: "transform-gpu transition-transform",
144
+ "data-testid": "arrow-up-icon",
145
+ style: { transform: `rotate(${computedRotation}deg)` }
146
+ }
147
+ )
148
+ }
149
+ );
150
+ });
151
+
48
152
  // src/components/Input/Input.tsx
49
- import * as React2 from "react";
50
- import { jsx } from "react/jsx-runtime";
51
- var Input = React2.forwardRef(function Input2({ className, type, ...props }, ref) {
52
- return /* @__PURE__ */ jsx(
153
+ import * as React7 from "react";
154
+ import { jsx as jsx7 } from "react/jsx-runtime";
155
+ var Input = React7.forwardRef(function Input2({ className, type, ...props }, ref) {
156
+ return /* @__PURE__ */ jsx7(
53
157
  "input",
54
158
  {
55
159
  className: cn(
56
160
  "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
57
161
  className
58
162
  ),
163
+ "data-testid": "input",
59
164
  ref,
60
165
  type,
61
166
  ...props
@@ -64,15 +169,17 @@ var Input = React2.forwardRef(function Input2({ className, type, ...props }, ref
64
169
  });
65
170
 
66
171
  // src/components/Label/Label.tsx
67
- import * as React3 from "react";
172
+ import * as React8 from "react";
68
173
  import * as LabelPrimitive from "@radix-ui/react-label";
69
174
  import { cva as cva2 } from "class-variance-authority";
70
- import { jsx as jsx2 } from "react/jsx-runtime";
175
+ import { jsx as jsx8 } from "react/jsx-runtime";
71
176
  var labelVariants = cva2("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
72
- var Label = React3.forwardRef(function Label2({ className, ...props }, ref) {
73
- return /* @__PURE__ */ jsx2(LabelPrimitive.Root, { className: cn(labelVariants(), className), ref, ...props });
177
+ var Label = React8.forwardRef(function Label2({ className, ...props }, ref) {
178
+ return /* @__PURE__ */ jsx8(LabelPrimitive.Root, { className: cn(labelVariants(), className), ref, ...props });
74
179
  });
75
180
  export {
181
+ Accordion,
182
+ ArrowToggle,
76
183
  BUTTON_ICON_SIZE,
77
184
  Button,
78
185
  Input,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Button/Button.tsx","../../src/components/Input/Input.tsx","../../src/components/Label/Label.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nexport const BUTTON_ICON_SIZE = {\n lg: 18,\n md: 16,\n sm: 14\n};\n\nexport const buttonVariants = cva(\n 'flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n defaultVariants: {\n size: 'md',\n variant: 'primary'\n },\n variants: {\n size: {\n icon: 'h-9 w-9',\n lg: 'h-10 rounded-md px-8',\n md: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs'\n },\n variant: {\n danger: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n outline: 'border border-input bg-inherit shadow-sm',\n primary: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n secondary: 'bg-secondary border text-secondary-foreground shadow-sm hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type ButtonProps = Simplify<\n React.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n /** @deprecated - use children */\n label?: string;\n }\n>;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { asChild = false, children, className, label, size = 'md', variant = 'primary', ...props },\n ref\n) {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp className={cn(buttonVariants({ className, size, variant }))} ref={ref} {...props}>\n {label}\n {children}\n </Comp>\n );\n});\n","import * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(function Input({ className, type, ...props }, ref) {\n return (\n <input\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n ref={ref}\n type={type}\n {...props}\n />\n );\n});\n","import * as React from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nconst labelVariants = cva('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70');\n\nexport const Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(function Label({ className, ...props }, ref) {\n return <LabelPrimitive.Root className={cn(labelVariants(), className)} ref={ref} {...props} />;\n});\n"],"mappings":";;;;;AAAA,OAAO,WAAW;AAElB,SAAS,YAAY;AACrB,SAA4B,WAAW;AAoDnC;AA/CG,IAAM,mBAAmB;AAAA,EAC9B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAWO,IAAM,SAAS,MAAM,WAA2C,SAASA,QAC9E,EAAE,UAAU,OAAO,UAAU,WAAW,OAAO,OAAO,MAAM,UAAU,WAAW,GAAG,MAAM,GAC1F,KACA;AACA,QAAM,OAAO,UAAU,OAAO;AAC9B,SACE,qBAAC,QAAK,WAAW,GAAG,eAAe,EAAE,WAAW,MAAM,QAAQ,CAAC,CAAC,GAAG,KAAW,GAAG,OAC9E;AAAA;AAAA,IACA;AAAA,KACH;AAEJ,CAAC;;;AC5DD,YAAYC,YAAW;AAQnB;AAFG,IAAM,QAAc,kBAAyC,SAASC,OAAM,EAAE,WAAW,MAAM,GAAG,MAAM,GAAG,KAAK;AACrH,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;;;AClBD,YAAYC,YAAW;AAEvB,YAAY,oBAAoB;AAChC,SAA4B,OAAAC,YAAW;AAU9B,gBAAAC,YAAA;AANT,IAAM,gBAAgBC,KAAI,4FAA4F;AAE/G,IAAM,QAAc,kBAGzB,SAASC,OAAM,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAC7C,SAAO,gBAAAF,KAAgB,qBAAf,EAAoB,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,KAAW,GAAG,OAAO;AAC9F,CAAC;","names":["Button","React","Input","React","cva","jsx","cva","Label"]}
1
+ {"version":3,"sources":["../../src/components/Accordion/AccordionContent.tsx","../../src/components/Accordion/AccordionItem.tsx","../../src/components/Accordion/AccordionRoot.tsx","../../src/components/Accordion/AccordionTrigger.tsx","../../src/components/Accordion/Accordion.tsx","../../src/components/ArrowToggle/ArrowToggle.tsx","../../src/components/Button/Button.tsx","../../src/components/Input/Input.tsx","../../src/components/Label/Label.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(function AccordionContent({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Content\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n ref={ref}\n {...props}\n >\n <div className={cn('pb-4 pt-0', className)}>{children}</div>\n </AccordionPrimitive.Content>\n );\n});\n","import * as React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nimport { cn } from '@/utils';\n\nexport const AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(function AccordionItem({ className, ...props }, ref) {\n return <AccordionPrimitive.Item className={cn('border-b', className)} ref={ref} {...props} />;\n});\n","import * as React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\n\nexport const AccordionRoot = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>\n>(function AccordionRoot(props, ref) {\n return <AccordionPrimitive.Root data-testid=\"accordion\" ref={ref} {...props} />;\n});\n","import * as React from 'react';\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDownIcon } from '@radix-ui/react-icons';\n\nimport { cn } from '@/utils';\n\nexport const AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(function AccordionTrigger({ children, className, ...props }, ref) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className={cn(\n 'flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n <ChevronDownIcon className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n});\n","import { AccordionContent } from './AccordionContent';\nimport { AccordionItem } from './AccordionItem';\nimport { AccordionRoot } from './AccordionRoot';\nimport { AccordionTrigger } from './AccordionTrigger';\n\nexport const Accordion = Object.assign(AccordionRoot, {\n Content: AccordionContent,\n Item: AccordionItem,\n Trigger: AccordionTrigger\n});\n","import React, { useMemo } from 'react';\n\nimport { ChevronUpIcon } from '@radix-ui/react-icons';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nimport { Button, type ButtonProps } from '../Button';\n\nexport type ArrowToggleProps = Simplify<\n React.HTMLAttributes<HTMLButtonElement> & {\n /** Whether or not the arrow is currently toggled */\n isToggled?: boolean;\n\n /** The starting position of the arrow (i.e., which direction does it point to) */\n position: 'down' | 'left' | 'right' | 'up';\n\n /** The clockwise rotation of the arrow when toggled (e.g., if the position is 'right' and rotation is 90, the arrow will point down) */\n rotation?: number;\n\n /** The variant of button to use */\n variant?: Extract<ButtonProps['variant'], 'ghost' | 'outline'>;\n }\n>;\n\nexport const ArrowToggle = React.forwardRef<HTMLButtonElement, ArrowToggleProps>(function ArrowToggle(\n { className, isToggled, position, rotation = 0, variant = 'ghost', ...props },\n ref\n) {\n const computedRotation = useMemo(() => {\n const toggleRotation = isToggled ? rotation : 0;\n switch (position) {\n case 'up':\n return 0 + toggleRotation;\n case 'right':\n return 90 + toggleRotation;\n case 'down':\n return 180 + toggleRotation;\n case 'left':\n return 270 + toggleRotation;\n }\n }, [position, rotation, isToggled]);\n\n return (\n <Button\n className={cn('h-6 w-6', className)}\n data-testid=\"arrow-toggle\"\n ref={ref}\n size=\"icon\"\n type=\"button\"\n variant={variant}\n {...props}\n >\n <ChevronUpIcon\n className=\"transform-gpu transition-transform\"\n data-testid=\"arrow-up-icon\"\n style={{ transform: `rotate(${computedRotation}deg)` }}\n />\n </Button>\n );\n});\n","import React from 'react';\n\nimport { Slot, Slottable } from '@radix-ui/react-slot';\nimport { type VariantProps, cva } from 'class-variance-authority';\nimport type { Simplify } from 'type-fest';\n\nimport { cn } from '@/utils';\n\nexport const BUTTON_ICON_SIZE = {\n lg: 18,\n md: 16,\n sm: 14\n};\n\nexport const buttonVariants = cva(\n 'flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n defaultVariants: {\n size: 'md',\n variant: 'primary'\n },\n variants: {\n size: {\n icon: 'h-9 w-9',\n lg: 'h-10 rounded-md px-8',\n md: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs'\n },\n variant: {\n danger: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n outline: 'border border-input bg-inherit shadow-sm',\n primary: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n secondary: 'bg-secondary border text-secondary-foreground shadow-sm hover:bg-secondary/80'\n }\n }\n }\n);\n\nexport type ButtonProps = Simplify<\n React.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n /** @deprecated - use children */\n label?: string;\n }\n>;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { asChild, children, className, label, size = 'md', variant = 'primary', ...props },\n ref\n) {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp className={cn(buttonVariants({ className, size, variant }))} ref={ref} {...props}>\n {label}\n <Slottable>{children}</Slottable>\n </Comp>\n );\n});\n","import * as React from 'react';\n\nimport { cn } from '@/utils';\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(function Input({ className, type, ...props }, ref) {\n return (\n <input\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n data-testid=\"input\"\n ref={ref}\n type={type}\n {...props}\n />\n );\n});\n","import * as React from 'react';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nconst labelVariants = cva('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70');\n\nexport const Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(function Label({ className, ...props }, ref) {\n return <LabelPrimitive.Root className={cn(labelVariants(), className)} ref={ref} {...props} />;\n});\n"],"mappings":";;;;;AAAA,YAAY,WAAW;AAEvB,YAAY,wBAAwB;AAc9B;AAVC,IAAM,mBAAyB,iBAGpC,SAASA,kBAAiB,EAAE,UAAU,WAAW,GAAG,MAAM,GAAG,KAAK;AAClE,SACE;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,WAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA,MAEJ,8BAAC,SAAI,WAAW,GAAG,aAAa,SAAS,GAAI,UAAS;AAAA;AAAA,EACxD;AAEJ,CAAC;;;ACnBD,YAAYC,YAAW;AAEvB,YAAYC,yBAAwB;AAQ3B,gBAAAC,YAAA;AAJF,IAAM,gBAAsB,kBAGjC,SAASC,eAAc,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AACrD,SAAO,gBAAAD,KAAoB,0BAAnB,EAAwB,WAAW,GAAG,YAAY,SAAS,GAAG,KAAW,GAAG,OAAO;AAC7F,CAAC;;;ACXD,YAAYE,YAAW;AAEvB,YAAYC,yBAAwB;AAM3B,gBAAAC,YAAA;AAJF,IAAM,gBAAsB,kBAGjC,SAASC,eAAc,OAAO,KAAK;AACnC,SAAO,gBAAAD,KAAoB,0BAAnB,EAAwB,eAAY,aAAY,KAAW,GAAG,OAAO;AAC/E,CAAC;;;ACTD,YAAYE,YAAW;AAEvB,YAAYC,yBAAwB;AACpC,SAAS,uBAAuB;AAU1B,SASE,OAAAC,MATF;AANC,IAAM,mBAAyB,kBAGpC,SAASC,kBAAiB,EAAE,UAAU,WAAW,GAAG,MAAM,GAAG,KAAK;AAClE,SACE,gBAAAD,KAAoB,4BAAnB,EAA0B,WAAU,QACnC;AAAA,IAAoB;AAAA,IAAnB;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,gBAAAA,KAAC,mBAAgB,WAAU,4EAA2E;AAAA;AAAA;AAAA,EACxG,GACF;AAEJ,CAAC;;;ACrBM,IAAM,YAAY,OAAO,OAAO,eAAe;AAAA,EACpD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AACX,CAAC;;;ACTD,OAAOE,UAAS,eAAe;AAE/B,SAAS,qBAAqB;;;ACF9B,OAAOC,YAAW;AAElB,SAAS,MAAM,iBAAiB;AAChC,SAA4B,WAAW;AAoDnC,SAEE,OAAAC,MAFF,QAAAC,aAAA;AA/CG,IAAM,mBAAmB;AAAA,EAC9B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MACA,SAAS;AAAA,QACP,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;AAWO,IAAM,SAASC,OAAM,WAA2C,SAASC,QAC9E,EAAE,SAAS,UAAU,WAAW,OAAO,OAAO,MAAM,UAAU,WAAW,GAAG,MAAM,GAClF,KACA;AACA,QAAM,OAAO,UAAU,OAAO;AAC9B,SACE,gBAAAF,MAAC,QAAK,WAAW,GAAG,eAAe,EAAE,WAAW,MAAM,QAAQ,CAAC,CAAC,GAAG,KAAW,GAAG,OAC9E;AAAA;AAAA,IACD,gBAAAD,KAAC,aAAW,UAAS;AAAA,KACvB;AAEJ,CAAC;;;ADPK,gBAAAI,YAAA;AA5BC,IAAM,cAAcC,OAAM,WAAgD,SAASC,aACxF,EAAE,WAAW,WAAW,UAAU,WAAW,GAAG,UAAU,SAAS,GAAG,MAAM,GAC5E,KACA;AACA,QAAM,mBAAmB,QAAQ,MAAM;AACrC,UAAM,iBAAiB,YAAY,WAAW;AAC9C,YAAQ,UAAU;AAAA,MAChB,KAAK;AACH,eAAO,IAAI;AAAA,MACb,KAAK;AACH,eAAO,KAAK;AAAA,MACd,KAAK;AACH,eAAO,MAAM;AAAA,MACf,KAAK;AACH,eAAO,MAAM;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,UAAU,UAAU,SAAS,CAAC;AAElC,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,WAAW,SAAS;AAAA,MAClC,eAAY;AAAA,MACZ;AAAA,MACA,MAAK;AAAA,MACL,MAAK;AAAA,MACL;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,eAAY;AAAA,UACZ,OAAO,EAAE,WAAW,UAAU,gBAAgB,OAAO;AAAA;AAAA,MACvD;AAAA;AAAA,EACF;AAEJ,CAAC;;;AE5DD,YAAYG,YAAW;AAQnB,gBAAAC,YAAA;AAFG,IAAM,QAAc,kBAAyC,SAASC,OAAM,EAAE,WAAW,MAAM,GAAG,MAAM,GAAG,KAAK;AACrH,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,eAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;;;ACnBD,YAAYE,YAAW;AAEvB,YAAY,oBAAoB;AAChC,SAA4B,OAAAC,YAAW;AAU9B,gBAAAC,YAAA;AANT,IAAM,gBAAgBC,KAAI,4FAA4F;AAE/G,IAAM,QAAc,kBAGzB,SAASC,OAAM,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK;AAC7C,SAAO,gBAAAF,KAAgB,qBAAf,EAAoB,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,KAAW,GAAG,OAAO;AAC9F,CAAC;","names":["AccordionContent","React","AccordionPrimitive","jsx","AccordionItem","React","AccordionPrimitive","jsx","AccordionRoot","React","AccordionPrimitive","jsx","AccordionTrigger","React","React","jsx","jsxs","React","Button","jsx","React","ArrowToggle","React","jsx","Input","React","cva","jsx","cva","Label"]}