@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
package/CHANGELOG.md ADDED
@@ -0,0 +1,85 @@
1
+ # Endringer i @fristil/designsystem
2
+
3
+ Versjonsnumrene følger [semantisk versjonering](https://semver.org/lang/no/).
4
+ Det offentlige API-et er større enn funksjonene pakken eksporterer, så disse
5
+ regnes som brytende endringer og krever et nytt hovedtall:
6
+
7
+ - et klassenavn, et `data-*`-attributt eller en lovlig verdi som forsvinner
8
+ eller endrer betydning,
9
+ - et `part`-navn i en komponent med shadow DOM,
10
+ - et tokennavn eller en `--fs-*`-variabel,
11
+ - en funksjon eller en type i `fs`,
12
+ - en oppføring i `exports` i `package.json`.
13
+
14
+ Nye komponenter, nye valgfrie attributter og rettelser som ikke endrer markup
15
+ kommer i et nytt undertall.
16
+
17
+ ## Ikke utgitt
18
+
19
+ ## 0.2.0 (2026-09-21)
20
+
21
+ ### Lagt til
22
+
23
+ - `fristil overta <komponent>` kopierer kildekoden til én komponent inn i
24
+ prosjektet ditt, og skriver om henvisningene ut av mappa. Til bruk når
25
+ tilpasning gjennom CSS ikke strekker til. Kopien er din, og oppdateringer av
26
+ pakken rører den ikke.
27
+
28
+ - `fristil --hjelp` (og `--help`, `-h`, `help`) skriver ut hva kommandoen kan.
29
+ Uten argumenter gjorde den før et forsøk på å lage et tema, og klaget over
30
+ manglende farger uten å nevne at `overta` fantes.
31
+
32
+ - Pakken kan publiseres på npm. Den har lisens (MIT), en README som blir
33
+ forsiden på npm, og feltene `repository`, `homepage`, `bugs` og `keywords`.
34
+ `publishConfig` sier `public`, siden en pakke med navnerom ellers blir
35
+ privat, og `prepublishOnly` bygger, så en publisering fra et rent klon ikke
36
+ kan komme ut uten `dist`.
37
+
38
+ - `bun run sjekk:pakke` kjører [publint](https://publint.dev) mot pakken, som
39
+ en del av bygget. Den leser `exports` slik nettlesere, buntere og TypeScript
40
+ faktisk gjør det.
41
+
42
+ ### Rettet
43
+
44
+ - `types` står først i hver oppføring i `exports`. Betingelsene leses i
45
+ rekkefølge, og `import` sto først, så TypeScript fant typene bare fordi
46
+ `.d.ts`-fila lå ved siden av `.js`-fila. Stiene er de samme som før.
47
+
48
+ - Kommandolinja svarer med en forklaring i stedet for et stakkspor fra Node
49
+ når kommandoen er ukjent, eller når temafila mangler eller ikke er JSON.
50
+
51
+ - Lista over valgte filer i `file-upload` brekker nå til flere linjer på smal
52
+ skjerm. Raden var bredere enn en telefon når filnavnet var langt, og knappen
53
+ «Fjern <filnavn>» ble klippet av.
54
+ - `<fs-error-summary>` oppdaterer overskriften når `heading` endrer seg. Den
55
+ ble bare skrevet første gang, så en oppsummering som talte ned fra to feil
56
+ til én ble stående på to.
57
+
58
+ ## 0.1.0 (2026-09-21)
59
+
60
+ Første versjon.
61
+
62
+ ### Lagt til
63
+
64
+ - **Tokens** for farge, størrelse, typografi, radius og skygge, med semantiske
65
+ navn (`--semantic-*`) over en råskala. Lyst og mørkt tema, og en egen fil for
66
+ Tailwind 4.
67
+ - **34 CSS-komponenter** som bare trenger en klasse og `data-*`-attributter:
68
+ accordion, alert, avatar, badge, breadcrumbs, button, card, checkbox, dialog,
69
+ divider, error-text, fieldset, file-upload, heading, help-text, input, label,
70
+ link, list, pagination, paragraph, radio, search, select, skeleton,
71
+ skip-link, spinner, sr-only, switch, table, tag, textarea, toggle-group og
72
+ tooltip.
73
+ - **Fire rammekomponenter** som kobler sammen markupen du selv skriver:
74
+ `<fs-field>`, `<fs-error-summary>`, `<fs-popover>` og `<fs-tabs>`.
75
+ - **Fire frittstående komponenter** som eier markupen og interaksjonen:
76
+ `<fs-calendar>`, `<fs-date-field>`, `<fs-suggestion>` og `<fs-toast>`.
77
+ - **`fs`-API-et**: én funksjon per komponent som tar et valgobjekt og gir
78
+ attributter tilbake, med lovlige verdier og vakt hengt på funksjonen. En egen
79
+ inngang for React (`@fristil/designsystem/react`) med `className` og
80
+ `htmlFor`, og JSX-deklarasjoner for de egendefinerte elementene.
81
+ - **`fristil`-kommandoen** som bygger et tema fra egne farger, sjekker
82
+ kontrasten mot WCAG og skriver ut CSS-en.
83
+ - **Tilpasning utenfra**: all CSS ligger i `@layer fristil`, form og størrelse
84
+ leses fra `--fs-*`-variabler med tokenverdien som reserve, og komponenten med
85
+ shadow DOM eksponerer delene sine med `::part()`.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MarkusAugust
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,101 @@
1
+ # @fristil/designsystem
2
+
3
+ Rammeverksuavhengig designsystem for web: tokens, CSS-komponenter og web components. Alt er bygd på ting nettleseren allerede forstår, så de samme komponentene virker i ren HTML, React, Astro og [Datastar](https://data-star.dev).
4
+
5
+ > **Dette er en proof of concept.** Ikke et ferdig produkt, ikke aktivt vedlikeholdt, og det kan bli lagt på is. Bruk det til å prøve ut ideen, ikke til noe du må stole på.
6
+
7
+ Hele dokumentasjonen, med komponentsider, tokens, mønstre og eksempler for fire miljøer, ligger på **[fristil.netlify.app](https://fristil.netlify.app/)**.
8
+
9
+ ## Installasjon
10
+
11
+ ```bash
12
+ npm install @fristil/designsystem
13
+ ```
14
+
15
+ Pakken har ingen påkrevde avhengigheter. `lit` er valgfri, og trengs bare til komponentene som er web components:
16
+
17
+ ```bash
18
+ npm install lit
19
+ ```
20
+
21
+ ## CSS-komponenter
22
+
23
+ En klasse og noen `data-*`-attributter, ingen JavaScript. `tokens.css` definerer variablene alt annet bygger på, så den lastes først. Importer bare stilarkene du bruker; det finnes ingen samlet CSS-fil.
24
+
25
+ ```js
26
+ import "@fristil/designsystem/tokens.css"
27
+ import "@fristil/designsystem/button.css"
28
+ ```
29
+
30
+ ```html
31
+ <button class="fs-button">Send søknad</button>
32
+ <button class="fs-button" data-variant="secondary">Lagre utkast</button>
33
+ ```
34
+
35
+ ## Attributtene som funksjoner
36
+
37
+ `fs` gir de samme klassene og attributtene med fullføring og typesjekk i editoren. Hver komponent tar ett valgobjekt og gir attributtene ut:
38
+
39
+ ```js
40
+ import { fs } from "@fristil/designsystem"
41
+
42
+ fs.button({ variant: "secondary" })
43
+ // { class: "fs-button", "data-variant": "secondary" }
44
+ ```
45
+
46
+ I React importerer du fra `@fristil/designsystem/react`, som gir `className` og `htmlFor` i stedet for HTML-navnene:
47
+
48
+ ```jsx
49
+ import { fs } from "@fristil/designsystem/react"
50
+
51
+ <button {...fs.button({ variant: "secondary" })}>Lagre utkast</button>
52
+ ```
53
+
54
+ ## Web components
55
+
56
+ Ingenting registreres ved import alene. Du kaller `defineFs*` selv, så du bestemmer når elementet finnes og hva det skal hete:
57
+
58
+ ```js
59
+ import { defineFsDateField } from "@fristil/designsystem/date-field"
60
+ import "@fristil/designsystem/tokens.css"
61
+ import "@fristil/designsystem/date-field.css"
62
+
63
+ defineFsDateField()
64
+ ```
65
+
66
+ ```html
67
+ <fs-date-field label="Fødselsdato" value="2026-05-31"></fs-date-field>
68
+ ```
69
+
70
+ ## Eget fargetema
71
+
72
+ Kommandolinja lager et fullt tema av merkefargene dine, med kontrastkravene regnet ut i OKLCH:
73
+
74
+ ```bash
75
+ npx @fristil/designsystem tema --interaktiv=#7c3aed --fare=#b3261e \
76
+ --suksess=#2b6940 --advarsel=#8a5a00 --noytral=#1a1a1a --ut=tema.css
77
+ ```
78
+
79
+ Strekker ikke tilpasning gjennom CSS til, kopierer `overta` kildekoden til én komponent inn i prosjektet ditt, med henvisningene skrevet om:
80
+
81
+ ```bash
82
+ npx @fristil/designsystem overta button --ut=src/ui
83
+ ```
84
+
85
+ `npx @fristil/designsystem --hjelp` viser resten.
86
+
87
+ ## Tilpasning
88
+
89
+ All CSS ligger i `@layer fristil`, så dine egne regler vinner uten `!important`. Form og størrelse leses fra `--fs-*`-variabler med tokenverdien som reserve:
90
+
91
+ ```css
92
+ .fs-button {
93
+ --fs-button-padding: var(--size-3) var(--size-6);
94
+ }
95
+ ```
96
+
97
+ Tailwind er valgfritt. Temaet er en ren CSS-fil, `@fristil/designsystem/tailwind.css`, så pakken har ingen avhengighet til Tailwind og kan ikke komme i konflikt med versjonen din.
98
+
99
+ ## Lisens
100
+
101
+ MIT
package/dist/cli.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Kommandolinja til Fristil, med to kommandoer.
4
+ *
5
+ * `fristil overta <komponent>` kopierer kildekoden til én komponent inn i
6
+ * prosjektet ditt, når tilpasning gjennom CSS ikke strekker til. Regnestykket
7
+ * ligger i `takeover.ts`.
8
+ *
9
+ * `fristil tema` lager et fargetema av merkefargene dine.
10
+ *
11
+ * ```bash
12
+ * npx @fristil/designsystem tema --interaktiv=#7c3aed --fare=#b3261e \
13
+ * --suksess=#2b6940 --advarsel=#8a5a00 --noytral=#1a1a1a --ut=tema.css
14
+ * ```
15
+ *
16
+ * Eller med en fil:
17
+ *
18
+ * ```bash
19
+ * npx @fristil/designsystem tema fristil.tema.json --ut=tema.css
20
+ * ```
21
+ *
22
+ * Dette er den eneste fila i pakken som kjører utenfor nettleseren, og derfor
23
+ * den eneste som viser til Node-typene.
24
+ *
25
+ * Generatoren bygger skalaene, setter de semantiske verdiene og flytter
26
+ * lysheten på dem som ikke holder kontrastkravet. Hver justering skrives ut,
27
+ * så du ser hva som ble endret. Holder et par likevel ikke, avsluttes
28
+ * kjøringen med feil framfor å levere et tema som ser riktig ut.
29
+ */
30
+ export {};
31
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG"}
package/dist/cli.js ADDED
@@ -0,0 +1,261 @@
1
+ #!/usr/bin/env node
2
+ /// <reference types="node" />
3
+ /**
4
+ * Kommandolinja til Fristil, med to kommandoer.
5
+ *
6
+ * `fristil overta <komponent>` kopierer kildekoden til én komponent inn i
7
+ * prosjektet ditt, når tilpasning gjennom CSS ikke strekker til. Regnestykket
8
+ * ligger i `takeover.ts`.
9
+ *
10
+ * `fristil tema` lager et fargetema av merkefargene dine.
11
+ *
12
+ * ```bash
13
+ * npx @fristil/designsystem tema --interaktiv=#7c3aed --fare=#b3261e \
14
+ * --suksess=#2b6940 --advarsel=#8a5a00 --noytral=#1a1a1a --ut=tema.css
15
+ * ```
16
+ *
17
+ * Eller med en fil:
18
+ *
19
+ * ```bash
20
+ * npx @fristil/designsystem tema fristil.tema.json --ut=tema.css
21
+ * ```
22
+ *
23
+ * Dette er den eneste fila i pakken som kjører utenfor nettleseren, og derfor
24
+ * den eneste som viser til Node-typene.
25
+ *
26
+ * Generatoren bygger skalaene, setter de semantiske verdiene og flytter
27
+ * lysheten på dem som ikke holder kontrastkravet. Hver justering skrives ut,
28
+ * så du ser hva som ble endret. Holder et par likevel ikke, avsluttes
29
+ * kjøringen med feil framfor å levere et tema som ser riktig ut.
30
+ */
31
+ import { mkdir, readdir, readFile, stat, writeFile } from "node:fs/promises";
32
+ import { join } from "node:path";
33
+ import { fileURLToPath } from "node:url";
34
+ import { buildEntryPoints, planTakeover, } from "./takeover.js";
35
+ import { buildTheme } from "./tokens/theme.js";
36
+ const NØKLER = {
37
+ interaktiv: "interactive",
38
+ fare: "danger",
39
+ suksess: "success",
40
+ advarsel: "warning",
41
+ noytral: "neutral",
42
+ besokt: "visited",
43
+ };
44
+ function lesArgumenter(argumenter) {
45
+ const flagg = {};
46
+ const filer = [];
47
+ for (const del of argumenter) {
48
+ const treff = /^--([a-zæøå]+)=(.+)$/.exec(del);
49
+ if (treff)
50
+ flagg[treff[1]] = treff[2];
51
+ else
52
+ filer.push(del);
53
+ }
54
+ return { flagg, filer };
55
+ }
56
+ /**
57
+ * Pakkas egen rot, enten CLI-en kjøres fra `dist` eller fra kilden.
58
+ *
59
+ * `fileURLToPath`, ikke `pathname`: på Windows gir `pathname` en sti som
60
+ * begynner med skråstrek foran stasjonsbokstaven, og mellomrom i stien står
61
+ * fortsatt som `%20`. Da finner ikke kommandoen sine egne filer.
62
+ */
63
+ const PAKKEROT = fileURLToPath(new URL("../", import.meta.url));
64
+ /** Mappene komponentene ligger i, med kategorien som navn. */
65
+ const KATEGORIER = ["css", "ramme", "frittstaende"];
66
+ async function finnKomponenter() {
67
+ const komponenter = new Map();
68
+ for (const kategori of KATEGORIER) {
69
+ const mappe = `src/components/${kategori}`;
70
+ let innhold;
71
+ try {
72
+ innhold = await readdir(join(PAKKEROT, mappe));
73
+ }
74
+ catch {
75
+ continue;
76
+ }
77
+ for (const navn of innhold) {
78
+ const sti = `${mappe}/${navn}`;
79
+ if ((await stat(join(PAKKEROT, sti))).isDirectory()) {
80
+ komponenter.set(navn, sti);
81
+ }
82
+ }
83
+ }
84
+ return komponenter;
85
+ }
86
+ /**
87
+ * Kopierer kildekoden til én komponent inn i prosjektet.
88
+ *
89
+ * Kopien er din fra det øyeblikket den er skrevet. Kommandoen sier derfor
90
+ * fra om det, og skriver ikke over noe som allerede ligger der uten at du ber
91
+ * om det.
92
+ */
93
+ async function overta(argumenter) {
94
+ const { flagg, filer } = lesArgumenter(argumenter);
95
+ const komponenter = await finnKomponenter();
96
+ const navn = filer[0];
97
+ if (!navn || !komponenter.has(navn)) {
98
+ console.error((navn ? `Fant ingen komponent som heter «${navn}».\n\n` : "") +
99
+ `Bruk: fristil overta <komponent> [--ut=<mappe>]\n` +
100
+ `Hele oversikten: fristil --hjelp\n\n` +
101
+ `Komponenter:\n ${[...komponenter.keys()].sort().join(", ")}\n`);
102
+ process.exit(1);
103
+ }
104
+ const kilde = komponenter.get(navn);
105
+ const utmappe = join(flagg.ut ?? "src/fristil", navn);
106
+ const finnes = await stat(utmappe).then(() => true, () => false);
107
+ if (finnes && flagg.overskriv !== "ja") {
108
+ console.error(`${utmappe} finnes allerede.\n\n` +
109
+ "Har du endret kopien, blir endringene borte. Kjør med " +
110
+ "--overskriv=ja hvis den skal erstattes.\n");
111
+ process.exit(1);
112
+ }
113
+ const pakke = JSON.parse(await readFile(join(PAKKEROT, "package.json"), "utf8"));
114
+ const filnavn = (await readdir(join(PAKKEROT, kilde))).filter(
115
+ // Testene hører til pakkens eget oppsett, og sier ingenting her.
116
+ (fil) => !fil.includes(".test."));
117
+ const kildefiler = await Promise.all(filnavn.map(async (fil) => ({
118
+ path: `${kilde}/${fil}`,
119
+ content: await readFile(join(PAKKEROT, kilde, fil), "utf8"),
120
+ })));
121
+ const plan = planTakeover(kildefiler, buildEntryPoints(pakke.name, pakke.exports));
122
+ await mkdir(utmappe, { recursive: true });
123
+ for (const fil of plan.files) {
124
+ await writeFile(join(utmappe, fil.name), fil.content);
125
+ }
126
+ const linjer = [
127
+ `Kopierte ${navn} til ${utmappe}/`,
128
+ ...plan.files.map((fil) => ` ${fil.name}`),
129
+ "",
130
+ `Komponenten er nå din. Oppdateringer av ${pakke.name} rører den ikke.`,
131
+ ];
132
+ const omskrevet = plan.files.flatMap((fil) => fil.rewrites);
133
+ if (omskrevet.length > 0) {
134
+ linjer.push("", "Henvisninger ut av mappa peker nå på pakken:", ...omskrevet.map((endring) => ` ${endring.from} → ${endring.to}`));
135
+ }
136
+ if (plan.replacedEntries.length > 0) {
137
+ linjer.push("", "Bytt ut disse importene med kopien:", ...plan.replacedEntries.map((entry) => ` ${entry}`), "Klassenavnene er de samme. Blir importene stående ved siden av", "kopien, finnes komponenten to ganger, og hvilken som vinner avgjøres", "av rekkefølgen.");
138
+ }
139
+ if (plan.dependencies.length > 0) {
140
+ linjer.push("", `Kopien trenger ${plan.dependencies.join(", ")} i prosjektet ditt.`);
141
+ }
142
+ console.error(`${linjer.join("\n")}\n`);
143
+ }
144
+ /** Det kommandoen kan, skrevet ut på én skjerm. */
145
+ const HJELP = `fristil <kommando>
146
+
147
+ overta <komponent> Kopierer kildekoden til én komponent inn i prosjektet
148
+ --ut=<mappe> Hvor kopien skal ligge. Standard: src/fristil
149
+ --overskriv=ja Skriv over en kopi som finnes fra før
150
+
151
+ tema Lager et fargetema av merkefargene dine
152
+ --interaktiv=<farge> Lenker, knapper og fokus (påkrevd)
153
+ --fare=<farge> Feil og sletting (påkrevd)
154
+ --suksess=<farge> Bekreftelser (påkrevd)
155
+ --advarsel=<farge> Advarsler (påkrevd)
156
+ --noytral=<farge> Tekst og flater
157
+ --besokt=<farge> Besøkte lenker
158
+ --ut=<fil> Skriv til fil i stedet for til utdata
159
+
160
+ Fargene skrives heksadesimalt, for eksempel #7c3aed. Temaet kan også leses
161
+ fra en JSON-fil: fristil tema fristil.tema.json
162
+
163
+ Eksempler:
164
+ npx @fristil/designsystem overta button --ut=src/ui
165
+ npx @fristil/designsystem tema --interaktiv=#7c3aed --fare=#b3261e \
166
+ --suksess=#2b6940 --advarsel=#8a5a00 --ut=tema.css
167
+ `;
168
+ const HJELPEFLAGG = new Set(["--help", "-h", "help", "hjelp", "--hjelp"]);
169
+ const KOMMANDOER = new Set(["overta", "tema"]);
170
+ const argumenter = process.argv.slice(2);
171
+ // Uten argumenter, eller når noen ber om hjelp, skal kommandoen fortelle hva
172
+ // den kan. Før sto den rett inn i temakommandoen og klaget over manglende
173
+ // farger, uten å nevne at «overta» fantes.
174
+ if (argumenter.length === 0 || HJELPEFLAGG.has(argumenter[0])) {
175
+ console.log(HJELP);
176
+ process.exit(0);
177
+ }
178
+ // En ukjent kommando ble lest som et filnavn, og ga et stakkspor fra Node.
179
+ if (!KOMMANDOER.has(argumenter[0]) && !argumenter[0].startsWith("--")) {
180
+ console.error(`Ukjent kommando «${argumenter[0]}».\n\n${HJELP}`);
181
+ process.exit(1);
182
+ }
183
+ if (argumenter[0] === "overta") {
184
+ await overta(argumenter.slice(1));
185
+ process.exit(0);
186
+ }
187
+ // `tema` kan stå først, siden kommandoen kjøres som
188
+ // `npx @fristil/designsystem tema`.
189
+ const { flagg, filer } = lesArgumenter(argumenter[0] === "tema" ? argumenter.slice(1) : argumenter);
190
+ async function lesTemafil(sti) {
191
+ let innhold;
192
+ try {
193
+ innhold = await readFile(sti, "utf8");
194
+ }
195
+ catch {
196
+ console.error(`Fant ikke fila «${sti}».\n\n` +
197
+ "Oppgi en JSON-fil med fargene, eller sett dem som flagg. " +
198
+ "Se `fristil --hjelp`.\n");
199
+ process.exit(1);
200
+ }
201
+ try {
202
+ return JSON.parse(innhold);
203
+ }
204
+ catch (grunn) {
205
+ console.error(`«${sti}» er ikke gyldig JSON: ${grunn instanceof Error ? grunn.message : String(grunn)}\n`);
206
+ process.exit(1);
207
+ }
208
+ }
209
+ const fraFil = filer[0] ? await lesTemafil(filer[0]) : {};
210
+ const input = {};
211
+ for (const [norsk, engelsk] of Object.entries(NØKLER)) {
212
+ const verdi = flagg[norsk] ?? fraFil[norsk] ?? fraFil[engelsk];
213
+ if (verdi)
214
+ input[engelsk] = verdi;
215
+ }
216
+ const påkrevd = [
217
+ "interactive",
218
+ "danger",
219
+ "success",
220
+ "warning",
221
+ ];
222
+ const mangler = påkrevd.filter((navn) => !input[navn]);
223
+ if (mangler.length > 0) {
224
+ const norske = mangler.map((navn) => Object.entries(NØKLER).find(([, engelsk]) => engelsk === navn)?.[0] ??
225
+ navn);
226
+ console.error(`Mangler farger: ${norske.join(", ")}\n\n` +
227
+ "Eksempel:\n npx @fristil/designsystem tema --interaktiv=#7c3aed" +
228
+ " --fare=#b3261e --suksess=#2b6940 --advarsel=#8a5a00\n\n" +
229
+ "Hele oversikten: fristil --hjelp\n");
230
+ process.exit(1);
231
+ }
232
+ let tema;
233
+ try {
234
+ tema = buildTheme(input);
235
+ }
236
+ catch (grunn) {
237
+ // Som regel en farge som ikke er en farge. Et stakkspor sier ingenting om
238
+ // hva brukeren skrev feil.
239
+ console.error(`\n${grunn instanceof Error ? grunn.message : String(grunn)}\n\n` +
240
+ "Fargene skrives som heksadesimale verdier, for eksempel #7c3aed.\n");
241
+ process.exit(1);
242
+ }
243
+ for (const justering of tema.adjustments) {
244
+ console.error(` justert ${justering.token} i ${justering.theme} tema: ` +
245
+ `${justering.before.toFixed(2)}:1 ble ${justering.after.toFixed(2)}:1`);
246
+ }
247
+ if (tema.problems.length > 0) {
248
+ console.error(`\nTemaet holder ikke kontrastkravet:\n\n${tema.problems
249
+ .map((linje) => ` ${linje}`)
250
+ .join("\n")}\n\nVelg en mørkere eller lysere merkefarge.\n`);
251
+ process.exit(1);
252
+ }
253
+ const ut = flagg.ut;
254
+ if (ut) {
255
+ await writeFile(ut, tema.css);
256
+ console.error(`\nSkrev ${ut}. ${tema.adjustments.length} verdier ble justert for å holde kontrastkravet.`);
257
+ }
258
+ else {
259
+ console.log(tema.css);
260
+ }
261
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export declare const ACCORDION_CLASS: "fs-accordion";
2
+ /** Innholdet som vises når panelet er åpent. */
3
+ export declare const ACCORDION_CONTENT_CLASS: "fs-accordion__content";
4
+ export declare const accordionVariants: readonly ["default", "plain"];
5
+ export type AccordionVariant = (typeof accordionVariants)[number];
6
+ export type NonDefaultAccordionVariant = Exclude<AccordionVariant, "default">;
7
+ export type AccordionOptions = {
8
+ /** Egen ramme, eller bare en strek mellom panelene. Standard: `default`. */
9
+ variant?: AccordionVariant;
10
+ };
11
+ export type AccordionAttributes = {
12
+ class: typeof ACCORDION_CLASS;
13
+ "data-variant"?: NonDefaultAccordionVariant;
14
+ };
15
+ /**
16
+ * Attributtene for et panel som kan foldes ut.
17
+ *
18
+ * Klassen hører på et `<details>` med et `<summary>` først. Nettleseren tar
19
+ * seg av åpning, lukking, tastatur og at skjermlesere melder «utvidet» eller
20
+ * «sammenfoldet». Bygger du det samme av knapper og `aria-expanded`, må alt
21
+ * det skrives på nytt, og nettleserens søk i siden finner ikke lenger tekst
22
+ * inne i et lukket panel.
23
+ *
24
+ * ```ts
25
+ * <details {...accordion()}>
26
+ * <summary>Hvem kan søke?</summary>
27
+ * <div class={accordion.content}>…</div>
28
+ * </details>
29
+ * ```
30
+ */
31
+ export declare const accordion: (({ variant }?: AccordionOptions) => AccordionAttributes) & {
32
+ /** Klassen på innholdet under overskriften. */
33
+ content: "fs-accordion__content";
34
+ variants: readonly ["default", "plain"];
35
+ isVariant: (value: string) => value is "default" | "plain";
36
+ };
37
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../../src/components/css/accordion/accordion.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,EAAG,cAAuB,CAAA;AACtD,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAG,uBAAgC,CAAA;AAEvE,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,SAAS,CAAC,CAAA;AAE7E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,OAAO,eAAe,CAAA;IAC7B,cAAc,CAAC,EAAE,0BAA0B,CAAA;CAC5C,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,kBACM,gBAAgB,KAAQ,mBAAmB;IAMnE,+CAA+C;;;;CAKlD,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { attributes, createGuard } from "../shared.js";
2
+ export const ACCORDION_CLASS = "fs-accordion";
3
+ /** Innholdet som vises når panelet er åpent. */
4
+ export const ACCORDION_CONTENT_CLASS = "fs-accordion__content";
5
+ export const accordionVariants = ["default", "plain"];
6
+ /**
7
+ * Attributtene for et panel som kan foldes ut.
8
+ *
9
+ * Klassen hører på et `<details>` med et `<summary>` først. Nettleseren tar
10
+ * seg av åpning, lukking, tastatur og at skjermlesere melder «utvidet» eller
11
+ * «sammenfoldet». Bygger du det samme av knapper og `aria-expanded`, må alt
12
+ * det skrives på nytt, og nettleserens søk i siden finner ikke lenger tekst
13
+ * inne i et lukket panel.
14
+ *
15
+ * ```ts
16
+ * <details {...accordion()}>
17
+ * <summary>Hvem kan søke?</summary>
18
+ * <div class={accordion.content}>…</div>
19
+ * </details>
20
+ * ```
21
+ */
22
+ export const accordion = Object.assign(({ variant = "default" } = {}) => attributes({
23
+ class: ACCORDION_CLASS,
24
+ "data-variant": variant === "default" ? undefined : variant,
25
+ }), {
26
+ /** Klassen på innholdet under overskriften. */
27
+ content: ACCORDION_CONTENT_CLASS,
28
+ variants: accordionVariants,
29
+ isVariant: createGuard(accordionVariants),
30
+ });
31
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../../src/components/css/accordion/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAEtD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAuB,CAAA;AACtD,gDAAgD;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAgC,CAAA;AAEvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,OAAO,CAAU,CAAA;AAe9D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CACpC,CAAC,EAAE,OAAO,GAAG,SAAS,KAAuB,EAAE,EAAuB,EAAE,CACtE,UAAU,CAAC;IACT,KAAK,EAAE,eAAe;IACtB,cAAc,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;CAC5D,CAAC,EACJ;IACE,+CAA+C;IAC/C,OAAO,EAAE,uBAAuB;IAChC,QAAQ,EAAE,iBAAiB;IAC3B,SAAS,EAAE,WAAW,CAAC,iBAAiB,CAAC;CAC1C,CACF,CAAA"}
@@ -0,0 +1,35 @@
1
+ export declare const ALERT_CLASS: "fs-alert";
2
+ /** Overskriften inne i meldingen. */
3
+ export declare const ALERT_TITLE_CLASS: "fs-alert__title";
4
+ export declare const alertColors: readonly ["info", "success", "warning", "danger"];
5
+ export type AlertColor = (typeof alertColors)[number];
6
+ export type NonNeutralAlertColor = AlertColor;
7
+ export type AlertOptions = {
8
+ /** Hva meldingen betyr. Utelatt gir den nøytrale. */
9
+ color?: AlertColor;
10
+ };
11
+ export type AlertAttributes = {
12
+ class: typeof ALERT_CLASS;
13
+ "data-color"?: AlertColor;
14
+ };
15
+ /**
16
+ * Attributtene for en melding som gjelder hele siden eller et helt skjema.
17
+ *
18
+ * Rollen settes ikke her, fordi den avhenger av når meldingen kommer.
19
+ * Står den i markupen fra start, skal den ikke ha noen rolle. Dukker den opp
20
+ * mens siden står stille, trenger den `role="status"`, eller `role="alert"`
21
+ * hvis brukeren må stoppe opp.
22
+ *
23
+ * ```ts
24
+ * <div {...alert({ color: "warning" })}>
25
+ * <p {...alert.title}>Søknaden er ikke sendt</p>
26
+ * </div>
27
+ * ```
28
+ */
29
+ export declare const alert: (({ color }?: AlertOptions) => AlertAttributes) & {
30
+ /** Klassen på overskriften inne i meldingen. */
31
+ title: "fs-alert__title";
32
+ colors: readonly ["info", "success", "warning", "danger"];
33
+ isColor: (value: string) => value is "warning" | "info" | "danger" | "success";
34
+ };
35
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../../src/components/css/alert/alert.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,EAAG,UAAmB,CAAA;AAC9C,qCAAqC;AACrC,eAAO,MAAM,iBAAiB,EAAG,iBAA0B,CAAA;AAE3D,eAAO,MAAM,WAAW,mDAAoD,CAAA;AAE5E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAA;AAE7C,MAAM,MAAM,YAAY,GAAG;IACzB,qDAAqD;IACrD,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,OAAO,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,UAAU,CAAA;CAC1B,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK,gBACJ,YAAY,KAAQ,eAAe;IAM7C,gDAAgD;;;;CAKnD,CAAA"}