@kystverket/styrbord 1.15.2 → 1.16.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.
@@ -17,6 +17,10 @@ export type AvatarProps = MergeRight<DsAvatarProps, (AriaLabel | AriaHidden) & {
17
17
  * Tooltip text to display on hover.
18
18
  */
19
19
  tooltip?: string;
20
+ /**
21
+ * When true, overlays a checkmark on the avatar with a subtle dimming effect.
22
+ */
23
+ checked?: boolean;
20
24
  }>;
21
25
  export declare const Avatar: FC<AvatarProps>;
22
26
  export {};
@@ -13,4 +13,5 @@ export declare const ShapeVariants: Story;
13
13
  export declare const WithImage: Story;
14
14
  export declare const InDropdown: Story;
15
15
  export declare const WithTooltip: Story;
16
+ export declare const Checked: Story;
16
17
  export declare const AsLink: Story;
@@ -43,14 +43,14 @@ export declare const Disabled: {
43
43
  disabled: boolean;
44
44
  id?: string | undefined | undefined;
45
45
  children?: React.ReactNode;
46
- className?: string | undefined | undefined;
47
- width?: number | string | undefined | undefined;
48
46
  form?: string | undefined | undefined;
49
- color?: string | undefined | undefined;
50
47
  slot?: string | undefined | undefined;
51
48
  style?: React.CSSProperties | undefined;
52
49
  title?: string | undefined | undefined;
53
50
  pattern?: string | undefined | undefined;
51
+ className?: string | undefined | undefined;
52
+ width?: number | string | undefined | undefined;
53
+ color?: string | undefined | undefined;
54
54
  'data-color'?: import("@digdir/designsystemet-react/colors").Color | undefined;
55
55
  'data-size'?: import("@digdir/designsystemet-react").Size | undefined;
56
56
  defaultChecked?: boolean | undefined | undefined;
@@ -360,14 +360,14 @@ export declare const Disabled: {
360
360
  disabled: boolean;
361
361
  id?: string | undefined | undefined;
362
362
  children?: React.ReactNode;
363
- className?: string | undefined | undefined;
364
- width?: number | string | undefined | undefined;
365
363
  form?: string | undefined | undefined;
366
- color?: string | undefined | undefined;
367
364
  slot?: string | undefined | undefined;
368
365
  style?: React.CSSProperties | undefined;
369
366
  title?: string | undefined | undefined;
370
367
  pattern?: string | undefined | undefined;
368
+ className?: string | undefined | undefined;
369
+ width?: number | string | undefined | undefined;
370
+ color?: string | undefined | undefined;
371
371
  'data-color'?: import("@digdir/designsystemet-react/colors").Color | undefined;
372
372
  'data-size'?: import("@digdir/designsystemet-react").Size | undefined;
373
373
  defaultChecked?: boolean | undefined | undefined;
@@ -677,14 +677,14 @@ export declare const Disabled: {
677
677
  disabled: boolean;
678
678
  id?: string | undefined | undefined;
679
679
  children?: React.ReactNode;
680
- className?: string | undefined | undefined;
681
- width?: number | string | undefined | undefined;
682
680
  form?: string | undefined | undefined;
683
- color?: string | undefined | undefined;
684
681
  slot?: string | undefined | undefined;
685
682
  style?: React.CSSProperties | undefined;
686
683
  title?: string | undefined | undefined;
687
684
  pattern?: string | undefined | undefined;
685
+ className?: string | undefined | undefined;
686
+ width?: number | string | undefined | undefined;
687
+ color?: string | undefined | undefined;
688
688
  'data-color'?: import("@digdir/designsystemet-react/colors").Color | undefined;
689
689
  'data-size'?: import("@digdir/designsystemet-react").Size | undefined;
690
690
  defaultChecked?: boolean | undefined | undefined;
@@ -19,4 +19,4 @@ export interface TextAreaProps {
19
19
  size?: InputSize;
20
20
  id?: string;
21
21
  }
22
- export declare const TextArea: ({ size, className, label, required, optional, onChange, value, minHeight, ...props }: TextAreaProps) => React.JSX.Element;
22
+ export declare const TextArea: ({ size, className, label, required, optional, onChange, value, maxLength, minHeight, error, ...props }: TextAreaProps) => React.JSX.Element;
@@ -2,7 +2,7 @@ import type { StoryObj } from '@storybook/react-vite';
2
2
  import { TextAreaProps } from './TextArea';
3
3
  declare const meta: {
4
4
  title: string;
5
- component: ({ size, className, label, required, optional, onChange, value, minHeight, ...props }: TextAreaProps) => React.JSX.Element;
5
+ component: ({ size, className, label, required, optional, onChange, value, maxLength, minHeight, error, ...props }: TextAreaProps) => React.JSX.Element;
6
6
  decorators: ((Story: import("storybook/internal/csf").PartialStoryFn, context: import("storybook/internal/csf").StoryContext) => React.JSX.Element)[];
7
7
  tags: string[];
8
8
  argTypes: {};
@@ -6,7 +6,7 @@ declare const meta: {
6
6
  component: (props: FileUploaderProps) => React.JSX.Element;
7
7
  decorators: (((Story: import("storybook/internal/csf").PartialStoryFn, context: import("storybook/internal/csf").StoryContext) => React.JSX.Element) | ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
8
8
  label: string;
9
- description?: React.ReactNode | string[];
9
+ description?: string[] | React.ReactNode;
10
10
  error?: string | null | undefined;
11
11
  multiple?: boolean | undefined;
12
12
  files: FileInfo[];
@@ -3,7 +3,7 @@ import type { SideSheetLayoutProps } from '~/components/kystverket/SideSheet/Sid
3
3
  export declare const SideSheetLayoutContext: React.Context<boolean>;
4
4
  export declare function useSideSheetLayoutContext(): boolean;
5
5
  /**
6
- * Required wrapper when using `pinnable` or `mode="push"`.
6
+ * Required wrapper when using `pinnable` or `defaultPinned`.
7
7
  *
8
8
  * Renders as a flex container so that a pinned SideSheet takes a fixed width
9
9
  * and the remaining content fills the rest of the row.
@@ -15,4 +15,4 @@ export declare function useSideSheetLayoutContext(): boolean;
15
15
  * </SideSheet.Layout>
16
16
  * ```
17
17
  */
18
- export declare function SideSheetLayout({ children, className, style }: SideSheetLayoutProps): React.JSX.Element;
18
+ export declare function SideSheetLayout({ children, className, style }: Readonly<SideSheetLayoutProps>): React.JSX.Element;
@@ -1,4 +1,5 @@
1
1
  import type { StoryFn } from '@storybook/react-vite';
2
+ import { SideSheetButtons } from '~/components/kystverket/SideSheet/Buttons/SideSheetButtons';
2
3
  import { SideSheet } from '~/main';
3
4
  declare const _default: {
4
5
  title: string;
@@ -6,7 +7,7 @@ declare const _default: {
6
7
  ref?: React.Ref<HTMLElement>;
7
8
  }) => React.JSX.Element) & {
8
9
  Layout: typeof import("./Layout/SideSheetLayout").SideSheetLayout;
9
- Buttons: typeof import("./Buttons/SideSheetButtons").SideSheetButtons;
10
+ Buttons: typeof SideSheetButtons;
10
11
  };
11
12
  tags: string[];
12
13
  parameters: {
@@ -15,8 +16,33 @@ declare const _default: {
15
16
  source: {
16
17
  type: string;
17
18
  };
19
+ description: {
20
+ component: string;
21
+ };
18
22
  };
19
23
  };
24
+ decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react").ReactRenderer, {
25
+ open?: boolean | undefined;
26
+ onClose?: (() => void) | undefined;
27
+ placement?: import("~/main").SideSheetPlacement | undefined;
28
+ size?: import("~/main").SideSheetSize | undefined;
29
+ pinnable?: boolean | undefined;
30
+ pinned?: boolean | undefined;
31
+ onPinnedChange?: ((pinned: boolean) => void) | undefined;
32
+ defaultPinned?: boolean | undefined;
33
+ backdrop?: boolean | undefined;
34
+ title?: React.ReactNode;
35
+ showCloseButton?: boolean | undefined;
36
+ showBackButton?: boolean | undefined;
37
+ onBack?: (() => void) | undefined;
38
+ headerAction?: React.ReactNode;
39
+ headerDivider?: boolean | undefined;
40
+ footerDivider?: boolean | undefined;
41
+ children?: React.ReactNode;
42
+ className?: string | undefined;
43
+ style?: React.CSSProperties | undefined;
44
+ ref?: React.Ref<HTMLElement> | undefined;
45
+ }>) => React.JSX.Element)[];
20
46
  };
21
47
  export default _default;
22
48
  export declare const Default: StoryFn<typeof SideSheet>;
@@ -32,3 +58,4 @@ export declare const PinnedWithContent: StoryFn<typeof SideSheet>;
32
58
  export declare const NoBackdrop: StoryFn<typeof SideSheet>;
33
59
  export declare const TwoSheets: StoryFn<typeof SideSheet>;
34
60
  export declare const WithTabs: StoryFn<typeof SideSheet>;
61
+ export declare const WithTopbarAndFooter: StoryFn<typeof SideSheet>;
@@ -1,22 +1,11 @@
1
1
  import { CSSProperties, ReactNode } from 'react';
2
2
  export type SideSheetSize = 'sm' | 'md' | 'lg' | '33%' | '40%' | '50%' | '66%';
3
3
  export type SideSheetPlacement = 'left' | 'right';
4
- /**
5
- * - `overlay`: sheet slides over content (default). Can be pinned by the user via `pinnable`.
6
- * - `push`: sheet starts pinned and reflowing content inside `<SideSheet.Layout>`.
7
- */
8
- export type SideSheetMode = 'overlay' | 'push';
9
- export type SideSheetHeadingSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
4
  export interface SideSheetProps {
11
5
  open?: boolean;
12
6
  onClose?: () => void;
13
7
  placement?: SideSheetPlacement;
14
8
  size?: SideSheetSize;
15
- /**
16
- * overlay: sheet floats over content (default).
17
- * push: sheet starts pinned/expanded, reflowing content inside `<SideSheet.Layout>`.
18
- */
19
- mode?: SideSheetMode;
20
9
  /**
21
10
  * Show a pin button in the header that lets the user toggle overlay/push.
22
11
  * Default: `false`.
@@ -30,8 +19,9 @@ export interface SideSheetProps {
30
19
  /** Called when the user toggles the pin button. */
31
20
  onPinnedChange?: (pinned: boolean) => void;
32
21
  /**
33
- * Default pinned state for uncontrolled usage. Defaults to `true` when `mode='push'`,
34
- * `false` otherwise.
22
+ * Default pinned state for uncontrolled usage. `true` starts the sheet pinned/expanded,
23
+ * reflowing content inside `<SideSheet.Layout>` (push mode). Default: `false` (overlay).
24
+ * BEWARE: On phone it always starts unpinned regardless of this.
35
25
  */
36
26
  defaultPinned?: boolean;
37
27
  /**
@@ -39,10 +29,11 @@ export interface SideSheetProps {
39
29
  * Default: `true` (only applies in overlay/non-pinned state).
40
30
  */
41
31
  backdrop?: boolean;
42
- /** Sheet heading text. */
32
+ /**
33
+ * Sheet heading. pass a string, or your own `<Heading>` (e.g.
34
+ * `<Heading data-size="xs">Title</Heading>`) to control its size and level.
35
+ */
43
36
  title?: ReactNode;
44
- /** Font size of the heading. Default: `'xs'`. */
45
- headingSize?: SideSheetHeadingSize;
46
37
  /** Show the close (×) button. Default: `true`. */
47
38
  showCloseButton?: boolean;
48
39
  /** Show a back (←) button in the header. Default: `false`. */
@@ -0,0 +1 @@
1
+ export declare function useBodyScrollLock(locked: boolean): void;
@@ -3,6 +3,9 @@ import '@material-symbols/font-400/outlined.css';
3
3
  export type { SupportedLanguage, ScreenSize } from './utils/types';
4
4
  export { AIS_SHIP_TYPES, getShipTypeByAisCode, getShipTypeById } from './data/ais/shipTypes';
5
5
  export type { AisShipType, AisShipTypeEntry, AisShipTypeId, AisCode } from './data/ais/shipTypes';
6
+ export { useMediaQuery, TABLET_SIZE_BREAKPOINT, PHONE_SIZE_BREAKPOINT } from './utils/useMediaQuery';
7
+ export { convertBytesToReadable } from './utils/convertBytesToReadable';
8
+ export { IdProvider, useIdProvider } from './utils/idContext';
6
9
  export { default as DeprecatedErrorLabel, type ErrorLabelProps as DeprecatedErrorLabelProps, } from './components/deprecated/ErrorLabel/errorLabel';
7
10
  export { default as DeprecatedInputLabel, type InputLabelProps as DeprecatedInputLabelProps, } from './components/deprecated/InputLabel/inputLabel';
8
11
  export { Details as DeprecatedDetails, type DetailsProps as DeprecatedDetailsProps, } from './components/deprecated/Details/Details';
@@ -83,15 +86,14 @@ export { Avatar } from './components/designsystemet/Avatar/Avatar';
83
86
  export type { AvatarProps } from './components/designsystemet/Avatar/Avatar';
84
87
  export { AvatarStack } from './components/designsystemet/AvatarStack/AvatarStack';
85
88
  export type { AvatarStackProps } from './components/designsystemet/AvatarStack/AvatarStack';
86
- export { IdProvider, useIdProvider } from './utils/idContext';
87
89
  export { SlotDialog, type SlotDialogProps } from './components/kystverket/SlotDialog/SlotDialog';
88
90
  export { SideSheet, type SideSheetProps } from './components/kystverket/SideSheet/SideSheet';
89
- export type { SideSheetSize, SideSheetPlacement, SideSheetMode, SideSheetHeadingSize, SideSheetLayoutProps, } from './components/kystverket/SideSheet/SideSheet.types';
91
+ export type { SideSheetSize, SideSheetPlacement, SideSheetLayoutProps, } from './components/kystverket/SideSheet/SideSheet.types';
90
92
  export { Suggestion } from './components/designsystemet/Suggestion/Suggestion';
91
93
  export type { SuggestionProps } from './components/designsystemet/Suggestion/Suggestion';
92
94
  export type { ChipButtonProps, ChipCheckboxProps, ChipRadioProps, ChipRemovableProps, } from './components/designsystemet/Chip';
93
95
  export { Chip, ChipButton, ChipCheckbox, ChipRadio, ChipRemovable } from './components/designsystemet/Chip';
94
- export { RovingFocusItem, RovingFocusRoot, omit, useCheckboxGroup, useDebounceCallback, useIsomorphicLayoutEffect, useMediaQuery, usePagination, useRadioGroup, useSynchronizedAnimation, } from '@digdir/designsystemet-react';
96
+ export { RovingFocusItem, RovingFocusRoot, omit, useCheckboxGroup, useDebounceCallback, useIsomorphicLayoutEffect, usePagination, useRadioGroup, useSynchronizedAnimation, } from '@digdir/designsystemet-react';
95
97
  export type { Size, UseRadioGroupProps, UseCheckboxGroupProps, UsePaginationProps, MergeRight, LabelRequired, } from '@digdir/designsystemet-react';
96
98
  export type { BadgePositionProps, BadgeProps } from '@digdir/designsystemet-react';
97
99
  export { Badge, BadgePosition } from '@digdir/designsystemet-react';
@@ -1,7 +1,7 @@
1
- export declare function IdProvider({ id, children }: {
1
+ export declare function IdProvider({ id, children }: Readonly<{
2
2
  id: string;
3
3
  children: React.ReactNode;
4
- }): React.JSX.Element;
4
+ }>): React.JSX.Element;
5
5
  export declare const useIdProvider: () => {
6
6
  getId: (...segments: unknown[]) => string;
7
7
  };
@@ -0,0 +1,14 @@
1
+ /** Replaces Designsystemets useMediaQuery as it's deprecated https://designsystemet.no/en/components/changelog#117 */
2
+ /** Below this, treat the viewport as phone-sized (40rem = 640px at the default 16px root font size). */
3
+ export declare const PHONE_SIZE_BREAKPOINT = "40rem";
4
+ /** Below this, treat the viewport as tablet-sized (48rem = 768px at the default 16px root font size). */
5
+ export declare const TABLET_SIZE_BREAKPOINT = "48rem";
6
+ /**
7
+ * Lytter på en CSS media query og returnerer om den matcher.
8
+ * Bruker useSyncExternalStore slik at React holder seg synkronisert med
9
+ * nettleserens matchMedia uten ekstra rendering.
10
+ *
11
+ * @example
12
+ * const isWide = useMediaQuery('(min-width: 1200px)');
13
+ */
14
+ export declare function useMediaQuery(query: string): boolean;