@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
@@ -0,0 +1,49 @@
1
+ import type { ButtonHTMLAttributes, CSSProperties, ReactNode, RefObject } from "react";
2
+ export type DraggableAxis = "both" | "x" | "y";
3
+ export type DraggableBounds = "parent" | "window" | {
4
+ left?: number;
5
+ top?: number;
6
+ right?: number;
7
+ bottom?: number;
8
+ };
9
+ export interface DraggablePosition {
10
+ x: number;
11
+ y: number;
12
+ }
13
+ export interface DraggableClassNames {
14
+ root?: string;
15
+ handle?: string;
16
+ }
17
+ export interface DraggableProps {
18
+ children: ReactNode;
19
+ axis?: DraggableAxis;
20
+ bounds?: DraggableBounds;
21
+ disabled?: boolean;
22
+ position?: DraggablePosition;
23
+ defaultPosition?: DraggablePosition;
24
+ onPositionChange?: (position: DraggablePosition) => void;
25
+ classNames?: DraggableClassNames;
26
+ className?: string;
27
+ }
28
+ export interface DraggableHandleProps extends ButtonHTMLAttributes<HTMLButtonElement> {
29
+ children?: ReactNode;
30
+ classNames?: Pick<DraggableClassNames, "handle">;
31
+ className?: string;
32
+ }
33
+ export interface UseDraggableOptions {
34
+ axis?: DraggableAxis;
35
+ bounds?: DraggableBounds;
36
+ disabled?: boolean;
37
+ position?: DraggablePosition;
38
+ defaultPosition?: DraggablePosition;
39
+ onPositionChange?: (position: DraggablePosition) => void;
40
+ }
41
+ export interface UseDraggableReturn {
42
+ position: DraggablePosition;
43
+ dragging: boolean;
44
+ rootRef: RefObject<HTMLDivElement | null>;
45
+ rootStyle: CSSProperties;
46
+ handlePointerDown: (event: React.PointerEvent<HTMLElement>) => void;
47
+ rootPointerDown: (event: React.PointerEvent<HTMLDivElement>) => void;
48
+ }
49
+ //# sourceMappingURL=draggable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draggable.d.ts","sourceRoot":"","sources":["../../src/types/draggable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,QAAQ,GACR;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACzD,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC/C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC1D;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC1C,SAAS,EAAE,aAAa,CAAC;IACzB,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACpE,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CACtE"}
@@ -0,0 +1,45 @@
1
+ import type { HTMLAttributes, LabelHTMLAttributes, ReactNode } from "react";
2
+ export interface FieldClassNames {
3
+ root?: string;
4
+ label?: string;
5
+ description?: string;
6
+ error?: string;
7
+ control?: string;
8
+ }
9
+ export interface FieldProps extends HTMLAttributes<HTMLDivElement> {
10
+ invalid?: boolean;
11
+ classNames?: FieldClassNames;
12
+ className?: string;
13
+ children?: ReactNode;
14
+ }
15
+ export interface FieldLabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
16
+ classNames?: Pick<FieldClassNames, "label">;
17
+ className?: string;
18
+ children?: ReactNode;
19
+ }
20
+ export interface FieldDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {
21
+ classNames?: Pick<FieldClassNames, "description">;
22
+ className?: string;
23
+ children?: ReactNode;
24
+ }
25
+ export interface FieldErrorProps extends HTMLAttributes<HTMLParagraphElement> {
26
+ classNames?: Pick<FieldClassNames, "error">;
27
+ className?: string;
28
+ children?: ReactNode;
29
+ }
30
+ export interface FieldControlProps {
31
+ classNames?: Pick<FieldClassNames, "control">;
32
+ className?: string;
33
+ children?: ReactNode;
34
+ }
35
+ export interface FieldContextValue {
36
+ id: string;
37
+ descriptionId: string;
38
+ errorId: string;
39
+ invalid: boolean;
40
+ hasDescription: boolean;
41
+ hasError: boolean;
42
+ setHasDescription: (value: boolean) => void;
43
+ setHasError: (value: boolean) => void;
44
+ }
45
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/types/field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,cAAc,CAAC;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IAC5E,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,oBAAoB,CAAC;IACjF,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,oBAAoB,CAAC;IAC3E,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC"}
@@ -0,0 +1,23 @@
1
+ import type { ReactNode } from "react";
2
+ import type { ControllerProps, FieldPath, FieldValues, FormProviderProps } from "react-hook-form";
3
+ export type FormProps<TFieldValues extends FieldValues> = FormProviderProps<TFieldValues>;
4
+ export type FormFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = ControllerProps<TFieldValues, TName>;
5
+ export interface FormFieldContextValue<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> {
6
+ name: TName;
7
+ }
8
+ export interface UseFormFieldReturn {
9
+ id: string;
10
+ name: string;
11
+ formItemId: string;
12
+ formDescriptionId: string;
13
+ formMessageId: string;
14
+ invalid: boolean;
15
+ error?: {
16
+ message?: string;
17
+ };
18
+ }
19
+ export interface FormFieldRenderProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> {
20
+ fieldContext: FormFieldContextValue<TFieldValues, TName>;
21
+ children?: ReactNode;
22
+ }
23
+ //# sourceMappingURL=form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/types/form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,SAAS,CAAC,YAAY,SAAS,WAAW,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAE1F,MAAM,MAAM,cAAc,CACxB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAC7D,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAEzC,MAAM,WAAW,qBAAqB,CACpC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC;IAE/D,IAAI,EAAE,KAAK,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB,CACnC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC;IAE/D,YAAY,EAAE,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
@@ -0,0 +1,10 @@
1
+ import type { InputHTMLAttributes } from "react";
2
+ export interface InputClassNames {
3
+ root?: string;
4
+ }
5
+ export interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
6
+ invalid?: boolean;
7
+ classNames?: InputClassNames;
8
+ className?: string;
9
+ }
10
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/types/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAW,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,36 @@
1
+ import type { ButtonHTMLAttributes, ReactNode } from "react";
2
+ export type SortableId = string | number;
3
+ export type SortableStrategy = "vertical" | "horizontal";
4
+ export interface SortableClassNames {
5
+ root?: string;
6
+ list?: string;
7
+ item?: string;
8
+ handle?: string;
9
+ }
10
+ export interface SortableProps {
11
+ items: SortableId[];
12
+ onReorder: (items: SortableId[]) => void;
13
+ disabled?: boolean;
14
+ classNames?: SortableClassNames;
15
+ className?: string;
16
+ children: ReactNode;
17
+ }
18
+ export interface SortableListProps {
19
+ strategy?: SortableStrategy;
20
+ classNames?: Pick<SortableClassNames, "list">;
21
+ className?: string;
22
+ children: ReactNode;
23
+ }
24
+ export interface SortableItemProps {
25
+ id: SortableId;
26
+ disabled?: boolean;
27
+ classNames?: Pick<SortableClassNames, "item">;
28
+ className?: string;
29
+ children: ReactNode;
30
+ }
31
+ export interface SortableHandleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
32
+ classNames?: Pick<SortableClassNames, "handle">;
33
+ className?: string;
34
+ children?: ReactNode;
35
+ }
36
+ //# sourceMappingURL=sortable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortable.d.ts","sourceRoot":"","sources":["../../src/types/sortable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,UAAU,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
@@ -0,0 +1,10 @@
1
+ import type { TextareaHTMLAttributes } from "react";
2
+ export interface TextareaClassNames {
3
+ root?: string;
4
+ }
5
+ export interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
6
+ invalid?: boolean;
7
+ classNames?: TextareaClassNames;
8
+ className?: string;
9
+ }
10
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/types/textarea.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAc,SAAQ,sBAAsB,CAAC,mBAAmB,CAAC;IAChF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,52 @@
1
+ import type { ReactNode } from "react";
2
+ export type ToastVariant = "default" | "success" | "warning" | "error";
3
+ export interface ToastClassNames {
4
+ viewport?: string;
5
+ toast?: string;
6
+ title?: string;
7
+ description?: string;
8
+ actionButton?: string;
9
+ closeButton?: string;
10
+ icon?: string;
11
+ default?: string;
12
+ success?: string;
13
+ warning?: string;
14
+ error?: string;
15
+ }
16
+ export interface ToastAction {
17
+ label: string;
18
+ onClick: () => void;
19
+ }
20
+ export interface ToastOptions {
21
+ id?: string;
22
+ title?: ReactNode;
23
+ description?: ReactNode;
24
+ icon?: ReactNode;
25
+ variant?: ToastVariant;
26
+ duration?: number;
27
+ action?: ToastAction;
28
+ }
29
+ export interface ToastProviderProps {
30
+ duration?: number;
31
+ limit?: number;
32
+ children: ReactNode;
33
+ }
34
+ export interface ToasterProps {
35
+ classNames?: Pick<ToastClassNames, "viewport">;
36
+ className?: string;
37
+ }
38
+ export interface ToastReturn {
39
+ id: string;
40
+ dismiss: () => void;
41
+ }
42
+ export interface UseToastReturn {
43
+ toast: (options: ToastOptions) => ToastReturn;
44
+ dismiss: (id?: string) => void;
45
+ /** @deprecated Sonner does not expose the toast queue; always returns `[]`. */
46
+ toasts: never[];
47
+ }
48
+ export interface ToastDefaults {
49
+ duration: number;
50
+ limit: number;
51
+ }
52
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../src/types/toast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,WAAW,CAAC;IAC9C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,+EAA+E;IAC/E,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,7 @@
1
+ import { type HTMLAttributes, type ReactElement, type Ref } from "react";
2
+ export interface SlotProps extends HTMLAttributes<HTMLElement> {
3
+ children?: ReactElement;
4
+ ref?: Ref<HTMLElement>;
5
+ }
6
+ export declare function Slot({ children, className, ref, ...props }: SlotProps): ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
7
+ //# sourceMappingURL=slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../src/utils/slot.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,GAAG,EACT,MAAM,OAAO,CAAC;AAuBf,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC5D,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;CACxB;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,qFAkBrE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rfdtech/components",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "Shared React component library for Ghana School of Law (GSL) projects",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -46,11 +46,26 @@
46
46
  },
47
47
  "peerDependencies": {
48
48
  "react": ">=18.0.0",
49
- "react-dom": ">=18.0.0"
49
+ "react-dom": ">=18.0.0",
50
+ "react-hook-form": ">=7.0.0",
51
+ "zod": ">=3.0.0",
52
+ "@hookform/resolvers": ">=3.0.0"
53
+ },
54
+ "peerDependenciesMeta": {
55
+ "react-hook-form": {
56
+ "optional": true
57
+ },
58
+ "zod": {
59
+ "optional": true
60
+ },
61
+ "@hookform/resolvers": {
62
+ "optional": true
63
+ }
50
64
  },
51
65
  "devDependencies": {
52
66
  "@fontsource-variable/geist": "^5.2.9",
53
67
  "@fontsource-variable/geist-mono": "^5.2.8",
68
+ "@hookform/resolvers": "^5.4.0",
54
69
  "@mdx-js/react": "^3.1.1",
55
70
  "@mdx-js/rollup": "^3.1.1",
56
71
  "@testing-library/jest-dom": "^6.9.1",
@@ -62,6 +77,7 @@
62
77
  "jsdom": "^29.1.1",
63
78
  "react": "^19.2.7",
64
79
  "react-dom": "^19.2.7",
80
+ "react-hook-form": "^7.58.1",
65
81
  "react-router-dom": "^7.17.0",
66
82
  "rehype-pretty-code": "^0.14.3",
67
83
  "remark-gfm": "^4.0.1",
@@ -70,7 +86,8 @@
70
86
  "vite": "^6.3.5",
71
87
  "vite-plugin-dts": "^4.5.4",
72
88
  "vite-plugin-lib-inject-css": "^2.2.2",
73
- "vitest": "^4.1.8"
89
+ "vitest": "^4.1.8",
90
+ "zod": "^4.4.3"
74
91
  },
75
92
  "keywords": [
76
93
  "react",
@@ -87,6 +104,9 @@
87
104
  "access": "public"
88
105
  },
89
106
  "dependencies": {
107
+ "@dnd-kit/core": "^6.3.1",
108
+ "@dnd-kit/sortable": "^10.0.0",
109
+ "@dnd-kit/utilities": "^3.2.2",
90
110
  "@radix-ui/react-alert-dialog": "^1.1.16",
91
111
  "@radix-ui/react-checkbox": "^1.3.4",
92
112
  "@radix-ui/react-dialog": "^1.1.16",
@@ -96,6 +116,7 @@
96
116
  "@radix-ui/react-tabs": "^1.1.14",
97
117
  "cmdk": "^1.1.1",
98
118
  "lucide-react": "^1.18.0",
119
+ "sonner": "^2.0.7",
99
120
  "xlsx": "^0.18.5"
100
121
  }
101
122
  }