@conduction/components 2.0.33 → 2.0.34

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 (172) hide show
  1. package/.github/workflows/npm-publish.yml +39 -39
  2. package/.prettierrc +30 -30
  3. package/README.md +66 -65
  4. package/lib/components/badgeCounter/BadgeCounter.d.ts +8 -8
  5. package/lib/components/badgeCounter/BadgeCounter.js +4 -4
  6. package/lib/components/badgeCounter/BadgeCounter.module.css +27 -27
  7. package/lib/components/card/detailsCard/DetailsCard.d.ts +14 -14
  8. package/lib/components/card/detailsCard/DetailsCard.js +10 -10
  9. package/lib/components/card/detailsCard/DetailsCard.module.css +51 -51
  10. package/lib/components/card/downloadCard/DownloadCard.d.ts +11 -11
  11. package/lib/components/card/downloadCard/DownloadCard.js +8 -8
  12. package/lib/components/card/downloadCard/DownloadCard.module.css +27 -27
  13. package/lib/components/card/horizontalImageCard/HorizontalImageCard.d.ts +13 -13
  14. package/lib/components/card/horizontalImageCard/HorizontalImageCard.js +9 -9
  15. package/lib/components/card/horizontalImageCard/HorizontalImageCard.module.css +34 -34
  16. package/lib/components/card/imageAndDetailsCard/ImageAndDetailsCard.d.ts +14 -14
  17. package/lib/components/card/imageAndDetailsCard/ImageAndDetailsCard.js +9 -9
  18. package/lib/components/card/imageAndDetailsCard/ImageAndDetailsCard.module.css +63 -63
  19. package/lib/components/card/index.d.ts +7 -7
  20. package/lib/components/card/index.js +7 -7
  21. package/lib/components/card/infoCard/InfoCard.d.ts +8 -8
  22. package/lib/components/card/infoCard/InfoCard.js +6 -6
  23. package/lib/components/card/infoCard/InfoCard.module.css +26 -26
  24. package/lib/components/card/richContentCard/RichContentCard.d.ts +19 -19
  25. package/lib/components/card/richContentCard/RichContentCard.js +15 -15
  26. package/lib/components/card/richContentCard/RichContentCard.module.css +93 -93
  27. package/lib/components/codeBlock/CodeBlock.d.ts +6 -6
  28. package/lib/components/codeBlock/CodeBlock.js +3 -3
  29. package/lib/components/codeBlock/CodeBlock.module.css +6 -6
  30. package/lib/components/container/Container.d.ts +6 -6
  31. package/lib/components/container/Container.js +4 -4
  32. package/lib/components/container/Container.module.css +9 -9
  33. package/lib/components/denhaag-wrappers/breadcrumbs/Breadcrumbs.css +222 -222
  34. package/lib/components/denhaag-wrappers/breadcrumbs/Breadcrumbs.d.ts +17 -17
  35. package/lib/components/denhaag-wrappers/breadcrumbs/Breadcrumbs.js +20 -20
  36. package/lib/components/denhaag-wrappers/pagination/Pagination.css +120 -120
  37. package/lib/components/denhaag-wrappers/pagination/Pagination.d.ts +9 -9
  38. package/lib/components/denhaag-wrappers/pagination/Pagination.js +15 -15
  39. package/lib/components/editableTableRow/EditableTableRow.d.ts +14 -14
  40. package/lib/components/editableTableRow/EditableTableRow.js +31 -31
  41. package/lib/components/editableTableRow/EditableTableRow.module.css +25 -25
  42. package/lib/components/formFields/checkbox.d.ts +9 -9
  43. package/lib/components/formFields/checkbox.js +3 -3
  44. package/lib/components/formFields/createKeyValue/CreateKeyValue.d.ts +17 -17
  45. package/lib/components/formFields/createKeyValue/CreateKeyValue.js +31 -31
  46. package/lib/components/formFields/createKeyValue/CreateKeyValue.module.css +43 -43
  47. package/lib/components/formFields/index.d.ts +7 -7
  48. package/lib/components/formFields/index.js +7 -7
  49. package/lib/components/formFields/input.d.ts +22 -22
  50. package/lib/components/formFields/input.js +16 -16
  51. package/lib/components/formFields/radio.d.ts +9 -9
  52. package/lib/components/formFields/radio.js +3 -3
  53. package/lib/components/formFields/select/select.d.ts +18 -18
  54. package/lib/components/formFields/select/select.js +21 -21
  55. package/lib/components/formFields/select/select.module.css +38 -38
  56. package/lib/components/formFields/textarea.d.ts +8 -8
  57. package/lib/components/formFields/textarea.js +3 -3
  58. package/lib/components/formFields/types.d.ts +6 -6
  59. package/lib/components/formFields/types.js +1 -1
  60. package/lib/components/imageDivider/ImageDivider.d.ts +7 -7
  61. package/lib/components/imageDivider/ImageDivider.js +6 -6
  62. package/lib/components/imageDivider/imageDivider.module.css +5 -5
  63. package/lib/components/logo/Logo.d.ts +8 -8
  64. package/lib/components/logo/Logo.js +10 -10
  65. package/lib/components/logo/Logo.module.css +15 -15
  66. package/lib/components/metaIcon/MetaIcon.d.ts +7 -7
  67. package/lib/components/metaIcon/MetaIcon.js +3 -3
  68. package/lib/components/metaIcon/MetaIcon.module.css +29 -29
  69. package/lib/components/notificationPopUp/NotificationPopUp.d.ts +24 -24
  70. package/lib/components/notificationPopUp/NotificationPopUp.js +31 -31
  71. package/lib/components/notificationPopUp/NotificationPopUp.module.css +61 -61
  72. package/lib/components/privateRoute/PrivateRoute.d.ts +6 -6
  73. package/lib/components/privateRoute/PrivateRoute.js +15 -15
  74. package/lib/components/quoteWrapper/QuoteWrapper.d.ts +7 -7
  75. package/lib/components/quoteWrapper/QuoteWrapper.js +5 -5
  76. package/lib/components/quoteWrapper/QuoteWrapper.module.css +12 -12
  77. package/lib/components/statusSteps/StatusSteps.d.ts +13 -13
  78. package/lib/components/statusSteps/StatusSteps.js +5 -5
  79. package/lib/components/tag/Tag.d.ts +10 -10
  80. package/lib/components/tag/Tag.js +6 -6
  81. package/lib/components/tag/Tag.module.css +44 -44
  82. package/lib/components/toolTip/ToolTip.d.ts +9 -9
  83. package/lib/components/toolTip/ToolTip.js +7 -7
  84. package/lib/components/toolTip/ToolTip.module.css +4 -4
  85. package/lib/components/topNav/index.d.ts +3 -3
  86. package/lib/components/topNav/index.js +3 -3
  87. package/lib/components/topNav/primaryTopNav/PrimaryTopNav.d.ts +20 -20
  88. package/lib/components/topNav/primaryTopNav/PrimaryTopNav.js +17 -17
  89. package/lib/components/topNav/primaryTopNav/PrimaryTopNav.module.css +141 -141
  90. package/lib/components/topNav/secondaryTopNav/SecondaryTopNav.d.ts +12 -12
  91. package/lib/components/topNav/secondaryTopNav/SecondaryTopNav.js +7 -7
  92. package/lib/components/topNav/secondaryTopNav/SecondaryTopNav.module.css +63 -63
  93. package/lib/index.d.ts +27 -27
  94. package/lib/index.js +20 -20
  95. package/package.json +46 -51
  96. package/src/components/badgeCounter/BadgeCounter.module.css +27 -27
  97. package/src/components/badgeCounter/BadgeCounter.tsx +16 -16
  98. package/src/components/card/detailsCard/DetailsCard.module.css +51 -51
  99. package/src/components/card/detailsCard/DetailsCard.tsx +56 -56
  100. package/src/components/card/downloadCard/DownloadCard.js +10 -10
  101. package/src/components/card/downloadCard/DownloadCard.module.css +27 -27
  102. package/src/components/card/downloadCard/DownloadCard.tsx +40 -40
  103. package/src/components/card/horizontalImageCard/HorizontalImageCard.js +9 -9
  104. package/src/components/card/horizontalImageCard/HorizontalImageCard.module.css +34 -34
  105. package/src/components/card/horizontalImageCard/HorizontalImageCard.tsx +37 -37
  106. package/src/components/card/imageAndDetailsCard/ImageAndDetailsCard.js +9 -9
  107. package/src/components/card/imageAndDetailsCard/ImageAndDetailsCard.module.css +63 -63
  108. package/src/components/card/imageAndDetailsCard/ImageAndDetailsCard.tsx +49 -49
  109. package/src/components/card/index.js +5 -5
  110. package/src/components/card/index.tsx +8 -8
  111. package/src/components/card/infoCard/InfoCard.module.css +26 -26
  112. package/src/components/card/infoCard/InfoCard.tsx +19 -19
  113. package/src/components/card/richContentCard/RichContentCard.js +17 -17
  114. package/src/components/card/richContentCard/RichContentCard.module.css +93 -93
  115. package/src/components/card/richContentCard/RichContentCard.tsx +98 -98
  116. package/src/components/codeBlock/CodeBlock.module.css +6 -6
  117. package/src/components/codeBlock/CodeBlock.tsx +8 -8
  118. package/src/components/container/Container.js +3 -3
  119. package/src/components/container/Container.module.css +9 -9
  120. package/src/components/container/Container.tsx +11 -11
  121. package/src/components/denhaag-wrappers/breadcrumbs/Breadcrumbs.css +222 -222
  122. package/src/components/denhaag-wrappers/breadcrumbs/Breadcrumbs.js +20 -20
  123. package/src/components/denhaag-wrappers/breadcrumbs/Breadcrumbs.tsx +89 -89
  124. package/src/components/denhaag-wrappers/pagination/Pagination.css +120 -120
  125. package/src/components/denhaag-wrappers/pagination/Pagination.tsx +112 -112
  126. package/src/components/editableTableRow/EditableTableRow.js +34 -34
  127. package/src/components/editableTableRow/EditableTableRow.module.css +25 -25
  128. package/src/components/editableTableRow/EditableTableRow.tsx +138 -138
  129. package/src/components/formFields/checkbox.js +3 -3
  130. package/src/components/formFields/checkbox.tsx +30 -30
  131. package/src/components/formFields/createKeyValue/CreateKeyValue.module.css +43 -43
  132. package/src/components/formFields/createKeyValue/CreateKeyValue.tsx +125 -125
  133. package/src/components/formFields/index.js +4 -4
  134. package/src/components/formFields/index.tsx +33 -32
  135. package/src/components/formFields/input.js +12 -12
  136. package/src/components/formFields/input.tsx +176 -176
  137. package/src/components/formFields/radio.tsx +21 -21
  138. package/src/components/formFields/select/select.module.css +38 -38
  139. package/src/components/formFields/select/select.tsx +107 -105
  140. package/src/components/formFields/textarea.js +3 -3
  141. package/src/components/formFields/textarea.tsx +17 -17
  142. package/src/components/formFields/types.js +1 -1
  143. package/src/components/formFields/types.ts +7 -7
  144. package/src/components/imageDivider/ImageDivider.js +6 -6
  145. package/src/components/imageDivider/ImageDivider.tsx +12 -12
  146. package/src/components/imageDivider/imageDivider.module.css +5 -5
  147. package/src/components/logo/Logo.js +10 -10
  148. package/src/components/logo/Logo.module.css +15 -15
  149. package/src/components/logo/Logo.tsx +25 -25
  150. package/src/components/metaIcon/MetaIcon.js +3 -3
  151. package/src/components/metaIcon/MetaIcon.module.css +29 -29
  152. package/src/components/metaIcon/MetaIcon.tsx +18 -18
  153. package/src/components/notificationPopUp/NotificationPopUp.module.css +61 -61
  154. package/src/components/notificationPopUp/NotificationPopUp.tsx +87 -87
  155. package/src/components/privateRoute/PrivateRoute.js +15 -15
  156. package/src/components/privateRoute/PrivateRoute.tsx +22 -22
  157. package/src/components/quoteWrapper/QuoteWrapper.module.css +12 -12
  158. package/src/components/quoteWrapper/QuoteWrapper.tsx +15 -15
  159. package/src/components/statusSteps/StatusSteps.js +5 -5
  160. package/src/components/statusSteps/StatusSteps.tsx +54 -54
  161. package/src/components/tag/Tag.module.css +44 -44
  162. package/src/components/tag/Tag.tsx +37 -37
  163. package/src/components/toolTip/ToolTip.module.css +4 -4
  164. package/src/components/toolTip/ToolTip.tsx +24 -24
  165. package/src/components/topNav/index.ts +4 -4
  166. package/src/components/topNav/primaryTopNav/PrimaryTopNav.module.css +141 -141
  167. package/src/components/topNav/primaryTopNav/PrimaryTopNav.tsx +81 -81
  168. package/src/components/topNav/secondaryTopNav/SecondaryTopNav.module.css +63 -63
  169. package/src/components/topNav/secondaryTopNav/SecondaryTopNav.tsx +27 -27
  170. package/src/custom.d.ts +4 -4
  171. package/src/index.js +14 -14
  172. package/src/index.ts +79 -79
@@ -1,141 +1,141 @@
1
- :root {
2
- --conduction-primary-top-nav-item-padding: var(--skeleton-size-md);
3
- --conduction-primary-top-nav-color: var(--skeleton-color-white);
4
- --conduction-primary-top-nav-background-color: var(--skeleton-color-secondary-3);
5
- --conduction-primary-top-nav-background-color-hover: rgba(255, 255, 255, 0.2);
6
- --conduction-primary-top-nav-dropdown-border-radius: var(--skeleton-border-radius-md);
7
- --conduction-primary-top-nav-background-color-active: rgba(255, 255, 255, 0.2);
8
- --conduction-primary-top-nav-box-shadow-active: inset 0 -4px black;
9
- --conduction-primary-top-nav-toggle-icon-size: 24px;
10
- --conduction-primary-top-nav-mobile-logo-padding: 18px;
11
- --conduction-primary-top-nav-item-icon-margin: var(--skeleton-size-2x);
12
- }
13
-
14
- .container {
15
- width: 100%;
16
- }
17
-
18
- .menuToggleContainer {
19
- width: 100%;
20
- display: flex;
21
- align-items: center;
22
- justify-content: space-between;
23
- }
24
-
25
- .menuToggleContainer > .menuToggle {
26
- all: unset;
27
- font-size: var(--conduction-primary-top-nav-toggle-icon-size);
28
- padding: var(--conduction-primary-top-nav-mobile-logo-padding);
29
- }
30
-
31
- .menuToggleContainer > .menuToggle:hover {
32
- cursor: pointer;
33
- }
34
-
35
- .primary {
36
- display: none;
37
- }
38
-
39
- .primary.isOpen {
40
- display: block;
41
- }
42
-
43
- .menuToggleContainer {
44
- width: 100%;
45
- }
46
-
47
- .primary {
48
- font-weight: 500;
49
- width: 100%;
50
- background-color: var(--conduction-primary-top-nav-background-color);
51
- }
52
-
53
- .primary:hover {
54
- cursor: pointer;
55
- }
56
-
57
- .ul {
58
- margin: unset;
59
- padding-inline-start: unset;
60
- align-items: center;
61
- }
62
-
63
- .li {
64
- list-style-type: none;
65
- display: block;
66
- position: relative;
67
- padding-inline-start: var(--conduction-primary-top-nav-item-padding);
68
- padding-inline-end: var(--conduction-primary-top-nav-item-padding);
69
- padding-block-start: var(--conduction-primary-top-nav-item-padding);
70
- padding-block-end: var(--conduction-primary-top-nav-item-padding);
71
- }
72
-
73
- .li:hover {
74
- background-color: var(--conduction-primary-top-nav-background-color-hover);
75
- }
76
-
77
- .current {
78
- background-color: var(--conduction-primary-top-nav-background-color-active);
79
- box-shadow: var(--conduction-primary-top-nav-box-shadow-active);
80
- }
81
-
82
- .primary .link {
83
- display: block;
84
- text-decoration: none;
85
- color: var(--conduction-primary-top-nav-color);
86
- }
87
-
88
- .primary .li:hover .dropdown {
89
- display: block;
90
- z-index: 1;
91
- }
92
-
93
- .dropdown {
94
- left: 0;
95
- top: 100%;
96
- padding: 0;
97
- width: 100%;
98
- display: none;
99
- list-style-type: none;
100
- background-color: var(--conduction-primary-top-nav-background-color);
101
- border-bottom-right-radius: var(--conduction-primary-top-nav-dropdown-border-radius);
102
- border-bottom-left-radius: var(--conduction-primary-top-nav-dropdown-border-radius);
103
- }
104
-
105
- .dropdown > li {
106
- padding-inline-start: var(--web-app-size-md);
107
- }
108
-
109
- .label {
110
- overflow: hidden;
111
- max-width: 37ch;
112
- text-overflow: ellipsis;
113
- white-space: nowrap;
114
- }
115
-
116
- .label > :not(:last-child) {
117
- margin-inline-end: var(--conduction-primary-top-nav-item-icon-margin);
118
- }
119
-
120
- @media only screen and (min-width: 992px) {
121
- .container {
122
- width: fit-content;
123
- }
124
-
125
- .primary {
126
- display: block;
127
- width: fit-content;
128
- }
129
-
130
- .ul {
131
- display: flex;
132
- }
133
-
134
- .dropdown {
135
- position: absolute;
136
- }
137
-
138
- .menuToggleContainer {
139
- display: none;
140
- }
141
- }
1
+ :root {
2
+ --conduction-primary-top-nav-item-padding: var(--skeleton-size-md);
3
+ --conduction-primary-top-nav-color: var(--skeleton-color-white);
4
+ --conduction-primary-top-nav-background-color: var(--skeleton-color-secondary-3);
5
+ --conduction-primary-top-nav-background-color-hover: rgba(255, 255, 255, 0.2);
6
+ --conduction-primary-top-nav-dropdown-border-radius: var(--skeleton-border-radius-md);
7
+ --conduction-primary-top-nav-background-color-active: rgba(255, 255, 255, 0.2);
8
+ --conduction-primary-top-nav-box-shadow-active: inset 0 -4px black;
9
+ --conduction-primary-top-nav-toggle-icon-size: 24px;
10
+ --conduction-primary-top-nav-mobile-logo-padding: 18px;
11
+ --conduction-primary-top-nav-item-icon-margin: var(--skeleton-size-2x);
12
+ }
13
+
14
+ .container {
15
+ width: 100%;
16
+ }
17
+
18
+ .menuToggleContainer {
19
+ width: 100%;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: space-between;
23
+ }
24
+
25
+ .menuToggleContainer > .menuToggle {
26
+ all: unset;
27
+ font-size: var(--conduction-primary-top-nav-toggle-icon-size);
28
+ padding: var(--conduction-primary-top-nav-mobile-logo-padding);
29
+ }
30
+
31
+ .menuToggleContainer > .menuToggle:hover {
32
+ cursor: pointer;
33
+ }
34
+
35
+ .primary {
36
+ display: none;
37
+ }
38
+
39
+ .primary.isOpen {
40
+ display: block;
41
+ }
42
+
43
+ .menuToggleContainer {
44
+ width: 100%;
45
+ }
46
+
47
+ .primary {
48
+ font-weight: 500;
49
+ width: 100%;
50
+ background-color: var(--conduction-primary-top-nav-background-color);
51
+ }
52
+
53
+ .primary:hover {
54
+ cursor: pointer;
55
+ }
56
+
57
+ .ul {
58
+ margin: unset;
59
+ padding-inline-start: unset;
60
+ align-items: center;
61
+ }
62
+
63
+ .li {
64
+ list-style-type: none;
65
+ display: block;
66
+ position: relative;
67
+ padding-inline-start: var(--conduction-primary-top-nav-item-padding);
68
+ padding-inline-end: var(--conduction-primary-top-nav-item-padding);
69
+ padding-block-start: var(--conduction-primary-top-nav-item-padding);
70
+ padding-block-end: var(--conduction-primary-top-nav-item-padding);
71
+ }
72
+
73
+ .li:hover {
74
+ background-color: var(--conduction-primary-top-nav-background-color-hover);
75
+ }
76
+
77
+ .current {
78
+ background-color: var(--conduction-primary-top-nav-background-color-active);
79
+ box-shadow: var(--conduction-primary-top-nav-box-shadow-active);
80
+ }
81
+
82
+ .primary .link {
83
+ display: block;
84
+ text-decoration: none;
85
+ color: var(--conduction-primary-top-nav-color);
86
+ }
87
+
88
+ .primary .li:hover .dropdown {
89
+ display: block;
90
+ z-index: 1;
91
+ }
92
+
93
+ .dropdown {
94
+ left: 0;
95
+ top: 100%;
96
+ padding: 0;
97
+ width: 100%;
98
+ display: none;
99
+ list-style-type: none;
100
+ background-color: var(--conduction-primary-top-nav-background-color);
101
+ border-bottom-right-radius: var(--conduction-primary-top-nav-dropdown-border-radius);
102
+ border-bottom-left-radius: var(--conduction-primary-top-nav-dropdown-border-radius);
103
+ }
104
+
105
+ .dropdown > li {
106
+ padding-inline-start: var(--web-app-size-md);
107
+ }
108
+
109
+ .label {
110
+ overflow: hidden;
111
+ max-width: 37ch;
112
+ text-overflow: ellipsis;
113
+ white-space: nowrap;
114
+ }
115
+
116
+ .label > :not(:last-child) {
117
+ margin-inline-end: var(--conduction-primary-top-nav-item-icon-margin);
118
+ }
119
+
120
+ @media only screen and (min-width: 992px) {
121
+ .container {
122
+ width: fit-content;
123
+ }
124
+
125
+ .primary {
126
+ display: block;
127
+ width: fit-content;
128
+ }
129
+
130
+ .ul {
131
+ display: flex;
132
+ }
133
+
134
+ .dropdown {
135
+ position: absolute;
136
+ }
137
+
138
+ .menuToggleContainer {
139
+ display: none;
140
+ }
141
+ }
@@ -1,81 +1,81 @@
1
- import * as React from "react";
2
- import * as styles from "./PrimaryTopNav.module.css";
3
- import clsx from "clsx";
4
- import { Link } from "@gemeente-denhaag/components-react";
5
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
6
- import { faBars } from "@fortawesome/free-solid-svg-icons";
7
-
8
- interface ITopNavItem {
9
- label: string;
10
- icon?: JSX.Element;
11
- current?: boolean;
12
- handleClick?: () => any;
13
- subItems?: {
14
- label: string;
15
- icon?: JSX.Element;
16
- current?: boolean;
17
- handleClick?: () => any;
18
- }[];
19
- }
20
-
21
- export interface TopNavProps {
22
- items: ITopNavItem[];
23
- mobileLogo?: JSX.Element;
24
- layoutClassName?: string;
25
- }
26
-
27
- export const PrimaryTopNav: React.FC<TopNavProps> = ({ items, mobileLogo, layoutClassName }) => {
28
- const [isOpen, setIsOpen] = React.useState<boolean>(false);
29
-
30
- const handleItemClick = (handleClick?: () => any) => {
31
- if (handleClick) {
32
- handleClick();
33
-
34
- setIsOpen(false);
35
- }
36
- };
37
-
38
- return (
39
- <div className={clsx(styles.container, layoutClassName && layoutClassName)}>
40
- <div className={styles.menuToggleContainer}>
41
- {mobileLogo}
42
-
43
- <button className={styles.menuToggle} onClick={() => setIsOpen((o) => !o)}>
44
- <FontAwesomeIcon icon={faBars} />
45
- </button>
46
- </div>
47
-
48
- <nav className={clsx(styles.primary, isOpen && styles.isOpen)}>
49
- <ul className={styles.ul}>
50
- {items.map(({ label, icon, current, handleClick, subItems }, idx) => (
51
- <li
52
- onClick={() => handleItemClick(handleClick)}
53
- className={clsx(styles.li, current && styles.current)}
54
- key={idx}
55
- >
56
- <Link className={clsx(styles.link, styles.label)} icon={icon} iconAlign="start">
57
- {label}
58
- </Link>
59
-
60
- {subItems && (
61
- <ul className={styles.dropdown}>
62
- {subItems.map(({ label, icon, current, handleClick }, idx) => (
63
- <li
64
- key={idx}
65
- className={clsx(styles.li, current && styles.current)}
66
- onClick={() => handleItemClick(handleClick)}
67
- >
68
- <Link className={clsx(styles.link, styles.label)} icon={icon} iconAlign="start">
69
- {label}
70
- </Link>
71
- </li>
72
- ))}
73
- </ul>
74
- )}
75
- </li>
76
- ))}
77
- </ul>
78
- </nav>
79
- </div>
80
- );
81
- };
1
+ import * as React from "react";
2
+ import * as styles from "./PrimaryTopNav.module.css";
3
+ import clsx from "clsx";
4
+ import { Link } from "@gemeente-denhaag/components-react";
5
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
6
+ import { faBars } from "@fortawesome/free-solid-svg-icons";
7
+
8
+ interface ITopNavItem {
9
+ label: string;
10
+ icon?: JSX.Element;
11
+ current?: boolean;
12
+ handleClick?: () => any;
13
+ subItems?: {
14
+ label: string;
15
+ icon?: JSX.Element;
16
+ current?: boolean;
17
+ handleClick?: () => any;
18
+ }[];
19
+ }
20
+
21
+ export interface TopNavProps {
22
+ items: ITopNavItem[];
23
+ mobileLogo?: JSX.Element;
24
+ layoutClassName?: string;
25
+ }
26
+
27
+ export const PrimaryTopNav: React.FC<TopNavProps> = ({ items, mobileLogo, layoutClassName }) => {
28
+ const [isOpen, setIsOpen] = React.useState<boolean>(false);
29
+
30
+ const handleItemClick = (handleClick?: () => any) => {
31
+ if (handleClick) {
32
+ handleClick();
33
+
34
+ setIsOpen(false);
35
+ }
36
+ };
37
+
38
+ return (
39
+ <div className={clsx(styles.container, layoutClassName && layoutClassName)}>
40
+ <div className={styles.menuToggleContainer}>
41
+ {mobileLogo}
42
+
43
+ <button className={styles.menuToggle} onClick={() => setIsOpen((o) => !o)}>
44
+ <FontAwesomeIcon icon={faBars} />
45
+ </button>
46
+ </div>
47
+
48
+ <nav className={clsx(styles.primary, isOpen && styles.isOpen)}>
49
+ <ul className={styles.ul}>
50
+ {items.map(({ label, icon, current, handleClick, subItems }, idx) => (
51
+ <li
52
+ onClick={() => handleItemClick(handleClick)}
53
+ className={clsx(styles.li, current && styles.current)}
54
+ key={idx}
55
+ >
56
+ <Link className={clsx(styles.link, styles.label)} icon={icon} iconAlign="start">
57
+ {label}
58
+ </Link>
59
+
60
+ {subItems && (
61
+ <ul className={styles.dropdown}>
62
+ {subItems.map(({ label, icon, current, handleClick }, idx) => (
63
+ <li
64
+ key={idx}
65
+ className={clsx(styles.li, current && styles.current)}
66
+ onClick={() => handleItemClick(handleClick)}
67
+ >
68
+ <Link className={clsx(styles.link, styles.label)} icon={icon} iconAlign="start">
69
+ {label}
70
+ </Link>
71
+ </li>
72
+ ))}
73
+ </ul>
74
+ )}
75
+ </li>
76
+ ))}
77
+ </ul>
78
+ </nav>
79
+ </div>
80
+ );
81
+ };
@@ -1,63 +1,63 @@
1
- :root {
2
- --conduction-secondary-top-nav-item-padding: var(--skeleton-size-md);
3
- --conduction-secondary-top-nav-font-size: var(--skeleton-font-size-md);
4
- --conduction-secondary-top-nav-color: var(--skeleton-color-white);
5
- --conduction-secondary-top-nav-background-color: var(--skeleton-color-secondary-5);
6
- --conduction-secondary-top-nav-background-color-hover: rgba(0, 0, 0, 0.1);
7
- --conduction-secondary-top-nav-font-weight: var(--skeleton-font-weight-light);
8
- --conduction-secondary-top-nav-color-active: rgba(0, 0, 0, 0.1);
9
- --conduction-secondary-top-nav-box-shadow-active: inset 0 -4px black;
10
- --conduction-secondary-top-nav-item-icon-margin: var(--skeleton-size-2x);
11
- }
12
-
13
- .secondary:hover {
14
- cursor: pointer;
15
- }
16
-
17
- .ul {
18
- margin: unset;
19
- display: flex;
20
- padding-inline-start: unset;
21
- align-items: center;
22
- }
23
-
24
- .li {
25
- list-style-type: none;
26
- display: block;
27
- padding-inline-start: var(--conduction-secondary-top-nav-item-padding);
28
- padding-inline-end: var(--conduction-secondary-top-nav-item-padding);
29
- padding-block-start: var(--conduction-secondary-top-nav-item-padding);
30
- padding-block-end: var(--conduction-secondary-top-nav-item-padding);
31
- }
32
-
33
- .li:hover {
34
- background-color: var(--conduction-secondary-top-nav-background-color-hover);
35
- }
36
-
37
- .current {
38
- background-color: var(--conduction-secondary-top-nav-color-active);
39
- box-shadow: var(--conduction-secondary-top-nav-box-shadow-active);
40
- }
41
-
42
- .secondary {
43
- font-weight: var(--conduction-secondary-top-nav-font-weight);
44
- width: fit-content;
45
- font-size: var(--conduction-secondary-top-nav-font-size);
46
- background-color: var(--conduction-secondary-top-nav-background-color);
47
- }
48
-
49
- .secondary .link {
50
- color: var(--conduction-secondary-top-nav-color);
51
- display: block;
52
- }
53
-
54
- .label {
55
- overflow: hidden;
56
- max-width: 37ch;
57
- text-overflow: ellipsis;
58
- white-space: nowrap;
59
- }
60
-
61
- .label > :not(:last-child) {
62
- margin-inline-end: var(--conduction-secondary-top-nav-item-icon-margin);
63
- }
1
+ :root {
2
+ --conduction-secondary-top-nav-item-padding: var(--skeleton-size-md);
3
+ --conduction-secondary-top-nav-font-size: var(--skeleton-font-size-md);
4
+ --conduction-secondary-top-nav-color: var(--skeleton-color-white);
5
+ --conduction-secondary-top-nav-background-color: var(--skeleton-color-secondary-5);
6
+ --conduction-secondary-top-nav-background-color-hover: rgba(0, 0, 0, 0.1);
7
+ --conduction-secondary-top-nav-font-weight: var(--skeleton-font-weight-light);
8
+ --conduction-secondary-top-nav-color-active: rgba(0, 0, 0, 0.1);
9
+ --conduction-secondary-top-nav-box-shadow-active: inset 0 -4px black;
10
+ --conduction-secondary-top-nav-item-icon-margin: var(--skeleton-size-2x);
11
+ }
12
+
13
+ .secondary:hover {
14
+ cursor: pointer;
15
+ }
16
+
17
+ .ul {
18
+ margin: unset;
19
+ display: flex;
20
+ padding-inline-start: unset;
21
+ align-items: center;
22
+ }
23
+
24
+ .li {
25
+ list-style-type: none;
26
+ display: block;
27
+ padding-inline-start: var(--conduction-secondary-top-nav-item-padding);
28
+ padding-inline-end: var(--conduction-secondary-top-nav-item-padding);
29
+ padding-block-start: var(--conduction-secondary-top-nav-item-padding);
30
+ padding-block-end: var(--conduction-secondary-top-nav-item-padding);
31
+ }
32
+
33
+ .li:hover {
34
+ background-color: var(--conduction-secondary-top-nav-background-color-hover);
35
+ }
36
+
37
+ .current {
38
+ background-color: var(--conduction-secondary-top-nav-color-active);
39
+ box-shadow: var(--conduction-secondary-top-nav-box-shadow-active);
40
+ }
41
+
42
+ .secondary {
43
+ font-weight: var(--conduction-secondary-top-nav-font-weight);
44
+ width: fit-content;
45
+ font-size: var(--conduction-secondary-top-nav-font-size);
46
+ background-color: var(--conduction-secondary-top-nav-background-color);
47
+ }
48
+
49
+ .secondary .link {
50
+ color: var(--conduction-secondary-top-nav-color);
51
+ display: block;
52
+ }
53
+
54
+ .label {
55
+ overflow: hidden;
56
+ max-width: 37ch;
57
+ text-overflow: ellipsis;
58
+ white-space: nowrap;
59
+ }
60
+
61
+ .label > :not(:last-child) {
62
+ margin-inline-end: var(--conduction-secondary-top-nav-item-icon-margin);
63
+ }
@@ -1,27 +1,27 @@
1
- import * as React from "react";
2
- import * as styles from "./SecondaryTopNav.module.css";
3
- import { Link } from "@gemeente-denhaag/components-react";
4
- import clsx from "clsx";
5
-
6
- interface TopNavProps {
7
- items: { label: string; icon?: JSX.Element; current?: boolean; handleClick: () => any }[];
8
- layoutClassName?: string;
9
- }
10
-
11
- export const SecondaryTopNav: React.FC<TopNavProps> = ({ items, layoutClassName }) => {
12
- return (
13
- <div className={clsx(styles.secondary, layoutClassName && layoutClassName)}>
14
- <nav>
15
- <ul className={styles.ul}>
16
- {items.map(({ label, icon, current, handleClick }, idx) => (
17
- <li className={clsx(styles.li, current && styles.current)} key={idx} onClick={handleClick}>
18
- <Link className={clsx(styles.link, styles.label)} icon={icon} iconAlign="start">
19
- {label}
20
- </Link>
21
- </li>
22
- ))}
23
- </ul>
24
- </nav>
25
- </div>
26
- );
27
- };
1
+ import * as React from "react";
2
+ import * as styles from "./SecondaryTopNav.module.css";
3
+ import { Link } from "@gemeente-denhaag/components-react";
4
+ import clsx from "clsx";
5
+
6
+ interface TopNavProps {
7
+ items: { label: string; icon?: JSX.Element; current?: boolean; handleClick: () => any }[];
8
+ layoutClassName?: string;
9
+ }
10
+
11
+ export const SecondaryTopNav: React.FC<TopNavProps> = ({ items, layoutClassName }) => {
12
+ return (
13
+ <div className={clsx(styles.secondary, layoutClassName && layoutClassName)}>
14
+ <nav>
15
+ <ul className={styles.ul}>
16
+ {items.map(({ label, icon, current, handleClick }, idx) => (
17
+ <li className={clsx(styles.li, current && styles.current)} key={idx} onClick={handleClick}>
18
+ <Link className={clsx(styles.link, styles.label)} icon={icon} iconAlign="start">
19
+ {label}
20
+ </Link>
21
+ </li>
22
+ ))}
23
+ </ul>
24
+ </nav>
25
+ </div>
26
+ );
27
+ };
package/src/custom.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare module "*.svg";
2
- declare module "*.jpg";
3
- declare module "*.png";
4
- declare module "*.module.css";
1
+ declare module "*.svg";
2
+ declare module "*.jpg";
3
+ declare module "*.png";
4
+ declare module "*.module.css";
package/src/index.js CHANGED
@@ -1,14 +1,14 @@
1
- export * from "./components/card";
2
- export * from "./components/casesTable/CasesTable";
3
- export * from "./components/container/Container";
4
- export * from "./components/denhaag-wrappers/breadcrumbs/Breadcrumbs";
5
- export * from "./components/editableTableRow/EditableTableRow";
6
- export * from "./components/formFields";
7
- export * from "./components/imageDivider/ImageDivider";
8
- export * from "./components/logo/Logo";
9
- export * from "./components/messageForm/MessageForm";
10
- export * from "./components/messagesTable/MessagesTable";
11
- export * from "./components/metaIcon/MetaIcon";
12
- export * from "./components/privateRoute/PrivateRoute";
13
- export * from "./components/statusSteps/StatusSteps";
14
- export * from "./components/topNav/TopNav";
1
+ export * from "./components/card";
2
+ export * from "./components/casesTable/CasesTable";
3
+ export * from "./components/container/Container";
4
+ export * from "./components/denhaag-wrappers/breadcrumbs/Breadcrumbs";
5
+ export * from "./components/editableTableRow/EditableTableRow";
6
+ export * from "./components/formFields";
7
+ export * from "./components/imageDivider/ImageDivider";
8
+ export * from "./components/logo/Logo";
9
+ export * from "./components/messageForm/MessageForm";
10
+ export * from "./components/messagesTable/MessagesTable";
11
+ export * from "./components/metaIcon/MetaIcon";
12
+ export * from "./components/privateRoute/PrivateRoute";
13
+ export * from "./components/statusSteps/StatusSteps";
14
+ export * from "./components/topNav/TopNav";