@kausal/themes 0.8.1 → 0.8.4

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.
@@ -1,4 +1,4 @@
1
- /* common/@fontsource/inter/400.css */
1
+ /* ../../../../../../../var/folders/mf/8_zg1h4n3xsbwv96530g65cw0000gn/T/esbuild-9gwTxb/common/@fontsource/inter/400.css */
2
2
  @font-face {
3
3
  font-family: "Inter";
4
4
  font-style: normal;
@@ -118,7 +118,7 @@
118
118
  U+FFFD;
119
119
  }
120
120
 
121
- /* common/@fontsource/inter/700.css */
121
+ /* ../../../../../../../var/folders/mf/8_zg1h4n3xsbwv96530g65cw0000gn/T/esbuild-9gwTxb/common/@fontsource/inter/700.css */
122
122
  @font-face {
123
123
  font-family: "Inter";
124
124
  font-style: normal;
@@ -238,7 +238,7 @@
238
238
  U+FFFD;
239
239
  }
240
240
 
241
- /* default/icons.css */
241
+ /* ../../../../../../../var/folders/mf/8_zg1h4n3xsbwv96530g65cw0000gn/T/esbuild-9gwTxb/default/icons.css */
242
242
  :root {
243
243
  --theme-icon-action-dependency: url("./icons/action-dependency-YIHDLWKV.svg");
244
244
  --theme-icon-angle-down: url("./icons/angle-down-AQWOHY4J.svg");
@@ -307,11 +307,13 @@
307
307
  --theme-icon-version: url("./icons/version-LJSCFB3L.svg");
308
308
  }
309
309
 
310
- /* default/main.scss */
310
+ /* ../../../../../../../var/folders/mf/8_zg1h4n3xsbwv96530g65cw0000gn/T/esbuild-9gwTxb/default/main.scss */
311
311
  :root {
312
312
  --theme-logo-url: url("./images/default-logo-white-KUB6ICTS.svg");
313
313
  --theme-logo-white-url: url("./images/default-logo-white-KUB6ICTS.svg");
314
314
  --theme-favicon-ico: url("./images/favicon/favicon-MGJ3GSCH.ico");
315
315
  --theme-favicon-apple: url("./images/favicon/apple-MBMLYIVD.png");
316
316
  --theme-favicon-svg: url("./images/favicon/icon-WKA4Z7F2.svg");
317
+ --theme-default-avatar-png: url("./images/default-avatar-user-M3HOXCCQ.png");
318
+ --theme-default-avatar-org: url("./images/default-avatar-org-UTHV5FNW.png");
317
319
  }
@@ -25,9 +25,11 @@
25
25
  "color": "rgb(247, 246, 243)",
26
26
  "goalColor": "rgb(86, 195, 142)",
27
27
  "latestColor": "rgb(109, 151, 184)",
28
- "startColor": "rgb(239, 154, 154)"
28
+ "startColor": "rgb(239, 154, 154)",
29
+ "linkToSource": true
29
30
  }
30
31
  },
32
+ "orgPageBackgroundColor": "rgb(16, 114, 81)",
31
33
  "imageOverlay": "rgb(255, 255, 255)",
32
34
  "fontFamily": "Inter",
33
35
  "fontFamilyHeadings": "Inter",
@@ -35,6 +37,7 @@
35
37
  "fontFamilyTiny": "'-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif",
36
38
  "headingsFontWeight": 700,
37
39
  "headingsColor": "rgb(26, 24, 23)",
40
+ "headingsTextTransform": "none",
38
41
  "fontFamilyFallback": "'-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif",
39
42
  "fontFamilyFallbackHeadings": "'-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif",
40
43
  "fontSizeSm": "0.8rem",
@@ -80,6 +83,9 @@
80
83
  "brandNavColor": "rgb(247, 246, 243)",
81
84
  "brandNavBackground": "rgb(92, 88, 83)",
82
85
  "brandNavFontFamily": "Inter",
86
+ "siteNavColor": "rgb(92, 88, 83)",
87
+ "siteNavBackground": "rgb(247, 246, 243)",
88
+ "siteNavHighlightColor": "rgb(16, 114, 81)",
83
89
  "navLogoVisible": true,
84
90
  "navTitleVisible": true,
85
91
  "footerLogoPlacement": "left",
@@ -90,6 +96,7 @@
90
96
  "secondFooterColor": "rgb(247, 246, 243)",
91
97
  "cardBorderWidth": "1px",
92
98
  "cardBorderRadius": "0.5rem",
99
+ "badgeColor": "rgb(16, 114, 81)",
93
100
  "badgeBorderRadius": "3px",
94
101
  "badgePaddingY": "0.5em",
95
102
  "badgePaddingX": "0.75em",
@@ -107,8 +114,8 @@
107
114
  "breakpointXl": "1200px",
108
115
  "themeLogoUrl": "default/images/default-logo-white-KUB6ICTS.svg",
109
116
  "themeLogoWhiteUrl": "default/images/default-logo-white-KUB6ICTS.svg",
110
- "iconIndicatorsUrl": "",
111
- "iconActionsUrl": "",
117
+ "defaultAvatarUserImage": "default/images/default-avatar-user-M3HOXCCQ.png",
118
+ "defaultAvatarOrgImage": "default/images/default-avatar-org-UTHV5FNW.png",
112
119
  "phaseTimelineColor": "rgb(16, 114, 81)",
113
120
  "taskStatusColors": {
114
121
  "onTime": "rgb(167, 235, 192)",
@@ -150,6 +157,10 @@
150
157
  "yellow090": "rgb(60, 19, 0)"
151
158
  },
152
159
  "settings": {
160
+ "actionView": {
161
+ "showPaginationTop": true,
162
+ "showPaginationBottom": true
163
+ },
153
164
  "dashboard": {
154
165
  "showResponsibles": true,
155
166
  "showIndicators": true,
@@ -161,7 +172,45 @@
161
172
  },
162
173
  "fundingInstruments": [],
163
174
  "otherLogos": [],
164
- "showFeedbackLink": true
175
+ "showFeedbackLink": true,
176
+ "graphs": {
177
+ "lineShape": "smooth",
178
+ "fillMarkers": false,
179
+ "goalSymbol": "x",
180
+ "categorySymbols": [
181
+ "circle",
182
+ "square",
183
+ "diamond",
184
+ "pentagon",
185
+ "hexagram",
186
+ "star-diamond",
187
+ "hash",
188
+ "y-down"
189
+ ],
190
+ "areaGraphs": false,
191
+ "showTrendline": true,
192
+ "drawGoalLine": false,
193
+ "totalLineColor": "rgb(167, 57, 57)",
194
+ "trendLineColor": "rgb(239, 154, 154)",
195
+ "goalLineColors": [
196
+ "rgb(39, 154, 109)",
197
+ "rgb(86, 195, 142)",
198
+ "rgb(16, 114, 81)",
199
+ "rgb(7, 74, 53)",
200
+ "rgb(167, 235, 192)"
201
+ ],
202
+ "categoryColors": [
203
+ "rgb(7, 74, 53)",
204
+ "rgb(78, 128, 166)",
205
+ "rgb(200, 130, 23)",
206
+ "rgb(86, 195, 142)",
207
+ "rgb(167, 57, 57)",
208
+ "rgb(109, 151, 184)",
209
+ "rgb(143, 70, 4)",
210
+ "rgb(16, 114, 81)",
211
+ "rgb(239, 154, 154)"
212
+ ]
213
+ }
165
214
  },
166
215
  "icons": {
167
216
  "arrow-down": "default/icons/arrow-down-MSLGVZVH.svg",
@@ -230,7 +279,7 @@
230
279
  "arrow-up": "default/icons/arrow-up-U5XN26IQ.svg",
231
280
  "tachometer": "default/icons/tachometer-UE46XP3D.svg"
232
281
  },
233
- "mainCssFile": "default/main-ISMOGQGC.css",
282
+ "mainCssFile": "default/main-ZEKKX45F.css",
234
283
  "favicons": {
235
284
  "apple": "default/images/favicon/apple-MBMLYIVD.png",
236
285
  "ico": "default/images/favicon/favicon-MGJ3GSCH.ico",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kausal/themes",
3
- "version": "0.8.1",
3
+ "version": "0.8.4",
4
4
  "description": "Themes for Kausal products",
5
5
  "type": "module",
6
6
  "main": "setup.cjs",
package/props.js CHANGED
@@ -1,7 +1,17 @@
1
1
  import PropTypes from 'prop-types';
2
2
 
3
- const { number, exact, string, oneOfType, bool, array, object, oneOf, objectOf, arrayOf } =
4
- PropTypes;
3
+ const {
4
+ number,
5
+ exact,
6
+ string,
7
+ oneOfType,
8
+ bool,
9
+ array,
10
+ object,
11
+ oneOf,
12
+ objectOf,
13
+ arrayOf,
14
+ } = PropTypes;
5
15
 
6
16
  export function makeThemePropType(cssv = null) {
7
17
  if (!cssv) {
@@ -24,6 +34,7 @@ export function makeThemePropType(cssv = null) {
24
34
  actionCompletedColor: cssv('color').isRequired,
25
35
  actionContinuousColor: cssv('color').isRequired,
26
36
  actionOnTimeColor: cssv('color').isRequired,
37
+ badgeColor: string.isRequired,
27
38
  badgeBorderRadius: oneOfType([string, number]).isRequired,
28
39
  badgeFontWeight: number.isRequired,
29
40
  badgePaddingX: string.isRequired,
@@ -33,6 +44,9 @@ export function makeThemePropType(cssv = null) {
33
44
  brandNavBackground: cssv('color'),
34
45
  brandNavColor: cssv('color'),
35
46
  brandNavFontFamily: cssv('font-family').allowEmpty,
47
+ siteNavColor: cssv('color'),
48
+ siteNavBackground: cssv('color'),
49
+ siteNavHighlightColor: cssv('color'),
36
50
  breakpointLg: string.isRequired,
37
51
  breakpointMd: string.isRequired,
38
52
  breakpointSm: string.isRequired,
@@ -109,9 +123,8 @@ export function makeThemePropType(cssv = null) {
109
123
  yellow090: cssv('color'),
110
124
  }).isRequired,
111
125
  headingsColor: cssv('color'),
126
+ headingsTextTransform: cssv('text-transform'),
112
127
  headingsFontWeight: cssv('font-weight').isRequired,
113
- iconActionsUrl: cssv('path').allowEmpty,
114
- iconIndicatorsUrl: cssv('path').allowEmpty,
115
128
  imageOverlay: string.isRequired,
116
129
  inputBg: string.isRequired,
117
130
  inputBorderRadius: string.isRequired,
@@ -130,6 +143,7 @@ export function makeThemePropType(cssv = null) {
130
143
  name: string.isRequired,
131
144
  neutralDark: string.isRequired,
132
145
  neutralLight: string.isRequired,
146
+ orgPageBackgroundColor: string.isRequired,
133
147
  space: string.isRequired,
134
148
  spaces: exact({
135
149
  s000: number.isRequired,
@@ -153,6 +167,8 @@ export function makeThemePropType(cssv = null) {
153
167
  }).isRequired,
154
168
  themeLogoUrl: cssv('hashedFile').isRequired,
155
169
  themeLogoWhiteUrl: cssv('hashedFile').isRequired,
170
+ defaultAvatarUserImage: cssv('hashedFile').isRequired,
171
+ defaultAvatarOrgImage: cssv('hashedFile').isRequired,
156
172
  phaseTimelineColor: string.isRequired,
157
173
  textColor: exact({
158
174
  primary: cssv('color').isRequired,
@@ -170,6 +186,7 @@ export function makeThemePropType(cssv = null) {
170
186
  goalColor: cssv('color').isRequired,
171
187
  latestColor: cssv('color').isRequired,
172
188
  startColor: cssv('color').isRequired,
189
+ linkToSource: bool.isRequired,
173
190
  }).isRequired,
174
191
  categoryList: exact({
175
192
  background: cssv('color').isRequired,
@@ -177,6 +194,10 @@ export function makeThemePropType(cssv = null) {
177
194
  }),
178
195
  }).isRequired,
179
196
  settings: exact({
197
+ actionView: exact({
198
+ showPaginationTop: bool,
199
+ showPaginationBottom: bool,
200
+ }),
180
201
  dashboard: exact({
181
202
  showResponsibles: bool.isRequired,
182
203
  showIndicators: bool.isRequired,
@@ -192,9 +213,23 @@ export function makeThemePropType(cssv = null) {
192
213
  categoryPageHideCategoryLabel: bool,
193
214
  }),
194
215
  hiddenLocales: arrayOf(string),
195
- fundingInstruments: array.isRequired,
216
+ fundingInstruments: arrayOf(
217
+ exact({
218
+ id: string,
219
+ name: string,
220
+ logo: string,
221
+ link: string,
222
+ })
223
+ ).isRequired,
196
224
  leftAlignCategoryPages: bool,
197
- otherLogos: array.isRequired,
225
+ otherLogos: arrayOf(
226
+ exact({
227
+ id: string,
228
+ name: string,
229
+ logo: string,
230
+ link: string,
231
+ })
232
+ ).isRequired,
198
233
  attentionBannerContent: object,
199
234
  footerLogoOnly: bool,
200
235
  footerStatement: string,
@@ -215,15 +250,25 @@ export function makeThemePropType(cssv = null) {
215
250
  }),
216
251
  graphs: exact({
217
252
  lineShape: string,
253
+ fillMarkers: bool,
254
+ goalSymbol: string,
255
+ categorySymbols: arrayOf(string),
218
256
  areaGraphs: bool,
219
257
  customBackground: string,
220
258
  showTrendline: bool,
221
- goalLineColor: string,
259
+ drawGoalLine: bool,
260
+ goalLineColors: arrayOf(string),
261
+ totalLineColor: string,
262
+ trendLineColor: string,
263
+ categoryColors: arrayOf(string),
264
+ roundIndicatorValue: bool,
222
265
  }),
223
266
  hideActionGrid: bool,
224
267
  hideIconOnActionListCards: bool,
225
268
  showActionDescriptionHeader: bool,
226
269
  showFeedbackLink: bool,
270
+ monsidoToken: string,
271
+ googleAnalyticsId: string,
227
272
  }),
228
273
  icons: objectOf(cssv('hashedFile')).isRequired,
229
274
  favicons: exact({
package/setup.cjs CHANGED
@@ -22,18 +22,22 @@ function generateThemeSymlinks(destPath, opts) {
22
22
  const themesPath = path.join(__dirname, 'dist', 'themes');
23
23
  const statRes = fs.lstatSync(destPath, { throwIfNoEntry: false });
24
24
  if (statRes) {
25
- if (!statRes.isSymbolicLink()) {
25
+ if (statRes.isDirectory()) {
26
+ fs.rmSync(destPath, { recursive: true });
27
+ } else if (!statRes.isSymbolicLink()) {
28
+ console.error(statRes);
26
29
  throw new Error(`${destPath} already exists and is not a symlink`);
27
- }
28
- const existingTarget = fs.readlinkSync(destPath);
29
- if (existingTarget !== themesPath) {
30
- console.log(`Removing existing symlink ${destPath}`);
31
- fs.unlinkSync(destPath);
32
30
  } else {
33
- if (verbose) {
34
- console.log(`${destPath} already exists, not linking`);
31
+ const existingTarget = fs.readlinkSync(destPath);
32
+ if (existingTarget !== themesPath) {
33
+ console.log(`Removing existing symlink ${destPath}`);
34
+ fs.unlinkSync(destPath);
35
+ } else {
36
+ if (verbose) {
37
+ console.log(`${destPath} already exists, not linking`);
38
+ }
39
+ return;
35
40
  }
36
- return;
37
41
  }
38
42
  }
39
43
  console.log(`🔗 Linking ${themesPath} → ${destPath}`);
package/types.ts CHANGED
@@ -8,6 +8,7 @@ export interface Theme {
8
8
  actionCompletedColor: string;
9
9
  actionContinuousColor: string;
10
10
  actionOnTimeColor: string;
11
+ badgeColor: string;
11
12
  badgeBorderRadius: string | number;
12
13
  badgeFontWeight: number;
13
14
  badgePaddingX: string;
@@ -16,6 +17,9 @@ export interface Theme {
16
17
  brandLight: cssColor;
17
18
  brandNavBackground: cssColor;
18
19
  brandNavColor: cssColor;
20
+ siteNavColor: cssColor;
21
+ siteNavBackground: cssColor;
22
+ siteNavHighlightColor: cssColor;
19
23
  brandNavFontFamily: string;
20
24
  breakpointLg: string;
21
25
  breakpointMd: string;
@@ -25,7 +29,6 @@ export interface Theme {
25
29
  btnBorderWidth: css['borderWidth'];
26
30
  cardBorderRadius: css['borderRadius'];
27
31
  cardBorderWidth: css['borderWidth'];
28
- combinedIconsFilename: string;
29
32
  customSelectIndicator: string;
30
33
  fontFamily: string;
31
34
  fontFamilyContent: string;
@@ -88,10 +91,9 @@ export interface Theme {
88
91
  yellow070: cssColor;
89
92
  yellow090: cssColor;
90
93
  };
94
+ headingsTextTransform: css['textTransform'];
91
95
  headingsColor: cssColor;
92
96
  headingsFontWeight: css['fontWeight'];
93
- iconActionsUrl: string;
94
- iconIndicatorsUrl: string;
95
97
  imageOverlay: string;
96
98
  inputBg: string;
97
99
  inputBorderRadius: string;
@@ -110,6 +112,7 @@ export interface Theme {
110
112
  name: string;
111
113
  neutralDark: cssColor;
112
114
  neutralLight: cssColor;
115
+ orgPageBackgroundColor: cssColor;
113
116
  space: string;
114
117
  taskStatusColors: {
115
118
  onTime: cssColor;
@@ -138,6 +141,8 @@ export interface Theme {
138
141
  };
139
142
  themeLogoUrl: string;
140
143
  themeLogoWhiteUrl: string;
144
+ defaultAvatarUserImage: string;
145
+ defaultAvatarOrgImage: string;
141
146
  phaseTimelineColor: string;
142
147
  textColor: {
143
148
  primary: string;
@@ -155,6 +160,7 @@ export interface Theme {
155
160
  goalColor: string;
156
161
  latestColor: string;
157
162
  startColor: string;
163
+ linkToSource: boolean;
158
164
  };
159
165
  categoryList?: {
160
166
  background: string;
@@ -162,6 +168,10 @@ export interface Theme {
162
168
  };
163
169
  };
164
170
  settings: {
171
+ actionView: {
172
+ showPaginationTop: boolean;
173
+ showPaginationBottom: boolean;
174
+ };
165
175
  dashboard: {
166
176
  showResponsibles: boolean;
167
177
  showIndicators: boolean;
@@ -178,7 +188,10 @@ export interface Theme {
178
188
  };
179
189
  hiddenLocales?: string[];
180
190
  fundingInstruments: {
191
+ id: string;
192
+ name: string;
181
193
  logo: string;
194
+ link: string;
182
195
  }[];
183
196
  leftAlignCategoryPages?: boolean;
184
197
  otherLogos: {
@@ -204,15 +217,25 @@ export interface Theme {
204
217
  };
205
218
  graphs?: {
206
219
  lineShape?: string;
220
+ categorySymbols?: string[];
221
+ goalSymbol?: string;
222
+ fillMarkers?: boolean;
207
223
  areaGraphs?: boolean;
208
224
  customBackground?: cssColor;
209
225
  showTrendLine?: boolean;
210
- goalLineColor?: cssColor;
226
+ drawGoalLine?: boolean;
227
+ goalLineColors: cssColor[];
228
+ totalLineColor: cssColor;
229
+ trendLineColor: cssColor;
230
+ categoryColors: cssColor[];
231
+ roundIndicatorValue?: boolean;
211
232
  };
212
233
  hideActionGrid?: boolean;
213
234
  hideIconOnActionListCards?: boolean;
214
235
  showActionDescriptionHeader?: boolean;
215
236
  showFeedbackLink?: boolean;
237
+ monsidoToken?: string;
238
+ googleAnalyticsId?: string;
216
239
  };
217
240
  icons: {
218
241
  [icon: string]: string;