@sbc-connect/nuxt-base 0.1.3 → 0.1.5
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.
- package/.env.example +11 -1
- package/CHANGELOG.md +54 -0
- package/LICENSE +28 -0
- package/README.md +36 -47
- package/app/app.config.ts +56 -138
- package/app/app.vue +16 -3
- package/app/components/Connect/BCGovLogo.vue +4 -4
- package/app/components/Connect/Breadcrumb.vue +61 -0
- package/app/components/Connect/Footer.vue +104 -0
- package/app/components/Connect/Header/LogoHomeLink.vue +4 -4
- package/app/components/Connect/Header/WhatsNew.vue +36 -0
- package/app/components/Connect/Header/Wrapper.vue +3 -3
- package/app/components/Connect/Header/index.vue +16 -1
- package/app/components/Connect/I18n/Helper.vue +24 -0
- package/app/components/Connect/Input.vue +32 -0
- package/app/components/Connect/LocaleSelect.vue +1 -1
- package/app/components/Connect/PageSection.vue +57 -0
- package/app/components/Connect/Slideover/WhatsNew.vue +61 -0
- package/app/components/Connect/Spinner.vue +94 -0
- package/app/components/Connect/SystemBanner.vue +50 -0
- package/app/components/Connect/Textarea.vue +30 -0
- package/app/composables/useConnectLaunchDarkly.ts +177 -0
- package/app/error.vue +53 -0
- package/app/interfaces/connect-breadcrumb.ts +5 -0
- package/app/interfaces/connect-whatsnew.ts +14 -0
- package/app/layouts/{default.vue → ConnectBase.vue} +3 -0
- package/app/plugins/launchdarkly.client.ts +9 -0
- package/app/plugins/maska.client.ts +10 -0
- package/app/plugins/sanitize.client.ts +13 -0
- package/app/plugins/whats-new.client.ts +45 -0
- package/app/spa-loading-template.html +61 -0
- package/app/types/base-app-config.d.ts +15 -0
- package/app/types/base-page-meta.d.ts +8 -0
- package/app/utils/appendUrlParam.ts +4 -0
- package/app/utils/parseSpecialCharacters.ts +25 -0
- package/app/utils/setBreadcrumbs.ts +5 -0
- package/i18n/locales/en-CA.ts +53 -84
- package/i18n/locales/fr-CA.ts +33 -30
- package/modules/assets/index.ts +1 -1
- package/modules/assets/runtime/assets/core-tw.css +61 -32
- package/nuxt.config.ts +80 -1
- package/package.json +20 -9
- package/app/components/Connect/Header/Base.vue +0 -17
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ConnectWhatsNewItem {
|
|
2
|
+
app: string
|
|
3
|
+
date: string
|
|
4
|
+
description: string
|
|
5
|
+
id: number
|
|
6
|
+
priority: boolean
|
|
7
|
+
read: boolean
|
|
8
|
+
title: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface ConnectWhatsNewState {
|
|
12
|
+
viewed: boolean
|
|
13
|
+
items: ConnectWhatsNewItem[]
|
|
14
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="app-container">
|
|
3
3
|
<ConnectHeader />
|
|
4
|
+
<ConnectSystemBanner />
|
|
5
|
+
<ConnectBreadcrumb />
|
|
4
6
|
<div class="app-inner-container app-body">
|
|
5
7
|
<div class="flex flex-col lg:flex-row lg:gap-6 grow">
|
|
6
8
|
<div class="grow max-w-full overflow-hidden">
|
|
@@ -8,5 +10,6 @@
|
|
|
8
10
|
</div>
|
|
9
11
|
</div>
|
|
10
12
|
</div>
|
|
13
|
+
<ConnectFooter />
|
|
11
14
|
</div>
|
|
12
15
|
</template>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useStorage } from '@vueuse/core'
|
|
2
|
+
import isEqual from 'lodash-es/isEqual'
|
|
3
|
+
|
|
4
|
+
export default defineNuxtPlugin({
|
|
5
|
+
name: 'connect-whats-new-plugin',
|
|
6
|
+
parallel: true,
|
|
7
|
+
setup(nuxtApp) {
|
|
8
|
+
// exit early if whats new === false
|
|
9
|
+
const whatsNew = useAppConfig().connect.header.whatsNew
|
|
10
|
+
if (!whatsNew) {
|
|
11
|
+
return
|
|
12
|
+
}
|
|
13
|
+
const rtc = useRuntimeConfig().public
|
|
14
|
+
const url = rtc.statusApiUrl + rtc.statusApiVersion
|
|
15
|
+
|
|
16
|
+
// load whats new only once when app mounts
|
|
17
|
+
nuxtApp.hook('app:mounted', async () => {
|
|
18
|
+
// set default localStorage state
|
|
19
|
+
const state = useStorage<ConnectWhatsNewState>(
|
|
20
|
+
'connect-whats-new', // storage key
|
|
21
|
+
{ viewed: false, items: [] }, // default value
|
|
22
|
+
localStorage, // could change this to sessionStorage
|
|
23
|
+
{ mergeDefaults: true } // merge anything already in localStorage with default value
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
// fetch items
|
|
28
|
+
const res = await $fetch<ConnectWhatsNewItem[]>(`${url}/whatsnew`, {
|
|
29
|
+
parseResponse: JSON.parse, // required to parse JSON correctly
|
|
30
|
+
headers: {
|
|
31
|
+
'App-Name': rtc.appName
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
// only update value if new items exist
|
|
36
|
+
if (!isEqual(state.value.items, res) && res.length > 0) {
|
|
37
|
+
state.value.items = res
|
|
38
|
+
state.value.viewed = false
|
|
39
|
+
}
|
|
40
|
+
} catch {
|
|
41
|
+
// silently handle errors
|
|
42
|
+
}
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
})
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<head>
|
|
2
|
+
<title>Loading...</title>
|
|
3
|
+
<style>
|
|
4
|
+
.loading-container {
|
|
5
|
+
position: fixed;
|
|
6
|
+
inset: 0;
|
|
7
|
+
z-index: 9999;
|
|
8
|
+
background-color: rgba(241, 243, 245, 0.8);
|
|
9
|
+
display: flex;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
align-items: center;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.loader {
|
|
15
|
+
display: block;
|
|
16
|
+
width: 75px;
|
|
17
|
+
height: 75px;
|
|
18
|
+
animation: rotate 1.5s linear infinite;
|
|
19
|
+
transform-origin: 50% 50%;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.loader .path {
|
|
23
|
+
stroke: #1669bb;
|
|
24
|
+
stroke-linecap: round;
|
|
25
|
+
animation: dash 1.25s ease-in-out infinite;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@keyframes rotate {
|
|
29
|
+
100% {
|
|
30
|
+
transform: rotate(360deg);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@keyframes dash {
|
|
35
|
+
0% {
|
|
36
|
+
stroke-dasharray: 1, 150;
|
|
37
|
+
stroke-dashoffset: 0;
|
|
38
|
+
}
|
|
39
|
+
50% {
|
|
40
|
+
stroke-dasharray: 90, 150;
|
|
41
|
+
stroke-dashoffset: -35;
|
|
42
|
+
}
|
|
43
|
+
100% {
|
|
44
|
+
stroke-dasharray: 90, 150;
|
|
45
|
+
stroke-dashoffset: -124;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
</style>
|
|
49
|
+
</head>
|
|
50
|
+
<div class="loading-container">
|
|
51
|
+
<svg class="loader" viewBox="0 0 50 50">
|
|
52
|
+
<circle
|
|
53
|
+
class="path"
|
|
54
|
+
cx="25"
|
|
55
|
+
cy="25"
|
|
56
|
+
r="20"
|
|
57
|
+
fill="none"
|
|
58
|
+
stroke-width="5"
|
|
59
|
+
/>
|
|
60
|
+
</svg>
|
|
61
|
+
</div>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parses a string to decode HTML entities and remove HTML tags.
|
|
3
|
+
*
|
|
4
|
+
* @param text The string to parse.
|
|
5
|
+
* @param fallback The fallback text to return if the input is null or undefined.
|
|
6
|
+
* @returns The sanitized string.
|
|
7
|
+
*/
|
|
8
|
+
export function parseSpecialCharacters(text: string | undefined | null, fallback = 'N/A'): string {
|
|
9
|
+
// Return fallback text if the input is null or undefined.
|
|
10
|
+
if (text === null || text === undefined) {
|
|
11
|
+
return fallback
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const inputText = String(text)
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
const parser = new DOMParser()
|
|
18
|
+
const doc = parser.parseFromString(inputText, 'text/html')
|
|
19
|
+
|
|
20
|
+
return doc.body.textContent || fallback
|
|
21
|
+
} catch (error) {
|
|
22
|
+
console.error(`Error parsing special characters in: ${inputText}`, error)
|
|
23
|
+
return fallback
|
|
24
|
+
}
|
|
25
|
+
}
|
package/i18n/locales/en-CA.ts
CHANGED
|
@@ -1,95 +1,64 @@
|
|
|
1
|
-
/* eslint-disable max-len */
|
|
2
1
|
export default {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
login: 'Log in',
|
|
10
|
-
accountInfo: 'Account Info',
|
|
11
|
-
teamMembers: 'Team Members',
|
|
12
|
-
transactions: 'Transactions',
|
|
13
|
-
notifications: {
|
|
14
|
-
main: 'Notifications',
|
|
15
|
-
aria: 'Notifications, {count} New'
|
|
2
|
+
/* Ordering should be alphabetical unless otherwise specified */
|
|
3
|
+
connect: {
|
|
4
|
+
breadcrumb: {
|
|
5
|
+
/* Only include breadcrumb values that extended apps may overwrite */
|
|
6
|
+
arialabel: 'Breadcrumb',
|
|
7
|
+
default: 'Service BC Connect'
|
|
16
8
|
},
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// aria-label
|
|
58
|
-
label: 'Select a Language, current language: English'
|
|
59
|
-
},
|
|
60
|
-
ConnectBreadcrumb: {
|
|
61
|
-
default: 'Service BC Connect',
|
|
62
|
-
backBtn: 'Go Back',
|
|
63
|
-
arialabel: 'Breadcrumb'
|
|
64
|
-
},
|
|
65
|
-
ConnectPage: {
|
|
66
|
-
error: {
|
|
67
|
-
404: {
|
|
68
|
-
title: 'Page Not Found - Service BC Connect',
|
|
69
|
-
h1: '404 Page Not Found',
|
|
70
|
-
content: 'This page could not be found or does not exist.'
|
|
71
|
-
},
|
|
72
|
-
unknown: {
|
|
73
|
-
title: 'Unknown Error - Service BC Connect',
|
|
74
|
-
h1: 'Unknown Error',
|
|
75
|
-
content: 'An unknown error occured, please refresh the page or try again later.'
|
|
9
|
+
footer: {
|
|
10
|
+
/* Only include footer values that extended apps may overwrite */
|
|
11
|
+
navLabel: 'Useful Links' // <nav> aria-label
|
|
12
|
+
},
|
|
13
|
+
header: {
|
|
14
|
+
/* Only include header values that extended apps may overwrite */
|
|
15
|
+
homeLink: 'Home', // aria-label
|
|
16
|
+
navLabel: 'Main Navigation', // <nav> aria-label
|
|
17
|
+
title: 'Service BC Connect'
|
|
18
|
+
},
|
|
19
|
+
label: {
|
|
20
|
+
accessibility: 'Accessibility',
|
|
21
|
+
appVersion: 'App Version',
|
|
22
|
+
bcApp: 'A BC Online Application',
|
|
23
|
+
bcGovLogo: 'Government of British Columbia Logo',
|
|
24
|
+
copyright: 'Copyright',
|
|
25
|
+
disclaimer: 'Disclaimer',
|
|
26
|
+
fees: 'Fees',
|
|
27
|
+
goBack: 'Go Back',
|
|
28
|
+
goHome: 'Go Home',
|
|
29
|
+
home: 'Home',
|
|
30
|
+
localeSelect: 'Select a Language, current language: English',
|
|
31
|
+
privacy: 'Privacy',
|
|
32
|
+
releaseNotes: 'Release Notes',
|
|
33
|
+
whatsNew: "What's New",
|
|
34
|
+
whatsNewAria: "What's New, {count} unread",
|
|
35
|
+
whatsNewSlideover: "What's New at BC Registries"
|
|
36
|
+
},
|
|
37
|
+
page: {
|
|
38
|
+
error: {
|
|
39
|
+
404: {
|
|
40
|
+
title: 'Page Not Found - Service BC Connect',
|
|
41
|
+
h1: '404 Page Not Found',
|
|
42
|
+
content: 'This page could not be found or does not exist.'
|
|
43
|
+
},
|
|
44
|
+
unknown: {
|
|
45
|
+
title: 'Unknown Error - Service BC Connect',
|
|
46
|
+
h1: 'Unknown Error',
|
|
47
|
+
content: 'An unknown error occured, please refresh the page or try again later.'
|
|
48
|
+
}
|
|
76
49
|
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
content: 'Your session is about to expire due to inactivity. You will be logged out in {boldStart}0{boldEnd} seconds. Press any key to continue your session. | Your session is about to expire due to inactivity. You will be logged out in {boldStart}1{boldEnd} second. Press any key to continue your session. | Your session is about to expire due to inactivity. You will be logged out in {boldStart}{count}{boldEnd} seconds. Press any key to continue your session.',
|
|
82
|
-
sessionExpired: 'Session Expired',
|
|
83
|
-
continueBtn: {
|
|
84
|
-
main: 'Continue Session',
|
|
85
|
-
aria: 'Your session is about to expire, press any key to continue your session.'
|
|
50
|
+
},
|
|
51
|
+
text: {
|
|
52
|
+
whatsNewSlideoverDescription: ' ',
|
|
53
|
+
whatsNewSlideoverEmpty: 'No new items.'
|
|
86
54
|
}
|
|
87
55
|
},
|
|
88
56
|
test: {
|
|
89
|
-
|
|
57
|
+
i18n: {
|
|
90
58
|
strong: 'This should have {boldStart} bold {boldEnd} text',
|
|
91
59
|
strongWithProps: 'This should have {boldStart} bold {boldEnd} text and allow a {prop}',
|
|
92
|
-
italic: 'Italic test {italicStart} goes here {italicEnd}.'
|
|
60
|
+
italic: 'Italic test {italicStart} goes here {italicEnd}.',
|
|
61
|
+
computed: 'This text will be updated. Updated {boldStart}{count}{boldEnd} times.'
|
|
93
62
|
}
|
|
94
63
|
}
|
|
95
64
|
}
|
package/i18n/locales/fr-CA.ts
CHANGED
|
@@ -1,7 +1,39 @@
|
|
|
1
1
|
/* eslint-disable max-len */
|
|
2
2
|
export default {
|
|
3
|
+
/* Ordering should be alphabetical unless otherwise specified */
|
|
4
|
+
connect: {
|
|
5
|
+
breadcrumb: {
|
|
6
|
+
/* Only include breadcrumb values that extended apps may overwrite */
|
|
7
|
+
arialabel: "Fil d'Ariane",
|
|
8
|
+
default: 'Service Connect CB'
|
|
9
|
+
},
|
|
10
|
+
footer: {
|
|
11
|
+
/* Only include footer values that extended apps may overwrite */
|
|
12
|
+
navLabel: 'Liens utiles' // <nav> aria-label
|
|
13
|
+
},
|
|
14
|
+
header: {
|
|
15
|
+
/* Only include header values that extended apps may overwrite */
|
|
16
|
+
homeLink: 'Accueil', // aria-label
|
|
17
|
+
navLabel: 'Navigation principale', // <nav> aria-label
|
|
18
|
+
title: 'Service Connect CB'
|
|
19
|
+
},
|
|
20
|
+
label: {
|
|
21
|
+
accessibility: 'Accessibilité',
|
|
22
|
+
appVersion: "Version de l'Application",
|
|
23
|
+
bcApp: 'Une application en ligne CB',
|
|
24
|
+
bcGovLogo: 'Logo du gouvernement de la Colombie-Britannique',
|
|
25
|
+
copyright: "Droits d'auteur",
|
|
26
|
+
disclaimer: 'Clause de non-responsabilité',
|
|
27
|
+
fees: 'Frais',
|
|
28
|
+
goBack: 'Retour',
|
|
29
|
+
home: 'Accueil',
|
|
30
|
+
localeSelect: 'Sélectionnez une langue, langue courante: Français',
|
|
31
|
+
privacy: 'Confidentialité',
|
|
32
|
+
releaseNotes: 'Notes de Version'
|
|
33
|
+
},
|
|
34
|
+
text: {}
|
|
35
|
+
},
|
|
3
36
|
btn: {
|
|
4
|
-
appVersion: "Version de l'Application",
|
|
5
37
|
bcRegHome: 'Accueil des Registres de la CB',
|
|
6
38
|
createAccount: 'Créer un Compte',
|
|
7
39
|
editProfile: 'Editer le Profil',
|
|
@@ -33,35 +65,6 @@ export default {
|
|
|
33
65
|
none: 'Aucune Notification',
|
|
34
66
|
teamMemberApproval: "{count} membre de l'équipe doit être approuvé pour accéder à ce compte. | {count} membres de l'équipe doivent être approuvés pour accéder à ce compte."
|
|
35
67
|
},
|
|
36
|
-
ConnectFooter: {
|
|
37
|
-
navLabel: 'Liens utiles', // <nav> aria-label
|
|
38
|
-
home: 'Accueil',
|
|
39
|
-
releaseNotes: 'Notes de Version',
|
|
40
|
-
fees: 'Frais',
|
|
41
|
-
disclaimer: 'Clause de non-responsabilité',
|
|
42
|
-
privacy: 'Confidentialité',
|
|
43
|
-
ally: 'Accessibilité',
|
|
44
|
-
copyright: "Droits d'auteur",
|
|
45
|
-
bcApp: 'Une application en ligne CB'
|
|
46
|
-
},
|
|
47
|
-
ConnectHeader: {
|
|
48
|
-
title: 'Service Connect CB',
|
|
49
|
-
logoBtnLabel: 'Accueil', // <img> link aria-label
|
|
50
|
-
navLabel: 'Navigation principale', // <nav> aria-label
|
|
51
|
-
homeLink: 'Home'
|
|
52
|
-
},
|
|
53
|
-
ConnectBCGovLogo: {
|
|
54
|
-
alt: 'Logo du gouvernement de la Colombie-Britannique' // <img> alt
|
|
55
|
-
},
|
|
56
|
-
ConnectLocaleSelect: {
|
|
57
|
-
// aria-label
|
|
58
|
-
label: 'Sélectionnez une langue, langue courante: Français'
|
|
59
|
-
},
|
|
60
|
-
ConnectBreadcrumb: {
|
|
61
|
-
default: 'Service Connect CB',
|
|
62
|
-
backBtn: 'Retour',
|
|
63
|
-
arialabel: "Fil d'Ariane"
|
|
64
|
-
},
|
|
65
68
|
ConnectPage: {
|
|
66
69
|
error: {
|
|
67
70
|
404: {
|
package/modules/assets/index.ts
CHANGED
|
@@ -18,7 +18,7 @@ export default defineNuxtModule<ModuleOptions>({
|
|
|
18
18
|
|
|
19
19
|
_nuxt.options.css.push(resolver.resolve('./runtime/assets/core-tw.css'))
|
|
20
20
|
_nuxt.options.css.push(resolver.resolve('./runtime/assets/core-layout.css'))
|
|
21
|
-
_nuxt.options.css.push(resolver.resolve('./runtime/assets/core-main.css'))
|
|
21
|
+
// _nuxt.options.css.push(resolver.resolve('./runtime/assets/core-main.css'))
|
|
22
22
|
await installModule('@nuxt/ui')
|
|
23
23
|
}
|
|
24
24
|
})
|
|
@@ -1,15 +1,63 @@
|
|
|
1
|
-
@
|
|
2
|
-
@
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
@import "@nuxt/ui";
|
|
3
|
+
|
|
4
|
+
@source "../../../../app/";
|
|
3
5
|
|
|
4
6
|
/* Customize Nuxt UI default tokens */
|
|
7
|
+
/* Follows https://sites.google.com/bcdevexchange.org/designsystem/foundation-styles/colours */
|
|
5
8
|
:root {
|
|
6
|
-
--ui-error: var(--color-
|
|
9
|
+
--ui-error: var(--color-red-600);
|
|
10
|
+
--ui-primary: var(--color-blue-500);
|
|
11
|
+
--ui-secondary: white;
|
|
12
|
+
--ui-success: var(--color-green-600);
|
|
13
|
+
--ui-warning: #F8661A;
|
|
14
|
+
/* Custom themes */
|
|
15
|
+
--ui-brandDark: var(--color-midnightBlue-900);
|
|
16
|
+
--ui-brandLight: var(--color-yellow-400);
|
|
17
|
+
--ui-lineDark: #6F7780;
|
|
18
|
+
--ui-lineLight: var(--color-gray-300);
|
|
19
|
+
--ui-lineSpecial: #899EB2;
|
|
20
|
+
--ui-mark: #1A5A96;
|
|
21
|
+
--ui-markHover: #0000EE;
|
|
7
22
|
--ui-neutral: var(--color-gray-700);
|
|
23
|
+
--ui-neutralDark: var(--color-gray-900);
|
|
24
|
+
--ui-neutralLight: #757575;
|
|
25
|
+
--ui-shadeCaution: #FFF7E3;
|
|
26
|
+
--ui-shadeLight: white;
|
|
27
|
+
--ui-shadeNew: #E8F5E9;
|
|
28
|
+
--ui-shadePrimary: var(--color-gray-100);
|
|
29
|
+
--ui-shadeSecondary: #E2E8EE;
|
|
30
|
+
--ui-shadeSpecial: var(--color-blue-50);
|
|
31
|
+
--ui-shadeWarning: #FAE9E9;
|
|
32
|
+
--ui-radius: 0.1667rem;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* FUTURE: add dark themed colours (currently set to be the same) */
|
|
36
|
+
.dark {
|
|
37
|
+
--ui-error: var(--color-red-600);
|
|
8
38
|
--ui-primary: var(--color-blue-500);
|
|
9
39
|
--ui-secondary: white;
|
|
10
40
|
--ui-success: var(--color-green-600);
|
|
11
41
|
--ui-warning: #F8661A;
|
|
12
|
-
|
|
42
|
+
/* Custom themes */
|
|
43
|
+
--ui-brandDark: var(--color-midnightBlue-900);
|
|
44
|
+
--ui-brandLight: var(--color-yellow-400);
|
|
45
|
+
--ui-lineDark: #6F7780;
|
|
46
|
+
--ui-lineLight: var(--color-gray-300);
|
|
47
|
+
--ui-lineSpecial: #899EB2;
|
|
48
|
+
--ui-mark: #1A5A96;
|
|
49
|
+
--ui-markHover: #0000EE;
|
|
50
|
+
--ui-neutral: var(--color-gray-700);
|
|
51
|
+
--ui-neutralDark: var(--color-gray-900);
|
|
52
|
+
--ui-neutralLight: #757575;
|
|
53
|
+
--ui-shadeCaution: #FFF7E3;
|
|
54
|
+
--ui-shadeLight: white;
|
|
55
|
+
--ui-shadeNew: #E8F5E9;
|
|
56
|
+
--ui-shadePrimary: var(--color-gray-100);
|
|
57
|
+
--ui-shadeSecondary: #E2E8EE;
|
|
58
|
+
--ui-shadeSpecial: var(--color-blue-50);
|
|
59
|
+
--ui-shadeWarning: #FAE9E9;
|
|
60
|
+
--ui-radius: 0.1667rem;
|
|
13
61
|
}
|
|
14
62
|
|
|
15
63
|
@theme static {
|
|
@@ -19,35 +67,16 @@
|
|
|
19
67
|
/* widths */
|
|
20
68
|
--container-bcGovMd: 1020px;
|
|
21
69
|
--container-bcGovLg: 1360px;
|
|
22
|
-
--container-
|
|
70
|
+
--container-input: 600px;
|
|
23
71
|
|
|
24
72
|
/* list style types */
|
|
25
73
|
--marker-alpha: lower-alpha;
|
|
26
74
|
--marker-upper-alpha: upper-alpha;
|
|
27
75
|
|
|
28
76
|
/* box shadow */
|
|
29
|
-
--shadow-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
/* these colours are as defined in styleguide: */
|
|
33
|
-
/* https://preview.uxpin.com/73eb31e6346bc2863a066f02218a3af289325619#/pages/138840439/simulate/sitemap?mode=i */
|
|
34
|
-
/* for more details see previous link */
|
|
35
|
-
--color-connect-darkBlue: var(--color-midnightBlue-900);
|
|
36
|
-
--color-connect-lightBlue: var(--color-blue-50);
|
|
37
|
-
--color-connect-darkGray: var(--color-gray-900);
|
|
38
|
-
--color-connect-midGray: var(--color-gray-700);
|
|
39
|
-
--color-connect-lightGray: #757575;
|
|
40
|
-
--color-connect-yellow: var(--color-yellow-400);
|
|
41
|
-
/* Are below used? */
|
|
42
|
-
/* --color-bcGovColor-markBlue: #1a5a96; */
|
|
43
|
-
/* --color-bcGovColor-markBlueHover: #0000EE; */
|
|
44
|
-
--color-connect-nonClickable: var(--color-blue-350);
|
|
45
|
-
--color-connect-gray1: var(--color-gray-100);
|
|
46
|
-
--color-connect-gray2: #E2E8EE;
|
|
47
|
-
/* LINES */
|
|
48
|
-
--color-connect-hairlinesOnWhite: var(--color-gray-300);
|
|
49
|
-
--color-connect-specialityDottedLines: #899EB2;
|
|
50
|
-
--color-connect-formFieldLines: #6F7780;
|
|
77
|
+
--shadow-input: inset 0 -1px 0 0px var(--ui-neutral);
|
|
78
|
+
--shadow-inputFocus: inset 0 -2px 0 0px var(--ui-primary);
|
|
79
|
+
--shadow-inputError: inset 0 -2px 0 0px var(--ui-error);
|
|
51
80
|
|
|
52
81
|
/* GRAY */
|
|
53
82
|
--color-gray-50: #f8f9fa;
|
|
@@ -186,7 +215,7 @@ body {
|
|
|
186
215
|
h2,
|
|
187
216
|
h3,
|
|
188
217
|
h4 {
|
|
189
|
-
@apply text-
|
|
218
|
+
@apply text-neutralDark;
|
|
190
219
|
}
|
|
191
220
|
|
|
192
221
|
h1,
|
|
@@ -213,20 +242,20 @@ body {
|
|
|
213
242
|
}
|
|
214
243
|
|
|
215
244
|
p {
|
|
216
|
-
@apply font-normal text-
|
|
245
|
+
@apply font-normal text-neutral;
|
|
217
246
|
}
|
|
218
247
|
|
|
219
248
|
td,
|
|
220
249
|
th {
|
|
221
|
-
@apply text-
|
|
250
|
+
@apply text-neutralDark text-sm;
|
|
222
251
|
}
|
|
223
252
|
|
|
224
253
|
/* floating labels */
|
|
225
254
|
.floating-label-input {
|
|
226
|
-
@apply pointer-events-none absolute left-0 top-
|
|
255
|
+
@apply pointer-events-none absolute left-0 top-3 text-neutralDark transition-all motion-reduce:transition-none duration-200 text-xs font-medium px-2.5 peer-focus:top-3 peer-focus:text-xs peer-placeholder-shown:text-sm peer-placeholder-shown:top-1/2 -translate-y-1/2 peer-focus:text-primary;
|
|
227
256
|
}
|
|
228
257
|
|
|
229
258
|
.floating-label-textarea {
|
|
230
|
-
@apply pointer-events-none absolute left-0 top-1 text-
|
|
259
|
+
@apply pointer-events-none absolute left-0 top-1 text-neutralDark text-xs font-medium px-2.5 transition-all duration-200 peer-focus:top-1 peer-focus:text-xs peer-placeholder-shown:text-sm peer-placeholder-shown:top-2.5 peer-focus:translate-none peer-focus:text-primary;
|
|
231
260
|
}
|
|
232
261
|
}
|