@fellesdatakatalog/ui 1.0.15 → 1.0.17

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 (34) hide show
  1. package/dist/shared-ui.cjs.map +1 -1
  2. package/dist/shared-ui.es.js.map +1 -1
  3. package/package.json +33 -24
  4. package/src/components/app-bar/app-bar.stories.tsx +22 -0
  5. package/src/components/app-bar/index.tsx +12 -0
  6. package/src/components/app-bar/styles.module.scss +7 -0
  7. package/src/components/checkbox-group/checkbox-group.stories.tsx +143 -0
  8. package/src/components/checkbox-group/index.tsx +105 -0
  9. package/src/components/copy-button/copy-button.stories.tsx +28 -0
  10. package/src/components/copy-button/index.tsx +54 -0
  11. package/src/components/core/ds-overrides.scss +105 -0
  12. package/src/components/core/mixins.scss +143 -0
  13. package/src/components/core/reset.css +131 -0
  14. package/src/components/core/tokens.scss +24 -0
  15. package/src/components/helptext/helptext.module.scss +46 -0
  16. package/src/components/helptext/helptext.stories.tsx +42 -0
  17. package/src/components/helptext/index.tsx +37 -0
  18. package/src/components/hstack/hstack.module.scss +5 -0
  19. package/src/components/hstack/hstack.stories.tsx +38 -0
  20. package/src/components/hstack/index.tsx +17 -0
  21. package/src/components/org-logo/index.tsx +27 -0
  22. package/src/components/org-logo/org-logo.stories.tsx +35 -0
  23. package/src/components/org-logo/styles.module.scss +20 -0
  24. package/src/components/radio-group/index.tsx +101 -0
  25. package/src/components/radio-group/radio-group.stories.tsx +141 -0
  26. package/src/components/tag-list/index.tsx +39 -0
  27. package/src/components/tag-list/styles.module.scss +8 -0
  28. package/src/components/tag-list/tag-list.stories.tsx +107 -0
  29. package/src/components/vstack/index.tsx +16 -0
  30. package/src/components/vstack/vstack.module.scss +5 -0
  31. package/src/components/vstack/vstack.stories.tsx +37 -0
  32. package/src/index.ts +11 -0
  33. package/src/styles/storybook.scss +34 -0
  34. package/src/types/scss.d.ts +9 -0
@@ -1 +1 @@
1
- {"version":3,"file":"shared-ui.cjs","sources":["../node_modules/@navikt/aksel-icons/dist/react/esm/util/useId.js","../node_modules/@navikt/aksel-icons/dist/react/esm/Buildings3.js","../node_modules/@navikt/aksel-icons/dist/react/esm/CheckmarkCircleFill.js","../node_modules/@navikt/aksel-icons/dist/react/esm/Files.js","../src/components/org-logo/index.tsx","../src/components/hstack/index.tsx","../src/components/helptext/index.tsx","../src/components/app-bar/index.tsx","../src/components/checkbox-group/index.tsx","../src/components/copy-button/index.tsx","../src/components/radio-group/index.tsx","../src/components/tag-list/index.tsx","../src/components/vstack/index.tsx"],"sourcesContent":["//https://github.com/mui/material-ui/blob/master/packages/mui-utils/src/useId.ts\nimport React, { useEffect, useState } from \"react\";\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = useState(idOverride);\n const id = idOverride || defaultId;\n useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`aksel-icon-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\nconst maybeReactUseId = React[\"useId\" + \"\" // Workaround for https://github.com/webpack/webpack/issues/14814\n];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport function useId(idOverride) {\n var _a;\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride !== null && idOverride !== void 0 ? idOverride : reactId.replace(/(:)/g, \"\");\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `useId` is invariant at runtime.\n return (_a = useGlobalId(idOverride)) !== null && _a !== void 0 ? _a : \"\";\n}\n//# sourceMappingURL=useId.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgBuildings3 = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M6.25 3A.75.75 0 0 1 7 2.25h10a.75.75 0 0 1 .75.75v6.25H21a.75.75 0 0 1 .75.75v11a.75.75 0 0 1-.75.75H3a.75.75 0 0 1-.75-.75V10A.75.75 0 0 1 3 9.25h3.25zm11.5 17.25v-9.5h2.5v9.5zm-1.5-16.5v16.5h-8.5V3.75zm-10 7v9.5h-2.5v-9.5zm3.75-5a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m3 0a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m-2.25 6.75a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2.25-.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75\", clipRule: \"evenodd\" }));\n});\nexport default SvgBuildings3;\n//# sourceMappingURL=Buildings3.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgCheckmarkCircleFill = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M12 21.75c5.385 0 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25 2.25 6.615 2.25 12s4.365 9.75 9.75 9.75m4.954-12.475a.813.813 0 0 0-1.24-1.05l-5.389 6.368L7.7 11.967a.812.812 0 0 0-1.15 1.15l3.25 3.25a.81.81 0 0 0 1.195-.05z\", clipRule: \"evenodd\" }));\n});\nexport default SvgCheckmarkCircleFill;\n//# sourceMappingURL=CheckmarkCircleFill.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgFiles = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8.25 3.5c0-.69.56-1.25 1.25-1.25H14a.75.75 0 0 1 .53.22l5 5c.141.14.22.331.22.53v8.5c0 .69-.56 1.25-1.25 1.25h-9c-.69 0-1.25-.56-1.25-1.25zm6.25 5.25c-.69 0-1.25-.56-1.25-1.25V3.75h-3.5v12.5h8.5v-7.5zm.25-3.94 2.44 2.44h-2.44zM6.502 7.75H5.75v12.5h8.5v-.748a.75.75 0 0 1 1.5 0v.998c0 .69-.56 1.25-1.25 1.25h-9c-.69 0-1.25-.56-1.25-1.25v-13c0-.69.56-1.25 1.25-1.25h1.002a.75.75 0 1 1 0 1.5\", clipRule: \"evenodd\" }));\n});\nexport default SvgFiles;\n//# sourceMappingURL=Files.js.map","import React from 'react';\nimport cn from 'classnames';\nimport { Buildings3Icon } from '@navikt/aksel-icons';\nimport styles from './styles.module.scss';\n\nexport type OrgLogoProps = {\n orgLogoSrc?: string | null;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst OrgLogo = ({ className, orgLogoSrc, ...props }: OrgLogoProps) => {\n return (\n <div className={cn(styles.orgLogo, className)} {...props}>\n {orgLogoSrc ? (\n <img\n aria-hidden\n src={orgLogoSrc}\n alt=''\n />\n ) : (\n <Buildings3Icon aria-hidden />\n )}\n </div>\n );\n};\n\nexport { OrgLogo };\n","import React from 'react';\nimport cn from 'classnames';\n\nimport styles from './hstack.module.scss';\n\nconst HStack = ({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return (\n <div\n className={cn(styles.wrapper, className)}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport default HStack;\n","import React from 'react';\nimport { Popover } from '@digdir/designsystemet-react';\nimport styles from './helptext.module.scss';\n\nexport type HelpTextProps = {\n /**\n * Required descriptive label for screen readers.\n **/\n \"aria-label\": string;\n /**\n * Placement of the Popover.\n * @default 'right'\n */\n placement?: \"right\" | \"bottom\" | \"left\" | \"top\";\n } & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\">;\n \n export const HelpText = React.forwardRef<HTMLButtonElement, HelpTextProps>(\n function HelpText(\n { placement = \"right\", children, ...rest },\n ref\n ) {\n return (\n <Popover.TriggerContext>\n <Popover.Trigger\n className={styles.helptext}\n ref={ref}\n variant=\"tertiary\"\n data-color=\"info\"\n {...rest}\n />\n <Popover placement={placement} data-color=\"info\">\n {children}\n </Popover>\n </Popover.TriggerContext>\n );\n }\n );","import { OrgLogo } from '../org-logo';\nimport styles from './styles.module.scss';\n\nconst AppBar = () => {\n return (\n <div className={styles.appBar}>\n <OrgLogo />\n </div>\n );\n};\n\nexport { AppBar };","import React, { type ReactNode } from 'react';\nimport {\n Fieldset,\n Checkbox,\n ValidationMessage,\n type UseCheckboxGroupProps,\n useCheckboxGroup,\n} from '@digdir/designsystemet-react';\n\nexport interface CheckboxGroupProps extends Omit<UseCheckboxGroupProps, 'value' | 'onChange'> {\n /**\n * The legend text for the fieldset\n */\n legend?: ReactNode;\n /**\n * Optional description text for the fieldset\n */\n description?: ReactNode;\n /**\n * Array of checkbox options\n */\n options: Array<{\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n allowIndeterminate?: boolean;\n }>;\n /**\n * Controlled value - array of selected checkbox values\n */\n value?: string[];\n /**\n * Callback when the selected values change\n */\n onChange?: (value: string[]) => void;\n /**\n * Optional className for the fieldset\n */\n className?: string;\n}\n\n/**\n * CheckboxGroup component that wraps multiple Checkbox components in a Fieldset.\n * Handles state management, onChange, and value automatically.\n *\n * @example\n * <CheckboxGroup\n * legend=\"Hvordan vil du kontaktes?\"\n * description=\"Velg alle relevante alternativer\"\n * options={[\n * { value: 'epost', label: 'E-post' },\n * { value: 'telefon', label: 'Telefon' },\n * { value: 'sms', label: 'SMS' },\n * ]}\n * value={selectedValues}\n * onChange={(values) => setSelectedValues(values)}\n * />\n */\nexport const CheckboxGroup = ({\n legend,\n description,\n options,\n value,\n onChange,\n error,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: CheckboxGroupProps) => {\n const { getCheckboxProps, validationMessageProps } = useCheckboxGroup({\n value,\n onChange: onChange ? (nextValue) => onChange(nextValue) : undefined,\n error,\n disabled,\n readOnly,\n required,\n name,\n });\n\n return (\n <Fieldset className={className}>\n {legend && <Fieldset.Legend>{legend}</Fieldset.Legend>}\n {description && <Fieldset.Description>{description}</Fieldset.Description>}\n {options.map((option) => (\n <Checkbox\n key={option.value}\n label={option.label}\n description={option.description}\n disabled={option.disabled}\n {...getCheckboxProps({\n value: option.value,\n allowIndeterminate: option.allowIndeterminate,\n })}\n />\n ))}\n {error && <ValidationMessage {...validationMessageProps} />}\n </Fieldset>\n );\n};\n\nexport default CheckboxGroup;\n\n","'use client';\n\nimport { useState } from 'react';\nimport { Button, type ButtonProps, Tooltip } from '@digdir/designsystemet-react';\nimport { FilesIcon, CheckmarkCircleFillIcon } from '@navikt/aksel-icons';\nimport HStack from '../hstack';\n\ntype CopyButtonProps = {\n copyLabel: string;\n copiedLabel: string;\n copyOnClick: string;\n} & ButtonProps & React.HTMLAttributes<HTMLButtonElement>;\n\nconst CopyButton = ({ copyLabel, copiedLabel, copyOnClick, ...props }: CopyButtonProps) => {\n const [clicked, setClicked] = useState(false);\n\n const copyToClipboard = (text: string) => {\n setClicked(true);\n navigator.clipboard.writeText(text);\n };\n\n return (\n <Tooltip\n // @ts-expect-error: ignore complaint that Element cannot be set as content\n content={\n clicked ? (\n <HStack>\n <CheckmarkCircleFillIcon\n color='#D1F4E1'\n fontSize='1.2em'\n />\n {copiedLabel}\n </HStack>\n ) : (\n copyLabel\n )\n }\n placement='top'\n >\n <Button\n data-size='sm'\n variant='secondary'\n onClick={() => copyToClipboard(copyOnClick)}\n onMouseOver={() => setClicked(false)}\n {...props}\n >\n <FilesIcon aria-hidden />\n <span className={'sr-only'}>{copyLabel}</span>\n </Button>\n </Tooltip>\n );\n};\n\nexport default CopyButton;\n","import React, { type ReactNode } from 'react';\nimport {\n Fieldset,\n Radio,\n ValidationMessage,\n type UseRadioGroupProps,\n useRadioGroup,\n} from '@digdir/designsystemet-react';\n\nexport interface RadioGroupProps extends Omit<UseRadioGroupProps, 'value' | 'onChange'> {\n /**\n * The legend text for the fieldset\n */\n legend?: ReactNode;\n /**\n * Optional description text for the fieldset\n */\n description?: ReactNode;\n /**\n * Array of radio options\n */\n options: Array<{\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n }>;\n /**\n * Controlled value - the selected radio value\n */\n value?: string;\n /**\n * Callback when the selected value changes\n */\n onChange?: (value: string) => void;\n /**\n * Optional className for the fieldset\n */\n className?: string;\n}\n\n/**\n * RadioGroup component that wraps multiple Radio components in a Fieldset.\n * Handles state management, onChange, and value automatically.\n *\n * @example\n * <RadioGroup\n * legend=\"Hvilken iskremsmak er best?\"\n * description=\"Velg din favorittsmak\"\n * options={[\n * { value: 'vanilje', label: 'Vanilje' },\n * { value: 'jordbær', label: 'Jordbær' },\n * { value: 'sjokolade', label: 'Sjokolade' },\n * ]}\n * value={selectedValue}\n * onChange={(value) => setSelectedValue(value)}\n * />\n */\nexport const RadioGroup = ({\n legend,\n description,\n options,\n value,\n onChange,\n error,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: RadioGroupProps) => {\n const { getRadioProps, validationMessageProps } = useRadioGroup({\n value,\n onChange: onChange ? (nextValue) => onChange(nextValue) : undefined,\n error,\n disabled,\n readOnly,\n required,\n name,\n });\n\n return (\n <Fieldset className={className}>\n {legend && <Fieldset.Legend>{legend}</Fieldset.Legend>}\n {description && <Fieldset.Description>{description}</Fieldset.Description>}\n {options.map((option) => (\n <Radio\n key={option.value}\n label={option.label}\n description={option.description}\n disabled={option.disabled}\n {...getRadioProps(option.value)}\n />\n ))}\n {error && <ValidationMessage {...validationMessageProps} />}\n </Fieldset>\n );\n};\n\nexport default RadioGroup;\n\n","import React from 'react';\nimport cn from 'classnames';\nimport { Tag } from '@digdir/designsystemet-react';\nimport styles from './styles.module.scss';\n\nexport type TagListProps = {\n maxTags?: number;\n 'data-size'?: string;\n};\n\nconst TagList = ({ children, className, maxTags, 'data-size': dataSize, ...props }: TagListProps & React.HTMLAttributes<HTMLUListElement>) => {\n const childArray = React.Children.toArray(children);\n if (!childArray.length) return null;\n return (\n <ul\n className={cn(styles.tagList, className)}\n {...props}\n >\n {childArray\n .filter((child) => Boolean(child))\n .slice(0, maxTags ?? childArray.length)\n .map((child, i) => {\n const key = React.isValidElement(child) && child.key != null \n ? child.key \n : i;\n return <li key={key}>{child}</li>;\n })}\n {maxTags && maxTags < childArray.length && (\n <li>\n <Tag data-size={dataSize || 'sm'}>\n <span>+{childArray.length - maxTags}</span>\n </Tag>\n </li>\n )}\n </ul>\n );\n};\n\nexport default TagList;\n","import React from 'react';\n\nimport styles from './vstack.module.scss';\n\nconst VStack = ({ children, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return (\n <div\n className={styles.wrapper}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport default VStack;\n"],"names":["globalId","maybeReactUseId","React","useId","idOverride","_a","replace","defaultId","setDefaultId","useState","id","useEffect","useGlobalId","SvgBuildings3","forwardRef","ref","title","titleId","_titleId","props","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__rest","createElement","assign","xmlns","width","height","fill","viewBox","focusable","role","fillRule","d","clipRule","SvgCheckmarkCircleFill","SvgFiles","OrgLogo","className","orgLogoSrc","jsx","cn","styles","children","src","alt","Buildings3Icon","HStack","HelpText","placement","rest","Popover","TriggerContext","Trigger","variant","legend","description","options","value","onChange","error","disabled","readOnly","required","name","getCheckboxProps","validationMessageProps","useCheckboxGroup","nextValue","Fieldset","Legend","Description","map","option","Checkbox","label","allowIndeterminate","ValidationMessage","copyLabel","copiedLabel","copyOnClick","clicked","setClicked","Tooltip","content","jsxs","CheckmarkCircleFillIcon","color","fontSize","Button","onClick","copyToClipboard","text","navigator","clipboard","writeText","onMouseOver","FilesIcon","getRadioProps","useRadioGroup","Radio","maxTags","dataSize","childArray","Children","toArray","filter","child","Boolean","slice","key","isValidElement","Tag"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"shared-ui.cjs","sources":["../node_modules/@navikt/aksel-icons/dist/react/esm/util/useId.js","../node_modules/@navikt/aksel-icons/dist/react/esm/Buildings3.js","../node_modules/@navikt/aksel-icons/dist/react/esm/CheckmarkCircleFill.js","../node_modules/@navikt/aksel-icons/dist/react/esm/Files.js","../src/components/org-logo/index.tsx","../src/components/hstack/index.tsx","../src/components/helptext/index.tsx","../src/components/app-bar/index.tsx","../src/components/checkbox-group/index.tsx","../src/components/copy-button/index.tsx","../src/components/radio-group/index.tsx","../src/components/tag-list/index.tsx","../src/components/vstack/index.tsx"],"sourcesContent":["//https://github.com/mui/material-ui/blob/master/packages/mui-utils/src/useId.ts\n/** biome-ignore-all lint/correctness/useHookAtTopLevel: `useId` is invariant at runtime. */\nimport React, { useEffect, useState } from \"react\";\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = useState(idOverride);\n const id = idOverride || defaultId;\n useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`aksel-icon-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\nconst maybeReactUseId = React[\"useId\" + \"\" // Workaround for https://github.com/webpack/webpack/issues/14814\n];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport function useId(idOverride) {\n var _a;\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride !== null && idOverride !== void 0 ? idOverride : reactId.replace(/(:)/g, \"\");\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `useId` is invariant at runtime.\n return (_a = useGlobalId(idOverride)) !== null && _a !== void 0 ? _a : \"\";\n}\n//# sourceMappingURL=useId.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgBuildings3 = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M6.25 3A.75.75 0 0 1 7 2.25h10a.75.75 0 0 1 .75.75v6.25H21a.75.75 0 0 1 .75.75v11a.75.75 0 0 1-.75.75H3a.75.75 0 0 1-.75-.75V10A.75.75 0 0 1 3 9.25h3.25zm11.5 17.25v-9.5h2.5v9.5zm-1.5-16.5v16.5h-8.5V3.75zm-10 7v9.5h-2.5v-9.5zm3.75-5a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m3 0a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m-2.25 6.75a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2.25-.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75\", clipRule: \"evenodd\" }));\n});\nexport default SvgBuildings3;\n//# sourceMappingURL=Buildings3.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgCheckmarkCircleFill = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M12 21.75c5.385 0 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25 2.25 6.615 2.25 12s4.365 9.75 9.75 9.75m4.954-12.475a.813.813 0 0 0-1.24-1.05l-5.389 6.368L7.7 11.967a.812.812 0 0 0-1.15 1.15l3.25 3.25a.81.81 0 0 0 1.195-.05z\", clipRule: \"evenodd\" }));\n});\nexport default SvgCheckmarkCircleFill;\n//# sourceMappingURL=CheckmarkCircleFill.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgFiles = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8.25 3.5c0-.69.56-1.25 1.25-1.25H14a.75.75 0 0 1 .53.22l5 5c.141.14.22.331.22.53v8.5c0 .69-.56 1.25-1.25 1.25h-9c-.69 0-1.25-.56-1.25-1.25zm6.25 5.25c-.69 0-1.25-.56-1.25-1.25V3.75h-3.5v12.5h8.5v-7.5zm.25-3.94 2.44 2.44h-2.44zM6.502 7.75H5.75v12.5h8.5v-.748a.75.75 0 0 1 1.5 0v.998c0 .69-.56 1.25-1.25 1.25h-9c-.69 0-1.25-.56-1.25-1.25v-13c0-.69.56-1.25 1.25-1.25h1.002a.75.75 0 1 1 0 1.5\", clipRule: \"evenodd\" }));\n});\nexport default SvgFiles;\n//# sourceMappingURL=Files.js.map","import React from 'react';\nimport cn from 'classnames';\nimport { Buildings3Icon } from '@navikt/aksel-icons';\nimport styles from './styles.module.scss';\n\nexport type OrgLogoProps = {\n orgLogoSrc?: string | null;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst OrgLogo = ({ className, orgLogoSrc, ...props }: OrgLogoProps) => {\n return (\n <div className={cn(styles.orgLogo, className)} {...props}>\n {orgLogoSrc ? (\n <img\n aria-hidden\n src={orgLogoSrc}\n alt=''\n />\n ) : (\n <Buildings3Icon aria-hidden />\n )}\n </div>\n );\n};\n\nexport { OrgLogo };\n","import React from 'react';\nimport cn from 'classnames';\n\nimport styles from './hstack.module.scss';\n\nconst HStack = ({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return (\n <div\n className={cn(styles.wrapper, className)}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport default HStack;\n","import React from 'react';\nimport { Popover } from '@digdir/designsystemet-react';\nimport styles from './helptext.module.scss';\n\nexport type HelpTextProps = {\n /**\n * Required descriptive label for screen readers.\n **/\n \"aria-label\": string;\n /**\n * Placement of the Popover.\n * @default 'right'\n */\n placement?: \"right\" | \"bottom\" | \"left\" | \"top\";\n } & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\">;\n \n export const HelpText = React.forwardRef<HTMLButtonElement, HelpTextProps>(\n function HelpText(\n { placement = \"right\", children, ...rest },\n ref\n ) {\n return (\n <Popover.TriggerContext>\n <Popover.Trigger\n className={styles.helptext}\n ref={ref}\n variant=\"tertiary\"\n data-color=\"info\"\n {...rest}\n />\n <Popover placement={placement} data-color=\"info\">\n {children}\n </Popover>\n </Popover.TriggerContext>\n );\n }\n );","import { OrgLogo } from '../org-logo';\nimport styles from './styles.module.scss';\n\nconst AppBar = () => {\n return (\n <div className={styles.appBar}>\n <OrgLogo />\n </div>\n );\n};\n\nexport { AppBar };","import React, { type ReactNode } from 'react';\nimport {\n Fieldset,\n Checkbox,\n ValidationMessage,\n type UseCheckboxGroupProps,\n useCheckboxGroup,\n} from '@digdir/designsystemet-react';\n\nexport interface CheckboxGroupProps extends Omit<UseCheckboxGroupProps, 'value' | 'onChange'> {\n /**\n * The legend text for the fieldset\n */\n legend?: ReactNode;\n /**\n * Optional description text for the fieldset\n */\n description?: ReactNode;\n /**\n * Array of checkbox options\n */\n options: Array<{\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n allowIndeterminate?: boolean;\n }>;\n /**\n * Controlled value - array of selected checkbox values\n */\n value?: string[];\n /**\n * Callback when the selected values change\n */\n onChange?: (value: string[]) => void;\n /**\n * Optional className for the fieldset\n */\n className?: string;\n}\n\n/**\n * CheckboxGroup component that wraps multiple Checkbox components in a Fieldset.\n * Handles state management, onChange, and value automatically.\n *\n * @example\n * <CheckboxGroup\n * legend=\"Hvordan vil du kontaktes?\"\n * description=\"Velg alle relevante alternativer\"\n * options={[\n * { value: 'epost', label: 'E-post' },\n * { value: 'telefon', label: 'Telefon' },\n * { value: 'sms', label: 'SMS' },\n * ]}\n * value={selectedValues}\n * onChange={(values) => setSelectedValues(values)}\n * />\n */\nexport const CheckboxGroup = ({\n legend,\n description,\n options,\n value,\n onChange,\n error,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: CheckboxGroupProps) => {\n const { getCheckboxProps, validationMessageProps } = useCheckboxGroup({\n value,\n onChange: onChange ? (nextValue) => onChange(nextValue) : undefined,\n error,\n disabled,\n readOnly,\n required,\n name,\n });\n\n return (\n <Fieldset className={className}>\n {legend && <Fieldset.Legend>{legend}</Fieldset.Legend>}\n {description && <Fieldset.Description>{description}</Fieldset.Description>}\n {options.map((option) => (\n <Checkbox\n key={option.value}\n label={option.label}\n description={option.description}\n disabled={option.disabled}\n {...getCheckboxProps({\n value: option.value,\n allowIndeterminate: option.allowIndeterminate,\n })}\n />\n ))}\n {error && <ValidationMessage {...validationMessageProps} />}\n </Fieldset>\n );\n};\n\nexport default CheckboxGroup;\n\n","'use client';\n\nimport { useState } from 'react';\nimport { Button, type ButtonProps, Tooltip } from '@digdir/designsystemet-react';\nimport { FilesIcon, CheckmarkCircleFillIcon } from '@navikt/aksel-icons';\nimport HStack from '../hstack';\n\ntype CopyButtonProps = {\n copyLabel: string;\n copiedLabel: string;\n copyOnClick: string;\n} & ButtonProps & React.HTMLAttributes<HTMLButtonElement>;\n\nconst CopyButton = ({ copyLabel, copiedLabel, copyOnClick, ...props }: CopyButtonProps) => {\n const [clicked, setClicked] = useState(false);\n\n const copyToClipboard = (text: string) => {\n setClicked(true);\n navigator.clipboard.writeText(text);\n };\n\n return (\n <Tooltip\n // @ts-expect-error: ignore complaint that Element cannot be set as content\n content={\n clicked ? (\n <HStack>\n <CheckmarkCircleFillIcon\n color='#D1F4E1'\n fontSize='1.2em'\n />\n {copiedLabel}\n </HStack>\n ) : (\n copyLabel\n )\n }\n placement='top'\n >\n <Button\n data-size='sm'\n variant='secondary'\n onClick={() => copyToClipboard(copyOnClick)}\n onMouseOver={() => setClicked(false)}\n {...props}\n >\n <FilesIcon aria-hidden />\n <span className={'sr-only'}>{copyLabel}</span>\n </Button>\n </Tooltip>\n );\n};\n\nexport default CopyButton;\n","import React, { type ReactNode } from 'react';\nimport {\n Fieldset,\n Radio,\n ValidationMessage,\n type UseRadioGroupProps,\n useRadioGroup,\n} from '@digdir/designsystemet-react';\n\nexport interface RadioGroupProps extends Omit<UseRadioGroupProps, 'value' | 'onChange'> {\n /**\n * The legend text for the fieldset\n */\n legend?: ReactNode;\n /**\n * Optional description text for the fieldset\n */\n description?: ReactNode;\n /**\n * Array of radio options\n */\n options: Array<{\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n }>;\n /**\n * Controlled value - the selected radio value\n */\n value?: string;\n /**\n * Callback when the selected value changes\n */\n onChange?: (value: string) => void;\n /**\n * Optional className for the fieldset\n */\n className?: string;\n}\n\n/**\n * RadioGroup component that wraps multiple Radio components in a Fieldset.\n * Handles state management, onChange, and value automatically.\n *\n * @example\n * <RadioGroup\n * legend=\"Hvilken iskremsmak er best?\"\n * description=\"Velg din favorittsmak\"\n * options={[\n * { value: 'vanilje', label: 'Vanilje' },\n * { value: 'jordbær', label: 'Jordbær' },\n * { value: 'sjokolade', label: 'Sjokolade' },\n * ]}\n * value={selectedValue}\n * onChange={(value) => setSelectedValue(value)}\n * />\n */\nexport const RadioGroup = ({\n legend,\n description,\n options,\n value,\n onChange,\n error,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: RadioGroupProps) => {\n const { getRadioProps, validationMessageProps } = useRadioGroup({\n value,\n onChange: onChange ? (nextValue) => onChange(nextValue) : undefined,\n error,\n disabled,\n readOnly,\n required,\n name,\n });\n\n return (\n <Fieldset className={className}>\n {legend && <Fieldset.Legend>{legend}</Fieldset.Legend>}\n {description && <Fieldset.Description>{description}</Fieldset.Description>}\n {options.map((option) => (\n <Radio\n key={option.value}\n label={option.label}\n description={option.description}\n disabled={option.disabled}\n {...getRadioProps(option.value)}\n />\n ))}\n {error && <ValidationMessage {...validationMessageProps} />}\n </Fieldset>\n );\n};\n\nexport default RadioGroup;\n\n","import React from 'react';\nimport cn from 'classnames';\nimport { Tag } from '@digdir/designsystemet-react';\nimport styles from './styles.module.scss';\n\nexport type TagListProps = {\n maxTags?: number;\n 'data-size'?: string;\n};\n\nconst TagList = ({ children, className, maxTags, 'data-size': dataSize, ...props }: TagListProps & React.HTMLAttributes<HTMLUListElement>) => {\n const childArray = React.Children.toArray(children);\n if (!childArray.length) return null;\n return (\n <ul\n className={cn(styles.tagList, className)}\n {...props}\n >\n {childArray\n .filter((child) => Boolean(child))\n .slice(0, maxTags ?? childArray.length)\n .map((child, i) => {\n const key = React.isValidElement(child) && child.key != null \n ? child.key \n : i;\n return <li key={key}>{child}</li>;\n })}\n {maxTags && maxTags < childArray.length && (\n <li>\n <Tag data-size={dataSize || 'sm'}>\n <span>+{childArray.length - maxTags}</span>\n </Tag>\n </li>\n )}\n </ul>\n );\n};\n\nexport default TagList;\n","import React from 'react';\n\nimport styles from './vstack.module.scss';\n\nconst VStack = ({ children, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return (\n <div\n className={styles.wrapper}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport default VStack;\n"],"names":["globalId","maybeReactUseId","React","useId","idOverride","_a","replace","defaultId","setDefaultId","useState","id","useEffect","useGlobalId","SvgBuildings3","forwardRef","ref","title","titleId","_titleId","props","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__rest","createElement","assign","xmlns","width","height","fill","viewBox","focusable","role","fillRule","d","clipRule","SvgCheckmarkCircleFill","SvgFiles","OrgLogo","className","orgLogoSrc","jsx","cn","styles","children","src","alt","Buildings3Icon","HStack","HelpText","placement","rest","Popover","TriggerContext","Trigger","variant","legend","description","options","value","onChange","error","disabled","readOnly","required","name","getCheckboxProps","validationMessageProps","useCheckboxGroup","nextValue","Fieldset","Legend","Description","map","option","Checkbox","label","allowIndeterminate","ValidationMessage","copyLabel","copiedLabel","copyOnClick","clicked","setClicked","Tooltip","content","jsxs","CheckmarkCircleFillIcon","color","fontSize","Button","onClick","copyToClipboard","text","navigator","clipboard","writeText","onMouseOver","FilesIcon","getRadioProps","useRadioGroup","Radio","maxTags","dataSize","childArray","Children","toArray","filter","child","Boolean","slice","key","isValidElement","Tag"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -1 +1 @@
1
- {"version":3,"file":"shared-ui.es.js","sources":["../node_modules/@navikt/aksel-icons/dist/react/esm/util/useId.js","../node_modules/@navikt/aksel-icons/dist/react/esm/Buildings3.js","../node_modules/@navikt/aksel-icons/dist/react/esm/CheckmarkCircleFill.js","../node_modules/@navikt/aksel-icons/dist/react/esm/Files.js","../src/components/org-logo/index.tsx","../src/components/app-bar/index.tsx","../src/components/hstack/index.tsx","../src/components/copy-button/index.tsx","../src/components/vstack/index.tsx","../src/components/helptext/index.tsx","../src/components/tag-list/index.tsx","../src/components/radio-group/index.tsx","../src/components/checkbox-group/index.tsx"],"sourcesContent":["//https://github.com/mui/material-ui/blob/master/packages/mui-utils/src/useId.ts\nimport React, { useEffect, useState } from \"react\";\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = useState(idOverride);\n const id = idOverride || defaultId;\n useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`aksel-icon-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\nconst maybeReactUseId = React[\"useId\" + \"\" // Workaround for https://github.com/webpack/webpack/issues/14814\n];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport function useId(idOverride) {\n var _a;\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride !== null && idOverride !== void 0 ? idOverride : reactId.replace(/(:)/g, \"\");\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `useId` is invariant at runtime.\n return (_a = useGlobalId(idOverride)) !== null && _a !== void 0 ? _a : \"\";\n}\n//# sourceMappingURL=useId.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgBuildings3 = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M6.25 3A.75.75 0 0 1 7 2.25h10a.75.75 0 0 1 .75.75v6.25H21a.75.75 0 0 1 .75.75v11a.75.75 0 0 1-.75.75H3a.75.75 0 0 1-.75-.75V10A.75.75 0 0 1 3 9.25h3.25zm11.5 17.25v-9.5h2.5v9.5zm-1.5-16.5v16.5h-8.5V3.75zm-10 7v9.5h-2.5v-9.5zm3.75-5a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m3 0a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m-2.25 6.75a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2.25-.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75\", clipRule: \"evenodd\" }));\n});\nexport default SvgBuildings3;\n//# sourceMappingURL=Buildings3.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgCheckmarkCircleFill = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M12 21.75c5.385 0 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25 2.25 6.615 2.25 12s4.365 9.75 9.75 9.75m4.954-12.475a.813.813 0 0 0-1.24-1.05l-5.389 6.368L7.7 11.967a.812.812 0 0 0-1.15 1.15l3.25 3.25a.81.81 0 0 0 1.195-.05z\", clipRule: \"evenodd\" }));\n});\nexport default SvgCheckmarkCircleFill;\n//# sourceMappingURL=CheckmarkCircleFill.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgFiles = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8.25 3.5c0-.69.56-1.25 1.25-1.25H14a.75.75 0 0 1 .53.22l5 5c.141.14.22.331.22.53v8.5c0 .69-.56 1.25-1.25 1.25h-9c-.69 0-1.25-.56-1.25-1.25zm6.25 5.25c-.69 0-1.25-.56-1.25-1.25V3.75h-3.5v12.5h8.5v-7.5zm.25-3.94 2.44 2.44h-2.44zM6.502 7.75H5.75v12.5h8.5v-.748a.75.75 0 0 1 1.5 0v.998c0 .69-.56 1.25-1.25 1.25h-9c-.69 0-1.25-.56-1.25-1.25v-13c0-.69.56-1.25 1.25-1.25h1.002a.75.75 0 1 1 0 1.5\", clipRule: \"evenodd\" }));\n});\nexport default SvgFiles;\n//# sourceMappingURL=Files.js.map","import React from 'react';\nimport cn from 'classnames';\nimport { Buildings3Icon } from '@navikt/aksel-icons';\nimport styles from './styles.module.scss';\n\nexport type OrgLogoProps = {\n orgLogoSrc?: string | null;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst OrgLogo = ({ className, orgLogoSrc, ...props }: OrgLogoProps) => {\n return (\n <div className={cn(styles.orgLogo, className)} {...props}>\n {orgLogoSrc ? (\n <img\n aria-hidden\n src={orgLogoSrc}\n alt=''\n />\n ) : (\n <Buildings3Icon aria-hidden />\n )}\n </div>\n );\n};\n\nexport { OrgLogo };\n","import { OrgLogo } from '../org-logo';\nimport styles from './styles.module.scss';\n\nconst AppBar = () => {\n return (\n <div className={styles.appBar}>\n <OrgLogo />\n </div>\n );\n};\n\nexport { AppBar };","import React from 'react';\nimport cn from 'classnames';\n\nimport styles from './hstack.module.scss';\n\nconst HStack = ({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return (\n <div\n className={cn(styles.wrapper, className)}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport default HStack;\n","'use client';\n\nimport { useState } from 'react';\nimport { Button, type ButtonProps, Tooltip } from '@digdir/designsystemet-react';\nimport { FilesIcon, CheckmarkCircleFillIcon } from '@navikt/aksel-icons';\nimport HStack from '../hstack';\n\ntype CopyButtonProps = {\n copyLabel: string;\n copiedLabel: string;\n copyOnClick: string;\n} & ButtonProps & React.HTMLAttributes<HTMLButtonElement>;\n\nconst CopyButton = ({ copyLabel, copiedLabel, copyOnClick, ...props }: CopyButtonProps) => {\n const [clicked, setClicked] = useState(false);\n\n const copyToClipboard = (text: string) => {\n setClicked(true);\n navigator.clipboard.writeText(text);\n };\n\n return (\n <Tooltip\n // @ts-expect-error: ignore complaint that Element cannot be set as content\n content={\n clicked ? (\n <HStack>\n <CheckmarkCircleFillIcon\n color='#D1F4E1'\n fontSize='1.2em'\n />\n {copiedLabel}\n </HStack>\n ) : (\n copyLabel\n )\n }\n placement='top'\n >\n <Button\n data-size='sm'\n variant='secondary'\n onClick={() => copyToClipboard(copyOnClick)}\n onMouseOver={() => setClicked(false)}\n {...props}\n >\n <FilesIcon aria-hidden />\n <span className={'sr-only'}>{copyLabel}</span>\n </Button>\n </Tooltip>\n );\n};\n\nexport default CopyButton;\n","import React from 'react';\n\nimport styles from './vstack.module.scss';\n\nconst VStack = ({ children, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return (\n <div\n className={styles.wrapper}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport default VStack;\n","import React from 'react';\nimport { Popover } from '@digdir/designsystemet-react';\nimport styles from './helptext.module.scss';\n\nexport type HelpTextProps = {\n /**\n * Required descriptive label for screen readers.\n **/\n \"aria-label\": string;\n /**\n * Placement of the Popover.\n * @default 'right'\n */\n placement?: \"right\" | \"bottom\" | \"left\" | \"top\";\n } & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\">;\n \n export const HelpText = React.forwardRef<HTMLButtonElement, HelpTextProps>(\n function HelpText(\n { placement = \"right\", children, ...rest },\n ref\n ) {\n return (\n <Popover.TriggerContext>\n <Popover.Trigger\n className={styles.helptext}\n ref={ref}\n variant=\"tertiary\"\n data-color=\"info\"\n {...rest}\n />\n <Popover placement={placement} data-color=\"info\">\n {children}\n </Popover>\n </Popover.TriggerContext>\n );\n }\n );","import React from 'react';\nimport cn from 'classnames';\nimport { Tag } from '@digdir/designsystemet-react';\nimport styles from './styles.module.scss';\n\nexport type TagListProps = {\n maxTags?: number;\n 'data-size'?: string;\n};\n\nconst TagList = ({ children, className, maxTags, 'data-size': dataSize, ...props }: TagListProps & React.HTMLAttributes<HTMLUListElement>) => {\n const childArray = React.Children.toArray(children);\n if (!childArray.length) return null;\n return (\n <ul\n className={cn(styles.tagList, className)}\n {...props}\n >\n {childArray\n .filter((child) => Boolean(child))\n .slice(0, maxTags ?? childArray.length)\n .map((child, i) => {\n const key = React.isValidElement(child) && child.key != null \n ? child.key \n : i;\n return <li key={key}>{child}</li>;\n })}\n {maxTags && maxTags < childArray.length && (\n <li>\n <Tag data-size={dataSize || 'sm'}>\n <span>+{childArray.length - maxTags}</span>\n </Tag>\n </li>\n )}\n </ul>\n );\n};\n\nexport default TagList;\n","import React, { type ReactNode } from 'react';\nimport {\n Fieldset,\n Radio,\n ValidationMessage,\n type UseRadioGroupProps,\n useRadioGroup,\n} from '@digdir/designsystemet-react';\n\nexport interface RadioGroupProps extends Omit<UseRadioGroupProps, 'value' | 'onChange'> {\n /**\n * The legend text for the fieldset\n */\n legend?: ReactNode;\n /**\n * Optional description text for the fieldset\n */\n description?: ReactNode;\n /**\n * Array of radio options\n */\n options: Array<{\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n }>;\n /**\n * Controlled value - the selected radio value\n */\n value?: string;\n /**\n * Callback when the selected value changes\n */\n onChange?: (value: string) => void;\n /**\n * Optional className for the fieldset\n */\n className?: string;\n}\n\n/**\n * RadioGroup component that wraps multiple Radio components in a Fieldset.\n * Handles state management, onChange, and value automatically.\n *\n * @example\n * <RadioGroup\n * legend=\"Hvilken iskremsmak er best?\"\n * description=\"Velg din favorittsmak\"\n * options={[\n * { value: 'vanilje', label: 'Vanilje' },\n * { value: 'jordbær', label: 'Jordbær' },\n * { value: 'sjokolade', label: 'Sjokolade' },\n * ]}\n * value={selectedValue}\n * onChange={(value) => setSelectedValue(value)}\n * />\n */\nexport const RadioGroup = ({\n legend,\n description,\n options,\n value,\n onChange,\n error,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: RadioGroupProps) => {\n const { getRadioProps, validationMessageProps } = useRadioGroup({\n value,\n onChange: onChange ? (nextValue) => onChange(nextValue) : undefined,\n error,\n disabled,\n readOnly,\n required,\n name,\n });\n\n return (\n <Fieldset className={className}>\n {legend && <Fieldset.Legend>{legend}</Fieldset.Legend>}\n {description && <Fieldset.Description>{description}</Fieldset.Description>}\n {options.map((option) => (\n <Radio\n key={option.value}\n label={option.label}\n description={option.description}\n disabled={option.disabled}\n {...getRadioProps(option.value)}\n />\n ))}\n {error && <ValidationMessage {...validationMessageProps} />}\n </Fieldset>\n );\n};\n\nexport default RadioGroup;\n\n","import React, { type ReactNode } from 'react';\nimport {\n Fieldset,\n Checkbox,\n ValidationMessage,\n type UseCheckboxGroupProps,\n useCheckboxGroup,\n} from '@digdir/designsystemet-react';\n\nexport interface CheckboxGroupProps extends Omit<UseCheckboxGroupProps, 'value' | 'onChange'> {\n /**\n * The legend text for the fieldset\n */\n legend?: ReactNode;\n /**\n * Optional description text for the fieldset\n */\n description?: ReactNode;\n /**\n * Array of checkbox options\n */\n options: Array<{\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n allowIndeterminate?: boolean;\n }>;\n /**\n * Controlled value - array of selected checkbox values\n */\n value?: string[];\n /**\n * Callback when the selected values change\n */\n onChange?: (value: string[]) => void;\n /**\n * Optional className for the fieldset\n */\n className?: string;\n}\n\n/**\n * CheckboxGroup component that wraps multiple Checkbox components in a Fieldset.\n * Handles state management, onChange, and value automatically.\n *\n * @example\n * <CheckboxGroup\n * legend=\"Hvordan vil du kontaktes?\"\n * description=\"Velg alle relevante alternativer\"\n * options={[\n * { value: 'epost', label: 'E-post' },\n * { value: 'telefon', label: 'Telefon' },\n * { value: 'sms', label: 'SMS' },\n * ]}\n * value={selectedValues}\n * onChange={(values) => setSelectedValues(values)}\n * />\n */\nexport const CheckboxGroup = ({\n legend,\n description,\n options,\n value,\n onChange,\n error,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: CheckboxGroupProps) => {\n const { getCheckboxProps, validationMessageProps } = useCheckboxGroup({\n value,\n onChange: onChange ? (nextValue) => onChange(nextValue) : undefined,\n error,\n disabled,\n readOnly,\n required,\n name,\n });\n\n return (\n <Fieldset className={className}>\n {legend && <Fieldset.Legend>{legend}</Fieldset.Legend>}\n {description && <Fieldset.Description>{description}</Fieldset.Description>}\n {options.map((option) => (\n <Checkbox\n key={option.value}\n label={option.label}\n description={option.description}\n disabled={option.disabled}\n {...getCheckboxProps({\n value: option.value,\n allowIndeterminate: option.allowIndeterminate,\n })}\n />\n ))}\n {error && <ValidationMessage {...validationMessageProps} />}\n </Fieldset>\n );\n};\n\nexport default CheckboxGroup;\n\n"],"names":["__rest","styles","Buildings3Icon","CheckmarkCircleFillIcon","FilesIcon","HelpText"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"shared-ui.es.js","sources":["../node_modules/@navikt/aksel-icons/dist/react/esm/util/useId.js","../node_modules/@navikt/aksel-icons/dist/react/esm/Buildings3.js","../node_modules/@navikt/aksel-icons/dist/react/esm/CheckmarkCircleFill.js","../node_modules/@navikt/aksel-icons/dist/react/esm/Files.js","../src/components/org-logo/index.tsx","../src/components/app-bar/index.tsx","../src/components/hstack/index.tsx","../src/components/copy-button/index.tsx","../src/components/vstack/index.tsx","../src/components/helptext/index.tsx","../src/components/tag-list/index.tsx","../src/components/radio-group/index.tsx","../src/components/checkbox-group/index.tsx"],"sourcesContent":["//https://github.com/mui/material-ui/blob/master/packages/mui-utils/src/useId.ts\n/** biome-ignore-all lint/correctness/useHookAtTopLevel: `useId` is invariant at runtime. */\nimport React, { useEffect, useState } from \"react\";\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = useState(idOverride);\n const id = idOverride || defaultId;\n useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`aksel-icon-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\nconst maybeReactUseId = React[\"useId\" + \"\" // Workaround for https://github.com/webpack/webpack/issues/14814\n];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport function useId(idOverride) {\n var _a;\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride !== null && idOverride !== void 0 ? idOverride : reactId.replace(/(:)/g, \"\");\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `useId` is invariant at runtime.\n return (_a = useGlobalId(idOverride)) !== null && _a !== void 0 ? _a : \"\";\n}\n//# sourceMappingURL=useId.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgBuildings3 = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M6.25 3A.75.75 0 0 1 7 2.25h10a.75.75 0 0 1 .75.75v6.25H21a.75.75 0 0 1 .75.75v11a.75.75 0 0 1-.75.75H3a.75.75 0 0 1-.75-.75V10A.75.75 0 0 1 3 9.25h3.25zm11.5 17.25v-9.5h2.5v9.5zm-1.5-16.5v16.5h-8.5V3.75zm-10 7v9.5h-2.5v-9.5zm3.75-5a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m3 0a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75m-2.25 6.75a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0zm2.25-.75a.75.75 0 0 1 .75.75v2a.75.75 0 0 1-1.5 0v-2a.75.75 0 0 1 .75-.75\", clipRule: \"evenodd\" }));\n});\nexport default SvgBuildings3;\n//# sourceMappingURL=Buildings3.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgCheckmarkCircleFill = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M12 21.75c5.385 0 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25 2.25 6.615 2.25 12s4.365 9.75 9.75 9.75m4.954-12.475a.813.813 0 0 0-1.24-1.05l-5.389 6.368L7.7 11.967a.812.812 0 0 0-1.15 1.15l3.25 3.25a.81.81 0 0 0 1.195-.05z\", clipRule: \"evenodd\" }));\n});\nexport default SvgCheckmarkCircleFill;\n//# sourceMappingURL=CheckmarkCircleFill.js.map","\"use client\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"./util/useId.js\";\nconst SvgFiles = forwardRef((_a, ref) => {\n var { title, titleId: _titleId } = _a, props = __rest(_a, [\"title\", \"titleId\"]);\n let titleId = useId();\n titleId = title ? _titleId ? _titleId : \"title-\" + titleId : undefined;\n return React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", fill: \"none\", viewBox: \"0 0 24 24\", focusable: false, role: \"img\", ref: ref, \"aria-labelledby\": titleId }, props),\n title ? React.createElement(\"title\", { id: titleId }, title) : null,\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8.25 3.5c0-.69.56-1.25 1.25-1.25H14a.75.75 0 0 1 .53.22l5 5c.141.14.22.331.22.53v8.5c0 .69-.56 1.25-1.25 1.25h-9c-.69 0-1.25-.56-1.25-1.25zm6.25 5.25c-.69 0-1.25-.56-1.25-1.25V3.75h-3.5v12.5h8.5v-7.5zm.25-3.94 2.44 2.44h-2.44zM6.502 7.75H5.75v12.5h8.5v-.748a.75.75 0 0 1 1.5 0v.998c0 .69-.56 1.25-1.25 1.25h-9c-.69 0-1.25-.56-1.25-1.25v-13c0-.69.56-1.25 1.25-1.25h1.002a.75.75 0 1 1 0 1.5\", clipRule: \"evenodd\" }));\n});\nexport default SvgFiles;\n//# sourceMappingURL=Files.js.map","import React from 'react';\nimport cn from 'classnames';\nimport { Buildings3Icon } from '@navikt/aksel-icons';\nimport styles from './styles.module.scss';\n\nexport type OrgLogoProps = {\n orgLogoSrc?: string | null;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst OrgLogo = ({ className, orgLogoSrc, ...props }: OrgLogoProps) => {\n return (\n <div className={cn(styles.orgLogo, className)} {...props}>\n {orgLogoSrc ? (\n <img\n aria-hidden\n src={orgLogoSrc}\n alt=''\n />\n ) : (\n <Buildings3Icon aria-hidden />\n )}\n </div>\n );\n};\n\nexport { OrgLogo };\n","import { OrgLogo } from '../org-logo';\nimport styles from './styles.module.scss';\n\nconst AppBar = () => {\n return (\n <div className={styles.appBar}>\n <OrgLogo />\n </div>\n );\n};\n\nexport { AppBar };","import React from 'react';\nimport cn from 'classnames';\n\nimport styles from './hstack.module.scss';\n\nconst HStack = ({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return (\n <div\n className={cn(styles.wrapper, className)}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport default HStack;\n","'use client';\n\nimport { useState } from 'react';\nimport { Button, type ButtonProps, Tooltip } from '@digdir/designsystemet-react';\nimport { FilesIcon, CheckmarkCircleFillIcon } from '@navikt/aksel-icons';\nimport HStack from '../hstack';\n\ntype CopyButtonProps = {\n copyLabel: string;\n copiedLabel: string;\n copyOnClick: string;\n} & ButtonProps & React.HTMLAttributes<HTMLButtonElement>;\n\nconst CopyButton = ({ copyLabel, copiedLabel, copyOnClick, ...props }: CopyButtonProps) => {\n const [clicked, setClicked] = useState(false);\n\n const copyToClipboard = (text: string) => {\n setClicked(true);\n navigator.clipboard.writeText(text);\n };\n\n return (\n <Tooltip\n // @ts-expect-error: ignore complaint that Element cannot be set as content\n content={\n clicked ? (\n <HStack>\n <CheckmarkCircleFillIcon\n color='#D1F4E1'\n fontSize='1.2em'\n />\n {copiedLabel}\n </HStack>\n ) : (\n copyLabel\n )\n }\n placement='top'\n >\n <Button\n data-size='sm'\n variant='secondary'\n onClick={() => copyToClipboard(copyOnClick)}\n onMouseOver={() => setClicked(false)}\n {...props}\n >\n <FilesIcon aria-hidden />\n <span className={'sr-only'}>{copyLabel}</span>\n </Button>\n </Tooltip>\n );\n};\n\nexport default CopyButton;\n","import React from 'react';\n\nimport styles from './vstack.module.scss';\n\nconst VStack = ({ children, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n return (\n <div\n className={styles.wrapper}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nexport default VStack;\n","import React from 'react';\nimport { Popover } from '@digdir/designsystemet-react';\nimport styles from './helptext.module.scss';\n\nexport type HelpTextProps = {\n /**\n * Required descriptive label for screen readers.\n **/\n \"aria-label\": string;\n /**\n * Placement of the Popover.\n * @default 'right'\n */\n placement?: \"right\" | \"bottom\" | \"left\" | \"top\";\n } & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\">;\n \n export const HelpText = React.forwardRef<HTMLButtonElement, HelpTextProps>(\n function HelpText(\n { placement = \"right\", children, ...rest },\n ref\n ) {\n return (\n <Popover.TriggerContext>\n <Popover.Trigger\n className={styles.helptext}\n ref={ref}\n variant=\"tertiary\"\n data-color=\"info\"\n {...rest}\n />\n <Popover placement={placement} data-color=\"info\">\n {children}\n </Popover>\n </Popover.TriggerContext>\n );\n }\n );","import React from 'react';\nimport cn from 'classnames';\nimport { Tag } from '@digdir/designsystemet-react';\nimport styles from './styles.module.scss';\n\nexport type TagListProps = {\n maxTags?: number;\n 'data-size'?: string;\n};\n\nconst TagList = ({ children, className, maxTags, 'data-size': dataSize, ...props }: TagListProps & React.HTMLAttributes<HTMLUListElement>) => {\n const childArray = React.Children.toArray(children);\n if (!childArray.length) return null;\n return (\n <ul\n className={cn(styles.tagList, className)}\n {...props}\n >\n {childArray\n .filter((child) => Boolean(child))\n .slice(0, maxTags ?? childArray.length)\n .map((child, i) => {\n const key = React.isValidElement(child) && child.key != null \n ? child.key \n : i;\n return <li key={key}>{child}</li>;\n })}\n {maxTags && maxTags < childArray.length && (\n <li>\n <Tag data-size={dataSize || 'sm'}>\n <span>+{childArray.length - maxTags}</span>\n </Tag>\n </li>\n )}\n </ul>\n );\n};\n\nexport default TagList;\n","import React, { type ReactNode } from 'react';\nimport {\n Fieldset,\n Radio,\n ValidationMessage,\n type UseRadioGroupProps,\n useRadioGroup,\n} from '@digdir/designsystemet-react';\n\nexport interface RadioGroupProps extends Omit<UseRadioGroupProps, 'value' | 'onChange'> {\n /**\n * The legend text for the fieldset\n */\n legend?: ReactNode;\n /**\n * Optional description text for the fieldset\n */\n description?: ReactNode;\n /**\n * Array of radio options\n */\n options: Array<{\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n }>;\n /**\n * Controlled value - the selected radio value\n */\n value?: string;\n /**\n * Callback when the selected value changes\n */\n onChange?: (value: string) => void;\n /**\n * Optional className for the fieldset\n */\n className?: string;\n}\n\n/**\n * RadioGroup component that wraps multiple Radio components in a Fieldset.\n * Handles state management, onChange, and value automatically.\n *\n * @example\n * <RadioGroup\n * legend=\"Hvilken iskremsmak er best?\"\n * description=\"Velg din favorittsmak\"\n * options={[\n * { value: 'vanilje', label: 'Vanilje' },\n * { value: 'jordbær', label: 'Jordbær' },\n * { value: 'sjokolade', label: 'Sjokolade' },\n * ]}\n * value={selectedValue}\n * onChange={(value) => setSelectedValue(value)}\n * />\n */\nexport const RadioGroup = ({\n legend,\n description,\n options,\n value,\n onChange,\n error,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: RadioGroupProps) => {\n const { getRadioProps, validationMessageProps } = useRadioGroup({\n value,\n onChange: onChange ? (nextValue) => onChange(nextValue) : undefined,\n error,\n disabled,\n readOnly,\n required,\n name,\n });\n\n return (\n <Fieldset className={className}>\n {legend && <Fieldset.Legend>{legend}</Fieldset.Legend>}\n {description && <Fieldset.Description>{description}</Fieldset.Description>}\n {options.map((option) => (\n <Radio\n key={option.value}\n label={option.label}\n description={option.description}\n disabled={option.disabled}\n {...getRadioProps(option.value)}\n />\n ))}\n {error && <ValidationMessage {...validationMessageProps} />}\n </Fieldset>\n );\n};\n\nexport default RadioGroup;\n\n","import React, { type ReactNode } from 'react';\nimport {\n Fieldset,\n Checkbox,\n ValidationMessage,\n type UseCheckboxGroupProps,\n useCheckboxGroup,\n} from '@digdir/designsystemet-react';\n\nexport interface CheckboxGroupProps extends Omit<UseCheckboxGroupProps, 'value' | 'onChange'> {\n /**\n * The legend text for the fieldset\n */\n legend?: ReactNode;\n /**\n * Optional description text for the fieldset\n */\n description?: ReactNode;\n /**\n * Array of checkbox options\n */\n options: Array<{\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n allowIndeterminate?: boolean;\n }>;\n /**\n * Controlled value - array of selected checkbox values\n */\n value?: string[];\n /**\n * Callback when the selected values change\n */\n onChange?: (value: string[]) => void;\n /**\n * Optional className for the fieldset\n */\n className?: string;\n}\n\n/**\n * CheckboxGroup component that wraps multiple Checkbox components in a Fieldset.\n * Handles state management, onChange, and value automatically.\n *\n * @example\n * <CheckboxGroup\n * legend=\"Hvordan vil du kontaktes?\"\n * description=\"Velg alle relevante alternativer\"\n * options={[\n * { value: 'epost', label: 'E-post' },\n * { value: 'telefon', label: 'Telefon' },\n * { value: 'sms', label: 'SMS' },\n * ]}\n * value={selectedValues}\n * onChange={(values) => setSelectedValues(values)}\n * />\n */\nexport const CheckboxGroup = ({\n legend,\n description,\n options,\n value,\n onChange,\n error,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: CheckboxGroupProps) => {\n const { getCheckboxProps, validationMessageProps } = useCheckboxGroup({\n value,\n onChange: onChange ? (nextValue) => onChange(nextValue) : undefined,\n error,\n disabled,\n readOnly,\n required,\n name,\n });\n\n return (\n <Fieldset className={className}>\n {legend && <Fieldset.Legend>{legend}</Fieldset.Legend>}\n {description && <Fieldset.Description>{description}</Fieldset.Description>}\n {options.map((option) => (\n <Checkbox\n key={option.value}\n label={option.label}\n description={option.description}\n disabled={option.disabled}\n {...getCheckboxProps({\n value: option.value,\n allowIndeterminate: option.allowIndeterminate,\n })}\n />\n ))}\n {error && <ValidationMessage {...validationMessageProps} />}\n </Fieldset>\n );\n};\n\nexport default CheckboxGroup;\n\n"],"names":["__rest","styles","Buildings3Icon","CheckmarkCircleFillIcon","FilesIcon","HelpText"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fellesdatakatalog/ui",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "React UI components for Felles Datakatalog",
5
5
  "main": "dist/shared-ui.cjs",
6
6
  "module": "dist/shared-ui.es.js",
@@ -15,10 +15,19 @@
15
15
  "import": "./dist/shared-ui.es.js",
16
16
  "require": "./dist/shared-ui.cjs"
17
17
  },
18
- "./dist/styles.css": "./dist/styles.css"
18
+ "./dist/styles.css": "./dist/styles.css",
19
+ "./src/components/core/tokens.scss": "./src/components/core/tokens.scss",
20
+ "./src/components/core/tokens": "./src/components/core/tokens.scss",
21
+ "./src/components/core/mixins.scss": "./src/components/core/mixins.scss",
22
+ "./src/components/core/mixins": "./src/components/core/mixins.scss",
23
+ "./src/components/core/ds-overrides.scss": "./src/components/core/ds-overrides.scss",
24
+ "./src/components/core/ds-overrides": "./src/components/core/ds-overrides.scss",
25
+ "./src/components/core/reset.css": "./src/components/core/reset.css",
26
+ "./src/components/core/reset": "./src/components/core/reset.css"
19
27
  },
20
28
  "files": [
21
29
  "dist",
30
+ "src",
22
31
  "README.md"
23
32
  ],
24
33
  "scripts": {
@@ -45,37 +54,37 @@
45
54
  },
46
55
  "devDependencies": {
47
56
  "@chromatic-com/storybook": "^3.2.7",
48
- "@digdir/designsystemet-css": "^1.6.0",
49
- "@digdir/designsystemet-react": "^1.6.0",
50
- "@digdir/designsystemet-theme": "^1.6.0",
51
- "@storybook/addon-essentials": "^8.6.14",
52
- "@storybook/addon-interactions": "^8.6.14",
53
- "@storybook/addon-onboarding": "^8.6.14",
54
- "@storybook/blocks": "^8.6.14",
55
- "@storybook/experimental-addon-test": "^8.6.14",
56
- "@storybook/react": "^8.6.14",
57
- "@storybook/react-vite": "^8.6.14",
58
- "@storybook/test": "^8.6.14",
57
+ "@digdir/designsystemet-css": "^1.9.0",
58
+ "@digdir/designsystemet-react": "^1.9.0",
59
+ "@digdir/designsystemet-theme": "^1.10.0",
60
+ "@storybook/addon-essentials": "^8.6.15",
61
+ "@storybook/addon-interactions": "^8.6.15",
62
+ "@storybook/addon-onboarding": "^8.6.15",
63
+ "@storybook/blocks": "^8.6.15",
64
+ "@storybook/experimental-addon-test": "^8.6.15",
65
+ "@storybook/react": "^8.6.15",
66
+ "@storybook/react-vite": "^8.6.15",
67
+ "@storybook/test": "^8.6.15",
59
68
  "@storybook/testing-library": "^0.2.2",
60
- "@types/react": "^19.0.0",
61
- "@types/react-dom": "^19.0.0",
69
+ "@types/react": "^19.2.8",
70
+ "@types/react-dom": "^19.2.3",
62
71
  "@vitejs/plugin-react": "^4.7.0",
63
72
  "@vitest/browser": "^3.2.4",
64
73
  "@vitest/coverage-v8": "^3.2.4",
65
74
  "concurrently": "^9.2.1",
66
- "playwright": "^1.54.1",
67
- "react": "^19.1.1",
68
- "react-dom": "^19.1.1",
69
- "sass-embedded": "^1.89.2",
70
- "storybook": "^8.6.14",
71
- "terser": "^5.43.1",
72
- "typescript": "^5.0.0",
73
- "vite": "^6.0.0",
75
+ "playwright": "^1.57.0",
76
+ "react": "^19.2.3",
77
+ "react-dom": "^19.2.3",
78
+ "sass-embedded": "^1.97.2",
79
+ "storybook": "^8.6.15",
80
+ "terser": "^5.44.1",
81
+ "typescript": "^5.9.3",
82
+ "vite": "^6.4.1",
74
83
  "vite-plugin-dts": "^4.5.4",
75
84
  "vitest": "^3.2.4"
76
85
  },
77
86
  "dependencies": {
78
- "@navikt/aksel-icons": "^7.32.1",
87
+ "@navikt/aksel-icons": "^7.39.0",
79
88
  "classnames": "^2.5.1"
80
89
  },
81
90
  "packageManager": "yarn@4.9.4"
@@ -0,0 +1,22 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { AppBar } from '.';
4
+
5
+ const meta: Meta<typeof AppBar> = {
6
+ component: AppBar,
7
+ title: 'AppBar',
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ };
12
+
13
+ export default meta;
14
+ type Story = StoryObj<typeof AppBar>;
15
+
16
+ export const Default: Story = {
17
+ render: () => (
18
+ <div style={{ padding: '1rem' }}>
19
+ <AppBar />
20
+ </div>
21
+ ),
22
+ };
@@ -0,0 +1,12 @@
1
+ import { OrgLogo } from '../org-logo';
2
+ import styles from './styles.module.scss';
3
+
4
+ const AppBar = () => {
5
+ return (
6
+ <div className={styles.appBar}>
7
+ <OrgLogo />
8
+ </div>
9
+ );
10
+ };
11
+
12
+ export { AppBar };
@@ -0,0 +1,7 @@
1
+ .appBar {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: center;
5
+ justify-content: space-between;
6
+ padding: 1rem;
7
+ }
@@ -0,0 +1,143 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { useState } from 'react';
3
+ import CheckboxGroup from '.';
4
+
5
+ const meta: Meta<typeof CheckboxGroup> = {
6
+ component: CheckboxGroup,
7
+ title: 'CheckboxGroup',
8
+ argTypes: {
9
+ legend: {
10
+ control: 'text',
11
+ description: 'The legend text for the fieldset',
12
+ },
13
+ description: {
14
+ control: 'text',
15
+ description: 'Optional description text',
16
+ },
17
+ error: {
18
+ control: 'text',
19
+ description: 'Error message to display',
20
+ },
21
+ disabled: {
22
+ control: 'boolean',
23
+ description: 'Disable all checkboxes',
24
+ },
25
+ readOnly: {
26
+ control: 'boolean',
27
+ description: 'Make all checkboxes read-only',
28
+ },
29
+ required: {
30
+ control: 'boolean',
31
+ description: 'Make all checkboxes required',
32
+ },
33
+ },
34
+ };
35
+
36
+ export default meta;
37
+ type Story = StoryObj<typeof CheckboxGroup>;
38
+
39
+ const defaultOptions = [
40
+ { value: 'epost', label: 'E-post' },
41
+ { value: 'telefon', label: 'Telefon' },
42
+ { value: 'sms', label: 'SMS' },
43
+ ];
44
+
45
+ export const Primary: Story = {
46
+ render: () => {
47
+ const [value, setValue] = useState<string[]>(['epost']);
48
+ return (
49
+ <CheckboxGroup
50
+ legend="Hvordan vil du helst at vi skal kontakte deg?"
51
+ description="Velg alle alternativene som er relevante for deg."
52
+ options={defaultOptions}
53
+ value={value}
54
+ onChange={setValue}
55
+ />
56
+ );
57
+ },
58
+ };
59
+
60
+ export const Uncontrolled: Story = {
61
+ render: () => (
62
+ <CheckboxGroup
63
+ legend="Hvordan vil du helst at vi skal kontakte deg?"
64
+ description="Velg alle alternativene som er relevante for deg."
65
+ options={defaultOptions}
66
+ />
67
+ ),
68
+ };
69
+
70
+ export const WithError: Story = {
71
+ render: () => (
72
+ <CheckboxGroup
73
+ legend="Hvordan vil du helst at vi skal kontakte deg?"
74
+ options={defaultOptions}
75
+ error="Du må velge minst ett alternativ."
76
+ required
77
+ />
78
+ ),
79
+ };
80
+
81
+ export const Disabled: Story = {
82
+ render: () => (
83
+ <CheckboxGroup
84
+ legend="Hvordan vil du helst at vi skal kontakte deg?"
85
+ options={defaultOptions}
86
+ disabled
87
+ />
88
+ ),
89
+ };
90
+
91
+ export const ReadOnly: Story = {
92
+ render: () => (
93
+ <CheckboxGroup
94
+ legend="Hvordan vil du helst at vi skal kontakte deg?"
95
+ options={defaultOptions}
96
+ value={['epost', 'telefon']}
97
+ readOnly
98
+ />
99
+ ),
100
+ };
101
+
102
+ export const WithIndeterminate: Story = {
103
+ render: () => {
104
+ const [value, setValue] = useState<string[]>([]);
105
+ return (
106
+ <CheckboxGroup
107
+ legend="Velg kommunikasjonskanaler"
108
+ options={[
109
+ {
110
+ value: 'all',
111
+ label: 'Velg alle',
112
+ allowIndeterminate: true,
113
+ },
114
+ { value: 'epost', label: 'E-post' },
115
+ { value: 'telefon', label: 'Telefon' },
116
+ { value: 'sms', label: 'SMS' },
117
+ ]}
118
+ value={value}
119
+ onChange={setValue}
120
+ />
121
+ );
122
+ },
123
+ };
124
+
125
+ export const WithDescriptions: Story = {
126
+ render: () => {
127
+ const [value, setValue] = useState<string[]>([]);
128
+ return (
129
+ <CheckboxGroup
130
+ legend="Velg dine interesser"
131
+ description="Du kan velge flere alternativer"
132
+ options={[
133
+ { value: 'sport', label: 'Sport', description: 'Fotball, håndball, og mer' },
134
+ { value: 'musikk', label: 'Musikk', description: 'Konserter og festivaler' },
135
+ { value: 'mat', label: 'Mat og drikke', description: 'Restauranter og oppskrifter' },
136
+ ]}
137
+ value={value}
138
+ onChange={setValue}
139
+ />
140
+ );
141
+ },
142
+ };
143
+