@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.
Files changed (43) hide show
  1. package/.env.example +11 -1
  2. package/CHANGELOG.md +54 -0
  3. package/LICENSE +28 -0
  4. package/README.md +36 -47
  5. package/app/app.config.ts +56 -138
  6. package/app/app.vue +16 -3
  7. package/app/components/Connect/BCGovLogo.vue +4 -4
  8. package/app/components/Connect/Breadcrumb.vue +61 -0
  9. package/app/components/Connect/Footer.vue +104 -0
  10. package/app/components/Connect/Header/LogoHomeLink.vue +4 -4
  11. package/app/components/Connect/Header/WhatsNew.vue +36 -0
  12. package/app/components/Connect/Header/Wrapper.vue +3 -3
  13. package/app/components/Connect/Header/index.vue +16 -1
  14. package/app/components/Connect/I18n/Helper.vue +24 -0
  15. package/app/components/Connect/Input.vue +32 -0
  16. package/app/components/Connect/LocaleSelect.vue +1 -1
  17. package/app/components/Connect/PageSection.vue +57 -0
  18. package/app/components/Connect/Slideover/WhatsNew.vue +61 -0
  19. package/app/components/Connect/Spinner.vue +94 -0
  20. package/app/components/Connect/SystemBanner.vue +50 -0
  21. package/app/components/Connect/Textarea.vue +30 -0
  22. package/app/composables/useConnectLaunchDarkly.ts +177 -0
  23. package/app/error.vue +53 -0
  24. package/app/interfaces/connect-breadcrumb.ts +5 -0
  25. package/app/interfaces/connect-whatsnew.ts +14 -0
  26. package/app/layouts/{default.vue → ConnectBase.vue} +3 -0
  27. package/app/plugins/launchdarkly.client.ts +9 -0
  28. package/app/plugins/maska.client.ts +10 -0
  29. package/app/plugins/sanitize.client.ts +13 -0
  30. package/app/plugins/whats-new.client.ts +45 -0
  31. package/app/spa-loading-template.html +61 -0
  32. package/app/types/base-app-config.d.ts +15 -0
  33. package/app/types/base-page-meta.d.ts +8 -0
  34. package/app/utils/appendUrlParam.ts +4 -0
  35. package/app/utils/parseSpecialCharacters.ts +25 -0
  36. package/app/utils/setBreadcrumbs.ts +5 -0
  37. package/i18n/locales/en-CA.ts +53 -84
  38. package/i18n/locales/fr-CA.ts +33 -30
  39. package/modules/assets/index.ts +1 -1
  40. package/modules/assets/runtime/assets/core-tw.css +61 -32
  41. package/nuxt.config.ts +80 -1
  42. package/package.json +20 -9
  43. 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,9 @@
1
+ // import { LDPlugin } from 'launchdarkly-vue-client-sdk'
2
+
3
+ // export default defineNuxtPlugin({
4
+ // name: 'connect-launchdarkly-plugin',
5
+ // parallel: true,
6
+ // setup(nuxtApp) {
7
+ // nuxtApp.vueApp.use(LDPlugin, { deferInitialization: true })
8
+ // }
9
+ // })
@@ -0,0 +1,10 @@
1
+ // https://beholdr.github.io/maska/v3/#/vue
2
+ import { vMaska } from 'maska/vue'
3
+
4
+ export default defineNuxtPlugin({
5
+ name: 'core-maska-plugin',
6
+ parallel: true,
7
+ setup(nuxtApp) {
8
+ nuxtApp.vueApp.directive('maska', vMaska)
9
+ }
10
+ })
@@ -0,0 +1,13 @@
1
+ import DOMPurify from 'dompurify'
2
+
3
+ export default defineNuxtPlugin({
4
+ name: 'connect-sanitize-plugin',
5
+ parallel: true,
6
+ setup() {
7
+ return {
8
+ provide: {
9
+ sanitize: DOMPurify.sanitize
10
+ }
11
+ }
12
+ }
13
+ })
@@ -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,15 @@
1
+ declare module '@nuxt/schema' {
2
+ interface AppConfigInput {
3
+ connect?: {
4
+ header?: {
5
+ localeSelect?: boolean
6
+ whatsNew?: boolean
7
+ }
8
+ footer?: {
9
+ versions?: string[]
10
+ }
11
+ }
12
+ }
13
+ }
14
+
15
+ export {}
@@ -0,0 +1,8 @@
1
+ declare module '#app' {
2
+ interface PageMeta {
3
+ breadcrumbs?: ConnectBreadcrumb[]
4
+ hideBreadcrumbs?: boolean
5
+ }
6
+ }
7
+
8
+ export {}
@@ -0,0 +1,4 @@
1
+ export function appendUrlParam(url: string, key: string, value: string | number) {
2
+ const separator = url.includes('?') ? '&' : '?'
3
+ return `${url}${separator}${key}=${value}`
4
+ }
@@ -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
+ }
@@ -0,0 +1,5 @@
1
+ export function setBreadcrumbs(breadcrumbs: ConnectBreadcrumb[]) {
2
+ const route = useRoute()
3
+ // @ts-expect-error - Type instantiation is excessively deep and possibly infinite.
4
+ route.meta.breadcrumbs = breadcrumbs
5
+ }
@@ -1,95 +1,64 @@
1
- /* eslint-disable max-len */
2
1
  export default {
3
- btn: {
4
- appVersion: 'App Version',
5
- bcRegHome: 'BC Registries Home',
6
- createAccount: 'Create Account',
7
- editProfile: 'Edit Profile',
8
- logout: 'Log out',
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
- accountOptionsMenu: 'Account Options Menu',
18
- whatsNew: "What's New",
19
- mainMenu: 'Main menu',
20
- goHome: 'Go Home'
21
- },
22
- label: {
23
- accountSettings: 'Account Settings',
24
- bcRegOLServices: 'BC Registries and Online Services',
25
- switchAccount: 'Switch Account',
26
- selectLoginMethod: 'Select log in method',
27
- bcsc: 'BC Services Card',
28
- bceid: 'BCeID',
29
- idir: 'IDIR',
30
- whatsNewSlideover: "What's New at BC Registries"
31
- },
32
- notifications: {
33
- none: 'No Notifications',
34
- teamMemberApproval: '{count} team member requires approval to access this account. | {count} team members require approval to access this account.'
35
- },
36
- ConnectFooter: {
37
- navLabel: 'Useful Links', // <nav> aria-label
38
- home: 'Home',
39
- releaseNotes: 'Release Notes',
40
- fees: 'Fees',
41
- disclaimer: 'Disclaimer',
42
- privacy: 'Privacy',
43
- ally: 'Accessibility',
44
- copyright: 'Copyright',
45
- bcApp: 'A BC Online Application'
46
- },
47
- ConnectHeader: {
48
- title: 'Service BC Connect',
49
- logoBtnLabel: 'Home', // <img> link aria-label
50
- navLabel: 'Main Navigation', // <nav> aria-label
51
- homeLink: 'Home'
52
- },
53
- ConnectBCGovLogo: {
54
- alt: 'Government of British Columbia Logo' // <img> alt
55
- },
56
- ConnectLocaleSelect: {
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
- ConnectModalSessionExpiring: {
80
- title: 'Session Expiring Soon',
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
- i18nBold: {
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
  }
@@ -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: {
@@ -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
- @reference "tailwindcss";
2
- @reference "@nuxt/ui";
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-connect-error);
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
- --ui-radius: 0.25rem;
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-bcGovInput: 600px;
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-bcGovInput: inset 0 -2px 0 0px #1669bb;
30
-
31
- /* COLOURS */
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-gray-900;
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-connect-midGray;
245
+ @apply font-normal text-neutral;
217
246
  }
218
247
 
219
248
  td,
220
249
  th {
221
- @apply text-gray-900 text-sm;
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-1 text-gray-900 text-xs font-medium px-2.5 transition-all peer-focus:top-1 peer-focus:text-xs peer-placeholder-shown:text-sm peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:translate-none peer-focus:text-blue-500;
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-gray-900 text-xs font-medium px-2.5 transition-all 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-blue-500;
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
  }