@coopdigital/react 0.45.0 → 0.47.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 (207) hide show
  1. package/dist/components/AlertBanner/AlertBanner.d.ts +4 -2
  2. package/dist/components/AlertBanner/AlertBanner.js +2 -2
  3. package/dist/components/Author/Author.d.ts +4 -2
  4. package/dist/components/Author/Author.js +2 -2
  5. package/dist/components/Button/Button.d.ts +6 -4
  6. package/dist/components/Button/Button.js +4 -7
  7. package/dist/components/Card/Card.d.ts +4 -2
  8. package/dist/components/Card/Card.js +4 -4
  9. package/dist/components/Checkbox/Checkbox.d.ts +4 -2
  10. package/dist/components/Checkbox/Checkbox.js +2 -2
  11. package/dist/components/Expandable/Expandable.d.ts +4 -2
  12. package/dist/components/Expandable/Expandable.js +4 -4
  13. package/dist/components/Field/Field.d.ts +4 -2
  14. package/dist/components/Field/Field.js +7 -8
  15. package/dist/components/FieldMarkers/Error.d.ts +4 -2
  16. package/dist/components/FieldMarkers/Error.js +2 -2
  17. package/dist/components/FieldMarkers/Hint.d.ts +5 -3
  18. package/dist/components/FieldMarkers/Hint.js +2 -2
  19. package/dist/components/FieldMarkers/Label.d.ts +4 -2
  20. package/dist/components/FieldMarkers/Label.js +6 -2
  21. package/dist/components/FieldMarkers/Legend.d.ts +4 -2
  22. package/dist/components/FieldMarkers/Legend.js +2 -2
  23. package/dist/components/Fieldset/Fieldset.d.ts +4 -2
  24. package/dist/components/Fieldset/Fieldset.js +2 -4
  25. package/dist/components/Flourish/Flourish.d.ts +4 -2
  26. package/dist/components/Flourish/Flourish.js +2 -2
  27. package/dist/components/Icon/AddIcon.d.ts +1 -1
  28. package/dist/components/Icon/AddIcon.js +6 -5
  29. package/dist/components/Icon/ArrowDownIcon.d.ts +1 -1
  30. package/dist/components/Icon/ArrowDownIcon.js +6 -5
  31. package/dist/components/Icon/ArrowLeftIcon.d.ts +1 -1
  32. package/dist/components/Icon/ArrowLeftIcon.js +6 -5
  33. package/dist/components/Icon/ArrowRightIcon.d.ts +1 -1
  34. package/dist/components/Icon/ArrowRightIcon.js +6 -5
  35. package/dist/components/Icon/ArrowUpIcon.d.ts +1 -1
  36. package/dist/components/Icon/ArrowUpIcon.js +6 -5
  37. package/dist/components/Icon/AvatarAltIcon.d.ts +1 -1
  38. package/dist/components/Icon/AvatarAltIcon.js +6 -5
  39. package/dist/components/Icon/AvatarIcon.d.ts +1 -1
  40. package/dist/components/Icon/AvatarIcon.js +6 -5
  41. package/dist/components/Icon/BasketIcon.d.ts +1 -1
  42. package/dist/components/Icon/BasketIcon.js +6 -5
  43. package/dist/components/Icon/CalendarIcon.d.ts +1 -1
  44. package/dist/components/Icon/CalendarIcon.js +6 -5
  45. package/dist/components/Icon/ChevronDownIcon.d.ts +1 -1
  46. package/dist/components/Icon/ChevronDownIcon.js +6 -5
  47. package/dist/components/Icon/ChevronLeftIcon.d.ts +1 -1
  48. package/dist/components/Icon/ChevronLeftIcon.js +6 -5
  49. package/dist/components/Icon/ChevronRightIcon.d.ts +1 -1
  50. package/dist/components/Icon/ChevronRightIcon.js +6 -5
  51. package/dist/components/Icon/ChevronUpIcon.d.ts +1 -1
  52. package/dist/components/Icon/ChevronUpIcon.js +6 -5
  53. package/dist/components/Icon/ClockIcon.d.ts +1 -1
  54. package/dist/components/Icon/ClockIcon.js +6 -5
  55. package/dist/components/Icon/CloseAltIcon.d.ts +1 -1
  56. package/dist/components/Icon/CloseAltIcon.js +6 -5
  57. package/dist/components/Icon/CloseIcon.d.ts +1 -1
  58. package/dist/components/Icon/CloseIcon.js +6 -5
  59. package/dist/components/Icon/CoopCardIcon.d.ts +1 -1
  60. package/dist/components/Icon/CoopCardIcon.js +6 -5
  61. package/dist/components/Icon/CoopIcon.d.ts +1 -1
  62. package/dist/components/Icon/CoopIcon.js +6 -5
  63. package/dist/components/Icon/CoopLocationIcon.d.ts +1 -1
  64. package/dist/components/Icon/CoopLocationIcon.js +6 -5
  65. package/dist/components/Icon/DownloadIcon.d.ts +1 -1
  66. package/dist/components/Icon/DownloadIcon.js +6 -5
  67. package/dist/components/Icon/HomeIcon.d.ts +1 -1
  68. package/dist/components/Icon/HomeIcon.js +6 -5
  69. package/dist/components/Icon/InformationIcon.d.ts +1 -1
  70. package/dist/components/Icon/InformationIcon.js +6 -5
  71. package/dist/components/Icon/LoadingIcon.d.ts +1 -1
  72. package/dist/components/Icon/LoadingIcon.js +6 -5
  73. package/dist/components/Icon/LocationIcon.d.ts +1 -1
  74. package/dist/components/Icon/LocationIcon.js +6 -5
  75. package/dist/components/Icon/MailIcon.d.ts +1 -1
  76. package/dist/components/Icon/MailIcon.js +6 -5
  77. package/dist/components/Icon/MenuIcon.d.ts +1 -1
  78. package/dist/components/Icon/MenuIcon.js +6 -5
  79. package/dist/components/Icon/MessageIcon.d.ts +1 -1
  80. package/dist/components/Icon/MessageIcon.js +6 -5
  81. package/dist/components/Icon/MinusIcon.d.ts +1 -1
  82. package/dist/components/Icon/MinusIcon.js +6 -5
  83. package/dist/components/Icon/OpenNewIcon.d.ts +1 -1
  84. package/dist/components/Icon/OpenNewIcon.js +6 -5
  85. package/dist/components/Icon/PencilIcon.d.ts +1 -1
  86. package/dist/components/Icon/PencilIcon.js +6 -5
  87. package/dist/components/Icon/PhoneIcon.d.ts +1 -1
  88. package/dist/components/Icon/PhoneIcon.js +6 -5
  89. package/dist/components/Icon/QuestionIcon.d.ts +1 -1
  90. package/dist/components/Icon/QuestionIcon.js +6 -5
  91. package/dist/components/Icon/ScooterIcon.d.ts +1 -1
  92. package/dist/components/Icon/ScooterIcon.js +6 -5
  93. package/dist/components/Icon/SearchIcon.d.ts +1 -1
  94. package/dist/components/Icon/SearchIcon.js +6 -5
  95. package/dist/components/Icon/SettingsIcon.d.ts +1 -1
  96. package/dist/components/Icon/SettingsIcon.js +6 -5
  97. package/dist/components/Icon/TickAltIcon.d.ts +1 -1
  98. package/dist/components/Icon/TickAltIcon.js +6 -5
  99. package/dist/components/Icon/TickIcon.d.ts +1 -1
  100. package/dist/components/Icon/TickIcon.js +6 -5
  101. package/dist/components/Icon/VanIcon.d.ts +1 -1
  102. package/dist/components/Icon/VanIcon.js +6 -5
  103. package/dist/components/Icon/WarningIcon.d.ts +1 -1
  104. package/dist/components/Icon/WarningIcon.js +6 -5
  105. package/dist/components/Icon/WriteIcon.d.ts +1 -1
  106. package/dist/components/Icon/WriteIcon.js +6 -5
  107. package/dist/components/Image/Image.d.ts +4 -2
  108. package/dist/components/Image/Image.js +2 -2
  109. package/dist/components/Pill/Pill.d.ts +4 -2
  110. package/dist/components/Pill/Pill.js +7 -8
  111. package/dist/components/Radio/Radio.d.ts +20 -0
  112. package/dist/components/Radio/Radio.js +21 -0
  113. package/dist/components/Radio/index.d.ts +4 -0
  114. package/dist/components/{SearchBox/SearchBox.d.ts → Searchbox/Searchbox.d.ts} +10 -8
  115. package/dist/components/{SearchBox/SearchBox.js → Searchbox/Searchbox.js} +16 -11
  116. package/dist/components/Searchbox/index.d.ts +4 -0
  117. package/dist/components/Signpost/Signpost.d.ts +6 -4
  118. package/dist/components/Signpost/Signpost.js +3 -6
  119. package/dist/components/SkipNav/SkipNav.d.ts +4 -2
  120. package/dist/components/SkipNav/SkipNav.js +2 -2
  121. package/dist/components/Squircle/Squircle.d.ts +4 -2
  122. package/dist/components/Squircle/Squircle.js +2 -2
  123. package/dist/components/Tag/Tag.d.ts +5 -3
  124. package/dist/components/Tag/Tag.js +3 -6
  125. package/dist/components/TextInput/TextInput.d.ts +5 -3
  126. package/dist/components/TextInput/TextInput.js +2 -2
  127. package/dist/components/Textarea/Textarea.d.ts +4 -2
  128. package/dist/components/Textarea/Textarea.js +4 -5
  129. package/dist/{utils/slots.d.ts → hooks/useSlots.d.ts} +1 -1
  130. package/dist/{utils/slots.js → hooks/useSlots.js} +2 -2
  131. package/dist/index.d.ts +2 -2
  132. package/dist/index.js +2 -2
  133. package/package.json +3 -3
  134. package/src/components/AlertBanner/AlertBanner.tsx +6 -2
  135. package/src/components/Author/Author.tsx +5 -2
  136. package/src/components/Button/Button.tsx +10 -15
  137. package/src/components/Card/Card.tsx +7 -5
  138. package/src/components/Checkbox/Checkbox.tsx +6 -2
  139. package/src/components/Expandable/Expandable.tsx +12 -5
  140. package/src/components/Field/Field.tsx +10 -9
  141. package/src/components/FieldMarkers/Error.tsx +9 -3
  142. package/src/components/FieldMarkers/Hint.tsx +10 -4
  143. package/src/components/FieldMarkers/Label.tsx +9 -3
  144. package/src/components/FieldMarkers/Legend.tsx +9 -3
  145. package/src/components/Fieldset/Fieldset.tsx +9 -4
  146. package/src/components/Flourish/Flourish.tsx +5 -2
  147. package/src/components/Icon/AddIcon.tsx +9 -6
  148. package/src/components/Icon/ArrowDownIcon.tsx +9 -6
  149. package/src/components/Icon/ArrowLeftIcon.tsx +9 -6
  150. package/src/components/Icon/ArrowRightIcon.tsx +9 -6
  151. package/src/components/Icon/ArrowUpIcon.tsx +9 -6
  152. package/src/components/Icon/AvatarAltIcon.tsx +9 -6
  153. package/src/components/Icon/AvatarIcon.tsx +9 -6
  154. package/src/components/Icon/BasketIcon.tsx +9 -6
  155. package/src/components/Icon/CalendarIcon.tsx +9 -6
  156. package/src/components/Icon/ChevronDownIcon.tsx +9 -6
  157. package/src/components/Icon/ChevronLeftIcon.tsx +9 -6
  158. package/src/components/Icon/ChevronRightIcon.tsx +9 -6
  159. package/src/components/Icon/ChevronUpIcon.tsx +9 -6
  160. package/src/components/Icon/ClockIcon.tsx +9 -6
  161. package/src/components/Icon/CloseAltIcon.tsx +9 -6
  162. package/src/components/Icon/CloseIcon.tsx +9 -6
  163. package/src/components/Icon/CoopCardIcon.tsx +9 -6
  164. package/src/components/Icon/CoopIcon.tsx +9 -6
  165. package/src/components/Icon/CoopLocationIcon.tsx +9 -6
  166. package/src/components/Icon/DownloadIcon.tsx +9 -6
  167. package/src/components/Icon/HomeIcon.tsx +9 -6
  168. package/src/components/Icon/InformationIcon.tsx +9 -6
  169. package/src/components/Icon/LoadingIcon.tsx +9 -6
  170. package/src/components/Icon/LocationIcon.tsx +9 -6
  171. package/src/components/Icon/MailIcon.tsx +9 -6
  172. package/src/components/Icon/MenuIcon.tsx +9 -6
  173. package/src/components/Icon/MessageIcon.tsx +9 -6
  174. package/src/components/Icon/MinusIcon.tsx +9 -6
  175. package/src/components/Icon/OpenNewIcon.tsx +9 -6
  176. package/src/components/Icon/PencilIcon.tsx +9 -6
  177. package/src/components/Icon/PhoneIcon.tsx +9 -6
  178. package/src/components/Icon/QuestionIcon.tsx +9 -6
  179. package/src/components/Icon/ScooterIcon.tsx +9 -6
  180. package/src/components/Icon/SearchIcon.tsx +9 -6
  181. package/src/components/Icon/SettingsIcon.tsx +9 -6
  182. package/src/components/Icon/TickAltIcon.tsx +9 -6
  183. package/src/components/Icon/TickIcon.tsx +9 -6
  184. package/src/components/Icon/VanIcon.tsx +9 -6
  185. package/src/components/Icon/WarningIcon.tsx +9 -6
  186. package/src/components/Icon/WriteIcon.tsx +9 -6
  187. package/src/components/Image/Image.tsx +5 -2
  188. package/src/components/Pill/Pill.tsx +10 -9
  189. package/src/components/Radio/Radio.tsx +50 -0
  190. package/src/components/Radio/index.ts +5 -0
  191. package/src/components/{SearchBox/SearchBox.tsx → Searchbox/Searchbox.tsx} +33 -30
  192. package/src/components/Searchbox/index.ts +5 -0
  193. package/src/components/Signpost/Signpost.tsx +8 -8
  194. package/src/components/SkipNav/SkipNav.tsx +5 -2
  195. package/src/components/Squircle/Squircle.tsx +5 -2
  196. package/src/components/Tag/Tag.tsx +9 -8
  197. package/src/components/TextInput/TextInput.tsx +18 -3
  198. package/src/components/Textarea/Textarea.tsx +8 -6
  199. package/src/{utils/slots.ts → hooks/useSlots.ts} +1 -1
  200. package/src/index.ts +2 -2
  201. package/dist/components/RadioButton/RadioButton.d.ts +0 -18
  202. package/dist/components/RadioButton/RadioButton.js +0 -22
  203. package/dist/components/RadioButton/index.d.ts +0 -4
  204. package/dist/components/SearchBox/index.d.ts +0 -4
  205. package/src/components/RadioButton/RadioButton.tsx +0 -48
  206. package/src/components/RadioButton/index.ts +0 -5
  207. package/src/components/SearchBox/index.ts +0 -5
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const CloseIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const CloseIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "close",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M27 28a1 1 0 0 1-.71-.29l-22-22a1 1 0 0 1 1.42-1.42l22 22a1 1 0 0 1 0 1.42A1 1 0 0 1 27 28"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const CoopCardIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const CoopCardIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "coop-card",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M6.67 0a1.34 1.34 0 0 0-1.34 1.33v29.34A1.34 1.34 0 0 0 6.67 32h18.66a1.34 1.34 0 0 0 1.34-1.33V1.33A1.34 1.34 0 0 0 25.33 0ZM23 4.77a6.4 6.4 0 0 1 .21 1.62A6.8 6.8 0 0 1 22.94 8a2.1 2.1 0 0 1-.48.85 2.3 2.3 0 0 1-.82.55 6.3 6.3 0 0 1-1.93.31 5.3 5.3 0 0 1-1.94-.31 2.2 2.2 0 0 1-.8-.55 2.3 2.3 0 0 1-.49-.85 5.94 5.94 0 0 1 0-3.24 2.2 2.2 0 0 1 .52-.84 2.1 2.1 0 0 1 .82-.54 5.84 5.84 0 0 1 3.87 0 2.24 2.24 0 0 1 .81.55 2.3 2.3 0 0 1 .5.84m-2 2.4a2.5 2.5 0 0 0 .12-.78 2.4 2.4 0 0 0-.13-.8 1 1 0 0 0-.28-.45 1.15 1.15 0 0 0-.47-.23 2.8 2.8 0 0 0-1 0 1 1 0 0 0-.47.24.9.9 0 0 0-.29.44 2.66 2.66 0 0 0 0 1.58 1 1 0 0 0 .28.45 1.1 1.1 0 0 0 .48.23 2.8 2.8 0 0 0 1 0 1.1 1.1 0 0 0 .47-.24 1 1 0 0 0 .23-.44Zm-5.5 4.75a5.9 5.9 0 0 1 0 3.23 2.07 2.07 0 0 1-1.3 1.4 5.84 5.84 0 0 1-3.87 0 2.16 2.16 0 0 1-.81-.55 2.1 2.1 0 0 1-.52-.85 5.9 5.9 0 0 1 0-3.23 2.1 2.1 0 0 1 .48-.85 2.16 2.16 0 0 1 .82-.55 5.84 5.84 0 0 1 3.87 0 2.19 2.19 0 0 1 1.3 1.4Zm-2 2.41a2.5 2.5 0 0 0 .12-.77 2.7 2.7 0 0 0-.12-.8 1 1 0 0 0-.28-.45 1 1 0 0 0-.48-.23 2.8 2.8 0 0 0-1 0 1 1 0 0 0-.47.24 1 1 0 0 0-.28.44 2.63 2.63 0 0 0 0 1.57.9.9 0 0 0 .28.45 1 1 0 0 0 .47.23 2.8 2.8 0 0 0 1 0 1 1 0 0 0 .47-.23 1 1 0 0 0 .29-.45m2.22-8h-2.1a3.3 3.3 0 0 0-.1-.78 1 1 0 0 0-.29-.45 1.1 1.1 0 0 0-.47-.23 2.8 2.8 0 0 0-1 0 1.05 1.05 0 0 0-.47.24 1.1 1.1 0 0 0-.29.44 2.66 2.66 0 0 0 0 1.58 1 1 0 0 0 .28.45 1.1 1.1 0 0 0 .48.23 2.8 2.8 0 0 0 1 0 1.1 1.1 0 0 0 .47-.24 1.1 1.1 0 0 0 .29-.44 2.3 2.3 0 0 0 .07-.36l2 .92a3 3 0 0 0-.09.31 2.1 2.1 0 0 1-.49.85 2.16 2.16 0 0 1-.81.55 6.4 6.4 0 0 1-1.94.31 5.7 5.7 0 0 1-1.93-.31 2.1 2.1 0 0 1-.8-.55A2.16 2.16 0 0 1 9 8a5.94 5.94 0 0 1 0-3.23 2.06 2.06 0 0 1 .48-.85 2 2 0 0 1 .82-.54 5.84 5.84 0 0 1 3.87 0 2.2 2.2 0 0 1 .8.55 2 2 0 0 1 .49.84 6.7 6.7 0 0 1 .26 1.6Zm.5 7.18a6.2 6.2 0 0 1 .21-1.61 2.06 2.06 0 0 1 .51-.85 2 2 0 0 1 .85-.5 5.84 5.84 0 0 1 3.87 0 2.16 2.16 0 0 1 .81.55 2.1 2.1 0 0 1 .53.9 5.9 5.9 0 0 1 0 3.23 2.1 2.1 0 0 1-.48.85 2.16 2.16 0 0 1-.82.55 6.7 6.7 0 0 1-1.93.32L19 15h.2a2.8 2.8 0 0 0 1 0 1 1 0 0 0 .46-.24 1.05 1.05 0 0 0 .27-.44 2.66 2.66 0 0 0 0-1.58 1 1 0 0 0-.28-.44 1 1 0 0 0-.47-.23 2.4 2.4 0 0 0-1 0 .9.9 0 0 0-.47.23.9.9 0 0 0-.29.44 2.3 2.3 0 0 0-.11.78v4.73h-2.1Z"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const CoopIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const CoopIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "coop",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M28.77 5.17a11.33 11.33 0 0 1 0 5.93 4 4 0 0 1-.88 1.57 4.1 4.1 0 0 1-1.5 1 12 12 0 0 1-3.56.58 9.8 9.8 0 0 1-3.56-.58 4.2 4.2 0 0 1-1.47-1 4.1 4.1 0 0 1-.9-1.55 10.9 10.9 0 0 1 0-5.94 3.8 3.8 0 0 1 .89-1.56 3.8 3.8 0 0 1 1.49-1 10.73 10.73 0 0 1 7.12 0 3.9 3.9 0 0 1 1.48 1 3.9 3.9 0 0 1 .89 1.55m-3.67 4.4a4.9 4.9 0 0 0 .21-1.43 4.9 4.9 0 0 0-.23-1.47 1.8 1.8 0 0 0-.53-.82 1.77 1.77 0 0 0-.87-.42 5.1 5.1 0 0 0-1.83 0 2 2 0 0 0-.87.43 1.9 1.9 0 0 0-.53.81 4.94 4.94 0 0 0 0 2.9 1.86 1.86 0 0 0 .52.82 1.8 1.8 0 0 0 .88.43 5.1 5.1 0 0 0 1.83 0 1.88 1.88 0 0 0 1.4-1.25Zm-10 8.73a10.9 10.9 0 0 1 0 5.94 3.75 3.75 0 0 1-.88 1.58 3.8 3.8 0 0 1-1.5 1 10.7 10.7 0 0 1-7.11 0 4 4 0 0 1-1.49-1 4.1 4.1 0 0 1-.9-1.56 10.9 10.9 0 0 1 0-5.94 3.9 3.9 0 0 1 .89-1.57 3.8 3.8 0 0 1 1.5-1 10.7 10.7 0 0 1 7.11 0 4 4 0 0 1 1.48 1 3.9 3.9 0 0 1 .88 1.55Zm-3.66 4.44a5 5 0 0 0 .22-1.43 5.2 5.2 0 0 0-.22-1.47 1.9 1.9 0 0 0-.54-.84 1.8 1.8 0 0 0-.88-.43 5.6 5.6 0 0 0-1.83 0 2 2 0 0 0-.87.44 1.9 1.9 0 0 0-.52.81 4.8 4.8 0 0 0 0 2.9 1.7 1.7 0 0 0 .52.82 1.65 1.65 0 0 0 .87.42A4.7 4.7 0 0 0 10 24a1.83 1.83 0 0 0 .87-.43 2 2 0 0 0 .55-.83Zm4.05-14.63h-3.85a6.3 6.3 0 0 0-.19-1.43 1.8 1.8 0 0 0-.52-.82 1.8 1.8 0 0 0-.88-.42 5.1 5.1 0 0 0-1.83 0 1.93 1.93 0 0 0-.87.43 1.9 1.9 0 0 0-.53.81 4.94 4.94 0 0 0 0 2.9 1.86 1.86 0 0 0 .52.82 1.8 1.8 0 0 0 .88.43 5.1 5.1 0 0 0 1.83 0 2 2 0 0 0 .87-.44 2 2 0 0 0 .53-.81 4.5 4.5 0 0 0 .14-.66l3.63 1.69c-.05.16-.1.33-.14.5a4 4 0 0 1-.88 1.57 4.1 4.1 0 0 1-1.5 1 12 12 0 0 1-3.56.58 10.7 10.7 0 0 1-3.55-.58 4.2 4.2 0 0 1-1.48-1 4 4 0 0 1-.89-1.55 10.9 10.9 0 0 1 0-5.94A3.9 3.9 0 0 1 4.1 3.6a4 4 0 0 1 1.5-1 10.7 10.7 0 0 1 7.11 0 3.9 3.9 0 0 1 1.49 1 4 4 0 0 1 .9 1.55 11.3 11.3 0 0 1 .39 2.96m.93 13.19a11 11 0 0 1 .39-3 3.6 3.6 0 0 1 .93-1.55 3.7 3.7 0 0 1 1.56-.92 10.7 10.7 0 0 1 7.11 0 3.9 3.9 0 0 1 1.49 1 4 4 0 0 1 .9 1.55 10.93 10.93 0 0 1 0 5.95 3.8 3.8 0 0 1-.89 1.56 3.74 3.74 0 0 1-1.5 1 11.5 11.5 0 0 1-3.55.59l-1.32-3.59h.15l.21.06a5.2 5.2 0 0 0 1.84 0 1.84 1.84 0 0 0 .84-.44 1.9 1.9 0 0 0 .52-.8 4.94 4.94 0 0 0 0-2.9 1.83 1.83 0 0 0-1.4-1.25 5.1 5.1 0 0 0-1.83 0A2 2 0 0 0 21 19a1.9 1.9 0 0 0-.53.81 4.6 4.6 0 0 0-.2 1.42V30h-3.85Z"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const CoopLocationIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const CoopLocationIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "coop-location",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M20.48 6.51a2.4 2.4 0 0 0-.54 0 2.3 2.3 0 0 0-.53 0 1 1 0 0 0-.8.71 2.75 2.75 0 0 0 0 1.67 1.07 1.07 0 0 0 .8.71 3 3 0 0 0 .53.05 3.3 3.3 0 0 0 .54-.05 1.07 1.07 0 0 0 .8-.71 3 3 0 0 0 0-1.67 1 1 0 0 0-.8-.71"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const DownloadIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const DownloadIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "download",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M16 22.56a1 1 0 0 1-1-1V1a1 1 0 0 1 2 0v20.56a1 1 0 0 1-1 1"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const HomeIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const HomeIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "home",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M29 31H3a1 1 0 0 1-1-1V15a1 1 0 0 1 2 0v14h24V15a1 1 0 0 1 2 0v15a1 1 0 0 1-1 1"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const InformationIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const InformationIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "information",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M14.46 10.19a1.4 1.4 0 0 1 .43-1A1.5 1.5 0 0 1 16 8.75a1.6 1.6 0 0 1 1.11.41 1.35 1.35 0 0 1 .45 1 1.32 1.32 0 0 1-.45 1 1.56 1.56 0 0 1-1.11.41 1.47 1.47 0 0 1-1.09-.43 1.35 1.35 0 0 1-.45-.95m.34 3.26h2.4v9.6h-2.4Z"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const LoadingIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const LoadingIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "loading",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 24 24",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M10.72 19.9a8 8 0 0 1-6.5-9.79 7.77 7.77 0 0 1 6.18-5.95 8 8 0 0 1 9.49 6.52A1.54 1.54 0 0 0 21.38 12h.13a1.37 1.37 0 0 0 1.38-1.54 11 11 0 1 0-12.7 12.39A1.54 1.54 0 0 0 12 21.34a1.47 1.47 0 0 0-1.28-1.44"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const LocationIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const LocationIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "location",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M28 6.3a8 8 0 0 0-4.92-5.1 22.68 22.68 0 0 0-14.56 0A7.39 7.39 0 0 0 3.9 6.3a17.8 17.8 0 0 0-.9 5.9c0 4.1 1.51 12.2 11.74 19.3l.41.3a1.45 1.45 0 0 0 .7.2 1.9 1.9 0 0 0 .7-.2h.1l.5-.3C27.39 24.4 29 16.3 29 12.2a21.5 21.5 0 0 0-1-5.9m-5.53-3.1a6.16 6.16 0 0 1 3.72 3.7 20 20 0 0 1 .8 5.3c0 4.6-2 9.1-5.82 13.2a31 31 0 0 1-4.72 4.1l-.1.1c-.1 0-.1.1-.2.1l-.2.2h-.1c-.1 0-.1-.1-.2-.1a.1.1 0 0 1-.1-.1 37.5 37.5 0 0 1-4.72-4.1C6.91 21.5 4.91 17 4.91 12.3a20.7 20.7 0 0 1 .8-5.3 5.72 5.72 0 0 1 3.61-3.8 21.1 21.1 0 0 1 13.15 0"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const MailIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const MailIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "mail",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M32 25.61V6.39a1.4 1.4 0 0 0 0-.2.6.6 0 0 0-.15-.19s0-.08-.05-.11 0 0-.05 0a1 1 0 0 0-.15-.14 1 1 0 0 0-.16-.11l-.17-.05H.73l-.17.07a.5.5 0 0 0-.16.1 1 1 0 0 0-.15.14s-.08.1-.1.1l-.09.18a1.4 1.4 0 0 0 0 .2V25.6a1.4 1.4 0 0 0 0 .2c0 .07.06.12.09.18a1 1 0 0 0 .05.11 1 1 0 0 0 .24.2.5.5 0 0 0 .09.06 1 1 0 0 0 .42.1H31a1 1 0 0 0 .42-.1.5.5 0 0 0 .09-.06 1 1 0 0 0 .24-.2h.05s0-.07.05-.1a.7.7 0 0 0 .09-.19 1 1 0 0 0 .06-.19M2 8.49 12.06 16 2 23.51Zm14 8L4 7.5h24Zm-2.26.81 1.66 1.24.11.06.1.05a1.1 1.1 0 0 0 .39.09 1.1 1.1 0 0 0 .39-.09l.1-.05.11-.06 1.66-1.24L28 24.5H4Zm6.19-1.3L30 8.49v15Z"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const MenuIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const MenuIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "menu",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M28 5H4a1 1 0 0 1 0-2h24a1 1 0 0 1 0 2M28 17H4a1 1 0 0 1 0-2h24a1 1 0 0 1 0 2M28 29H4a1 1 0 0 1 0-2h24a1 1 0 0 1 0 2"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const MessageIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const MessageIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "message",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M30 31a1 1 0 0 1-.75-.34l-7.64-8.6H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h28a1 1 0 0 1 .71.29A1 1 0 0 1 31 2v28a1 1 0 0 1-.65.93.8.8 0 0 1-.35.07M3 20.06h19.06a1 1 0 0 1 .75.33l6.19 7V3H3Z"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const MinusIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const MinusIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "minus",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M24.7 16.71a1 1 0 0 1-.7.29H8a1 1 0 1 1 0-2h16a1 1 0 0 1 1 1 1 1 0 0 1-.3.71"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const OpenNewIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const OpenNewIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "open-new",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M14.16 18.84a1 1 0 0 1-.71-.29 1 1 0 0 1 0-1.42L30 .59a1 1 0 0 1 1.41 0 1 1 0 0 1 0 1.42L14.87 18.55a1 1 0 0 1-.71.29"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const PencilIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const PencilIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "pencil",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M31.7 6.12 25.88.3a1 1 0 0 0-1.4 0L1.3 23.47a.86.86 0 0 0-.3.6L0 30.9a1.14 1.14 0 0 0 .3.8.91.91 0 0 0 .7.3h.1l6.82-1a.61.61 0 0 0 .61-.3L31.7 7.52a1 1 0 0 0 0-1.4M7.22 29l-3.57.56L5.08 28a1 1 0 0 0 0-1.42 1 1 0 0 0-1.41.05L2.39 28l.52-3.29 1.91-1.91 4.12 4.52Zm3.14-3.11-4.12-4.54L25.18 2.41l4.41 4.41Z"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const PhoneIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const PhoneIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "phone",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M28.88 21.26c-2.26-1.72-5.46-2.84-7-1.42-.51.51-1.65 1.52-5.15-1.42-5.73-5.37-5.47-7.29-4.44-8.42 1.44-1.52.41-4.66-1.34-6.89C8.78.38 6.21-.63 4.14.38a6.53 6.53 0 0 0-4 4.67c-.94 4.66 3.49 10.64 7.3 14.89.72.81 1.45 1.52 2.17 2.33l.41.41C14.45 27 20.53 32 25.58 32a4.4 4.4 0 0 0 1.14-.1 6.64 6.64 0 0 0 5-3.95c.87-2.03-.16-4.56-2.84-6.69m-13.6-1.32c2.06 1.72 5.25 3.75 7.93 1.42.42-.3 2.37 0 4.44 1.52 1.44 1.12 2.78 2.84 2.06 4.12a4.45 4.45 0 0 1-3.4 2.84c-3.3.51-8.77-2.63-14.85-8.71l-.31-.31c-.72-.71-1.44-1.41-2.16-2.23H9C4 13.15 1.57 8.49 2.19 5.45a4.69 4.69 0 0 1 2.88-3.24c1.34-.71 3.09.71 4.13 2.13 1.54 2 1.85 3.95 1.44 4.35-2.89 3 .1 6.89 3.92 10.64"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const QuestionIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const QuestionIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "question",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 32 32",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <path
23
26
  d="M16 0a16 16 0 1 0 16 16A16 16 0 0 0 16 0m0 30a14 14 0 1 1 14-14 14 14 0 0 1-14 14"
24
27
  fill={fill ?? "currentColor"}
@@ -1,24 +1,27 @@
1
1
  import clsx from "clsx"
2
- import { type SVGProps, useId } from "react"
2
+ import { type SVGProps } from "react"
3
+
4
+ import { useId } from "../../hooks/useId"
3
5
 
4
6
  interface IconProps extends SVGProps<SVGSVGElement> {
5
7
  alt?: string
6
8
  }
7
9
 
8
- export const ScooterIcon = ({ alt, className, fill, ...props }: IconProps) => {
9
- const id = useId()
10
+ export const ScooterIcon = ({ alt, className, fill, id, ref, ...props }: IconProps) => {
11
+ const uid = useId(id)
10
12
  const componentProps = {
11
- "aria-labelledby": alt ? id : undefined,
13
+ "aria-labelledby": alt ? uid + "-title" : undefined,
12
14
  className: clsx("coop-icon", className),
13
15
  "data-icon": "scooter",
14
16
  fill: fill ?? "none",
17
+ id: uid,
15
18
  role: alt ? "img" : undefined,
16
19
  viewBox: "0 0 46 30",
17
20
  ...props,
18
21
  }
19
22
  return (
20
- <svg {...componentProps}>
21
- {alt ? <title id={id}>{alt}</title> : null}
23
+ <svg {...componentProps} ref={ref}>
24
+ {alt ? <title id={uid + "-title"}>{alt}</title> : null}
22
25
  <g clipPath="url(#a)" clipRule="evenodd" fill="currentColor" fillRule="evenodd">
23
26
  <path d="M41.292 18.293a1 1 0 0 1 1.414 0C43.88 19.465 44.6 21.014 44.6 22.8c0 3.452-2.747 6.2-6.2 6.2-3.333 0-6.08-2.622-6.2-5.964a1 1 0 1 1 2-.072 4.19 4.19 0 0 0 4.2 4.036c2.348 0 4.2-1.852 4.2-4.2 0-1.214-.48-2.265-1.307-3.093a1 1 0 0 1 0-1.414M1.1 23a9.28 9.28 0 0 1 9.3-9.3 9.28 9.28 0 0 1 9.3 9.3 1 1 0 0 1-1 1H2.1a1 1 0 0 1-1-1m2.067-1h14.466a7.28 7.28 0 0 0-7.233-6.3A7.28 7.28 0 0 0 3.167 22" />
24
27
  <path