@rfdtech/components 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +194 -17
  2. package/dist/components/draggable/Draggable.d.ts +5 -0
  3. package/dist/components/draggable/Draggable.d.ts.map +1 -0
  4. package/dist/components/draggable/Draggable.test.d.ts +2 -0
  5. package/dist/components/draggable/Draggable.test.d.ts.map +1 -0
  6. package/dist/components/draggable/DraggableContext.d.ts +16 -0
  7. package/dist/components/draggable/DraggableContext.d.ts.map +1 -0
  8. package/dist/components/draggable/hooks/clampPosition.d.ts +10 -0
  9. package/dist/components/draggable/hooks/clampPosition.d.ts.map +1 -0
  10. package/dist/components/draggable/hooks/clampPosition.test.d.ts +2 -0
  11. package/dist/components/draggable/hooks/clampPosition.test.d.ts.map +1 -0
  12. package/dist/components/draggable/hooks/useDraggable.d.ts +3 -0
  13. package/dist/components/draggable/hooks/useDraggable.d.ts.map +1 -0
  14. package/dist/components/draggable/index.d.ts +6 -0
  15. package/dist/components/draggable/index.d.ts.map +1 -0
  16. package/dist/components/field/Field.d.ts +8 -0
  17. package/dist/components/field/Field.d.ts.map +1 -0
  18. package/dist/components/field/Field.test.d.ts +2 -0
  19. package/dist/components/field/Field.test.d.ts.map +1 -0
  20. package/dist/components/field/FieldContext.d.ts +4 -0
  21. package/dist/components/field/FieldContext.d.ts.map +1 -0
  22. package/dist/components/field/index.d.ts +3 -0
  23. package/dist/components/field/index.d.ts.map +1 -0
  24. package/dist/components/form/Form.d.ts +6 -0
  25. package/dist/components/form/Form.d.ts.map +1 -0
  26. package/dist/components/form/Form.test.d.ts +2 -0
  27. package/dist/components/form/Form.test.d.ts.map +1 -0
  28. package/dist/components/form/FormFieldContext.d.ts +5 -0
  29. package/dist/components/form/FormFieldContext.d.ts.map +1 -0
  30. package/dist/components/form/index.d.ts +3 -0
  31. package/dist/components/form/index.d.ts.map +1 -0
  32. package/dist/components/input/Input.d.ts +4 -0
  33. package/dist/components/input/Input.d.ts.map +1 -0
  34. package/dist/components/input/Input.test.d.ts +2 -0
  35. package/dist/components/input/Input.test.d.ts.map +1 -0
  36. package/dist/components/input/index.d.ts +3 -0
  37. package/dist/components/input/index.d.ts.map +1 -0
  38. package/dist/components/sortable/Sortable.d.ts +7 -0
  39. package/dist/components/sortable/Sortable.d.ts.map +1 -0
  40. package/dist/components/sortable/Sortable.test.d.ts +2 -0
  41. package/dist/components/sortable/Sortable.test.d.ts.map +1 -0
  42. package/dist/components/sortable/SortableContext.d.ts +32 -0
  43. package/dist/components/sortable/SortableContext.d.ts.map +1 -0
  44. package/dist/components/sortable/hooks/useSortableDragEnd.d.ts +3 -0
  45. package/dist/components/sortable/hooks/useSortableDragEnd.d.ts.map +1 -0
  46. package/dist/components/sortable/hooks/useSortableDragEnd.test.d.ts +2 -0
  47. package/dist/components/sortable/hooks/useSortableDragEnd.test.d.ts.map +1 -0
  48. package/dist/components/sortable/index.d.ts +4 -0
  49. package/dist/components/sortable/index.d.ts.map +1 -0
  50. package/dist/components/textarea/Textarea.d.ts +4 -0
  51. package/dist/components/textarea/Textarea.d.ts.map +1 -0
  52. package/dist/components/textarea/Textarea.test.d.ts +2 -0
  53. package/dist/components/textarea/Textarea.test.d.ts.map +1 -0
  54. package/dist/components/textarea/index.d.ts +3 -0
  55. package/dist/components/textarea/index.d.ts.map +1 -0
  56. package/dist/components/toast/Toast.test.d.ts +2 -0
  57. package/dist/components/toast/Toast.test.d.ts.map +1 -0
  58. package/dist/components/toast/ToastProvider.d.ts +4 -0
  59. package/dist/components/toast/ToastProvider.d.ts.map +1 -0
  60. package/dist/components/toast/Toaster.d.ts +4 -0
  61. package/dist/components/toast/Toaster.d.ts.map +1 -0
  62. package/dist/components/toast/hooks/useToast.d.ts +3 -0
  63. package/dist/components/toast/hooks/useToast.d.ts.map +1 -0
  64. package/dist/components/toast/index.d.ts +5 -0
  65. package/dist/components/toast/index.d.ts.map +1 -0
  66. package/dist/index.cjs +57 -48
  67. package/dist/index.css +1 -1
  68. package/dist/index.d.ts +8 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +11708 -7153
  71. package/dist/types/draggable.d.ts +49 -0
  72. package/dist/types/draggable.d.ts.map +1 -0
  73. package/dist/types/field.d.ts +45 -0
  74. package/dist/types/field.d.ts.map +1 -0
  75. package/dist/types/form.d.ts +23 -0
  76. package/dist/types/form.d.ts.map +1 -0
  77. package/dist/types/input.d.ts +10 -0
  78. package/dist/types/input.d.ts.map +1 -0
  79. package/dist/types/sortable.d.ts +36 -0
  80. package/dist/types/sortable.d.ts.map +1 -0
  81. package/dist/types/textarea.d.ts +10 -0
  82. package/dist/types/textarea.d.ts.map +1 -0
  83. package/dist/types/toast.d.ts +52 -0
  84. package/dist/types/toast.d.ts.map +1 -0
  85. package/dist/utils/slot.d.ts +7 -0
  86. package/dist/utils/slot.d.ts.map +1 -0
  87. package/package.json +24 -3
package/README.md CHANGED
@@ -173,7 +173,7 @@ Four-step modal wizard for importing spreadsheet data (.xlsx, .xls, .csv). Parsi
173
173
  ### Usage
174
174
 
175
175
  ```tsx
176
- import { BulkImportModal } from "@rfdtech/components";
176
+ import { BulkImportModal, useModalSearchParam } from "@rfdtech/components";
177
177
 
178
178
  const fields = [
179
179
  { key: "email", label: "Email", required: true },
@@ -181,13 +181,18 @@ const fields = [
181
181
  { key: "student_id", label: "Student ID" },
182
182
  ];
183
183
 
184
+ const { open, onOpenChange, openWith } = useModalSearchParam("bulk-import");
185
+
186
+ <button type="button" onClick={() => openWith()}>Import students</button>
187
+
184
188
  <BulkImportModal
185
189
  open={open}
186
- onOpenChange={setOpen}
190
+ onOpenChange={onOpenChange}
187
191
  title="Import students"
188
192
  fields={fields}
189
193
  onComplete={(result) => {
190
194
  console.log(result.rows, result.errors);
195
+ onOpenChange(false);
191
196
  }}
192
197
  />
193
198
  ```
@@ -380,7 +385,7 @@ import {
380
385
  CommandItem,
381
386
  CommandList,
382
387
  CommandShortcut,
383
- useCommandShortcut,
388
+ useDialogSearchParam,
384
389
  } from "@rfdtech/components";
385
390
 
386
391
  <Command label="Field picker">
@@ -395,7 +400,11 @@ import {
395
400
  </CommandList>
396
401
  </Command>
397
402
 
398
- <CommandDialog open={open} onOpenChange={setOpen} shortcut label="Command menu">
403
+ const { open, onOpenChange, openWith } = useDialogSearchParam("command-menu");
404
+
405
+ <Button onClick={() => openWith()}>Open command menu</Button>
406
+
407
+ <CommandDialog open={open} onOpenChange={onOpenChange} shortcut label="Command menu">
399
408
  <CommandInput placeholder="Type a command..." />
400
409
  <CommandList>
401
410
  <CommandItem onSelect={() => go("/dashboard")}>Dashboard</CommandItem>
@@ -457,6 +466,89 @@ import { Dropdown } from "@rfdtech/components";
457
466
  Props: `value`, `onValueChange`, `options`, `placeholder`, `clearable`, `disabled`, `aria-label`, `classNames`, `className`. Exported types: `DropdownProps`, `DropdownOption`, `DropdownClassNames`.
458
467
 
459
468
 
469
+ ## Form
470
+
471
+ Field, Input, and Textarea primitives for accessible form layouts. See the [Form](/docs/form) docs page for props and exported types.
472
+
473
+ ```tsx
474
+ import {
475
+ Field,
476
+ FieldControl,
477
+ FieldDescription,
478
+ FieldLabel,
479
+ Input,
480
+ Textarea,
481
+ } from "@rfdtech/components";
482
+
483
+ <Field>
484
+ <FieldLabel>Email</FieldLabel>
485
+ <FieldControl>
486
+ <Input type="email" placeholder="you@example.com" />
487
+ </FieldControl>
488
+ <FieldDescription>We will never share your email.</FieldDescription>
489
+ </Field>
490
+ ```
491
+
492
+ Exports: `Field`, `FieldLabel`, `FieldDescription`, `FieldError`, `FieldControl`, `Input`, `Textarea`. Types: `FieldProps`, `FieldClassNames`, `InputProps`, `TextareaProps`.
493
+
494
+
495
+ ## FormField
496
+
497
+ react-hook-form adapters with Zod validation support. See the [FormField](/docs/form-field) docs page for props and exported types.
498
+
499
+ ```bash
500
+ npm install react-hook-form zod @hookform/resolvers
501
+ ```
502
+
503
+ ```tsx
504
+ import { zodResolver } from "@hookform/resolvers/zod";
505
+ import { useForm } from "react-hook-form";
506
+ import { z } from "zod";
507
+ import {
508
+ Button,
509
+ Field,
510
+ FieldControl,
511
+ FieldError,
512
+ FieldLabel,
513
+ Form,
514
+ FormField,
515
+ Input,
516
+ } from "@rfdtech/components";
517
+
518
+ const formSchema = z.object({
519
+ email: z.string().min(1, "Email is required").email("Enter a valid email address"),
520
+ });
521
+
522
+ type FormValues = z.infer<typeof formSchema>;
523
+
524
+ const form = useForm<FormValues>({
525
+ resolver: zodResolver(formSchema),
526
+ defaultValues: { email: "" },
527
+ });
528
+
529
+ <Form {...form}>
530
+ <form onSubmit={form.handleSubmit(onSubmit)}>
531
+ <FormField
532
+ control={form.control}
533
+ name="email"
534
+ render={({ field, fieldState }) => (
535
+ <Field invalid={!!fieldState.error}>
536
+ <FieldLabel>Email</FieldLabel>
537
+ <FieldControl>
538
+ <Input type="email" {...field} />
539
+ </FieldControl>
540
+ <FieldError>{fieldState.error?.message}</FieldError>
541
+ </Field>
542
+ )}
543
+ />
544
+ <Button type="submit">Save</Button>
545
+ </form>
546
+ </Form>
547
+ ```
548
+
549
+ Exports: `Form`, `FormField`, `useFormField`. Types: `FormProps`, `FormFieldProps`, `UseFormFieldReturn`.
550
+
551
+
460
552
  ## Dialog
461
553
 
462
554
  Compound dialog primitives for modal overlays. See the [Dialog](/docs/dialog) docs page for props and exported types.
@@ -470,18 +562,25 @@ import {
470
562
  DialogOverlay,
471
563
  DialogPortal,
472
564
  DialogTitle,
473
- DialogTrigger,
565
+ useDialogSearchParam,
474
566
  } from "@rfdtech/components";
475
567
 
476
- <Dialog open={open} onOpenChange={setOpen}>
477
- <DialogTrigger asChild>
478
- <Button variant="secondary">Edit profile</Button>
479
- </DialogTrigger>
568
+ const { open, data, onOpenChange, openWith } = useDialogSearchParam<{
569
+ userId: string;
570
+ }>("edit-profile");
571
+
572
+ <Button variant="secondary" onClick={() => openWith({ userId: "42" })}>
573
+ Edit profile
574
+ </Button>
575
+
576
+ <Dialog open={open} onOpenChange={onOpenChange}>
480
577
  <DialogPortal>
481
578
  <DialogOverlay />
482
579
  <DialogContent showCloseButton>
483
580
  <DialogTitle>Edit profile</DialogTitle>
484
- <DialogDescription>Make changes here.</DialogDescription>
581
+ <DialogDescription>
582
+ Make changes here. Editing user {data?.userId}.
583
+ </DialogDescription>
485
584
  </DialogContent>
486
585
  </DialogPortal>
487
586
  </Dialog>
@@ -490,6 +589,24 @@ import {
490
589
  Props: `Dialog` — `open`, `defaultOpen`, `onOpenChange`. `DialogContent` — `showCloseButton`, `classNames`, `className`. Styled parts also support part-level `classNames`. Exported types: `DialogOverlayProps`, `DialogContentProps`, `DialogTitleProps`, `DialogDescriptionProps`, and related `*ClassNames` interfaces.
491
590
 
492
591
 
592
+ ## Draggable
593
+
594
+ Repositionable panel primitive with optional handle and bounded pointer dragging. See the [Draggable](/docs/draggable) docs page for props and exported types.
595
+
596
+ ```tsx
597
+ import { Draggable, DraggableHandle } from "@rfdtech/components";
598
+
599
+ <div style={{ position: "relative", height: 240 }}>
600
+ <Draggable defaultPosition={{ x: 24, y: 24 }} bounds="parent">
601
+ <DraggableHandle aria-label="Drag card" />
602
+ <div>Drag me</div>
603
+ </Draggable>
604
+ </div>
605
+ ```
606
+
607
+ Exports: `Draggable`, `DraggableHandle`, `useDraggable`, `clampPosition`. Types: `DraggableProps`, `DraggableHandleProps`, `DraggablePosition`, `DraggableBounds`, `DraggableAxis`, `UseDraggableOptions`, `UseDraggableReturn`.
608
+
609
+
493
610
  ## Modal
494
611
 
495
612
  Compound modal primitives for near full-viewport overlays with header, body, and footer slots. See the [Modal](/docs/modal) docs page for props and exported types.
@@ -506,13 +623,16 @@ import {
506
623
  ModalOverlay,
507
624
  ModalPortal,
508
625
  ModalTitle,
509
- ModalTrigger,
626
+ useModalSearchParam,
510
627
  } from "@rfdtech/components";
511
628
 
512
- <Modal open={open} onOpenChange={setOpen}>
513
- <ModalTrigger asChild>
514
- <Button variant="secondary">Review changes</Button>
515
- </ModalTrigger>
629
+ const { open, onOpenChange, openWith } = useModalSearchParam("review-changes");
630
+
631
+ <Button variant="secondary" onClick={() => openWith()}>
632
+ Review changes
633
+ </Button>
634
+
635
+ <Modal open={open} onOpenChange={onOpenChange}>
516
636
  <ModalPortal>
517
637
  <ModalOverlay />
518
638
  <ModalContent showCloseButton>
@@ -522,8 +642,8 @@ import {
522
642
  </ModalHeader>
523
643
  <ModalBody>{children}</ModalBody>
524
644
  <ModalFooter>
525
- <Button variant="ghost" onClick={() => setOpen(false)}>Cancel</Button>
526
- <Button onClick={() => setOpen(false)}>Publish</Button>
645
+ <Button variant="ghost" onClick={() => onOpenChange(false)}>Cancel</Button>
646
+ <Button onClick={() => onOpenChange(false)}>Publish</Button>
527
647
  </ModalFooter>
528
648
  </ModalContent>
529
649
  </ModalPortal>
@@ -687,6 +807,36 @@ import {
687
807
  Props: `Sheet` — `open`, `defaultOpen`, `onOpenChange`. `SheetContent` — `side`, `showCloseButton`, `classNames`, `className`. Layout parts support part-level `classNames`. Exported types: `SheetSide`, `SheetOverlayProps`, `SheetContentProps`, `SheetHeaderProps`, `SheetTitleProps`, `SheetDescriptionProps`, `SheetBodyProps`, `SheetFooterProps`, and related `*ClassNames` interfaces.
688
808
 
689
809
 
810
+ ## Sortable
811
+
812
+ Reorderable list primitive with optional drag handles and keyboard support. See the [Sortable](/docs/sortable) docs page for props and exported types.
813
+
814
+ ```tsx
815
+ import { useState } from "react";
816
+ import {
817
+ Sortable,
818
+ SortableHandle,
819
+ SortableItem,
820
+ SortableList,
821
+ } from "@rfdtech/components";
822
+
823
+ const [items, setItems] = useState(["alpha", "beta", "gamma"]);
824
+
825
+ <Sortable items={items} onReorder={setItems}>
826
+ <SortableList>
827
+ {items.map((id) => (
828
+ <SortableItem key={id} id={id}>
829
+ <SortableHandle aria-label={`Reorder ${id}`} />
830
+ <span>{id}</span>
831
+ </SortableItem>
832
+ ))}
833
+ </SortableList>
834
+ </Sortable>
835
+ ```
836
+
837
+ Exports: `Sortable`, `SortableList`, `SortableItem`, `SortableHandle`, `reorderItems`. Types: `SortableProps`, `SortableListProps`, `SortableItemProps`, `SortableHandleProps`, `SortableId`, `SortableStrategy`, `SortableClassNames`.
838
+
839
+
690
840
  ## Tabs
691
841
 
692
842
  Compound tabs primitives for switching between related panels. See the [Tabs](/docs/tabs) docs page for props and exported types.
@@ -706,6 +856,33 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@rfdtech/components";
706
856
 
707
857
  Exports: `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent`. Props: `Tabs` — `value`, `defaultValue`, `onValueChange`, `orientation`, `activationMode`, `variant`, `classNames`, `className`, `children`. `TabsTrigger` — `value`, `disabled`, `classNames`, `className`. Exported types: `TabsProps`, `TabsListProps`, `TabsTriggerProps`, `TabsContentProps`, `TabsVariant`, `TabsClassNames`, `TabsListClassNames`, `TabsTriggerClassNames`, `TabsContentClassNames`.
708
858
 
859
+
860
+ ## Toast
861
+
862
+ Transient notifications with an imperative `useToast` hook, powered by Sonner. See the [Toast](/docs/toast) docs page for props and exported types.
863
+
864
+ ```tsx
865
+ import { CheckCircle2 } from "lucide-react";
866
+ import { ToastProvider, Toaster, useToast } from "@rfdtech/components";
867
+
868
+ <ToastProvider>
869
+ <App />
870
+ <Toaster />
871
+ </ToastProvider>
872
+
873
+ const { toast } = useToast();
874
+
875
+ toast({
876
+ title: "Profile saved",
877
+ description: "Your changes were applied.",
878
+ variant: "success",
879
+ icon: <CheckCircle2 size={18} strokeWidth={2} aria-hidden />,
880
+ });
881
+ ```
882
+
883
+ Exports: `ToastProvider`, `Toaster`, `useToast`. Types: `ToastOptions`, `ToastVariant`, `ToastProviderProps`, `ToasterProps`, `UseToastReturn`, `ToastClassNames`, `ToastAction`, `ToastReturn`.
884
+
885
+
709
886
  ## Development
710
887
 
711
888
  ```bash
@@ -0,0 +1,5 @@
1
+ import type { DraggableHandleProps, DraggableProps } from "../../types/draggable";
2
+ import "./styles/draggable.css";
3
+ export declare const Draggable: import("react").ForwardRefExoticComponent<DraggableProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ export declare const DraggableHandle: import("react").ForwardRefExoticComponent<DraggableHandleProps & import("react").RefAttributes<HTMLButtonElement>>;
5
+ //# sourceMappingURL=Draggable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Draggable.d.ts","sourceRoot":"","sources":["../../../src/components/draggable/Draggable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQlF,OAAO,wBAAwB,CAAC;AAEhC,eAAO,MAAM,SAAS,2GAgCrB,CAAC;AA4CF,eAAO,MAAM,eAAe,oHA8B3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Draggable.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Draggable.test.d.ts","sourceRoot":"","sources":["../../../src/components/draggable/Draggable.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from "react";
2
+ import type { UseDraggableReturn } from "../../types/draggable";
3
+ interface DraggableContextValue extends UseDraggableReturn {
4
+ disabled: boolean;
5
+ hasHandle: boolean;
6
+ registerHandle: () => () => void;
7
+ }
8
+ export declare function DraggableProvider({ disabled, draggable, children, }: {
9
+ disabled: boolean;
10
+ draggable: UseDraggableReturn;
11
+ children: ReactNode;
12
+ }): import("react").JSX.Element;
13
+ export declare function useDraggableContext(): DraggableContextValue;
14
+ export declare function useDraggableHandleRegistration(): void;
15
+ export {};
16
+ //# sourceMappingURL=DraggableContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DraggableContext.d.ts","sourceRoot":"","sources":["../../../src/components/draggable/DraggableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,UAAU,qBAAsB,SAAQ,kBAAkB;IACxD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,MAAM,IAAI,CAAC;CAClC;AAID,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACrB,+BA2BA;AAED,wBAAgB,mBAAmB,0BAQlC;AAED,wBAAgB,8BAA8B,SAI7C"}
@@ -0,0 +1,10 @@
1
+ import type { DraggableAxis, DraggableBounds, DraggablePosition } from "../../../types/draggable";
2
+ export interface ClampPositionInput {
3
+ position: DraggablePosition;
4
+ currentPosition: DraggablePosition;
5
+ axis: DraggableAxis;
6
+ bounds: DraggableBounds;
7
+ node: HTMLElement;
8
+ }
9
+ export declare function clampPosition({ position, currentPosition, axis, bounds, node, }: ClampPositionInput): DraggablePosition;
10
+ //# sourceMappingURL=clampPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clampPosition.d.ts","sourceRoot":"","sources":["../../../../src/components/draggable/hooks/clampPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,eAAe,EAAE,iBAAiB,CAAC;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,eAAe,EACf,IAAI,EACJ,MAAM,EACN,IAAI,GACL,EAAE,kBAAkB,GAAG,iBAAiB,CA8CxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=clampPosition.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clampPosition.test.d.ts","sourceRoot":"","sources":["../../../../src/components/draggable/hooks/clampPosition.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { UseDraggableOptions, UseDraggableReturn } from "../../../types/draggable";
2
+ export declare function useDraggable({ axis, bounds, disabled, position: positionProp, defaultPosition, onPositionChange, }?: UseDraggableOptions): UseDraggableReturn;
3
+ //# sourceMappingURL=useDraggable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraggable.d.ts","sourceRoot":"","sources":["../../../../src/components/draggable/hooks/useDraggable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,YAAY,CAAC,EAC3B,IAAa,EACb,MAAiB,EACjB,QAAgB,EAChB,QAAQ,EAAE,YAAY,EACtB,eAAkC,EAClC,gBAAgB,GACjB,GAAE,mBAAwB,GAAG,kBAAkB,CAgI/C"}
@@ -0,0 +1,6 @@
1
+ export { Draggable, DraggableHandle } from "./Draggable";
2
+ export { useDraggable } from "./hooks/useDraggable";
3
+ export { clampPosition } from "./hooks/clampPosition";
4
+ export type { ClampPositionInput } from "./hooks/clampPosition";
5
+ export type { DraggableAxis, DraggableBounds, DraggableClassNames, DraggableHandleProps, DraggablePosition, DraggableProps, UseDraggableOptions, UseDraggableReturn, } from "../../types/draggable";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/draggable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EACV,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { FieldControlProps, FieldDescriptionProps, FieldErrorProps, FieldLabelProps, FieldProps } from "../../types/field";
2
+ import "./styles/field.css";
3
+ export declare function Field({ invalid, classNames, className, children, ...props }: FieldProps): import("react").JSX.Element;
4
+ export declare function FieldLabel({ classNames, className, children, ...props }: FieldLabelProps): import("react").JSX.Element;
5
+ export declare function FieldDescription({ classNames, className, children, ...props }: FieldDescriptionProps): import("react").JSX.Element | null;
6
+ export declare function FieldError({ classNames, className, children, ...props }: FieldErrorProps): import("react").JSX.Element | null;
7
+ export declare function FieldControl({ classNames, className, children }: FieldControlProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=Field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/components/field/Field.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,UAAU,EACX,MAAM,mBAAmB,CAAC;AAI3B,OAAO,oBAAoB,CAAC;AAE5B,wBAAgB,KAAK,CAAC,EACpB,OAAe,EACf,UAAU,EACV,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,UAAU,+BA8BZ;AAED,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,+BAYjB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,qBAAqB,sCA2BvB;AAED,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,sCA4BjB;AAED,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,iBAAiB,+BAqBlF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Field.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.test.d.ts","sourceRoot":"","sources":["../../../src/components/field/Field.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { FieldContextValue } from "../../types/field";
2
+ export declare const FieldContext: import("react").Context<FieldContextValue | null>;
3
+ export declare function useFieldContext(): FieldContextValue;
4
+ //# sourceMappingURL=FieldContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldContext.d.ts","sourceRoot":"","sources":["../../../src/components/field/FieldContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,eAAO,MAAM,YAAY,mDAAgD,CAAC;AAE1E,wBAAgB,eAAe,sBAQ9B"}
@@ -0,0 +1,3 @@
1
+ export { Field, FieldControl, FieldDescription, FieldError, FieldLabel, } from "./Field";
2
+ export type { FieldClassNames, FieldControlProps, FieldDescriptionProps, FieldErrorProps, FieldLabelProps, FieldProps, } from "../../types/field";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/field/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,UAAU,GACX,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type FieldPath, type FieldValues } from "react-hook-form";
2
+ import type { FormFieldProps, UseFormFieldReturn } from "../../types/form";
3
+ export declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>({ children, watch, getValues, getFieldState, setError, clearErrors, setValue, setValues, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, }: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
4
+ export declare function FormField<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: FormFieldProps<TFieldValues, TName>): import("react").JSX.Element;
5
+ export declare function useFormField(): UseFormFieldReturn;
6
+ //# sourceMappingURL=Form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../../src/components/form/Form.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,cAAc,EAAa,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtF,eAAO,MAAM,IAAI,0YAAe,CAAC;AAEjC,wBAAgB,SAAS,CACvB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,+BAWlD;AAED,wBAAgB,YAAY,IAAI,kBAAkB,CAiBjD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Form.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.test.d.ts","sourceRoot":"","sources":["../../../src/components/form/Form.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { FieldPath, FieldValues } from "react-hook-form";
2
+ import type { FormFieldContextValue } from "../../types/form";
3
+ export declare const FormFieldContext: import("react").Context<FormFieldContextValue<FieldValues, string> | null>;
4
+ export declare function useFormFieldContext<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(): FormFieldContextValue<TFieldValues, TName>;
5
+ //# sourceMappingURL=FormFieldContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldContext.d.ts","sourceRoot":"","sources":["../../../src/components/form/FormFieldContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,gBAAgB,4EAAoD,CAAC;AAElF,wBAAgB,mBAAmB,CACjC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,gDAYhE"}
@@ -0,0 +1,3 @@
1
+ export { Form, FormField, useFormField } from "./Form";
2
+ export type { FormFieldContextValue, FormFieldProps, FormFieldRenderProps, FormProps, UseFormFieldReturn, } from "../../types/form";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACvD,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { InputProps } from "../../types/input";
2
+ import "./styles/input.css";
3
+ export declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
4
+ //# sourceMappingURL=Input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/input/Input.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,oBAAoB,CAAC;AAE5B,eAAO,MAAM,KAAK,yGAmBhB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Input.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.test.d.ts","sourceRoot":"","sources":["../../../src/components/input/Input.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { Input } from "./Input";
2
+ export type { InputClassNames, InputProps } from "../../types/input";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SortableHandleProps, SortableItemProps, SortableListProps, SortableProps } from "../../types/sortable";
2
+ import "./styles/sortable.css";
3
+ export declare const Sortable: import("react").ForwardRefExoticComponent<SortableProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ export declare const SortableList: import("react").ForwardRefExoticComponent<SortableListProps & import("react").RefAttributes<HTMLDivElement>>;
5
+ export declare const SortableItem: import("react").ForwardRefExoticComponent<SortableItemProps & import("react").RefAttributes<HTMLDivElement>>;
6
+ export declare const SortableHandle: import("react").ForwardRefExoticComponent<SortableHandleProps & import("react").RefAttributes<HTMLButtonElement>>;
7
+ //# sourceMappingURL=Sortable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sortable.d.ts","sourceRoot":"","sources":["../../../src/components/sortable/Sortable.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAU9B,OAAO,uBAAuB,CAAC;AAE/B,eAAO,MAAM,QAAQ,0GA0DpB,CAAC;AAEF,eAAO,MAAM,YAAY,8GA+BxB,CAAC;AAEF,eAAO,MAAM,YAAY,8GA6ExB,CAAC;AA+CF,eAAO,MAAM,cAAc,mHA6C1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Sortable.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sortable.test.d.ts","sourceRoot":"","sources":["../../../src/components/sortable/Sortable.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import type { DraggableAttributes, DraggableSyntheticListeners } from "@dnd-kit/core";
2
+ import { type CSSProperties, type ReactNode } from "react";
3
+ import type { SortableId } from "../../types/sortable";
4
+ interface SortableContextValue {
5
+ items: SortableId[];
6
+ disabled: boolean;
7
+ }
8
+ export declare function SortableProvider({ items, disabled, children, }: {
9
+ items: SortableId[];
10
+ disabled: boolean;
11
+ children: ReactNode;
12
+ }): import("react").JSX.Element;
13
+ export declare function useSortableContext(): SortableContextValue;
14
+ interface SortableItemContextValue {
15
+ disabled: boolean;
16
+ hasHandle: boolean;
17
+ registerHandle: () => () => void;
18
+ setNodeRef: (node: HTMLElement | null) => void;
19
+ setActivatorNodeRef: (node: HTMLElement | null) => void;
20
+ attributes: DraggableAttributes;
21
+ listeners: DraggableSyntheticListeners | undefined;
22
+ style: CSSProperties;
23
+ isDragging: boolean;
24
+ }
25
+ export declare function SortableItemProvider({ value, children, }: {
26
+ value: SortableItemContextValue;
27
+ children: ReactNode;
28
+ }): import("react").JSX.Element;
29
+ export declare function useSortableItemContext(): SortableItemContextValue;
30
+ export declare function useSortableHandleRegistration(): void;
31
+ export {};
32
+ //# sourceMappingURL=SortableContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortableContext.d.ts","sourceRoot":"","sources":["../../../src/components/sortable/SortableContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAYA;AAED,wBAAgB,kBAAkB,yBAQjC;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,MAAM,IAAI,CAAC;IACjC,UAAU,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,mBAAmB,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,2BAA2B,GAAG,SAAS,CAAC;IACnD,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAID,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,wBAAwB,CAAC;IAChC,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAMA;AAED,wBAAgB,sBAAsB,6BAQrC;AAED,wBAAgB,6BAA6B,SAI5C"}
@@ -0,0 +1,3 @@
1
+ import type { SortableId } from "../../../types/sortable";
2
+ export declare function reorderItems(items: SortableId[], activeId: SortableId, overId: SortableId | null | undefined): SortableId[];
3
+ //# sourceMappingURL=useSortableDragEnd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSortableDragEnd.d.ts","sourceRoot":"","sources":["../../../../src/components/sortable/hooks/useSortableDragEnd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EAAE,EACnB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,UAAU,EAAE,CAad"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useSortableDragEnd.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSortableDragEnd.test.d.ts","sourceRoot":"","sources":["../../../../src/components/sortable/hooks/useSortableDragEnd.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export { Sortable, SortableHandle, SortableItem, SortableList } from "./Sortable";
2
+ export { reorderItems } from "./hooks/useSortableDragEnd";
3
+ export type { SortableClassNames, SortableHandleProps, SortableId, SortableItemProps, SortableListProps, SortableProps, SortableStrategy, } from "../../types/sortable";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/sortable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TextareaProps } from "../../types/textarea";
2
+ import "./styles/textarea.css";
3
+ export declare const Textarea: import("react").ForwardRefExoticComponent<TextareaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
4
+ //# sourceMappingURL=Textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/textarea/Textarea.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,uBAAuB,CAAC;AAE/B,eAAO,MAAM,QAAQ,+GAmBnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Textarea.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textarea.test.d.ts","sourceRoot":"","sources":["../../../src/components/textarea/Textarea.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { Textarea } from "./Textarea";
2
+ export type { TextareaClassNames, TextareaProps } from "../../types/textarea";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/textarea/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Toast.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.test.d.ts","sourceRoot":"","sources":["../../../src/components/toast/Toast.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ToastDefaults, ToastProviderProps } from "../../types/toast";
2
+ export declare const ToastDefaultsContext: import("react").Context<ToastDefaults | null>;
3
+ export declare function ToastProvider({ duration, limit, children, }: ToastProviderProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=ToastProvider.d.ts.map