@fristil/designsystem 0.2.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 (314) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/LICENSE +21 -0
  3. package/README.md +101 -0
  4. package/dist/cli.d.ts +31 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +261 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/components/css/accordion/accordion.d.ts +37 -0
  9. package/dist/components/css/accordion/accordion.d.ts.map +1 -0
  10. package/dist/components/css/accordion/accordion.js +31 -0
  11. package/dist/components/css/accordion/accordion.js.map +1 -0
  12. package/dist/components/css/alert/alert.d.ts +35 -0
  13. package/dist/components/css/alert/alert.d.ts.map +1 -0
  14. package/dist/components/css/alert/alert.js +29 -0
  15. package/dist/components/css/alert/alert.js.map +1 -0
  16. package/dist/components/css/avatar/avatar.d.ts +40 -0
  17. package/dist/components/css/avatar/avatar.d.ts.map +1 -0
  18. package/dist/components/css/avatar/avatar.js +30 -0
  19. package/dist/components/css/avatar/avatar.js.map +1 -0
  20. package/dist/components/css/badge/badge.d.ts +24 -0
  21. package/dist/components/css/badge/badge.d.ts.map +1 -0
  22. package/dist/components/css/badge/badge.js +24 -0
  23. package/dist/components/css/badge/badge.js.map +1 -0
  24. package/dist/components/css/breadcrumbs/breadcrumbs.d.ts +25 -0
  25. package/dist/components/css/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  26. package/dist/components/css/breadcrumbs/breadcrumbs.js +23 -0
  27. package/dist/components/css/breadcrumbs/breadcrumbs.js.map +1 -0
  28. package/dist/components/css/button/button.d.ts +26 -0
  29. package/dist/components/css/button/button.d.ts.map +1 -0
  30. package/dist/components/css/button/button.js +25 -0
  31. package/dist/components/css/button/button.js.map +1 -0
  32. package/dist/components/css/card/card.d.ts +36 -0
  33. package/dist/components/css/card/card.d.ts.map +1 -0
  34. package/dist/components/css/card/card.js +28 -0
  35. package/dist/components/css/card/card.js.map +1 -0
  36. package/dist/components/css/checkbox/checkbox.d.ts +32 -0
  37. package/dist/components/css/checkbox/checkbox.d.ts.map +1 -0
  38. package/dist/components/css/checkbox/checkbox.js +27 -0
  39. package/dist/components/css/checkbox/checkbox.js.map +1 -0
  40. package/dist/components/css/dialog/dialog.d.ts +30 -0
  41. package/dist/components/css/dialog/dialog.d.ts.map +1 -0
  42. package/dist/components/css/dialog/dialog.js +28 -0
  43. package/dist/components/css/dialog/dialog.js.map +1 -0
  44. package/dist/components/css/divider/divider.d.ts +28 -0
  45. package/dist/components/css/divider/divider.d.ts.map +1 -0
  46. package/dist/components/css/divider/divider.js +22 -0
  47. package/dist/components/css/divider/divider.js.map +1 -0
  48. package/dist/components/css/error-text/error-text.d.ts +24 -0
  49. package/dist/components/css/error-text/error-text.d.ts.map +1 -0
  50. package/dist/components/css/error-text/error-text.js +18 -0
  51. package/dist/components/css/error-text/error-text.js.map +1 -0
  52. package/dist/components/css/fieldset/fieldset.d.ts +55 -0
  53. package/dist/components/css/fieldset/fieldset.d.ts.map +1 -0
  54. package/dist/components/css/fieldset/fieldset.js +39 -0
  55. package/dist/components/css/fieldset/fieldset.js.map +1 -0
  56. package/dist/components/css/file-upload/file-upload.d.ts +41 -0
  57. package/dist/components/css/file-upload/file-upload.d.ts.map +1 -0
  58. package/dist/components/css/file-upload/file-upload.js +32 -0
  59. package/dist/components/css/file-upload/file-upload.js.map +1 -0
  60. package/dist/components/css/heading/heading.d.ts +29 -0
  61. package/dist/components/css/heading/heading.d.ts.map +1 -0
  62. package/dist/components/css/heading/heading.js +23 -0
  63. package/dist/components/css/heading/heading.js.map +1 -0
  64. package/dist/components/css/help-text/help-text.d.ts +24 -0
  65. package/dist/components/css/help-text/help-text.d.ts.map +1 -0
  66. package/dist/components/css/help-text/help-text.js +23 -0
  67. package/dist/components/css/help-text/help-text.js.map +1 -0
  68. package/dist/components/css/input/input.d.ts +39 -0
  69. package/dist/components/css/input/input.d.ts.map +1 -0
  70. package/dist/components/css/input/input.js +44 -0
  71. package/dist/components/css/input/input.js.map +1 -0
  72. package/dist/components/css/label/label.d.ts +33 -0
  73. package/dist/components/css/label/label.d.ts.map +1 -0
  74. package/dist/components/css/label/label.js +23 -0
  75. package/dist/components/css/label/label.js.map +1 -0
  76. package/dist/components/css/link/link.d.ts +21 -0
  77. package/dist/components/css/link/link.d.ts.map +1 -0
  78. package/dist/components/css/link/link.js +14 -0
  79. package/dist/components/css/link/link.js.map +1 -0
  80. package/dist/components/css/list/list.d.ts +29 -0
  81. package/dist/components/css/list/list.d.ts.map +1 -0
  82. package/dist/components/css/list/list.js +23 -0
  83. package/dist/components/css/list/list.js.map +1 -0
  84. package/dist/components/css/pagination/pagination.d.ts +27 -0
  85. package/dist/components/css/pagination/pagination.d.ts.map +1 -0
  86. package/dist/components/css/pagination/pagination.js +25 -0
  87. package/dist/components/css/pagination/pagination.js.map +1 -0
  88. package/dist/components/css/paragraph/paragraph.d.ts +36 -0
  89. package/dist/components/css/paragraph/paragraph.d.ts.map +1 -0
  90. package/dist/components/css/paragraph/paragraph.js +26 -0
  91. package/dist/components/css/paragraph/paragraph.js.map +1 -0
  92. package/dist/components/css/radio/radio.d.ts +32 -0
  93. package/dist/components/css/radio/radio.d.ts.map +1 -0
  94. package/dist/components/css/radio/radio.js +27 -0
  95. package/dist/components/css/radio/radio.js.map +1 -0
  96. package/dist/components/css/search/search.d.ts +33 -0
  97. package/dist/components/css/search/search.d.ts.map +1 -0
  98. package/dist/components/css/search/search.js +31 -0
  99. package/dist/components/css/search/search.js.map +1 -0
  100. package/dist/components/css/select/select.d.ts +23 -0
  101. package/dist/components/css/select/select.d.ts.map +1 -0
  102. package/dist/components/css/select/select.js +18 -0
  103. package/dist/components/css/select/select.js.map +1 -0
  104. package/dist/components/css/shared.d.ts +26 -0
  105. package/dist/components/css/shared.d.ts.map +1 -0
  106. package/dist/components/css/shared.js +34 -0
  107. package/dist/components/css/shared.js.map +1 -0
  108. package/dist/components/css/skeleton/skeleton.d.ts +29 -0
  109. package/dist/components/css/skeleton/skeleton.d.ts.map +1 -0
  110. package/dist/components/css/skeleton/skeleton.js +23 -0
  111. package/dist/components/css/skeleton/skeleton.js.map +1 -0
  112. package/dist/components/css/skip-link/skip-link.d.ts +18 -0
  113. package/dist/components/css/skip-link/skip-link.d.ts.map +1 -0
  114. package/dist/components/css/skip-link/skip-link.js +16 -0
  115. package/dist/components/css/skip-link/skip-link.js.map +1 -0
  116. package/dist/components/css/spinner/spinner.d.ts +33 -0
  117. package/dist/components/css/spinner/spinner.d.ts.map +1 -0
  118. package/dist/components/css/spinner/spinner.js +25 -0
  119. package/dist/components/css/spinner/spinner.js.map +1 -0
  120. package/dist/components/css/sr-only/sr-only.d.ts +17 -0
  121. package/dist/components/css/sr-only/sr-only.d.ts.map +1 -0
  122. package/dist/components/css/sr-only/sr-only.js +14 -0
  123. package/dist/components/css/sr-only/sr-only.js.map +1 -0
  124. package/dist/components/css/switch/switch.d.ts +33 -0
  125. package/dist/components/css/switch/switch.d.ts.map +1 -0
  126. package/dist/components/css/switch/switch.js +29 -0
  127. package/dist/components/css/switch/switch.js.map +1 -0
  128. package/dist/components/css/table/table.d.ts +36 -0
  129. package/dist/components/css/table/table.d.ts.map +1 -0
  130. package/dist/components/css/table/table.js +28 -0
  131. package/dist/components/css/table/table.js.map +1 -0
  132. package/dist/components/css/tag/tag.d.ts +35 -0
  133. package/dist/components/css/tag/tag.d.ts.map +1 -0
  134. package/dist/components/css/tag/tag.js +27 -0
  135. package/dist/components/css/tag/tag.js.map +1 -0
  136. package/dist/components/css/textarea/textarea.d.ts +23 -0
  137. package/dist/components/css/textarea/textarea.d.ts.map +1 -0
  138. package/dist/components/css/textarea/textarea.js +18 -0
  139. package/dist/components/css/textarea/textarea.js.map +1 -0
  140. package/dist/components/css/toggle-group/toggle-group.d.ts +31 -0
  141. package/dist/components/css/toggle-group/toggle-group.d.ts.map +1 -0
  142. package/dist/components/css/toggle-group/toggle-group.js +29 -0
  143. package/dist/components/css/toggle-group/toggle-group.js.map +1 -0
  144. package/dist/components/css/tooltip/tooltip.d.ts +30 -0
  145. package/dist/components/css/tooltip/tooltip.d.ts.map +1 -0
  146. package/dist/components/css/tooltip/tooltip.js +28 -0
  147. package/dist/components/css/tooltip/tooltip.js.map +1 -0
  148. package/dist/components/frittstaende/calendar/fs-calendar.d.ts +52 -0
  149. package/dist/components/frittstaende/calendar/fs-calendar.d.ts.map +1 -0
  150. package/dist/components/frittstaende/calendar/fs-calendar.js +462 -0
  151. package/dist/components/frittstaende/calendar/fs-calendar.js.map +1 -0
  152. package/dist/components/frittstaende/date-field/fs-date-field.d.ts +110 -0
  153. package/dist/components/frittstaende/date-field/fs-date-field.d.ts.map +1 -0
  154. package/dist/components/frittstaende/date-field/fs-date-field.js +264 -0
  155. package/dist/components/frittstaende/date-field/fs-date-field.js.map +1 -0
  156. package/dist/components/frittstaende/suggestion/fs-suggestion.d.ts +133 -0
  157. package/dist/components/frittstaende/suggestion/fs-suggestion.d.ts.map +1 -0
  158. package/dist/components/frittstaende/suggestion/fs-suggestion.js +280 -0
  159. package/dist/components/frittstaende/suggestion/fs-suggestion.js.map +1 -0
  160. package/dist/components/frittstaende/toast/fs-toast.d.ts +67 -0
  161. package/dist/components/frittstaende/toast/fs-toast.d.ts.map +1 -0
  162. package/dist/components/frittstaende/toast/fs-toast.js +108 -0
  163. package/dist/components/frittstaende/toast/fs-toast.js.map +1 -0
  164. package/dist/components/ramme/error-summary/fs-error-summary.d.ts +70 -0
  165. package/dist/components/ramme/error-summary/fs-error-summary.d.ts.map +1 -0
  166. package/dist/components/ramme/error-summary/fs-error-summary.js +155 -0
  167. package/dist/components/ramme/error-summary/fs-error-summary.js.map +1 -0
  168. package/dist/components/ramme/field/field-core.d.ts +70 -0
  169. package/dist/components/ramme/field/field-core.d.ts.map +1 -0
  170. package/dist/components/ramme/field/field-core.js +60 -0
  171. package/dist/components/ramme/field/field-core.js.map +1 -0
  172. package/dist/components/ramme/field/fs-field.d.ts +49 -0
  173. package/dist/components/ramme/field/fs-field.d.ts.map +1 -0
  174. package/dist/components/ramme/field/fs-field.js +118 -0
  175. package/dist/components/ramme/field/fs-field.js.map +1 -0
  176. package/dist/components/ramme/popover/fs-popover.d.ts +68 -0
  177. package/dist/components/ramme/popover/fs-popover.d.ts.map +1 -0
  178. package/dist/components/ramme/popover/fs-popover.js +167 -0
  179. package/dist/components/ramme/popover/fs-popover.js.map +1 -0
  180. package/dist/components/ramme/tabs/fs-tabs.d.ts +61 -0
  181. package/dist/components/ramme/tabs/fs-tabs.d.ts.map +1 -0
  182. package/dist/components/ramme/tabs/fs-tabs.js +156 -0
  183. package/dist/components/ramme/tabs/fs-tabs.js.map +1 -0
  184. package/dist/dom.d.ts +33 -0
  185. package/dist/dom.d.ts.map +1 -0
  186. package/dist/dom.js +77 -0
  187. package/dist/dom.js.map +1 -0
  188. package/dist/fs.d.ts +199 -0
  189. package/dist/fs.d.ts.map +1 -0
  190. package/dist/fs.js +128 -0
  191. package/dist/fs.js.map +1 -0
  192. package/dist/index.d.ts +84 -0
  193. package/dist/index.d.ts.map +1 -0
  194. package/dist/index.js +48 -0
  195. package/dist/index.js.map +1 -0
  196. package/dist/jsx/react.d.ts +127 -0
  197. package/dist/jsx/react.d.ts.map +1 -0
  198. package/dist/jsx/react.js +2 -0
  199. package/dist/jsx/react.js.map +1 -0
  200. package/dist/react.d.ts +207 -0
  201. package/dist/react.d.ts.map +1 -0
  202. package/dist/react.js +109 -0
  203. package/dist/react.js.map +1 -0
  204. package/dist/tailwind/preset.d.ts +120 -0
  205. package/dist/tailwind/preset.d.ts.map +1 -0
  206. package/dist/tailwind/preset.js +107 -0
  207. package/dist/tailwind/preset.js.map +1 -0
  208. package/dist/takeover.d.ts +79 -0
  209. package/dist/takeover.d.ts.map +1 -0
  210. package/dist/takeover.js +119 -0
  211. package/dist/takeover.js.map +1 -0
  212. package/dist/tokens/color.d.ts +85 -0
  213. package/dist/tokens/color.d.ts.map +1 -0
  214. package/dist/tokens/color.js +212 -0
  215. package/dist/tokens/color.js.map +1 -0
  216. package/dist/tokens/theme.d.ts +52 -0
  217. package/dist/tokens/theme.d.ts.map +1 -0
  218. package/dist/tokens/theme.js +197 -0
  219. package/dist/tokens/theme.js.map +1 -0
  220. package/dist/tokens/tokens.d.ts +210 -0
  221. package/dist/tokens/tokens.d.ts.map +1 -0
  222. package/dist/tokens/tokens.js +238 -0
  223. package/dist/tokens/tokens.js.map +1 -0
  224. package/package.json +334 -0
  225. package/src/components/css/accordion/accordion.css +74 -0
  226. package/src/components/css/accordion/accordion.ts +50 -0
  227. package/src/components/css/alert/alert.css +50 -0
  228. package/src/components/css/alert/alert.ts +48 -0
  229. package/src/components/css/avatar/avatar.css +64 -0
  230. package/src/components/css/avatar/avatar.ts +57 -0
  231. package/src/components/css/badge/badge.css +42 -0
  232. package/src/components/css/badge/badge.ts +43 -0
  233. package/src/components/css/breadcrumbs/breadcrumbs.css +50 -0
  234. package/src/components/css/breadcrumbs/breadcrumbs.ts +29 -0
  235. package/src/components/css/button/button.css +101 -0
  236. package/src/components/css/button/button.ts +44 -0
  237. package/src/components/css/card/card.css +48 -0
  238. package/src/components/css/card/card.ts +50 -0
  239. package/src/components/css/checkbox/checkbox.css +96 -0
  240. package/src/components/css/checkbox/checkbox.ts +50 -0
  241. package/src/components/css/dialog/dialog.css +50 -0
  242. package/src/components/css/dialog/dialog.ts +36 -0
  243. package/src/components/css/divider/divider.css +18 -0
  244. package/src/components/css/divider/divider.ts +41 -0
  245. package/src/components/css/error-text/error-text.css +21 -0
  246. package/src/components/css/error-text/error-text.ts +37 -0
  247. package/src/components/css/fieldset/fieldset.css +57 -0
  248. package/src/components/css/fieldset/fieldset.ts +87 -0
  249. package/src/components/css/file-upload/file-upload.css +92 -0
  250. package/src/components/css/file-upload/file-upload.ts +65 -0
  251. package/src/components/css/heading/heading.css +33 -0
  252. package/src/components/css/heading/heading.ts +42 -0
  253. package/src/components/css/help-text/help-text.css +24 -0
  254. package/src/components/css/help-text/help-text.ts +42 -0
  255. package/src/components/css/input/input.css +131 -0
  256. package/src/components/css/input/input.ts +76 -0
  257. package/src/components/css/label/label.css +34 -0
  258. package/src/components/css/label/label.ts +51 -0
  259. package/src/components/css/link/link.css +36 -0
  260. package/src/components/css/link/link.ts +29 -0
  261. package/src/components/css/list/list.css +40 -0
  262. package/src/components/css/list/list.ts +42 -0
  263. package/src/components/css/pagination/pagination.css +77 -0
  264. package/src/components/css/pagination/pagination.ts +33 -0
  265. package/src/components/css/paragraph/paragraph.css +31 -0
  266. package/src/components/css/paragraph/paragraph.ts +53 -0
  267. package/src/components/css/radio/radio.css +76 -0
  268. package/src/components/css/radio/radio.ts +50 -0
  269. package/src/components/css/search/search.css +49 -0
  270. package/src/components/css/search/search.ts +52 -0
  271. package/src/components/css/select/select.css +95 -0
  272. package/src/components/css/select/select.ts +40 -0
  273. package/src/components/css/shared.ts +40 -0
  274. package/src/components/css/skeleton/skeleton.css +49 -0
  275. package/src/components/css/skeleton/skeleton.ts +43 -0
  276. package/src/components/css/skip-link/skip-link.css +36 -0
  277. package/src/components/css/skip-link/skip-link.ts +22 -0
  278. package/src/components/css/spinner/spinner.css +48 -0
  279. package/src/components/css/spinner/spinner.ts +48 -0
  280. package/src/components/css/sr-only/sr-only.css +16 -0
  281. package/src/components/css/sr-only/sr-only.ts +18 -0
  282. package/src/components/css/switch/switch.css +101 -0
  283. package/src/components/css/switch/switch.ts +46 -0
  284. package/src/components/css/table/table.css +63 -0
  285. package/src/components/css/table/table.ts +50 -0
  286. package/src/components/css/tag/tag.css +58 -0
  287. package/src/components/css/tag/tag.ts +49 -0
  288. package/src/components/css/textarea/textarea.css +71 -0
  289. package/src/components/css/textarea/textarea.ts +40 -0
  290. package/src/components/css/toggle-group/toggle-group.css +82 -0
  291. package/src/components/css/toggle-group/toggle-group.ts +37 -0
  292. package/src/components/css/tooltip/tooltip.css +47 -0
  293. package/src/components/css/tooltip/tooltip.ts +36 -0
  294. package/src/components/frittstaende/calendar/fs-calendar.ts +525 -0
  295. package/src/components/frittstaende/date-field/date-field.css +54 -0
  296. package/src/components/frittstaende/date-field/fs-date-field.ts +309 -0
  297. package/src/components/frittstaende/suggestion/fs-suggestion.ts +333 -0
  298. package/src/components/frittstaende/suggestion/suggestion.css +63 -0
  299. package/src/components/frittstaende/toast/fs-toast.ts +146 -0
  300. package/src/components/frittstaende/toast/toast.css +71 -0
  301. package/src/components/ramme/error-summary/error-summary.css +45 -0
  302. package/src/components/ramme/error-summary/fs-error-summary.ts +197 -0
  303. package/src/components/ramme/field/field-core.ts +132 -0
  304. package/src/components/ramme/field/field.css +6 -0
  305. package/src/components/ramme/field/fs-field.ts +154 -0
  306. package/src/components/ramme/popover/fs-popover.ts +205 -0
  307. package/src/components/ramme/popover/popover.css +34 -0
  308. package/src/components/ramme/tabs/fs-tabs.ts +182 -0
  309. package/src/components/ramme/tabs/tabs.css +68 -0
  310. package/src/tailwind/tailwind.css +134 -0
  311. package/src/tokens/color.ts +267 -0
  312. package/src/tokens/theme.ts +350 -0
  313. package/src/tokens/tokens.css +214 -0
  314. package/src/tokens/tokens.ts +293 -0
@@ -0,0 +1,29 @@
1
+ import { attributes, createGuard } from "../shared.js";
2
+ export const ALERT_CLASS = "fs-alert";
3
+ /** Overskriften inne i meldingen. */
4
+ export const ALERT_TITLE_CLASS = "fs-alert__title";
5
+ export const alertColors = ["info", "success", "warning", "danger"];
6
+ /**
7
+ * Attributtene for en melding som gjelder hele siden eller et helt skjema.
8
+ *
9
+ * Rollen settes ikke her, fordi den avhenger av når meldingen kommer.
10
+ * Står den i markupen fra start, skal den ikke ha noen rolle. Dukker den opp
11
+ * mens siden står stille, trenger den `role="status"`, eller `role="alert"`
12
+ * hvis brukeren må stoppe opp.
13
+ *
14
+ * ```ts
15
+ * <div {...alert({ color: "warning" })}>
16
+ * <p {...alert.title}>Søknaden er ikke sendt</p>
17
+ * </div>
18
+ * ```
19
+ */
20
+ export const alert = Object.assign(({ color } = {}) => attributes({
21
+ class: ALERT_CLASS,
22
+ "data-color": color,
23
+ }), {
24
+ /** Klassen på overskriften inne i meldingen. */
25
+ title: ALERT_TITLE_CLASS,
26
+ colors: alertColors,
27
+ isColor: createGuard(alertColors),
28
+ });
29
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../../src/components/css/alert/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAmB,CAAA;AAC9C,qCAAqC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAA0B,CAAA;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAA;AAe5E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAChC,CAAC,EAAE,KAAK,KAAmB,EAAE,EAAmB,EAAE,CAChD,UAAU,CAAC;IACT,KAAK,EAAE,WAAW;IAClB,YAAY,EAAE,KAAK;CACpB,CAAC,EACJ;IACE,gDAAgD;IAChD,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;CAClC,CACF,CAAA"}
@@ -0,0 +1,40 @@
1
+ export declare const AVATAR_CLASS: "fs-avatar";
2
+ /** Flere profilbilder som overlapper. */
3
+ export declare const AVATAR_STACK_CLASS: "fs-avatar-stack";
4
+ export declare const avatarSizes: readonly ["small", "medium", "large"];
5
+ export declare const avatarVariants: readonly ["circle", "square"];
6
+ export type AvatarSize = (typeof avatarSizes)[number];
7
+ export type AvatarVariant = (typeof avatarVariants)[number];
8
+ export type NonDefaultAvatarSize = Exclude<AvatarSize, "medium">;
9
+ export type NonDefaultAvatarVariant = Exclude<AvatarVariant, "circle">;
10
+ export type AvatarOptions = {
11
+ /** Størrelse. Standard: `medium`. */
12
+ size?: AvatarSize;
13
+ /** Rund eller avrundet firkant. Standard: `circle`. */
14
+ variant?: AvatarVariant;
15
+ };
16
+ export type AvatarAttributes = {
17
+ class: typeof AVATAR_CLASS;
18
+ "data-size"?: NonDefaultAvatarSize;
19
+ "data-variant"?: NonDefaultAvatarVariant;
20
+ };
21
+ /**
22
+ * Attributtene for et profilbilde eller initialer.
23
+ *
24
+ * Står navnet allerede ved siden av, er bildet pynt: sett `aria-hidden="true"`
25
+ * på det, ellers leses navnet opp to ganger. Står bildet alene, må det ha en
26
+ * tekst som sier hvem det er.
27
+ *
28
+ * ```ts
29
+ * <span {...avatar({ size: "small" })} aria-hidden="true">ON</span>
30
+ * ```
31
+ */
32
+ export declare const avatar: (({ size, variant, }?: AvatarOptions) => AvatarAttributes) & {
33
+ /** Klassen på lista med profilbilder som overlapper. */
34
+ stack: "fs-avatar-stack";
35
+ sizes: readonly ["small", "medium", "large"];
36
+ isSize: (value: string) => value is "small" | "medium" | "large";
37
+ variants: readonly ["circle", "square"];
38
+ isVariant: (value: string) => value is "circle" | "square";
39
+ };
40
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../../src/components/css/avatar/avatar.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,EAAG,WAAoB,CAAA;AAChD,yCAAyC;AACzC,eAAO,MAAM,kBAAkB,EAAG,iBAA0B,CAAA;AAE5D,eAAO,MAAM,WAAW,uCAAwC,CAAA;AAChE,eAAO,MAAM,cAAc,+BAAgC,CAAA;AAE3D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAC3D,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AAChE,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;AAEtE,MAAM,MAAM,aAAa,GAAG;IAC1B,qCAAqC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,YAAY,CAAA;IAC1B,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,cAAc,CAAC,EAAE,uBAAuB,CAAA;CACzC,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,yBAId,aAAa,KAAQ,gBAAgB;IAOtC,wDAAwD;;;;;;CAO3D,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { attributes, createGuard } from "../shared.js";
2
+ export const AVATAR_CLASS = "fs-avatar";
3
+ /** Flere profilbilder som overlapper. */
4
+ export const AVATAR_STACK_CLASS = "fs-avatar-stack";
5
+ export const avatarSizes = ["small", "medium", "large"];
6
+ export const avatarVariants = ["circle", "square"];
7
+ /**
8
+ * Attributtene for et profilbilde eller initialer.
9
+ *
10
+ * Står navnet allerede ved siden av, er bildet pynt: sett `aria-hidden="true"`
11
+ * på det, ellers leses navnet opp to ganger. Står bildet alene, må det ha en
12
+ * tekst som sier hvem det er.
13
+ *
14
+ * ```ts
15
+ * <span {...avatar({ size: "small" })} aria-hidden="true">ON</span>
16
+ * ```
17
+ */
18
+ export const avatar = Object.assign(({ size = "medium", variant = "circle", } = {}) => attributes({
19
+ class: AVATAR_CLASS,
20
+ "data-size": size === "medium" ? undefined : size,
21
+ "data-variant": variant === "circle" ? undefined : variant,
22
+ }), {
23
+ /** Klassen på lista med profilbilder som overlapper. */
24
+ stack: AVATAR_STACK_CLASS,
25
+ sizes: avatarSizes,
26
+ isSize: createGuard(avatarSizes),
27
+ variants: avatarVariants,
28
+ isVariant: createGuard(avatarVariants),
29
+ });
30
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../../src/components/css/avatar/avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,YAAY,GAAG,WAAoB,CAAA;AAChD,yCAAyC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAA0B,CAAA;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAA;AAoB3D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CACjC,CAAC,EACC,IAAI,GAAG,QAAQ,EACf,OAAO,GAAG,QAAQ,MACD,EAAE,EAAoB,EAAE,CACzC,UAAU,CAAC;IACT,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;IACjD,cAAc,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;CAC3D,CAAC,EACJ;IACE,wDAAwD;IACxD,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC;IAChC,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC;CACvC,CACF,CAAA"}
@@ -0,0 +1,24 @@
1
+ export declare const BADGE_CLASS: "fs-badge";
2
+ export declare const badgeColors: readonly ["info", "success", "warning", "danger", "neutral"];
3
+ export type BadgeColor = (typeof badgeColors)[number];
4
+ export type NonInfoBadgeColor = Exclude<BadgeColor, "info">;
5
+ export type BadgeOptions = {
6
+ /** Hva tilstanden betyr. Standard: `info`. */
7
+ color?: BadgeColor;
8
+ };
9
+ export type BadgeAttributes = {
10
+ class: typeof BADGE_CLASS;
11
+ "data-color"?: NonInfoBadgeColor;
12
+ };
13
+ /**
14
+ * Attributtene for et statusmerke.
15
+ *
16
+ * ```ts
17
+ * <span {...badge({ color: "success" })}>Innvilget</span>
18
+ * ```
19
+ */
20
+ export declare const badge: (({ color }?: BadgeOptions) => BadgeAttributes) & {
21
+ colors: readonly ["info", "success", "warning", "danger", "neutral"];
22
+ isColor: (value: string) => value is "warning" | "info" | "danger" | "success" | "neutral";
23
+ };
24
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../../src/components/css/badge/badge.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,EAAG,UAAmB,CAAA;AAE9C,eAAO,MAAM,WAAW,8DAMd,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAE3D,MAAM,MAAM,YAAY,GAAG;IACzB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,OAAO,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,gBACK,YAAY,KAAQ,eAAe;;;CASzD,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { attributes, createGuard } from "../shared.js";
2
+ export const BADGE_CLASS = "fs-badge";
3
+ export const badgeColors = [
4
+ "info",
5
+ "success",
6
+ "warning",
7
+ "danger",
8
+ "neutral",
9
+ ];
10
+ /**
11
+ * Attributtene for et statusmerke.
12
+ *
13
+ * ```ts
14
+ * <span {...badge({ color: "success" })}>Innvilget</span>
15
+ * ```
16
+ */
17
+ export const badge = Object.assign(({ color = "info" } = {}) => attributes({
18
+ class: BADGE_CLASS,
19
+ "data-color": color === "info" ? undefined : color,
20
+ }), {
21
+ colors: badgeColors,
22
+ isColor: createGuard(badgeColors),
23
+ });
24
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../../src/components/css/badge/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAmB,CAAA;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;CACD,CAAA;AAeV;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAChC,CAAC,EAAE,KAAK,GAAG,MAAM,KAAmB,EAAE,EAAmB,EAAE,CACzD,UAAU,CAAC;IACT,KAAK,EAAE,WAAW;IAClB,YAAY,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;CACnD,CAAC,EACJ;IACE,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC;CAClC,CACF,CAAA"}
@@ -0,0 +1,25 @@
1
+ export declare const BREADCRUMBS_CLASS: "fs-breadcrumbs";
2
+ export type BreadcrumbsAttributes = {
3
+ class: typeof BREADCRUMBS_CLASS;
4
+ };
5
+ /**
6
+ * Attributtene for en brødsmulesti.
7
+ *
8
+ * Klassen hører på en `<ol>` inne i en `<nav>` med en tekst som sier hva
9
+ * navigasjonen er, for eksempel `aria-label="Du er her"`. Rekkefølgen betyr
10
+ * noe, så listen må være nummerert selv om tallene ikke vises.
11
+ *
12
+ * Skilletegnet mellom stegene legges inn med CSS. Sto det i markupen, ville
13
+ * skjermlesere lest «skråstrek» mellom hvert steg.
14
+ *
15
+ * ```ts
16
+ * <nav aria-label="Du er her">
17
+ * <ol {...breadcrumbs()}>
18
+ * <li><a href="/">Forsiden</a></li>
19
+ * <li><a href="/saker" aria-current="page">Mine saker</a></li>
20
+ * </ol>
21
+ * </nav>
22
+ * ```
23
+ */
24
+ export declare const breadcrumbs: () => BreadcrumbsAttributes;
25
+ //# sourceMappingURL=breadcrumbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../../../src/components/css/breadcrumbs/breadcrumbs.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,EAAG,gBAAyB,CAAA;AAE1D,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,OAAO,iBAAiB,CAAA;CAChC,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,WAAW,QAAO,qBACW,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { attributes } from "../shared.js";
2
+ export const BREADCRUMBS_CLASS = "fs-breadcrumbs";
3
+ /**
4
+ * Attributtene for en brødsmulesti.
5
+ *
6
+ * Klassen hører på en `<ol>` inne i en `<nav>` med en tekst som sier hva
7
+ * navigasjonen er, for eksempel `aria-label="Du er her"`. Rekkefølgen betyr
8
+ * noe, så listen må være nummerert selv om tallene ikke vises.
9
+ *
10
+ * Skilletegnet mellom stegene legges inn med CSS. Sto det i markupen, ville
11
+ * skjermlesere lest «skråstrek» mellom hvert steg.
12
+ *
13
+ * ```ts
14
+ * <nav aria-label="Du er her">
15
+ * <ol {...breadcrumbs()}>
16
+ * <li><a href="/">Forsiden</a></li>
17
+ * <li><a href="/saker" aria-current="page">Mine saker</a></li>
18
+ * </ol>
19
+ * </nav>
20
+ * ```
21
+ */
22
+ export const breadcrumbs = () => attributes({ class: BREADCRUMBS_CLASS });
23
+ //# sourceMappingURL=breadcrumbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbs.js","sourceRoot":"","sources":["../../../../src/components/css/breadcrumbs/breadcrumbs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAyB,CAAA;AAM1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAA0B,EAAE,CACrD,UAAU,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAA"}
@@ -0,0 +1,26 @@
1
+ export declare const BUTTON_CLASS: "fs-button";
2
+ export declare const buttonVariants: readonly ["primary", "secondary", "ghost", "danger"];
3
+ export type ButtonVariant = (typeof buttonVariants)[number];
4
+ export type NonPrimaryButtonVariant = Exclude<ButtonVariant, "primary">;
5
+ export type ButtonOptions = {
6
+ /** Hvor tung handlingen er. Standard: `primary`. */
7
+ variant?: ButtonVariant;
8
+ };
9
+ export type ButtonAttributes = {
10
+ class: typeof BUTTON_CLASS;
11
+ "data-variant"?: NonPrimaryButtonVariant;
12
+ };
13
+ /**
14
+ * Attributtene for en knapp.
15
+ *
16
+ * ```ts
17
+ * <button {...button({ variant: "secondary" })}>Lagre utkast</button>
18
+ * ```
19
+ */
20
+ export declare const button: (({ variant }?: ButtonOptions) => ButtonAttributes) & {
21
+ /** De lovlige variantene, for oppslag og forgrening. */
22
+ variants: readonly ["primary", "secondary", "ghost", "danger"];
23
+ /** Sjekker om en streng utenfra er en gyldig variant. */
24
+ isVariant: (value: string) => value is "danger" | "primary" | "secondary" | "ghost";
25
+ };
26
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/components/css/button/button.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,EAAG,WAAoB,CAAA;AAEhD,eAAO,MAAM,cAAc,sDAKjB,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAC3D,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;AAEvE,MAAM,MAAM,aAAa,GAAG;IAC1B,oDAAoD;IACpD,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,YAAY,CAAA;IAC1B,cAAc,CAAC,EAAE,uBAAuB,CAAA;CACzC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,kBACS,aAAa,KAAQ,gBAAgB;IAM7D,wDAAwD;;IAExD,yDAAyD;;CAG5D,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { attributes, createGuard } from "../shared.js";
2
+ export const BUTTON_CLASS = "fs-button";
3
+ export const buttonVariants = [
4
+ "primary",
5
+ "secondary",
6
+ "ghost",
7
+ "danger",
8
+ ];
9
+ /**
10
+ * Attributtene for en knapp.
11
+ *
12
+ * ```ts
13
+ * <button {...button({ variant: "secondary" })}>Lagre utkast</button>
14
+ * ```
15
+ */
16
+ export const button = Object.assign(({ variant = "primary" } = {}) => attributes({
17
+ class: BUTTON_CLASS,
18
+ "data-variant": variant === "primary" ? undefined : variant,
19
+ }), {
20
+ /** De lovlige variantene, for oppslag og forgrening. */
21
+ variants: buttonVariants,
22
+ /** Sjekker om en streng utenfra er en gyldig variant. */
23
+ isVariant: createGuard(buttonVariants),
24
+ });
25
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../../src/components/css/button/button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,YAAY,GAAG,WAAoB,CAAA;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,WAAW;IACX,OAAO;IACP,QAAQ;CACA,CAAA;AAeV;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CACjC,CAAC,EAAE,OAAO,GAAG,SAAS,KAAoB,EAAE,EAAoB,EAAE,CAChE,UAAU,CAAC;IACT,KAAK,EAAE,YAAY;IACnB,cAAc,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;CAC5D,CAAC,EACJ;IACE,wDAAwD;IACxD,QAAQ,EAAE,cAAc;IACxB,yDAAyD;IACzD,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC;CACvC,CACF,CAAA"}
@@ -0,0 +1,36 @@
1
+ export declare const CARD_CLASS: "fs-card";
2
+ /** Overskriften inne i kortet. */
3
+ export declare const CARD_TITLE_CLASS: "fs-card__title";
4
+ export declare const cardVariants: readonly ["outline", "filled"];
5
+ export type CardVariant = (typeof cardVariants)[number];
6
+ export type NonDefaultCardVariant = Exclude<CardVariant, "outline">;
7
+ export type CardOptions = {
8
+ /** Flate eller omriss. Standard: `outline`. */
9
+ variant?: CardVariant;
10
+ /** Hele kortet er klikkbart. Bruk bare på `<a>` eller `<button>`. */
11
+ interactive?: boolean;
12
+ };
13
+ export type CardAttributes = {
14
+ class: typeof CARD_CLASS;
15
+ "data-variant"?: NonDefaultCardVariant;
16
+ "data-interactive"?: "";
17
+ };
18
+ /**
19
+ * Attributtene for et kort.
20
+ *
21
+ * `interactive` gir hover og fokusmarkering, men gjør ingenting klikkbart av
22
+ * seg selv. Skal hele kortet kunne trykkes på, må elementet være en `<a>`
23
+ * eller en `<button>`. Et `<div>` med en klikklytter kan hverken nås med
24
+ * tastatur eller meldes som noe å trykke på.
25
+ *
26
+ * ```ts
27
+ * <a {...card({ interactive: true })} href="/sak/481">…</a>
28
+ * ```
29
+ */
30
+ export declare const card: (({ variant, interactive }?: CardOptions) => CardAttributes) & {
31
+ /** Klassen på overskriften inne i kortet. */
32
+ title: "fs-card__title";
33
+ variants: readonly ["outline", "filled"];
34
+ isVariant: (value: string) => value is "outline" | "filled";
35
+ };
36
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/components/css/card/card.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,EAAG,SAAkB,CAAA;AAC5C,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,EAAG,gBAAyB,CAAA;AAEzD,eAAO,MAAM,YAAY,gCAAiC,CAAA;AAE1D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACvD,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AAEnE,MAAM,MAAM,WAAW,GAAG;IACxB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,UAAU,CAAA;IACxB,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,kBAAkB,CAAC,EAAE,EAAE,CAAA;CACxB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI,+BACwB,WAAW,KAAQ,cAAc;IAOtE,6CAA6C;;;;CAKhD,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { attributes, createGuard } from "../shared.js";
2
+ export const CARD_CLASS = "fs-card";
3
+ /** Overskriften inne i kortet. */
4
+ export const CARD_TITLE_CLASS = "fs-card__title";
5
+ export const cardVariants = ["outline", "filled"];
6
+ /**
7
+ * Attributtene for et kort.
8
+ *
9
+ * `interactive` gir hover og fokusmarkering, men gjør ingenting klikkbart av
10
+ * seg selv. Skal hele kortet kunne trykkes på, må elementet være en `<a>`
11
+ * eller en `<button>`. Et `<div>` med en klikklytter kan hverken nås med
12
+ * tastatur eller meldes som noe å trykke på.
13
+ *
14
+ * ```ts
15
+ * <a {...card({ interactive: true })} href="/sak/481">…</a>
16
+ * ```
17
+ */
18
+ export const card = Object.assign(({ variant = "outline", interactive } = {}) => attributes({
19
+ class: CARD_CLASS,
20
+ "data-variant": variant === "outline" ? undefined : variant,
21
+ "data-interactive": interactive ? "" : undefined,
22
+ }), {
23
+ /** Klassen på overskriften inne i kortet. */
24
+ title: CARD_TITLE_CLASS,
25
+ variants: cardVariants,
26
+ isVariant: createGuard(cardVariants),
27
+ });
28
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/components/css/card/card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,UAAU,GAAG,SAAkB,CAAA;AAC5C,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAyB,CAAA;AAEzD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAU,CAAA;AAkB1D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAC/B,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,WAAW,KAAkB,EAAE,EAAkB,EAAE,CACzE,UAAU,CAAC;IACT,KAAK,EAAE,UAAU;IACjB,cAAc,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;IAC3D,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAE,EAAY,CAAC,CAAC,CAAC,SAAS;CAC5D,CAAC,EACJ;IACE,6CAA6C;IAC7C,KAAK,EAAE,gBAAgB;IACvB,QAAQ,EAAE,YAAY;IACtB,SAAS,EAAE,WAAW,CAAC,YAAY,CAAC;CACrC,CACF,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { type FieldState, type NonDefaultFieldState } from "../shared.js";
2
+ export declare const CHECKBOX_CLASS: "fs-checkbox";
3
+ /** Raden som holder boksen og teksten ved siden av hverandre. */
4
+ export declare const CHECKBOX_ROW_CLASS: "fs-checkbox-row";
5
+ export type CheckboxOptions = {
6
+ /** Valideringstilstand. Standard: `default`. */
7
+ state?: FieldState;
8
+ };
9
+ export type CheckboxAttributes = {
10
+ class: typeof CHECKBOX_CLASS;
11
+ type: "checkbox";
12
+ "data-state"?: NonDefaultFieldState;
13
+ "aria-invalid"?: "true";
14
+ };
15
+ /**
16
+ * Attributtene for en avkryssingsboks.
17
+ *
18
+ * `type` settes her, slik at boksen ikke kan bli et tekstfelt med en boks sin
19
+ * stil. Delvis avkrysset settes med `element.indeterminate = true` i
20
+ * JavaScript, ikke som et attributt, fordi HTML ikke har noe slikt attributt.
21
+ *
22
+ * ```ts
23
+ * <input {...checkbox({ state: "invalid" })} />
24
+ * ```
25
+ */
26
+ export declare const checkbox: (({ state }?: CheckboxOptions) => CheckboxAttributes) & {
27
+ /** Klassen på raden rundt boksen og teksten. */
28
+ row: "fs-checkbox-row";
29
+ states: readonly ["default", "invalid", "success"];
30
+ isState: (value: string) => value is "default" | "success" | "invalid";
31
+ };
32
+ //# sourceMappingURL=checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../../src/components/css/checkbox/checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAGf,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAA;AAErB,eAAO,MAAM,cAAc,EAAG,aAAsB,CAAA;AACpD,iEAAiE;AACjE,eAAO,MAAM,kBAAkB,EAAG,iBAA0B,CAAA;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,gDAAgD;IAChD,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,OAAO,cAAc,CAAA;IAC5B,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,gBACK,eAAe,KAAQ,kBAAkB;IAQ/D,gDAAgD;;;;CAKnD,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { attributes, fieldStates, isFieldState, } from "../shared.js";
2
+ export const CHECKBOX_CLASS = "fs-checkbox";
3
+ /** Raden som holder boksen og teksten ved siden av hverandre. */
4
+ export const CHECKBOX_ROW_CLASS = "fs-checkbox-row";
5
+ /**
6
+ * Attributtene for en avkryssingsboks.
7
+ *
8
+ * `type` settes her, slik at boksen ikke kan bli et tekstfelt med en boks sin
9
+ * stil. Delvis avkrysset settes med `element.indeterminate = true` i
10
+ * JavaScript, ikke som et attributt, fordi HTML ikke har noe slikt attributt.
11
+ *
12
+ * ```ts
13
+ * <input {...checkbox({ state: "invalid" })} />
14
+ * ```
15
+ */
16
+ export const checkbox = Object.assign(({ state = "default" } = {}) => attributes({
17
+ class: CHECKBOX_CLASS,
18
+ type: "checkbox",
19
+ "data-state": state === "default" ? undefined : state,
20
+ "aria-invalid": state === "invalid" ? "true" : undefined,
21
+ }), {
22
+ /** Klassen på raden rundt boksen og teksten. */
23
+ row: CHECKBOX_ROW_CLASS,
24
+ states: fieldStates,
25
+ isState: isFieldState,
26
+ });
27
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../../src/components/css/checkbox/checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,WAAW,EACX,YAAY,GAEb,MAAM,cAAc,CAAA;AAErB,MAAM,CAAC,MAAM,cAAc,GAAG,aAAsB,CAAA;AACpD,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAA0B,CAAA;AAc5D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CACnC,CAAC,EAAE,KAAK,GAAG,SAAS,KAAsB,EAAE,EAAsB,EAAE,CAClE,UAAU,CAAC;IACT,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,UAAmB;IACzB,YAAY,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;IACrD,cAAc,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAE,MAAgB,CAAC,CAAC,CAAC,SAAS;CACpE,CAAC,EACJ;IACE,gDAAgD;IAChD,GAAG,EAAE,kBAAkB;IACvB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;CACtB,CACF,CAAA"}
@@ -0,0 +1,30 @@
1
+ export declare const DIALOG_CLASS: "fs-dialog";
2
+ export declare const DIALOG_TITLE_CLASS: "fs-dialog__title";
3
+ export declare const DIALOG_BODY_CLASS: "fs-dialog__body";
4
+ export declare const DIALOG_FOOTER_CLASS: "fs-dialog__footer";
5
+ export type DialogAttributes = {
6
+ class: typeof DIALOG_CLASS;
7
+ };
8
+ /**
9
+ * Attributtene for en dialog.
10
+ *
11
+ * Klassen hører på et `<dialog>`. Åpne den med `showModal()`, ikke ved å
12
+ * sette `open`: bare den første flytter fokus inn, holder fokus inne i
13
+ * dialogen, lukker på Escape og gjør resten av siden utilgjengelig. Et
14
+ * `<dialog open>` i markupen er en boks på siden, ikke en dialog.
15
+ *
16
+ * ```ts
17
+ * <dialog {...dialog()} aria-labelledby="tittel">
18
+ * <h2 {...{ class: dialog.title }} id="tittel">Slette søknaden?</h2>
19
+ * </dialog>
20
+ * ```
21
+ */
22
+ export declare const dialog: (() => DialogAttributes) & {
23
+ /** Klassen på overskriften i dialogen. */
24
+ title: "fs-dialog__title";
25
+ /** Klassen på innholdet, som ruller når dialogen blir for høy. */
26
+ body: "fs-dialog__body";
27
+ /** Klassen på raden med knapper nederst. */
28
+ footer: "fs-dialog__footer";
29
+ };
30
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/css/dialog/dialog.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,EAAG,WAAoB,CAAA;AAChD,eAAO,MAAM,kBAAkB,EAAG,kBAA2B,CAAA;AAC7D,eAAO,MAAM,iBAAiB,EAAG,iBAA0B,CAAA;AAC3D,eAAO,MAAM,mBAAmB,EAAG,mBAA4B,CAAA;AAE/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,YAAY,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,SACb,gBAAgB;IAElB,0CAA0C;;IAE1C,kEAAkE;;IAElE,4CAA4C;;CAG/C,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { attributes } from "../shared.js";
2
+ export const DIALOG_CLASS = "fs-dialog";
3
+ export const DIALOG_TITLE_CLASS = "fs-dialog__title";
4
+ export const DIALOG_BODY_CLASS = "fs-dialog__body";
5
+ export const DIALOG_FOOTER_CLASS = "fs-dialog__footer";
6
+ /**
7
+ * Attributtene for en dialog.
8
+ *
9
+ * Klassen hører på et `<dialog>`. Åpne den med `showModal()`, ikke ved å
10
+ * sette `open`: bare den første flytter fokus inn, holder fokus inne i
11
+ * dialogen, lukker på Escape og gjør resten av siden utilgjengelig. Et
12
+ * `<dialog open>` i markupen er en boks på siden, ikke en dialog.
13
+ *
14
+ * ```ts
15
+ * <dialog {...dialog()} aria-labelledby="tittel">
16
+ * <h2 {...{ class: dialog.title }} id="tittel">Slette søknaden?</h2>
17
+ * </dialog>
18
+ * ```
19
+ */
20
+ export const dialog = Object.assign(() => attributes({ class: DIALOG_CLASS }), {
21
+ /** Klassen på overskriften i dialogen. */
22
+ title: DIALOG_TITLE_CLASS,
23
+ /** Klassen på innholdet, som ruller når dialogen blir for høy. */
24
+ body: DIALOG_BODY_CLASS,
25
+ /** Klassen på raden med knapper nederst. */
26
+ footer: DIALOG_FOOTER_CLASS,
27
+ });
28
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../../../src/components/css/dialog/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAoB,CAAA;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAA2B,CAAA;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAA0B,CAAA;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAA4B,CAAA;AAM/D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CACjC,GAAqB,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAC3D;IACE,0CAA0C;IAC1C,KAAK,EAAE,kBAAkB;IACzB,kEAAkE;IAClE,IAAI,EAAE,iBAAiB;IACvB,4CAA4C;IAC5C,MAAM,EAAE,mBAAmB;CAC5B,CACF,CAAA"}
@@ -0,0 +1,28 @@
1
+ export declare const DIVIDER_CLASS: "fs-divider";
2
+ export declare const dividerVariants: readonly ["default", "subtle", "strong"];
3
+ export type DividerVariant = (typeof dividerVariants)[number];
4
+ export type NonDefaultDividerVariant = Exclude<DividerVariant, "default">;
5
+ export type DividerOptions = {
6
+ /** Hvor tydelig streken er. Standard: `default`. */
7
+ variant?: DividerVariant;
8
+ };
9
+ export type DividerAttributes = {
10
+ class: typeof DIVIDER_CLASS;
11
+ "data-variant"?: NonDefaultDividerVariant;
12
+ };
13
+ /**
14
+ * Attributtene for en skillelinje.
15
+ *
16
+ * Klassen hører på et `<hr>`. Skiller streken to deler av innholdet, er den
17
+ * en opplysning skjermlesere skal få. Er den bare pynt mellom to bokser som
18
+ * allerede er atskilt, sett `aria-hidden="true"` på den.
19
+ *
20
+ * ```ts
21
+ * <hr {...divider({ variant: "subtle" })} />
22
+ * ```
23
+ */
24
+ export declare const divider: (({ variant }?: DividerOptions) => DividerAttributes) & {
25
+ variants: readonly ["default", "subtle", "strong"];
26
+ isVariant: (value: string) => value is "default" | "subtle" | "strong";
27
+ };
28
+ //# sourceMappingURL=divider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../../../src/components/css/divider/divider.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,EAAG,YAAqB,CAAA;AAElD,eAAO,MAAM,eAAe,0CAA2C,CAAA;AAEvE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAC7D,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;AAEzE,MAAM,MAAM,cAAc,GAAG;IAC3B,oDAAoD;IACpD,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,OAAO,aAAa,CAAA;IAC3B,cAAc,CAAC,EAAE,wBAAwB,CAAA;CAC1C,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,kBACQ,cAAc,KAAQ,iBAAiB;;;CASlE,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { attributes, createGuard } from "../shared.js";
2
+ export const DIVIDER_CLASS = "fs-divider";
3
+ export const dividerVariants = ["default", "subtle", "strong"];
4
+ /**
5
+ * Attributtene for en skillelinje.
6
+ *
7
+ * Klassen hører på et `<hr>`. Skiller streken to deler av innholdet, er den
8
+ * en opplysning skjermlesere skal få. Er den bare pynt mellom to bokser som
9
+ * allerede er atskilt, sett `aria-hidden="true"` på den.
10
+ *
11
+ * ```ts
12
+ * <hr {...divider({ variant: "subtle" })} />
13
+ * ```
14
+ */
15
+ export const divider = Object.assign(({ variant = "default" } = {}) => attributes({
16
+ class: DIVIDER_CLASS,
17
+ "data-variant": variant === "default" ? undefined : variant,
18
+ }), {
19
+ variants: dividerVariants,
20
+ isVariant: createGuard(dividerVariants),
21
+ });
22
+ //# sourceMappingURL=divider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divider.js","sourceRoot":"","sources":["../../../../src/components/css/divider/divider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,YAAqB,CAAA;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAA;AAevE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAClC,CAAC,EAAE,OAAO,GAAG,SAAS,KAAqB,EAAE,EAAqB,EAAE,CAClE,UAAU,CAAC;IACT,KAAK,EAAE,aAAa;IACpB,cAAc,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;CAC5D,CAAC,EACJ;IACE,QAAQ,EAAE,eAAe;IACzB,SAAS,EAAE,WAAW,CAAC,eAAe,CAAC;CACxC,CACF,CAAA"}
@@ -0,0 +1,24 @@
1
+ export declare const ERROR_TEXT_CLASS: "fs-error-text";
2
+ export declare const errorTextVariants: readonly ["error", "warning"];
3
+ export type ErrorTextVariant = (typeof errorTextVariants)[number];
4
+ export type NonDefaultErrorTextVariant = Exclude<ErrorTextVariant, "error">;
5
+ export type ErrorTextOptions = {
6
+ /** Om feilen stopper innsending eller bare advarer. Standard: `error`. */
7
+ variant?: ErrorTextVariant;
8
+ };
9
+ export type ErrorTextAttributes = {
10
+ class: typeof ERROR_TEXT_CLASS;
11
+ "data-variant"?: NonDefaultErrorTextVariant;
12
+ };
13
+ /**
14
+ * Attributtene for en feilmelding under et felt.
15
+ *
16
+ * ```ts
17
+ * <p {...errorText({ variant: "warning" })}>…</p>
18
+ * ```
19
+ */
20
+ export declare const errorText: (({ variant }?: ErrorTextOptions) => ErrorTextAttributes) & {
21
+ variants: readonly ["error", "warning"];
22
+ isVariant: (value: string) => value is "error" | "warning";
23
+ };
24
+ //# sourceMappingURL=error-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-text.d.ts","sourceRoot":"","sources":["../../../../src/components/css/error-text/error-text.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,EAAG,eAAwB,CAAA;AAExD,eAAO,MAAM,iBAAiB,+BAAgC,CAAA;AAE9D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AACjE,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;AAE3E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,OAAO,gBAAgB,CAAA;IAC9B,cAAc,CAAC,EAAE,0BAA0B,CAAA;CAC5C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,kBACI,gBAAgB,KAAQ,mBAAmB;;;CASpE,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { attributes, createGuard } from "../shared.js";
2
+ export const ERROR_TEXT_CLASS = "fs-error-text";
3
+ export const errorTextVariants = ["error", "warning"];
4
+ /**
5
+ * Attributtene for en feilmelding under et felt.
6
+ *
7
+ * ```ts
8
+ * <p {...errorText({ variant: "warning" })}>…</p>
9
+ * ```
10
+ */
11
+ export const errorText = Object.assign(({ variant = "error" } = {}) => attributes({
12
+ class: ERROR_TEXT_CLASS,
13
+ "data-variant": variant === "error" ? undefined : variant,
14
+ }), {
15
+ variants: errorTextVariants,
16
+ isVariant: createGuard(errorTextVariants),
17
+ });
18
+ //# sourceMappingURL=error-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-text.js","sourceRoot":"","sources":["../../../../src/components/css/error-text/error-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAwB,CAAA;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,SAAS,CAAU,CAAA;AAe9D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CACpC,CAAC,EAAE,OAAO,GAAG,OAAO,KAAuB,EAAE,EAAuB,EAAE,CACpE,UAAU,CAAC;IACT,KAAK,EAAE,gBAAgB;IACvB,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;CAC1D,CAAC,EACJ;IACE,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,WAAW,CAAC,iBAAiB,CAAC;CAC1C,CACF,CAAA"}