@digdir/designsystemet-react 1.0.0-next.34 → 1.0.0-next.35

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 (285) hide show
  1. package/dist/cjs/components/Accordion/AccordionContent.js +1 -2
  2. package/dist/cjs/components/Accordion/AccordionHeading.js +4 -6
  3. package/dist/cjs/components/Accordion/AccordionItem.js +16 -52
  4. package/dist/cjs/components/Alert/Alert.js +1 -2
  5. package/dist/cjs/components/Avatar/Avatar.js +1 -7
  6. package/dist/cjs/components/Badge/Badge.js +1 -7
  7. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js +1 -2
  8. package/dist/cjs/components/Button/Button.js +4 -3
  9. package/dist/cjs/components/Card/Card.js +24 -6
  10. package/dist/cjs/components/Card/{CardMedia.js → CardBlock.js} +3 -4
  11. package/dist/cjs/components/Card/index.js +6 -17
  12. package/dist/cjs/components/Chip/Chips.js +50 -0
  13. package/dist/cjs/components/Chip/index.js +12 -11
  14. package/dist/cjs/components/Dropdown/DropdownHeading.js +2 -5
  15. package/dist/cjs/components/ErrorSummary/ErrorSummaryHeading.js +2 -2
  16. package/dist/cjs/components/{Typography/Heading → Heading}/Heading.js +2 -3
  17. package/dist/cjs/components/{Typography/Label → Label}/Label.js +2 -3
  18. package/dist/cjs/components/List/Lists.js +1 -2
  19. package/dist/cjs/components/Modal/Modal.js +45 -0
  20. package/dist/cjs/components/Modal/ModalBlock.js +14 -0
  21. package/dist/cjs/components/Modal/ModalContext.js +17 -0
  22. package/dist/cjs/components/Modal/ModalTrigger.js +4 -5
  23. package/dist/cjs/components/Modal/index.js +12 -22
  24. package/dist/cjs/components/Pagination/Pagination.js +9 -14
  25. package/dist/cjs/components/Pagination/PaginationButton.js +4 -4
  26. package/dist/cjs/components/Pagination/PaginationItem.js +1 -4
  27. package/dist/cjs/components/Pagination/PaginationList.js +2 -5
  28. package/dist/cjs/components/Pagination/index.js +5 -19
  29. package/dist/cjs/components/Pagination/usePagination.js +46 -51
  30. package/dist/cjs/components/{Typography/Paragraph → Paragraph}/Paragraph.js +2 -8
  31. package/dist/cjs/components/Popover/Popover.js +3 -4
  32. package/dist/cjs/components/SkipLink/SkipLink.js +4 -4
  33. package/dist/cjs/components/Table/Table.js +1 -2
  34. package/dist/cjs/components/Tabs/TabsPanel.js +1 -2
  35. package/dist/cjs/components/Tabs/TabsTab.js +1 -2
  36. package/dist/cjs/components/Tag/Tag.js +1 -2
  37. package/dist/cjs/components/Tooltip/Tooltip.js +5 -6
  38. package/dist/cjs/components/{Typography/ValidationMessage → ValidationMessage}/ValidationMessage.js +2 -2
  39. package/dist/cjs/components/form/CharacterCounter.js +1 -1
  40. package/dist/cjs/components/form/Checkbox/Checkbox.js +2 -2
  41. package/dist/cjs/components/form/Combobox/Combobox.js +1 -2
  42. package/dist/cjs/components/form/Combobox/Custom.js +1 -1
  43. package/dist/cjs/components/form/Combobox/Empty.js +1 -1
  44. package/dist/cjs/components/form/Combobox/Option/Option.js +1 -1
  45. package/dist/cjs/components/form/Combobox/internal/ComboboxChips.js +2 -2
  46. package/dist/cjs/components/form/Combobox/internal/ComboboxError.js +1 -1
  47. package/dist/cjs/components/form/Combobox/internal/ComboboxInput.js +2 -2
  48. package/dist/cjs/components/form/Combobox/internal/ComboboxLabel.js +2 -2
  49. package/dist/cjs/components/form/Fieldset/Fieldset.js +3 -3
  50. package/dist/cjs/components/form/Radio/Radio.js +2 -2
  51. package/dist/cjs/components/form/Search/Search.js +2 -2
  52. package/dist/cjs/components/form/Select/Select.js +3 -3
  53. package/dist/cjs/components/form/Switch/Switch.js +3 -3
  54. package/dist/cjs/components/form/Textarea/Textarea.js +3 -3
  55. package/dist/cjs/components/form/Textfield/Textfield.js +3 -3
  56. package/dist/cjs/components/loaders/Skeleton/Skeleton.js +4 -2
  57. package/dist/cjs/index.js +17 -39
  58. package/dist/esm/components/Accordion/AccordionContent.js +1 -2
  59. package/dist/esm/components/Accordion/AccordionHeading.js +4 -6
  60. package/dist/esm/components/Accordion/AccordionItem.js +17 -53
  61. package/dist/esm/components/Alert/Alert.js +1 -2
  62. package/dist/esm/components/Avatar/Avatar.js +1 -7
  63. package/dist/esm/components/Badge/Badge.js +1 -7
  64. package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +1 -2
  65. package/dist/esm/components/Button/Button.js +5 -4
  66. package/dist/esm/components/Card/Card.js +25 -7
  67. package/dist/esm/components/Card/{CardMedia.js → CardBlock.js} +3 -4
  68. package/dist/esm/components/Card/index.js +6 -14
  69. package/dist/esm/components/Chip/Chips.js +45 -0
  70. package/dist/esm/components/Chip/index.js +9 -9
  71. package/dist/esm/components/Dropdown/DropdownHeading.js +3 -6
  72. package/dist/esm/components/ErrorSummary/ErrorSummaryHeading.js +2 -2
  73. package/dist/esm/components/{Typography/Heading → Heading}/Heading.js +2 -3
  74. package/dist/esm/components/Label/Label.js +18 -0
  75. package/dist/esm/components/List/Lists.js +1 -2
  76. package/dist/esm/components/Modal/Modal.js +43 -0
  77. package/dist/esm/components/Modal/ModalBlock.js +12 -0
  78. package/dist/esm/components/Modal/ModalContext.js +14 -0
  79. package/dist/esm/components/Modal/ModalTrigger.js +4 -5
  80. package/dist/esm/components/Modal/index.js +11 -18
  81. package/dist/esm/components/Pagination/Pagination.js +11 -17
  82. package/dist/esm/components/Pagination/PaginationButton.js +3 -3
  83. package/dist/esm/components/Pagination/PaginationItem.js +2 -5
  84. package/dist/esm/components/Pagination/PaginationList.js +3 -6
  85. package/dist/esm/components/Pagination/index.js +6 -16
  86. package/dist/esm/components/Pagination/usePagination.js +47 -52
  87. package/dist/esm/components/Paragraph/Paragraph.js +18 -0
  88. package/dist/esm/components/Popover/Popover.js +3 -4
  89. package/dist/esm/components/SkipLink/SkipLink.js +4 -4
  90. package/dist/esm/components/Table/Table.js +1 -2
  91. package/dist/esm/components/Tabs/TabsPanel.js +1 -2
  92. package/dist/esm/components/Tabs/TabsTab.js +1 -2
  93. package/dist/esm/components/Tag/Tag.js +1 -2
  94. package/dist/esm/components/Tooltip/Tooltip.js +5 -6
  95. package/dist/esm/components/{Typography/ValidationMessage → ValidationMessage}/ValidationMessage.js +2 -2
  96. package/dist/esm/components/form/CharacterCounter.js +1 -1
  97. package/dist/esm/components/form/Checkbox/Checkbox.js +2 -2
  98. package/dist/esm/components/form/Combobox/Combobox.js +2 -3
  99. package/dist/esm/components/form/Combobox/Custom.js +1 -1
  100. package/dist/esm/components/form/Combobox/Empty.js +1 -1
  101. package/dist/esm/components/form/Combobox/Option/Option.js +1 -1
  102. package/dist/esm/components/form/Combobox/internal/ComboboxChips.js +2 -2
  103. package/dist/esm/components/form/Combobox/internal/ComboboxError.js +1 -1
  104. package/dist/esm/components/form/Combobox/internal/ComboboxInput.js +2 -2
  105. package/dist/esm/components/form/Combobox/internal/ComboboxLabel.js +2 -2
  106. package/dist/esm/components/form/Fieldset/Fieldset.js +3 -3
  107. package/dist/esm/components/form/Radio/Radio.js +2 -2
  108. package/dist/esm/components/form/Search/Search.js +2 -2
  109. package/dist/esm/components/form/Select/Select.js +3 -3
  110. package/dist/esm/components/form/Switch/Switch.js +3 -3
  111. package/dist/esm/components/form/Textarea/Textarea.js +3 -3
  112. package/dist/esm/components/form/Textfield/Textfield.js +3 -3
  113. package/dist/esm/components/loaders/Skeleton/Skeleton.js +4 -2
  114. package/dist/esm/index.js +8 -20
  115. package/dist/types/components/Accordion/AccordionContent.d.ts.map +1 -1
  116. package/dist/types/components/Accordion/AccordionHeading.d.ts +2 -2
  117. package/dist/types/components/Accordion/AccordionHeading.d.ts.map +1 -1
  118. package/dist/types/components/Accordion/AccordionItem.d.ts +8 -8
  119. package/dist/types/components/Accordion/AccordionItem.d.ts.map +1 -1
  120. package/dist/types/components/Alert/Alert.d.ts.map +1 -1
  121. package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
  122. package/dist/types/components/Badge/Badge.d.ts.map +1 -1
  123. package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
  124. package/dist/types/components/Button/Button.d.ts.map +1 -1
  125. package/dist/types/components/Card/Card.d.ts +5 -15
  126. package/dist/types/components/Card/Card.d.ts.map +1 -1
  127. package/dist/types/components/Card/{CardMedia.d.ts → CardBlock.d.ts} +3 -3
  128. package/dist/types/components/Card/{CardMedia.d.ts.map → CardBlock.d.ts.map} +1 -1
  129. package/dist/types/components/Card/index.d.ts +12 -16
  130. package/dist/types/components/Card/index.d.ts.map +1 -1
  131. package/dist/types/components/Chip/Chips.d.ts +45 -0
  132. package/dist/types/components/Chip/Chips.d.ts.map +1 -0
  133. package/dist/types/components/Chip/index.d.ts +20 -21
  134. package/dist/types/components/Chip/index.d.ts.map +1 -1
  135. package/dist/types/components/Dropdown/DropdownHeading.d.ts.map +1 -1
  136. package/dist/types/components/ErrorSummary/ErrorSummaryHeading.d.ts +1 -2
  137. package/dist/types/components/ErrorSummary/ErrorSummaryHeading.d.ts.map +1 -1
  138. package/dist/types/components/ErrorSummary/index.d.ts +0 -1
  139. package/dist/types/components/ErrorSummary/index.d.ts.map +1 -1
  140. package/dist/types/components/{Typography/Heading → Heading}/Heading.d.ts +0 -4
  141. package/dist/types/components/Heading/Heading.d.ts.map +1 -0
  142. package/dist/types/components/Heading/index.d.ts.map +1 -0
  143. package/dist/types/components/{Typography/Label → Label}/Label.d.ts +0 -4
  144. package/dist/types/components/Label/Label.d.ts.map +1 -0
  145. package/dist/types/components/Label/index.d.ts.map +1 -0
  146. package/dist/types/components/List/Lists.d.ts.map +1 -1
  147. package/dist/types/components/Modal/Modal.d.ts +38 -0
  148. package/dist/types/components/Modal/Modal.d.ts.map +1 -0
  149. package/dist/types/components/{Card/CardFooter.d.ts → Modal/ModalBlock.d.ts} +3 -3
  150. package/dist/types/components/Modal/ModalBlock.d.ts.map +1 -0
  151. package/dist/types/components/Modal/ModalContext.d.ts +10 -0
  152. package/dist/types/components/Modal/ModalContext.d.ts.map +1 -0
  153. package/dist/types/components/Modal/ModalTrigger.d.ts.map +1 -1
  154. package/dist/types/components/Modal/index.d.ts +31 -20
  155. package/dist/types/components/Modal/index.d.ts.map +1 -1
  156. package/dist/types/components/Pagination/Pagination.d.ts +23 -36
  157. package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
  158. package/dist/types/components/Pagination/PaginationButton.d.ts +4 -3
  159. package/dist/types/components/Pagination/PaginationButton.d.ts.map +1 -1
  160. package/dist/types/components/Pagination/PaginationItem.d.ts.map +1 -1
  161. package/dist/types/components/Pagination/PaginationList.d.ts +1 -1
  162. package/dist/types/components/Pagination/PaginationList.d.ts.map +1 -1
  163. package/dist/types/components/Pagination/index.d.ts +16 -17
  164. package/dist/types/components/Pagination/index.d.ts.map +1 -1
  165. package/dist/types/components/Pagination/usePagination.d.ts +41 -17
  166. package/dist/types/components/Pagination/usePagination.d.ts.map +1 -1
  167. package/dist/types/components/{Typography/Paragraph → Paragraph}/Paragraph.d.ts +2 -6
  168. package/dist/types/components/Paragraph/Paragraph.d.ts.map +1 -0
  169. package/dist/types/components/Paragraph/index.d.ts.map +1 -0
  170. package/dist/types/components/Popover/Popover.d.ts.map +1 -1
  171. package/dist/types/components/SkipLink/SkipLink.d.ts +7 -5
  172. package/dist/types/components/SkipLink/SkipLink.d.ts.map +1 -1
  173. package/dist/types/components/Table/Table.d.ts.map +1 -1
  174. package/dist/types/components/Tabs/TabsPanel.d.ts.map +1 -1
  175. package/dist/types/components/Tabs/TabsTab.d.ts.map +1 -1
  176. package/dist/types/components/Tag/Tag.d.ts +2 -5
  177. package/dist/types/components/Tag/Tag.d.ts.map +1 -1
  178. package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
  179. package/dist/types/components/{Typography/ValidationMessage → ValidationMessage}/ValidationMessage.d.ts +0 -4
  180. package/dist/types/components/ValidationMessage/ValidationMessage.d.ts.map +1 -0
  181. package/dist/types/components/ValidationMessage/index.d.ts.map +1 -0
  182. package/dist/types/components/form/Checkbox/Checkbox.d.ts.map +1 -1
  183. package/dist/types/components/form/Combobox/Combobox.d.ts.map +1 -1
  184. package/dist/types/components/form/Combobox/internal/ComboboxLabel.d.ts.map +1 -1
  185. package/dist/types/components/form/Fieldset/Fieldset.d.ts.map +1 -1
  186. package/dist/types/components/form/Radio/Radio.d.ts.map +1 -1
  187. package/dist/types/components/form/Search/Search.d.ts.map +1 -1
  188. package/dist/types/components/form/Select/Select.d.ts.map +1 -1
  189. package/dist/types/components/form/Switch/Switch.d.ts.map +1 -1
  190. package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
  191. package/dist/types/components/form/Textfield/Textfield.d.ts.map +1 -1
  192. package/dist/types/components/index.d.ts +4 -1
  193. package/dist/types/components/index.d.ts.map +1 -1
  194. package/dist/types/components/loaders/Skeleton/Skeleton.d.ts +8 -17
  195. package/dist/types/components/loaders/Skeleton/Skeleton.d.ts.map +1 -1
  196. package/package.json +3 -3
  197. package/dist/cjs/components/Card/CardContent.js +0 -16
  198. package/dist/cjs/components/Card/CardFooter.js +0 -16
  199. package/dist/cjs/components/Card/CardHeader.js +0 -16
  200. package/dist/cjs/components/Chip/Group/Group.js +0 -15
  201. package/dist/cjs/components/Chip/Removable/Removable.js +0 -17
  202. package/dist/cjs/components/Chip/Toggle/Toggle.js +0 -18
  203. package/dist/cjs/components/Modal/ModaContent.js +0 -15
  204. package/dist/cjs/components/Modal/ModalDialog.js +0 -73
  205. package/dist/cjs/components/Modal/ModalFooter.js +0 -15
  206. package/dist/cjs/components/Modal/ModalHeader.js +0 -20
  207. package/dist/cjs/components/Modal/ModalRoot.js +0 -31
  208. package/dist/cjs/components/Modal/useModalState.js +0 -30
  209. package/dist/cjs/components/Modal/useScrollLock.js +0 -29
  210. package/dist/cjs/components/Pagination/PaginationEllipsis.js +0 -15
  211. package/dist/cjs/components/Pagination/PaginationNextPrev.js +0 -16
  212. package/dist/cjs/components/Pagination/PaginationRoot.js +0 -18
  213. package/dist/cjs/components/Typography/Ingress/Ingress.js +0 -21
  214. package/dist/esm/components/Card/CardContent.js +0 -14
  215. package/dist/esm/components/Card/CardFooter.js +0 -14
  216. package/dist/esm/components/Card/CardHeader.js +0 -14
  217. package/dist/esm/components/Chip/Group/Group.js +0 -12
  218. package/dist/esm/components/Chip/Removable/Removable.js +0 -15
  219. package/dist/esm/components/Chip/Toggle/Toggle.js +0 -16
  220. package/dist/esm/components/Modal/ModaContent.js +0 -13
  221. package/dist/esm/components/Modal/ModalDialog.js +0 -71
  222. package/dist/esm/components/Modal/ModalFooter.js +0 -13
  223. package/dist/esm/components/Modal/ModalHeader.js +0 -18
  224. package/dist/esm/components/Modal/ModalRoot.js +0 -28
  225. package/dist/esm/components/Modal/useModalState.js +0 -28
  226. package/dist/esm/components/Modal/useScrollLock.js +0 -27
  227. package/dist/esm/components/Pagination/PaginationEllipsis.js +0 -13
  228. package/dist/esm/components/Pagination/PaginationNextPrev.js +0 -13
  229. package/dist/esm/components/Pagination/PaginationRoot.js +0 -15
  230. package/dist/esm/components/Typography/Ingress/Ingress.js +0 -19
  231. package/dist/esm/components/Typography/Label/Label.js +0 -19
  232. package/dist/esm/components/Typography/Paragraph/Paragraph.js +0 -24
  233. package/dist/types/components/Card/CardContent.d.ts +0 -16
  234. package/dist/types/components/Card/CardContent.d.ts.map +0 -1
  235. package/dist/types/components/Card/CardFooter.d.ts.map +0 -1
  236. package/dist/types/components/Card/CardHeader.d.ts +0 -16
  237. package/dist/types/components/Card/CardHeader.d.ts.map +0 -1
  238. package/dist/types/components/Chip/Group/Group.d.ts +0 -20
  239. package/dist/types/components/Chip/Group/Group.d.ts.map +0 -1
  240. package/dist/types/components/Chip/Removable/Removable.d.ts +0 -17
  241. package/dist/types/components/Chip/Removable/Removable.d.ts.map +0 -1
  242. package/dist/types/components/Chip/Toggle/Toggle.d.ts +0 -33
  243. package/dist/types/components/Chip/Toggle/Toggle.d.ts.map +0 -1
  244. package/dist/types/components/Modal/ModaContent.d.ts +0 -16
  245. package/dist/types/components/Modal/ModaContent.d.ts.map +0 -1
  246. package/dist/types/components/Modal/ModalDialog.d.ts +0 -38
  247. package/dist/types/components/Modal/ModalDialog.d.ts.map +0 -1
  248. package/dist/types/components/Modal/ModalFooter.d.ts +0 -16
  249. package/dist/types/components/Modal/ModalFooter.d.ts.map +0 -1
  250. package/dist/types/components/Modal/ModalHeader.d.ts +0 -44
  251. package/dist/types/components/Modal/ModalHeader.d.ts.map +0 -1
  252. package/dist/types/components/Modal/ModalRoot.d.ts +0 -17
  253. package/dist/types/components/Modal/ModalRoot.d.ts.map +0 -1
  254. package/dist/types/components/Modal/useModalState.d.ts +0 -2
  255. package/dist/types/components/Modal/useModalState.d.ts.map +0 -1
  256. package/dist/types/components/Modal/useScrollLock.d.ts +0 -2
  257. package/dist/types/components/Modal/useScrollLock.d.ts.map +0 -1
  258. package/dist/types/components/Pagination/PaginationEllipsis.d.ts +0 -4
  259. package/dist/types/components/Pagination/PaginationEllipsis.d.ts.map +0 -1
  260. package/dist/types/components/Pagination/PaginationNextPrev.d.ts +0 -10
  261. package/dist/types/components/Pagination/PaginationNextPrev.d.ts.map +0 -1
  262. package/dist/types/components/Pagination/PaginationRoot.d.ts +0 -53
  263. package/dist/types/components/Pagination/PaginationRoot.d.ts.map +0 -1
  264. package/dist/types/components/Typography/Heading/Heading.d.ts.map +0 -1
  265. package/dist/types/components/Typography/Heading/index.d.ts.map +0 -1
  266. package/dist/types/components/Typography/Ingress/Ingress.d.ts +0 -34
  267. package/dist/types/components/Typography/Ingress/Ingress.d.ts.map +0 -1
  268. package/dist/types/components/Typography/Ingress/index.d.ts +0 -2
  269. package/dist/types/components/Typography/Ingress/index.d.ts.map +0 -1
  270. package/dist/types/components/Typography/Label/Label.d.ts.map +0 -1
  271. package/dist/types/components/Typography/Label/index.d.ts.map +0 -1
  272. package/dist/types/components/Typography/Paragraph/Paragraph.d.ts.map +0 -1
  273. package/dist/types/components/Typography/Paragraph/index.d.ts.map +0 -1
  274. package/dist/types/components/Typography/ValidationMessage/ValidationMessage.d.ts.map +0 -1
  275. package/dist/types/components/Typography/ValidationMessage/index.d.ts.map +0 -1
  276. package/dist/types/components/Typography/index.d.ts +0 -6
  277. package/dist/types/components/Typography/index.d.ts.map +0 -1
  278. package/dist/types/utilities/AnimateHeight/AnimateHeight.d.ts +0 -9
  279. package/dist/types/utilities/AnimateHeight/AnimateHeight.d.ts.map +0 -1
  280. package/dist/types/utilities/AnimateHeight/index.d.ts +0 -3
  281. package/dist/types/utilities/AnimateHeight/index.d.ts.map +0 -1
  282. /package/dist/types/components/{Typography/Heading → Heading}/index.d.ts +0 -0
  283. /package/dist/types/components/{Typography/Label → Label}/index.d.ts +0 -0
  284. /package/dist/types/components/{Typography/Paragraph → Paragraph}/index.d.ts +0 -0
  285. /package/dist/types/components/{Typography/ValidationMessage → ValidationMessage}/index.d.ts +0 -0
@@ -6,14 +6,14 @@ var akselIcons = require('@navikt/aksel-icons');
6
6
  var cl = require('clsx/lite');
7
7
  var react = require('react');
8
8
  var useSwitch = require('./useSwitch.js');
9
- var Paragraph = require('../../Typography/Paragraph/Paragraph.js');
9
+ var Paragraph = require('../../Paragraph/Paragraph.js');
10
10
  var omit = require('../../../utilities/omit/omit.js');
11
- var Label = require('../../Typography/Label/Label.js');
11
+ var Label = require('../../Label/Label.js');
12
12
 
13
13
  const Switch = react.forwardRef((props, ref) => {
14
14
  const { children, description, position = 'left', className, ...rest } = props;
15
15
  const { inputProps, descriptionId, size = 'md', readOnly, } = useSwitch.useSwitch(props);
16
- return (jsxRuntime.jsx(Paragraph.Paragraph, { asChild: true, size: size, children: jsxRuntime.jsxs("div", { className: cl(`ds-switch`, `ds-switch--${size}`, inputProps.disabled && `ds-switch--disabled`, readOnly && `ds-switch--readonly`, className), children: [jsxRuntime.jsx("input", { className: `ds-switch__input`, disabled: inputProps.disabled, ref: ref, ...omit.omit(['size', 'error'], rest), ...inputProps }), jsxRuntime.jsxs(Label.Label, { className: cl(`ds-switch__label`, position === 'right' && `ds-switch__label--right`), htmlFor: inputProps.id, size: size, weight: 'regular', children: [jsxRuntime.jsx("span", { className: `ds-switch__track`, children: jsxRuntime.jsx("span", { className: `ds-switch__thumb` }) }), readOnly && (jsxRuntime.jsx(akselIcons.PadlockLockedFillIcon, { "aria-hidden": true, className: `ds-switch__readonly__icon` })), children && jsxRuntime.jsx("span", { children: children })] }), description && (jsxRuntime.jsx(Paragraph.Paragraph, { asChild: true, size: size, children: jsxRuntime.jsx("div", { id: descriptionId, className: `ds-switch__description`, children: description }) }))] }) }));
16
+ return (jsxRuntime.jsx(Paragraph.Paragraph, { asChild: true, size: size, ...(inputProps.disabled && { 'aria-disabled': true }), children: jsxRuntime.jsxs("div", { className: cl(`ds-switch`, `ds-switch--${size}`, inputProps.disabled && `ds-switch--disabled`, readOnly && `ds-switch--readonly`, className), children: [jsxRuntime.jsx("input", { className: `ds-switch__input`, disabled: inputProps.disabled, ref: ref, ...omit.omit(['size', 'error'], rest), ...inputProps }), jsxRuntime.jsxs(Label.Label, { className: cl(`ds-switch__label`, position === 'right' && `ds-switch__label--right`), htmlFor: inputProps.id, size: size, weight: 'regular', children: [jsxRuntime.jsx("span", { className: `ds-switch__track`, children: jsxRuntime.jsx("span", { className: `ds-switch__thumb` }) }), readOnly && (jsxRuntime.jsx(akselIcons.PadlockLockedFillIcon, { "aria-hidden": true, className: `ds-switch__readonly__icon` })), children && jsxRuntime.jsx("span", { children: children })] }), description && (jsxRuntime.jsx(Paragraph.Paragraph, { asChild: true, size: size, children: jsxRuntime.jsx("div", { id: descriptionId, className: `ds-switch__description`, children: description }) }))] }) }));
17
17
  });
18
18
  Switch.displayName = 'Switch';
19
19
 
@@ -7,10 +7,10 @@ var cl = require('clsx/lite');
7
7
  var react = require('react');
8
8
  var CharacterCounter = require('../CharacterCounter.js');
9
9
  var useTextarea = require('./useTextarea.js');
10
- var Paragraph = require('../../Typography/Paragraph/Paragraph.js');
11
- var Label = require('../../Typography/Label/Label.js');
10
+ var Paragraph = require('../../Paragraph/Paragraph.js');
11
+ var Label = require('../../Label/Label.js');
12
12
  var omit = require('../../../utilities/omit/omit.js');
13
- var ValidationMessage = require('../../Typography/ValidationMessage/ValidationMessage.js');
13
+ var ValidationMessage = require('../../ValidationMessage/ValidationMessage.js');
14
14
 
15
15
  /** Textarea field
16
16
  *
@@ -7,10 +7,10 @@ var cl = require('clsx/lite');
7
7
  var react = require('react');
8
8
  var CharacterCounter = require('../CharacterCounter.js');
9
9
  var useTextfield = require('./useTextfield.js');
10
- var Paragraph = require('../../Typography/Paragraph/Paragraph.js');
11
- var Label = require('../../Typography/Label/Label.js');
10
+ var Paragraph = require('../../Paragraph/Paragraph.js');
11
+ var Label = require('../../Label/Label.js');
12
12
  var omit = require('../../../utilities/omit/omit.js');
13
- var ValidationMessage = require('../../Typography/ValidationMessage/ValidationMessage.js');
13
+ var ValidationMessage = require('../../ValidationMessage/ValidationMessage.js');
14
14
 
15
15
  /** Text input field
16
16
  *
@@ -8,11 +8,13 @@ var cl = require('clsx/lite');
8
8
  var react = require('react');
9
9
  var useSynchronizedAnimation = require('../../../utilities/hooks/useSynchronizedAnimation/useSynchronizedAnimation.js');
10
10
 
11
- const Skeleton = react.forwardRef(function Skeleton({ asChild, className, height, style, variant = 'rectangle', width, ...rest }, ref) {
11
+ const Skeleton = react.forwardRef(function Skeleton({ asChild, className, children, height, style, variant = 'rectangle', width, ...rest }, ref) {
12
12
  const Component = asChild ? reactSlot.Slot : 'span';
13
+ const isText = variant === 'text';
14
+ const childrenText = isText && '-'.repeat(Number(width) || 1); // s followed by a ­ makes the most average character length
13
15
  const animationRef = useSynchronizedAnimation.useSynchronizedAnimation('ds-skeleton-opacity-fade');
14
16
  const mergedRefs = react$1.useMergeRefs([animationRef, ref]);
15
- return (jsxRuntime.jsx(Component, { "aria-hidden": 'true', className: cl('ds-skeleton', className), "data-variant": variant, ref: mergedRefs, style: { width, height, ...style }, ...rest }));
17
+ return (jsxRuntime.jsx(Component, { "aria-hidden": 'true', className: cl('ds-skeleton', className), "data-variant": variant, ref: mergedRefs, style: isText ? style : { width, height, ...style }, ...rest, children: children || childrenText }));
16
18
  });
17
19
 
18
20
  exports.Skeleton = Skeleton;
package/dist/cjs/index.js CHANGED
@@ -21,11 +21,10 @@ var Link = require('./components/Link/Link.js');
21
21
  var index$1 = require('./components/List/index.js');
22
22
  var Lists = require('./components/List/Lists.js');
23
23
  var ListItem = require('./components/List/ListItem.js');
24
- var Paragraph = require('./components/Typography/Paragraph/Paragraph.js');
25
- var Heading = require('./components/Typography/Heading/Heading.js');
26
- var Ingress = require('./components/Typography/Ingress/Ingress.js');
27
- var Label = require('./components/Typography/Label/Label.js');
28
- var ValidationMessage = require('./components/Typography/ValidationMessage/ValidationMessage.js');
24
+ var Label = require('./components/Label/Label.js');
25
+ var Heading = require('./components/Heading/Heading.js');
26
+ var Paragraph = require('./components/Paragraph/Paragraph.js');
27
+ var ValidationMessage = require('./components/ValidationMessage/ValidationMessage.js');
29
28
  var index$2 = require('./components/Accordion/index.js');
30
29
  var AccordionItem = require('./components/Accordion/AccordionItem.js');
31
30
  var AccordionContent = require('./components/Accordion/AccordionContent.js');
@@ -36,17 +35,12 @@ var SelectOptgroup = require('./components/form/Select/SelectOptgroup.js');
36
35
  var Alert = require('./components/Alert/Alert.js');
37
36
  var Tag = require('./components/Tag/Tag.js');
38
37
  var index$4 = require('./components/Chip/index.js');
39
- var Group = require('./components/Chip/Group/Group.js');
40
- var Removable = require('./components/Chip/Removable/Removable.js');
41
- var Toggle = require('./components/Chip/Toggle/Toggle.js');
38
+ var Chips = require('./components/Chip/Chips.js');
42
39
  var usePagination = require('./components/Pagination/usePagination.js');
43
40
  var index$5 = require('./components/Pagination/index.js');
44
- var PaginationRoot = require('./components/Pagination/PaginationRoot.js');
45
41
  var PaginationList = require('./components/Pagination/PaginationList.js');
46
42
  var PaginationItem = require('./components/Pagination/PaginationItem.js');
47
43
  var PaginationButton = require('./components/Pagination/PaginationButton.js');
48
- var PaginationEllipsis = require('./components/Pagination/PaginationEllipsis.js');
49
- var PaginationNextPrev = require('./components/Pagination/PaginationNextPrev.js');
50
44
  var SkipLink = require('./components/SkipLink/SkipLink.js');
51
45
  var Tooltip = require('./components/Tooltip/Tooltip.js');
52
46
  var index$6 = require('./components/form/Checkbox/index.js');
@@ -68,12 +62,9 @@ var PopoverContext = require('./components/Popover/PopoverContext.js');
68
62
  var PopoverTrigger = require('./components/Popover/PopoverTrigger.js');
69
63
  var Divider = require('./components/Divider/Divider.js');
70
64
  var index$b = require('./components/Modal/index.js');
71
- var ModalRoot = require('./components/Modal/ModalRoot.js');
72
- var ModaContent = require('./components/Modal/ModaContent.js');
73
- var ModalFooter = require('./components/Modal/ModalFooter.js');
74
- var ModalHeader = require('./components/Modal/ModalHeader.js');
65
+ var ModalBlock = require('./components/Modal/ModalBlock.js');
66
+ var ModalContext = require('./components/Modal/ModalContext.js');
75
67
  var ModalTrigger = require('./components/Modal/ModalTrigger.js');
76
- var ModalDialog = require('./components/Modal/ModalDialog.js');
77
68
  var index$c = require('./components/Dropdown/index.js');
78
69
  var DropdownContext = require('./components/Dropdown/DropdownContext.js');
79
70
  var DropdownList = require('./components/Dropdown/DropdownList.js');
@@ -82,10 +73,7 @@ var DropdownItem = require('./components/Dropdown/DropdownItem.js');
82
73
  var DropdownTrigger = require('./components/Dropdown/DropdownTrigger.js');
83
74
  var Search = require('./components/form/Search/Search.js');
84
75
  var index$d = require('./components/Card/index.js');
85
- var CardHeader = require('./components/Card/CardHeader.js');
86
- var CardContent = require('./components/Card/CardContent.js');
87
- var CardFooter = require('./components/Card/CardFooter.js');
88
- var CardMedia = require('./components/Card/CardMedia.js');
76
+ var CardBlock = require('./components/Card/CardBlock.js');
89
77
  var index$e = require('./components/form/Combobox/index.js');
90
78
  var Option = require('./components/form/Combobox/Option/Option.js');
91
79
  var Empty = require('./components/form/Combobox/Empty.js');
@@ -125,10 +113,9 @@ exports.List = index$1.List;
125
113
  exports.ListOrdered = Lists.ListOrdered;
126
114
  exports.ListUnordered = Lists.ListUnordered;
127
115
  exports.ListItem = ListItem.ListItem;
128
- exports.Paragraph = Paragraph.Paragraph;
129
- exports.Heading = Heading.Heading;
130
- exports.Ingress = Ingress.Ingress;
131
116
  exports.Label = Label.Label;
117
+ exports.Heading = Heading.Heading;
118
+ exports.Paragraph = Paragraph.Paragraph;
132
119
  exports.ValidationMessage = ValidationMessage.ValidationMessage;
133
120
  exports.Accordion = index$2.Accordion;
134
121
  exports.AccordionItem = AccordionItem.AccordionItem;
@@ -140,18 +127,15 @@ exports.SelectOptgroup = SelectOptgroup.SelectOptgroup;
140
127
  exports.Alert = Alert.Alert;
141
128
  exports.Tag = Tag.Tag;
142
129
  exports.Chip = index$4.Chip;
143
- exports.ChipGroup = Group.Group;
144
- exports.ChipRemovable = Removable.RemovableChip;
145
- exports.ChipToggle = Toggle.ToggleChip;
130
+ exports.ChipButton = Chips.ChipButton;
131
+ exports.ChipCheckbox = Chips.ChipCheckbox;
132
+ exports.ChipRadio = Chips.ChipRadio;
133
+ exports.ChipRemovable = Chips.ChipRemovable;
146
134
  exports.usePagination = usePagination.usePagination;
147
135
  exports.Pagination = index$5.Pagination;
148
- exports.PaginationRoot = PaginationRoot.PaginationRoot;
149
136
  exports.PaginationList = PaginationList.PaginationList;
150
137
  exports.PaginationItem = PaginationItem.PaginationItem;
151
138
  exports.PaginationButton = PaginationButton.PaginationButton;
152
- exports.PaginationEllipsis = PaginationEllipsis.PaginationEllipsis;
153
- exports.PaginationNext = PaginationNextPrev.PaginationNext;
154
- exports.PaginationPrevious = PaginationNextPrev.PaginationPrevious;
155
139
  exports.SkipLink = SkipLink.SkipLink;
156
140
  exports.Tooltip = Tooltip.Tooltip;
157
141
  exports.Checkbox = index$6.Checkbox;
@@ -173,12 +157,9 @@ exports.PopoverContext = PopoverContext.PopoverContext;
173
157
  exports.PopoverTrigger = PopoverTrigger.PopoverTrigger;
174
158
  exports.Divider = Divider.Divider;
175
159
  exports.Modal = index$b.Modal;
176
- exports.ModalRoot = ModalRoot.ModalRoot;
177
- exports.ModalContent = ModaContent.ModalContent;
178
- exports.ModalFooter = ModalFooter.ModalFooter;
179
- exports.ModalHeader = ModalHeader.ModalHeader;
160
+ exports.ModalBlock = ModalBlock.ModalBlock;
161
+ exports.ModalContext = ModalContext.ModalContext;
180
162
  exports.ModalTrigger = ModalTrigger.ModalTrigger;
181
- exports.ModalDialog = ModalDialog.ModalDialog;
182
163
  exports.Dropdown = index$c.Dropdown;
183
164
  exports.DropdownContext = DropdownContext.DropdownContext;
184
165
  exports.DropdownList = DropdownList.DropdownList;
@@ -187,10 +168,7 @@ exports.DropdownItem = DropdownItem.DropdownItem;
187
168
  exports.DropdownTrigger = DropdownTrigger.DropdownTrigger;
188
169
  exports.Search = Search.Search;
189
170
  exports.Card = index$d.Card;
190
- exports.CardHeader = CardHeader.CardHeader;
191
- exports.CardContent = CardContent.CardContent;
192
- exports.CardFooter = CardFooter.CardFooter;
193
- exports.CardMedia = CardMedia.CardMedia;
171
+ exports.CardBlock = CardBlock.CardBlock;
194
172
  exports.Combobox = index$e.Combobox;
195
173
  exports.ComboboxOption = Option.ComboboxOption;
196
174
  exports.ComboboxEmpty = Empty.ComboboxEmpty;
@@ -1,7 +1,6 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
- import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
5
4
 
6
5
  /**
7
6
  * Accordion content component, contains the content of the accordion item.
@@ -9,7 +8,7 @@ import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
9
8
  * <AccordionContent>Content</AccordionContent>
10
9
  */
11
10
  const AccordionContent = forwardRef(function AccordionContent(rest, ref) {
12
- return (jsx(Paragraph, { asChild: true, size: 'sm', children: jsx("div", { ref: ref, ...rest }) }));
11
+ return jsx("div", { ref: ref, ...rest });
13
12
  });
14
13
 
15
14
  export { AccordionContent };
@@ -1,17 +1,15 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import cl from 'clsx/lite';
4
3
  import { forwardRef } from 'react';
5
- import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
6
4
 
7
5
  /**
8
- * Accordion header component, contains a button to toggle the content.
6
+ * Accordion heading component, contains a button to toggle the content.
9
7
  * @example
10
- * <AccordionHeader>Header</AccordionHeader>
8
+ * <AccordionHeading>Heading</AccordionHeading>
11
9
  */
12
10
  const AccordionHeading = forwardRef(function AccordionHeading({ className, ...rest }, ref) {
13
- return (jsx(Paragraph, { asChild: true, size: 'sm', children: jsx("u-summary", { class: cl('ds-focus ds-paragraph ds-paragraph--sm ds-line-height--md', // Very TMP fix awaiting CSS modules
14
- className), ref: ref, ...rest }) }));
11
+ /* Set `className` as `class` so react is happy */
12
+ return jsx("u-summary", { ref: ref, class: className, ...rest });
15
13
  });
16
14
 
17
15
  export { AccordionHeading };
@@ -2,75 +2,39 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { useMergeRefs } from '@floating-ui/react';
4
4
  import cl from 'clsx/lite';
5
- import { forwardRef, useState, useRef, useEffect } from 'react';
5
+ import { forwardRef, useRef, useEffect } from 'react';
6
6
  import '@u-elements/u-details';
7
7
 
8
8
  /**
9
- * Accordion item component, contains `Accordion.Header` and `Accordion.Content` components.
9
+ * Accordion item component, contains `Accordion.Heading` and `Accordion.Content` components.
10
10
  * @example
11
11
  * <AccordionItem>
12
- * <AccordionHeader>Header</AccordionHeader>
12
+ * <AccordionHeading>Header</AccordionHeading>
13
13
  * <AccordionContent>Content</AccordionContent>
14
14
  * </AccordionItem>
15
15
  */
16
- const AccordionItem = forwardRef(function AccordionItem({ className, open, defaultOpen = false, onFound, ...rest }, ref) {
17
- const [internalOpen, setInternalOpen] = useState(open ?? defaultOpen);
18
- const initialOpen = useRef(internalOpen); // Allow rendering initial open state on server, but animate in browser
19
- const controlledOpen = useRef(internalOpen); // Using ref so we can access it inside useEffect without unbinding/binding event listeners
16
+ const AccordionItem = forwardRef(function AccordionItem({ className, open, defaultOpen = false, onToggle, ...rest }, ref) {
20
17
  const detailsRef = useRef(null);
18
+ const initialOpen = useRef(defaultOpen); // Allow rendering defaultOpen on server, but only render once on client
21
19
  const mergedRefs = useMergeRefs([detailsRef, ref]);
22
- controlledOpen.current = open ?? internalOpen; // Update controlledOpen on prop change
23
- // Control state with a useEffect to animate on prop change and prevent native <details> toggle
20
+ const onToggleRef = useRef(onToggle); // Using ref to enable access inside useEffect without re-binding event listeners
21
+ const openRef = useRef(open);
22
+ onToggleRef.current = onToggle;
23
+ openRef.current = open;
24
+ // Provide onToggle event and controlled state
24
25
  useEffect(() => {
25
26
  const details = detailsRef.current;
26
- const summary = details?.querySelector(':scope > :is(summary,u-summary)');
27
- const handleSummaryClick = (event) => {
28
- event?.preventDefault(); // Prevent native <details> toggle so we can animate
29
- setInternalOpen((open) => !open);
30
- };
31
- const handleToggle = () => {
32
- if (!details || details.open === controlledOpen.current)
27
+ const handleToggle = (event) => {
28
+ if (!details || details?.open === openRef.current)
33
29
  return;
34
- onFound?.();
35
- setInternalOpen(details?.open || false);
36
- window.requestAnimationFrame(() => {
37
- details.open = controlledOpen.current;
38
- }); // Let onFound run before correcting state
30
+ onToggleRef.current?.(event);
31
+ if (openRef.current !== undefined)
32
+ details.open = openRef.current; // Don't update DOM unless controlled state changes
39
33
  };
40
34
  details?.addEventListener('toggle', handleToggle, true);
41
- summary?.addEventListener('click', handleSummaryClick);
42
- return () => {
43
- details?.removeEventListener('toggle', handleToggle, true);
44
- summary?.removeEventListener('click', handleSummaryClick);
45
- };
35
+ return () => details?.removeEventListener('toggle', handleToggle, true);
46
36
  }, []);
47
- useEffect(() => {
48
- animateHeight(detailsRef.current, controlledOpen.current);
49
- }, [controlledOpen.current]);
50
- return (jsx("u-details", { class: cl('ds-accordion__item', className), open: initialOpen.current || undefined, ref: mergedRefs, ...rest }));
37
+ return (jsx("u-details", { class: cl('ds-accordion__item', className), open: (open ?? initialOpen.current) || undefined, ref: mergedRefs, ...rest }));
51
38
  });
52
- const animateHeight = (details, open) => {
53
- const content = details?.querySelector(':scope > :not(summary, u-summary)');
54
- const hasContent = content instanceof HTMLElement;
55
- const hasAnimate = details && 'animate' in details;
56
- const hasReducedMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches;
57
- details?.setAttribute('data-chevron-open', `${open}`); // Make flip on click
58
- if (hasReducedMotion || !hasAnimate || !hasContent) {
59
- if (details)
60
- details.open = open;
61
- }
62
- else if (details.open !== open) {
63
- details.open = true;
64
- const opened = `${content.scrollHeight}px`;
65
- content.style.overflow = 'clip'; // Clip content while animating
66
- content.animate({
67
- height: [open ? '0px' : opened, open ? opened : '0px'],
68
- paddingBlock: [open ? '0px' : '', open ? '' : '0px'],
69
- }, { duration: 400, easing: 'ease-in-out' }).onfinish = () => {
70
- content.style.removeProperty('overflow'); // Restore overlow
71
- details.open = open;
72
- };
73
- }
74
- };
75
39
 
76
40
  export { AccordionItem };
@@ -2,7 +2,6 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
4
  import { forwardRef } from 'react';
5
- import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
6
5
 
7
6
  /**
8
7
  * Alerts are used to inform users about important information, warnings, errors, or success.
@@ -10,7 +9,7 @@ import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
10
9
  * <Alert color='info'>Dette er en informasjonsmelding</Alert>
11
10
  */
12
11
  const Alert = forwardRef(function Alert({ color = 'info', size = 'md', className, ...rest }, ref) {
13
- return (jsx(Paragraph, { asChild: true, size: size, children: jsx("div", { className: cl('ds-alert', className), "data-color": color, "data-size": size, ref: ref, ...rest }) }));
12
+ return (jsx("div", { className: cl('ds-alert', className), "data-color": color, "data-size": size, ref: ref, ...rest }));
14
13
  });
15
14
 
16
15
  export { Alert };
@@ -4,12 +4,6 @@ import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef, Fragment } from 'react';
6
6
 
7
- const fontSizeMap = {
8
- xs: 'ds-paragraph--xs',
9
- sm: 'ds-heading--2xs',
10
- md: 'ds-heading--sm',
11
- lg: 'ds-heading--md',
12
- };
13
7
  /**
14
8
  * Avatars are used to represent people or entities.
15
9
  *
@@ -28,7 +22,7 @@ const fontSizeMap = {
28
22
  */
29
23
  const Avatar = forwardRef(function Avatar({ 'aria-label': ariaLabel, color = 'accent', size = 'md', variant = 'circle', className, children, ...rest }, ref) {
30
24
  const Component = children && typeof children !== 'string' ? Slot : Fragment;
31
- return (jsx("span", { ref: ref, className: cl('ds-avatar', fontSizeMap[size], className), "data-variant": variant, "data-color": color, "data-size": size, role: 'img', "aria-label": ariaLabel, ...rest, children: jsx(Component, { ...(children ? { 'aria-hidden': true } : {}), children: children }) }));
25
+ return (jsx("span", { ref: ref, className: cl('ds-avatar', className), "data-variant": variant, "data-color": color, "data-size": size, role: 'img', "aria-label": ariaLabel, ...rest, children: jsx(Component, { ...(children ? { 'aria-hidden': true } : {}), children: children }) }));
32
26
  });
33
27
 
34
28
  export { Avatar };
@@ -2,13 +2,7 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
4
  import { forwardRef } from 'react';
5
- import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
6
5
 
7
- const paragraphSizeMap = {
8
- sm: 'xs',
9
- md: 'sm',
10
- lg: 'md',
11
- };
12
6
  /**
13
7
  * `Badge` is a non-interactive component for displaying status with or without numbers.
14
8
  *
@@ -25,7 +19,7 @@ const paragraphSizeMap = {
25
19
  * ```
26
20
  */
27
21
  const Badge = forwardRef(function Badge({ className, color = 'accent', count, maxCount, overlap = 'rectangle', placement = 'top-right', size = 'md', ...rest }, ref) {
28
- return (jsx(Paragraph, { asChild: true, variant: 'short', size: paragraphSizeMap[size], children: jsx("span", { className: cl('ds-badge', className), "data-color": color, "data-count": count && maxCount && count > maxCount ? `${maxCount}+` : count, "data-overlap": rest.children ? overlap : null, "data-placement": rest.children ? placement : null, "data-size": size, ref: ref, ...rest }) }));
22
+ return (jsx("span", { className: cl('ds-badge', className), "data-color": color, "data-count": count && maxCount && count > maxCount ? `${maxCount}+` : count, "data-overlap": rest.children ? overlap : null, "data-placement": rest.children ? placement : null, "data-size": size, ref: ref, ...rest }));
29
23
  });
30
24
 
31
25
  export { Badge };
@@ -2,8 +2,7 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
4
  import { forwardRef } from 'react';
5
- import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
6
5
 
7
- const Breadcrumbs = forwardRef(({ 'aria-label': ariaLabel = 'Du er her:', className, size, ...rest }, ref) => (jsx(Paragraph, { asChild: true, size: size, children: jsx("nav", { "aria-label": ariaLabel, className: cl('ds-breadcrumbs', className), "data-size": size, ref: ref, ...rest }) })));
6
+ const Breadcrumbs = forwardRef(({ 'aria-label': ariaLabel = 'Du er her:', className, size, ...rest }, ref) => (jsx("nav", { "aria-label": ariaLabel, className: cl('ds-breadcrumbs', className), "data-size": size, ref: ref, ...rest })));
8
7
 
9
8
  export { Breadcrumbs };
@@ -1,9 +1,8 @@
1
1
  'use client';
2
- import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { Slottable, Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef } from 'react';
6
- import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
7
6
  import { Spinner } from '../loaders/Spinner/Spinner.js';
8
7
 
9
8
  /**
@@ -15,8 +14,10 @@ const Button = forwardRef(function Button({ asChild, className, children, color
15
14
  const Component = asChild ? Slot : 'button';
16
15
  const spinnerColor = color === 'accent' ? color : 'neutral';
17
16
  // Fallbacks to undefined to prevent rendering attribute="false"
18
- return (jsx(Paragraph, { variant: 'short', size: size, asChild: true, children: jsxs(Component, { "aria-busy": Boolean(loading) || undefined, className: cl('ds-button', className), "data-color": color, "data-icon": icon || undefined, "data-size": size, "data-variant": variant, ref: ref, ...(asChild ? { asChild: true } : { type: 'button' }), ...rest, children: [loading === true ? (jsx(Spinner, { "aria-hidden": 'true', color: spinnerColor, size: 'sm', title: '' })) : (loading // Allow custom loading spinner
19
- ), jsx(Slottable, { children: children })] }) }));
17
+ return (jsxs(Component, { "aria-busy": Boolean(loading) || undefined, className: cl('ds-button', className), "data-color": color, "data-icon": icon || undefined, "data-size": size, "data-variant": variant, ref: ref,
18
+ /* don't set type when we use `asChild` */
19
+ type: asChild ? undefined : 'button', ...rest, children: [loading === true ? (jsx(Spinner, { "aria-hidden": 'true', color: spinnerColor, size: 'sm', title: '' })) : (loading // Allow custom loading spinner
20
+ ), jsx(Slottable, { children: children })] }));
20
21
  });
21
22
 
22
23
  export { Button };
@@ -1,22 +1,40 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
+ import { useMergeRefs } from '@floating-ui/react';
3
4
  import { Slot } from '@radix-ui/react-slot';
4
5
  import cl from 'clsx/lite';
5
- import { forwardRef } from 'react';
6
+ import { forwardRef, useRef, useEffect } from 'react';
6
7
 
7
8
  /**
8
9
  * Card component to present content in a structured way.
9
10
  * @example
10
11
  * <Card>
11
- * <Card.Header>Header</Card.Header>
12
- * <Card.Content>Content</Card.Content>
13
- * <Card.Footer>Footer</Card.Footer>
12
+ * <Card.Block>Header</Card.Block>
13
+ * <Card.Block>Content</Card.Block>
14
+ * <Card.Block>Footer</Card.Block>
14
15
  * </Card>
15
16
  */
16
- const Card = forwardRef(({ isLink = false, asChild = false, color = 'neutral', className, ...rest }, ref) => {
17
+ const Card = forwardRef(function Card({ asChild = false, color = 'neutral', className, ...rest }, ref) {
17
18
  const Component = asChild ? Slot : 'div';
18
- return (jsx(Component, { ref: ref, className: cl(`ds-card`, isLink && `ds-focus`, className), "data-color": color, "data-link": isLink ? '' : undefined, ...rest }));
19
+ const cardRef = useRef(null);
20
+ const mergedRefs = useMergeRefs([cardRef, ref]);
21
+ // Forward click on card to heading links for better accessibility
22
+ // https://adrianroselli.com/2020/02/block-links-cards-clickable-regions-etc.html
23
+ useEffect(() => {
24
+ const card = cardRef.current;
25
+ const handleClick = ({ ctrlKey, metaKey, target }) => {
26
+ const link = card?.querySelector(':is(h1,h2,h3,h4,h5,h6) a');
27
+ if (!link || link?.contains(target))
28
+ return; // Let links handle their own clicks
29
+ if (ctrlKey || metaKey)
30
+ window.open(link.href, '', 'noreferrer');
31
+ else
32
+ link.click(); // Using link.click instead of window.location.href as this will trigger the browser's handling of rel=, target=, etc.
33
+ };
34
+ card?.addEventListener('click', handleClick);
35
+ return () => card?.removeEventListener('click', handleClick);
36
+ }, []);
37
+ return (jsx(Component, { className: cl(`ds-card`, className), "data-color": color, ref: mergedRefs, ...rest }));
19
38
  });
20
- Card.displayName = 'Card';
21
39
 
22
40
  export { Card };
@@ -4,10 +4,9 @@ import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef } from 'react';
6
6
 
7
- const CardMedia = forwardRef(({ asChild, className, ...rest }, ref) => {
7
+ const CardBlock = forwardRef(function CardBlock({ asChild, className, ...rest }, ref) {
8
8
  const Component = asChild ? Slot : 'div';
9
- return (jsx(Component, { className: cl(`ds-card__media`, className), ref: ref, ...rest }));
9
+ return (jsx(Component, { className: cl(`ds-card__block`, className), ref: ref, ...rest }));
10
10
  });
11
- CardMedia.displayName = 'CardMedia';
12
11
 
13
- export { CardMedia };
12
+ export { CardBlock };
@@ -1,18 +1,10 @@
1
1
  'use client';
2
2
  import { Card as Card$1 } from './Card.js';
3
- import { CardContent } from './CardContent.js';
4
- import { CardFooter } from './CardFooter.js';
5
- import { CardHeader } from './CardHeader.js';
6
- import { CardMedia } from './CardMedia.js';
3
+ import { CardBlock } from './CardBlock.js';
7
4
 
8
- const Card = Card$1;
9
- Card.Header = CardHeader;
10
- Card.Content = CardContent;
11
- Card.Footer = CardFooter;
12
- Card.Media = CardMedia;
13
- Card.Header.displayName = 'Card.Header';
14
- Card.Content.displayName = 'Card.Content';
15
- Card.Footer.displayName = 'Card.Footer';
16
- Card.Media.displayName = 'Card.Media';
5
+ const Card = Object.assign(Card$1, {
6
+ Block: CardBlock,
7
+ });
8
+ Card.Block.displayName = 'Card.Block';
17
9
 
18
- export { Card, CardContent, CardFooter, CardHeader, CardMedia };
10
+ export { Card, CardBlock };
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { Slottable, Slot } from '@radix-ui/react-slot';
4
+ import cl from 'clsx/lite';
5
+ import { forwardRef } from 'react';
6
+
7
+ /**
8
+ * Chip.Button used for interaction
9
+ * @example
10
+ * <Chip.Button>Click me</Chip.Button>
11
+ */
12
+ const ChipButton = forwardRef(function ChipButton({ asChild, className, size, ...rest }, ref) {
13
+ const Component = asChild ? Slot : 'button';
14
+ return (jsx(Component, { className: cl('ds-chip', className), "data-size": size, type: asChild ? undefined : 'button', ref: ref, ...rest }));
15
+ });
16
+ /**
17
+ * Chip.Removable used for interaction
18
+ * @example
19
+ * <Chip.Removable>Click to remove me</Chip.Removable>
20
+ */
21
+ const ChipRemovable = forwardRef(function ChipRemovable(props, ref) {
22
+ return jsx(ChipButton, { "data-removable": true, ref: ref, ...props });
23
+ });
24
+ /**
25
+ * Chip.Checkbox used for multiselection
26
+ * @example
27
+ * <Chip.Checkbox name="language" value="nynorsk">Nynorsk</Chip.Checkbox>
28
+ * <Chip.Checkbox name="language" value="bokmål">Bokmål</Chip.Checkbox>
29
+ */
30
+ const ChipCheckbox = forwardRef(function ChipCheckbox({ asChild, children, className, size, ...rest }, ref) {
31
+ const inputType = rest.type ?? 'checkbox';
32
+ const Component = asChild ? Slot : 'label';
33
+ return (jsxs(Component, { className: cl('ds-chip', className), "data-size": size, ref: ref, children: [jsx("input", { ...rest, type: inputType }), jsx(Slottable, { children: children })] }));
34
+ });
35
+ /**
36
+ * Chip.Radio used for single selection
37
+ * @example
38
+ * <Chip.Radio name="language" value="nynorsk">Nynorsk</Chip.Radio>
39
+ * <Chip.Radio name="language" value="bokmål">Bokmål</Chip.Radio>
40
+ */
41
+ const ChipRadio = forwardRef(function ChipRadio(props, ref) {
42
+ return jsx(ChipCheckbox, { ref, type: 'radio', ...props });
43
+ });
44
+
45
+ export { ChipButton, ChipCheckbox, ChipRadio, ChipRemovable };
@@ -1,15 +1,15 @@
1
1
  'use client';
2
- import { Group } from './Group/Group.js';
3
- import { RemovableChip } from './Removable/Removable.js';
4
- import { ToggleChip } from './Toggle/Toggle.js';
2
+ import { ChipButton, ChipCheckbox, ChipRadio, ChipRemovable } from './Chips.js';
5
3
 
6
4
  const Chip = {
7
- Group: Group,
8
- Removable: RemovableChip,
9
- Toggle: ToggleChip,
5
+ Button: ChipButton,
6
+ Checkbox: ChipCheckbox,
7
+ Radio: ChipRadio,
8
+ Removable: ChipRemovable,
10
9
  };
11
- Chip.Group.displayName = 'Chip.Group';
10
+ Chip.Button.displayName = 'Chip.Button';
11
+ Chip.Checkbox.displayName = 'Chip.Checkbox';
12
+ Chip.Radio.displayName = 'Chip.Radio';
12
13
  Chip.Removable.displayName = 'Chip.Removable';
13
- Chip.Toggle.displayName = 'Chip.Toggle';
14
14
 
15
- export { Chip, Group as ChipGroup, RemovableChip as ChipRemovable, ToggleChip as ChipToggle };
15
+ export { Chip, ChipButton, ChipCheckbox, ChipRadio, ChipRemovable };
@@ -1,13 +1,10 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
- import { forwardRef, useContext } from 'react';
5
- import { DropdownCtx } from './Dropdown.js';
6
- import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
4
+ import { forwardRef } from 'react';
7
5
 
8
- const DropdownHeading = forwardRef(function DropdownHeading({ children, className, ...rest }, ref) {
9
- const { size } = useContext(DropdownCtx);
10
- return (jsx(Paragraph, { asChild: true, size: size, children: jsx("h2", { ref: ref, className: cl('ds-dropdown__heading', className), ...rest, children: children }) }));
6
+ const DropdownHeading = forwardRef(function DropdownHeading({ className, ...rest }, ref) {
7
+ return (jsx("h2", { ref: ref, className: cl('ds-dropdown__heading', className), ...rest }));
11
8
  });
12
9
 
13
10
  export { DropdownHeading };
@@ -2,7 +2,7 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useContext, useEffect } from 'react';
4
4
  import { ErrorSummaryContext } from './ErrorSummary.js';
5
- import { Heading } from '../Typography/Heading/Heading.js';
5
+ import { Heading } from '../Heading/Heading.js';
6
6
 
7
7
  const HEADING_SIZE_MAP = {
8
8
  sm: '2xs',
@@ -15,7 +15,7 @@ const ErrorSummaryHeading = forwardRef(function ErrorSummaryHeading({ className,
15
15
  if (id && headingId !== id)
16
16
  setHeadingId(id);
17
17
  }, [headingId, id, setHeadingId]);
18
- return (jsx(Heading, { id: headingId, size: HEADING_SIZE_MAP[size ?? 'md'], spacing: true, ref: ref, ...rest }));
18
+ return (jsx(Heading, { id: headingId, size: HEADING_SIZE_MAP[size ?? 'md'], ref: ref, ...rest }));
19
19
  });
20
20
 
21
21
  export { ErrorSummaryHeading };