@kausal/themes 0.8.2 → 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.2",
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,19 +213,23 @@ export function makeThemePropType(cssv = null) {
192
213
  categoryPageHideCategoryLabel: bool,
193
214
  }),
194
215
  hiddenLocales: arrayOf(string),
195
- fundingInstruments: arrayOf(exact({
196
- id: string,
197
- name: string,
198
- logo: string,
199
- link: string,
200
- })).isRequired,
216
+ fundingInstruments: arrayOf(
217
+ exact({
218
+ id: string,
219
+ name: string,
220
+ logo: string,
221
+ link: string,
222
+ })
223
+ ).isRequired,
201
224
  leftAlignCategoryPages: bool,
202
- otherLogos: arrayOf(exact({
203
- id: string,
204
- name: string,
205
- logo: string,
206
- link: string,
207
- })).isRequired,
225
+ otherLogos: arrayOf(
226
+ exact({
227
+ id: string,
228
+ name: string,
229
+ logo: string,
230
+ link: string,
231
+ })
232
+ ).isRequired,
208
233
  attentionBannerContent: object,
209
234
  footerLogoOnly: bool,
210
235
  footerStatement: string,
@@ -225,15 +250,25 @@ export function makeThemePropType(cssv = null) {
225
250
  }),
226
251
  graphs: exact({
227
252
  lineShape: string,
253
+ fillMarkers: bool,
254
+ goalSymbol: string,
255
+ categorySymbols: arrayOf(string),
228
256
  areaGraphs: bool,
229
257
  customBackground: string,
230
258
  showTrendline: bool,
231
- goalLineColor: string,
259
+ drawGoalLine: bool,
260
+ goalLineColors: arrayOf(string),
261
+ totalLineColor: string,
262
+ trendLineColor: string,
263
+ categoryColors: arrayOf(string),
264
+ roundIndicatorValue: bool,
232
265
  }),
233
266
  hideActionGrid: bool,
234
267
  hideIconOnActionListCards: bool,
235
268
  showActionDescriptionHeader: bool,
236
269
  showFeedbackLink: bool,
270
+ monsidoToken: string,
271
+ googleAnalyticsId: string,
237
272
  }),
238
273
  icons: objectOf(cssv('hashedFile')).isRequired,
239
274
  favicons: exact({
package/setup.cjs CHANGED
@@ -23,20 +23,21 @@ function generateThemeSymlinks(destPath, opts) {
23
23
  const statRes = fs.lstatSync(destPath, { throwIfNoEntry: false });
24
24
  if (statRes) {
25
25
  if (statRes.isDirectory()) {
26
- fs.rmdirSync(destPath);
26
+ fs.rmSync(destPath, { recursive: true });
27
27
  } else if (!statRes.isSymbolicLink()) {
28
28
  console.error(statRes);
29
29
  throw new Error(`${destPath} already exists and is not a symlink`);
30
- }
31
- const existingTarget = fs.readlinkSync(destPath);
32
- if (existingTarget !== themesPath) {
33
- console.log(`Removing existing symlink ${destPath}`);
34
- fs.unlinkSync(destPath);
35
30
  } else {
36
- if (verbose) {
37
- 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;
38
40
  }
39
- return;
40
41
  }
41
42
  }
42
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;
@@ -207,15 +217,25 @@ export interface Theme {
207
217
  };
208
218
  graphs?: {
209
219
  lineShape?: string;
220
+ categorySymbols?: string[];
221
+ goalSymbol?: string;
222
+ fillMarkers?: boolean;
210
223
  areaGraphs?: boolean;
211
224
  customBackground?: cssColor;
212
225
  showTrendLine?: boolean;
213
- goalLineColor?: cssColor;
226
+ drawGoalLine?: boolean;
227
+ goalLineColors: cssColor[];
228
+ totalLineColor: cssColor;
229
+ trendLineColor: cssColor;
230
+ categoryColors: cssColor[];
231
+ roundIndicatorValue?: boolean;
214
232
  };
215
233
  hideActionGrid?: boolean;
216
234
  hideIconOnActionListCards?: boolean;
217
235
  showActionDescriptionHeader?: boolean;
218
236
  showFeedbackLink?: boolean;
237
+ monsidoToken?: string;
238
+ googleAnalyticsId?: string;
219
239
  };
220
240
  icons: {
221
241
  [icon: string]: string;