@navikt/ds-react 4.7.3 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/_docs.json +374 -70
  2. package/cjs/dropdown/Menu/GroupedList/index.js +4 -4
  3. package/cjs/index.js +1 -0
  4. package/cjs/layout/stack/HStack.js +51 -0
  5. package/cjs/layout/stack/Spacer.js +21 -0
  6. package/cjs/layout/stack/Stack.js +51 -0
  7. package/cjs/layout/stack/VStack.js +51 -0
  8. package/cjs/layout/stack/index.js +9 -0
  9. package/cjs/layout/stack/package.json +6 -0
  10. package/cjs/layout/utilities/css.js +17 -0
  11. package/esm/dropdown/Menu/GroupedList/{Heading.js → GroupedHeading.js} +1 -1
  12. package/esm/dropdown/Menu/GroupedList/GroupedHeading.js.map +1 -0
  13. package/esm/dropdown/Menu/GroupedList/{Item.js → GroupedItem.js} +1 -1
  14. package/esm/dropdown/Menu/GroupedList/GroupedItem.js.map +1 -0
  15. package/esm/dropdown/Menu/GroupedList/index.d.ts +2 -2
  16. package/esm/dropdown/Menu/GroupedList/index.js +2 -2
  17. package/esm/dropdown/Menu/GroupedList/index.js.map +1 -1
  18. package/esm/form/TextField.d.ts +1 -1
  19. package/esm/index.d.ts +1 -0
  20. package/esm/index.js +1 -0
  21. package/esm/index.js.map +1 -1
  22. package/esm/layout/stack/HStack.d.ts +24 -0
  23. package/esm/layout/stack/HStack.js +26 -0
  24. package/esm/layout/stack/HStack.js.map +1 -0
  25. package/esm/layout/stack/Spacer.d.ts +14 -0
  26. package/esm/layout/stack/Spacer.js +15 -0
  27. package/esm/layout/stack/Spacer.js.map +1 -0
  28. package/esm/layout/stack/Stack.d.ts +26 -0
  29. package/esm/layout/stack/Stack.js +23 -0
  30. package/esm/layout/stack/Stack.js.map +1 -0
  31. package/esm/layout/stack/VStack.d.ts +24 -0
  32. package/esm/layout/stack/VStack.js +26 -0
  33. package/esm/layout/stack/VStack.js.map +1 -0
  34. package/esm/layout/stack/index.d.ts +3 -0
  35. package/esm/layout/stack/index.js +4 -0
  36. package/esm/layout/stack/index.js.map +1 -0
  37. package/esm/layout/utilities/css.d.ts +10 -0
  38. package/esm/layout/utilities/css.js +14 -0
  39. package/esm/layout/utilities/css.js.map +1 -0
  40. package/package.json +2 -2
  41. package/src/dropdown/Menu/GroupedList/index.tsx +2 -2
  42. package/src/form/TextField.tsx +1 -1
  43. package/src/index.ts +1 -0
  44. package/src/layout/stack/HStack.tsx +30 -0
  45. package/src/layout/stack/Spacer.tsx +15 -0
  46. package/src/layout/stack/Stack.tsx +76 -0
  47. package/src/layout/stack/VStack.tsx +30 -0
  48. package/src/layout/stack/index.ts +3 -0
  49. package/src/layout/stack/stack.stories.tsx +161 -0
  50. package/src/layout/utilities/css.ts +56 -0
  51. package/esm/dropdown/Menu/GroupedList/Heading.js.map +0 -1
  52. package/esm/dropdown/Menu/GroupedList/Item.js.map +0 -1
  53. /package/cjs/dropdown/Menu/GroupedList/{Heading.js → GroupedHeading.js} +0 -0
  54. /package/cjs/dropdown/Menu/GroupedList/{Item.js → GroupedItem.js} +0 -0
  55. /package/esm/dropdown/Menu/GroupedList/{Heading.d.ts → GroupedHeading.d.ts} +0 -0
  56. /package/esm/dropdown/Menu/GroupedList/{Item.d.ts → GroupedItem.d.ts} +0 -0
  57. /package/src/dropdown/Menu/GroupedList/{Heading.tsx → GroupedHeading.tsx} +0 -0
  58. /package/src/dropdown/Menu/GroupedList/{Item.tsx → GroupedItem.tsx} +0 -0
@@ -0,0 +1,161 @@
1
+ import React from "react";
2
+ import type { Meta } from "@storybook/react";
3
+ import { HStack, VStack, Spacer } from ".";
4
+
5
+ export default {
6
+ title: "ds-react/Stack",
7
+ component: HStack,
8
+ } satisfies Meta<typeof HStack>;
9
+
10
+ export const Horizontal = {
11
+ render: () => (
12
+ <HStack gap="4">
13
+ <Placeholders count={4} />
14
+ </HStack>
15
+ ),
16
+ };
17
+
18
+ export const Spacing = {
19
+ render: () => (
20
+ <div style={{ height: "80vh", display: "flex" }}>
21
+ <VStack gap="8">
22
+ <Spacer />
23
+ <HStack gap="4">
24
+ <Placeholders count={1} />
25
+ <Spacer />
26
+ <Placeholders count={1} />
27
+ </HStack>
28
+ <HStack gap="4">
29
+ <Placeholders count={1} />
30
+ <Placeholders count={1} />
31
+ </HStack>
32
+ <HStack gap="4">
33
+ <Placeholders count={2} />
34
+ </HStack>
35
+ </VStack>
36
+ </div>
37
+ ),
38
+ parameters: {
39
+ layout: "fullscreen",
40
+ },
41
+ };
42
+
43
+ export const Vertical = {
44
+ render: () => (
45
+ <VStack gap="4">
46
+ <Placeholders count={4} />
47
+ </VStack>
48
+ ),
49
+ };
50
+
51
+ export const VerticalDemo = {
52
+ render: () => (
53
+ <VStack gap="2">
54
+ <VStack>
55
+ <Placeholders count={4} />
56
+ </VStack>
57
+ <Placeholders count={4} />
58
+ <VStack>
59
+ <Placeholders count={4} />
60
+ </VStack>
61
+ </VStack>
62
+ ),
63
+ };
64
+
65
+ export const VerticalAlign = {
66
+ render: () => (
67
+ <VStack gap="4">
68
+ <VStack align="start">
69
+ <Placeholders count={2} />
70
+ </VStack>
71
+ <VStack align="center">
72
+ <Placeholders count={2} />
73
+ </VStack>
74
+ <VStack align="end">
75
+ <Placeholders count={2} />
76
+ </VStack>
77
+ </VStack>
78
+ ),
79
+ parameters: {
80
+ layout: "fullscreen",
81
+ },
82
+ };
83
+
84
+ export const OverrideComponent = {
85
+ render: () => (
86
+ <VStack gap="4" as="form" onSubmit={(e) => e.preventDefault()}>
87
+ <Placeholders count={4} />
88
+ </VStack>
89
+ ),
90
+ };
91
+
92
+ export const Responsive = {
93
+ render: () => (
94
+ <VStack gap={{ xs: "1", sm: "3", md: "6", lg: "10", xl: "16" }}>
95
+ <Placeholders count={4} />
96
+ </VStack>
97
+ ),
98
+ };
99
+
100
+ export const Nested = {
101
+ render: () => (
102
+ <VStack gap="16">
103
+ <Placeholders count={2}>
104
+ <VStack gap="4">
105
+ <Placeholders count={2} color="gray" />
106
+ </VStack>
107
+ </Placeholders>
108
+ </VStack>
109
+ ),
110
+ };
111
+
112
+ export const DividerDemo = {
113
+ render: () => (
114
+ <div style={{ height: "80vh", width: "40rem" }}>
115
+ <VStack gap={{ xs: "2", md: "6", lg: "12" }}>
116
+ <HStack gap={{ xs: "2", md: "6", lg: "12" }}>
117
+ <Placeholders count={1} />
118
+ <Spacer />
119
+ <Placeholders count={1} />
120
+ </HStack>
121
+ <hr
122
+ style={{
123
+ border: "none",
124
+ borderBottom: "1px solid var(--a-border-divider)",
125
+ margin: 0,
126
+ }}
127
+ />
128
+ <HStack gap={{ xs: "2", md: "6", lg: "12" }}>
129
+ <Placeholders count={2} />
130
+ </HStack>
131
+ </VStack>
132
+ </div>
133
+ ),
134
+ };
135
+
136
+ function Placeholders({
137
+ count,
138
+ children,
139
+ color,
140
+ }: {
141
+ count: number;
142
+ children?: React.ReactNode;
143
+ color?: string;
144
+ }) {
145
+ return (
146
+ <>
147
+ {Array.from({ length: count }, (_, i) => (
148
+ <div
149
+ key={i}
150
+ style={{
151
+ backgroundColor: color ?? "var(--a-purple-200)",
152
+ height: children ? "" : "3rem",
153
+ width: children ? "" : "3rem",
154
+ }}
155
+ >
156
+ {children}
157
+ </div>
158
+ ))}
159
+ </>
160
+ );
161
+ }
@@ -0,0 +1,56 @@
1
+ export type BreakpointsAlias = "xs" | "sm" | "md" | "lg" | "xl";
2
+ export type SpacingScale =
3
+ | "0"
4
+ | "05"
5
+ | "1"
6
+ | "2"
7
+ | "3"
8
+ | "4"
9
+ | "5"
10
+ | "6"
11
+ | "7"
12
+ | "8"
13
+ | "9"
14
+ | "10"
15
+ | "11"
16
+ | "12"
17
+ | "14"
18
+ | "16"
19
+ | "18"
20
+ | "20"
21
+ | "24"
22
+ | "32";
23
+
24
+ export type ResponsiveProp<T> =
25
+ | T
26
+ | {
27
+ // eslint-disable-next-line no-unused-vars
28
+ [Breakpoint in BreakpointsAlias]?: T;
29
+ };
30
+
31
+ export function getResponsiveProps(
32
+ componentName: string,
33
+ componentProp: string,
34
+ tokenSubgroup: string,
35
+ responsiveProp?:
36
+ | string
37
+ | {
38
+ // eslint-disable-next-line no-unused-vars
39
+ [Breakpoint in BreakpointsAlias]?: string;
40
+ }
41
+ ) {
42
+ if (!responsiveProp) return {};
43
+
44
+ if (typeof responsiveProp === "string") {
45
+ return {
46
+ [`--ac-${componentName}-${componentProp}-xs`]: `var(--a-${tokenSubgroup}-${responsiveProp})`,
47
+ };
48
+ }
49
+
50
+ return Object.fromEntries(
51
+ Object.entries(responsiveProp).map(([breakpointAlias, aliasOrScale]) => [
52
+ `--ac-${componentName}-${componentProp}-${breakpointAlias}`,
53
+ `var(--a-${tokenSubgroup}-${aliasOrScale})`,
54
+ ])
55
+ );
56
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"Heading.js","sourceRoot":"","sources":["../../../../src/dropdown/Menu/GroupedList/Heading.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,MAAM,CAAC;AAUtB,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAGtC,CAAC,EAAsB,EAAE,GAAG,EAAE,EAAE;QAA/B,EAAE,SAAS,OAAW,EAAN,IAAI,cAApB,aAAsB,CAAF;IAAY,OAAA,CACjC,4CACM,IAAI,IACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,eAAe,EACf,uBAAuB,EACvB,SAAS,CACV,IACD,CACH,CAAA;CAAA,CAAC,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Item.js","sourceRoot":"","sources":["../../../../src/dropdown/Menu/GroupedList/Item.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAUjD,MAAM,CAAC,MAAM,WAAW,GAGpB,UAAU,CAAC,CAAC,EAAgD,EAAE,GAAG,EAAE,EAAE;QAAzD,EAAE,EAAE,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,OAAW,EAAN,IAAI,cAA9C,mBAAgD,CAAF;IAC5D,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAE5C,OAAO,CACL,4BAAI,SAAS,EAAC,2BAA2B;QACvC,oBAAC,SAAS,oBACJ,IAAI,IACR,KAAK,EAAE,IAAI,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,KAAgD,EAAE,EAAE;;gBAC5D,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,wDAAG,KAAK,CAAC,CAAC;gBAC3B,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,KAAK,CAAC,CAAC;YACzB,CAAC,EACD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,CACV,IACD,CACC,CACN,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,WAAW,CAAC"}