diff --git a/apollo.config.js b/apollo.config.js index 15cf81dbab..5e55dc7407 100644 --- a/apollo.config.js +++ b/apollo.config.js @@ -9,6 +9,6 @@ module.exports = { localSchemaFile: path.join(__dirname, 'packages/graphql/schemas/schema.graphql'), }, tagName: 'gql', - includes: [path.join(__dirname, 'packages/launchpad/src/**/*.vue')], + includes: [path.join(__dirname, 'packages/{launchpad,app}/src/**/*.vue')], }, } diff --git a/packages/app/.windicss/icon-color-plugins.ts b/packages/app/.windicss/icon-color-plugins.ts deleted file mode 100644 index 883152ff4c..0000000000 --- a/packages/app/.windicss/icon-color-plugins.ts +++ /dev/null @@ -1,107 +0,0 @@ -/** - * This package adds support for targeting - * light vs dark classes in duotone icons. - * - * It works by adding utility classes and specific selectors - */ - -import createPlugin from 'windicss/plugin' -import { reduce, kebabCase, isObject } from 'lodash' -import Colors from 'windicss/colors' - -interface RuleConfig { - name: string - theme?: (key: string) => string - weight?: string - color?: string -} - -const makeRuleForClass = ({ name, theme, weight, color }: RuleConfig) => { - const resolvedColor = color ? color : weight ? theme?.(`colors.${name}.${weight}`) : theme?.(`colors.${name}`) - let [lightKey, darkKey] = [`.icon-light-${name}`, `.icon-dark-${name}`] - - // transparent, black, and white - if (weight) { - lightKey += `-${weight}` - darkKey += `-${weight}` - } - - return { - // When we're targeting an svg with icon-light-red-500 - // only attach the fill and stroke for those same icons - // and vice versa for icon-dark - [lightKey]: { - '> *[fill].icon-light': { - fill: resolvedColor, - }, - '> *[stroke].icon-light': { - stroke: resolvedColor, - }, - '> *[fill][stroke].icon-light-fill': { - fill: resolvedColor, - }, - }, - [darkKey]: { - '> *[fill].icon-dark-fill': { - fill: resolvedColor, - }, - '> *[fill].icon-dark': { - fill: resolvedColor, - }, - '> *[stroke].icon-dark': { - stroke: resolvedColor, - }, - '> *[fill][stroke].icon-dark-stroke': { - stroke: resolvedColor, - }, - }, - } -} - -function addIconUtilityClasses (theme) { - return reduce(Colors, (acc, variants, colorName) => { - // lightGray => light-gray - const name = kebabCase(colorName) - - // Collect the classes we're going to add to the windicss class registry - let additionalClasses = {} - - // There are both nested and not-nested colors (e.g. black, white) - if (isObject(variants)) { - // multiple levels of colors - additionalClasses = reduce(variants, (variantAcc, _, weight) => { - const rules = makeRuleForClass({ name, theme, weight }) - - return { ...variantAcc, ...rules } - }, {}) - } else { - // single values like black, white - additionalClasses = makeRuleForClass({ name, theme }) - } - - // Output is an object where each new class is a key - // And the selectors and values affected are values - /** - * { - * `.icon-light-green-500`: { - * '> *[stroke].icon-light': { - * stroke: resolvedColor - * }, - * '> *[fill].icon-light': { - * fill: resolvedColor - * } - * } - * } - */ - return { ...acc, ...additionalClasses } - }, { - - // These technically aren't under "colors" - ...makeRuleForClass({ name: 'transparent', color: 'transparent' }), - ...makeRuleForClass({ name: 'current', color: 'currentColor' }), - }) -} - -export const IconDuotoneColorsPlugin = createPlugin(({ theme, addUtilities }) => { - addUtilities(addIconUtilityClasses(theme)) -}) diff --git a/packages/app/.windicss/safelist.ts b/packages/app/.windicss/safelist.ts deleted file mode 100644 index 8e76023c02..0000000000 --- a/packages/app/.windicss/safelist.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * WindiCSS will strip out any styles that aren't used. - * We do a lot of dynamic stuff, and we're not too concerned - * ith bundle size, so this is a pretty greedy list - */ -import Colors from 'windicss/colors' -import { map, reduce, kebabCase, isObject } from 'lodash' - -export const safelist = reduce(Colors, (acc, variants, colorName) => { - const name = kebabCase(colorName) - - const classesForColor = map(variants, (_: string, k: string) => { - const classes = `before:bg-${name} - before:text-${name} - bg-${name} - text-${name} - ` - - if (isObject(variants)) { - // weighted colors - return classes.split(' ').map((selector) => `${selector}-${k}`) - } - - // else, black + white - return classes - }) - - return `${acc} ${classesForColor.join(' ')}` -}, '') diff --git a/packages/app/cypress.json b/packages/app/cypress.json index e8f8834a5f..e8db560fab 100644 --- a/packages/app/cypress.json +++ b/packages/app/cypress.json @@ -9,7 +9,7 @@ "openMode": 0 }, "nodeVersion": "system", - "testFiles": "**/*.spec.{js,ts,tsx,jsx}", + "testFiles": "**/*.spec.{j,ts,tsx,jsx}", "reporter": "../../node_modules/cypress-multi-reporters/index.js", "reporterOptions": { "configFile": "../../mocha-reporter-config.json" diff --git a/packages/app/cypress/support/fixtures.ts b/packages/app/cypress/support/fixtures.ts new file mode 100644 index 0000000000..d69550a478 --- /dev/null +++ b/packages/app/cypress/support/fixtures.ts @@ -0,0 +1,152 @@ +// @ts-nocheck +// @ts-ignore +import * as JustMyLuck from 'just-my-luck' +import faker from 'faker' +import { template, keys, reduce, templateSettings } from 'lodash' +import combineProperties from 'combine-properties' + +templateSettings.interpolate = /{{([\s\S]+?)}}/g + +let jml +const setupSeeds = () => { + const seed = 2 + + faker.seed(seed) + jml = new JustMyLuck(JustMyLuck.MersenneTwister(seed)) +} + +setupSeeds() + +beforeEach(() => setupSeeds) + +/** + * Component Naming Fixtures + */ +export const modifiers = [ + 'Async', + 'Dynamic', + 'Static', + 'Virtual', + 'Lazy', +] + +export const domainModels = [ + 'Person', + 'Product', + 'Spec', + 'Settings', + 'Account', + 'Login', + 'Logout', + 'Launchpad', + 'Wizard', +] + +export const componentNames = [ + 'List', + 'Table', + 'Header', + 'Footer', + 'Button', + 'Cell', + 'Row', + 'Skeleton', + 'Loader', + 'Layout', +] + +export const specPattern = ['.spec', '_spec'] + +export const fileExtension = ['.tsx', '.jsx', '.ts', '.js'] + +export const directories = { + rootDedicated: template('tests'), + rootSrc: template('src'), + monorepo: template('packages/{{component}}/test'), + jestRoot: template('__test__'), + jestNestedLib: template('lib/{{component}}{{component2}}/__test__'), + dedicatedNested: template('lib/{{component}}/test'), + jestNested: template('src/{{component}}/__test__'), + componentsNested: template('src/components/{{component}}'), + componentsFlat: template('src/{{component}}'), + viewsFlat: template('src/views'), + frontendFlat: template('frontend'), + frontendComponentsFlat: template('frontend/components'), +} + +const nameTemplates = { + // Business Logic Components + longDomain: template(`{{prefix}}{{modifier}}{{domain}}{{component}}`), + longDomain2: template(`{{prefix}}{{domain}}{{component}}{{component2}}`), + + // App Components + page1: template(`{{domain}}Page`), + layout: template(`{{domain}}Layout`), + + presentationalShort: template(`Base{{component}}`), + presentationalLong: template(`Base{{component}}{{component2}}`), + medium1: template(`{{prefix}}{{modifier}}{{component}}`), + medium2: template(`{{prefix}}{{component}}{{component2}}`), + short: template(`{{prefix}}{{component}}`), +} + +const prefixes = ['I', 'V', 'Cy', null] + +export const componentNameGenerator = (options: { template: any, omit: any, overrides: any } = { template: nameTemplates.medium1, omit: [], overrides: {} }) => { + const withoutValues = reduce(options.omit, (acc, v) => { + acc[v] = null + + return acc + }, {}) + + const components = jml.pickCombination(componentNames, 2) + const defaultOptions = { + modifier: jml.pick(modifiers), + domain: jml.pick(domainModels), + prefix: jml.pick(prefixes), + component: components[0], + component2: components[1], + } + + return options.template({ + ...defaultOptions, + ...withoutValues, + ...options.overrides, + }) +} + +const allRandomComponents = combineProperties({ + domain: domainModels, + modifier: modifiers, + prefix: prefixes, + component: componentNames, + component2: componentNames, + fileExtension, + specPattern, + directory: keys(directories), +}) + +export const randomComponents = (n = 200) => { + return faker.random.arrayElements(allRandomComponents, n).map((d) => { + const name = componentNameGenerator({ + overrides: d, + template: faker.random.objectElement(nameTemplates), + }) + + const gitFileState = jml.pick(['modified', 'unmodified', 'added', 'deleted']) + + return { + componentName: name, + relativePath: directories[d.directory](d), + specExtension: d.specPattern, + fileExtension: d.fileExtension, + name: `${name}${d.specPattern}${d.fileExtension}`, + id: faker.datatype.uuid(), + gitInfo: { + comitter: gitFileState ? faker.internet.userName() : undefined, + timeAgo: gitFileState ? faker.datatype.datetime() : undefined, + fileState: gitFileState, + }, + } + }, n) +} diff --git a/packages/app/package.json b/packages/app/package.json index 5ee543dc09..997948a64f 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -28,6 +28,7 @@ "@intlify/vite-plugin-vue-i18n": "2.4.0", "@packages/frontend-shared": "0.0.0-development", "@testing-library/cypress": "8.0.0", + "@types/faker": "5.5.8", "@urql/core": "2.3.1", "@urql/vue": "0.4.3", "@vitejs/plugin-vue": "1.2.4", @@ -36,11 +37,14 @@ "@windicss/plugin-interaction-variants": "1.0.0", "bluebird": "3.5.3", "classnames": "2.3.1", + "combine-properties": "0.1.0", "concurrently": "^6.2.0", "cross-env": "6.0.3", + "faker": "5.5.3", "graphql": "^15.5.1", "graphql-tag": "^2.12.5", "javascript-time-ago": "2.3.8", + "just-my-luck": "3.0.0", "prismjs": "1.24.0", "rimraf": "3.0.2", "rollup-plugin-polyfill-node": "^0.7.0", @@ -55,7 +59,7 @@ "vite-plugin-windicss": "1.2.4", "vite-svg-loader": "2.1.1", "vue": "3.2.6", - "vue-i18n": "9.2.0-beta.1", + "vue-i18n": "9.2.0-beta.7", "vue-prism-component": "2.0.0", "vue-prism-editor": "^2.0.0-alpha.2", "vue-router": "4", diff --git a/packages/app/src/Foo.spec.tsx b/packages/app/src/Foo.spec.tsx index 07a4acd27f..db03e292aa 100644 --- a/packages/app/src/Foo.spec.tsx +++ b/packages/app/src/Foo.spec.tsx @@ -4,6 +4,9 @@ import Foo from './Foo.vue' describe('Foo', () => { it('renders something', () => { cy.mountFragment(FooFragmentDoc, { + onResult: (ctx) => { + return ctx + }, render: (gqlVal) => { return }, diff --git a/packages/app/src/assets/icons/chevron-down-double_x16.svg b/packages/app/src/assets/icons/chevron-down-double_x16.svg new file mode 100644 index 0000000000..eb77f6cf59 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-down-double_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-down-large_x16.svg b/packages/app/src/assets/icons/chevron-down-large_x16.svg new file mode 100644 index 0000000000..73aad905a6 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-down-large_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-down-small_x16.svg b/packages/app/src/assets/icons/chevron-down-small_x16.svg new file mode 100644 index 0000000000..88536c7cbb --- /dev/null +++ b/packages/app/src/assets/icons/chevron-down-small_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-down-small_x8.svg b/packages/app/src/assets/icons/chevron-down-small_x8.svg new file mode 100644 index 0000000000..238bd71869 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-down-small_x8.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-left-double_x16.svg b/packages/app/src/assets/icons/chevron-left-double_x16.svg new file mode 100644 index 0000000000..fff033acbc --- /dev/null +++ b/packages/app/src/assets/icons/chevron-left-double_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-left-large_x16.svg b/packages/app/src/assets/icons/chevron-left-large_x16.svg new file mode 100644 index 0000000000..fb31ccb93e --- /dev/null +++ b/packages/app/src/assets/icons/chevron-left-large_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-left-small_x16.svg b/packages/app/src/assets/icons/chevron-left-small_x16.svg new file mode 100644 index 0000000000..6d796c8bcd --- /dev/null +++ b/packages/app/src/assets/icons/chevron-left-small_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-left-small_x8.svg b/packages/app/src/assets/icons/chevron-left-small_x8.svg new file mode 100644 index 0000000000..e240665dd6 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-left-small_x8.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-right-double_x16.svg b/packages/app/src/assets/icons/chevron-right-double_x16.svg new file mode 100644 index 0000000000..b22fa8b8d3 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-right-double_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-right-large_x16.svg b/packages/app/src/assets/icons/chevron-right-large_x16.svg new file mode 100644 index 0000000000..3baca53747 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-right-large_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-right-small_x16.svg b/packages/app/src/assets/icons/chevron-right-small_x16.svg new file mode 100644 index 0000000000..0c2d8736e7 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-right-small_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-right-small_x8.svg b/packages/app/src/assets/icons/chevron-right-small_x8.svg new file mode 100644 index 0000000000..2ebfeb4731 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-right-small_x8.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-up-double_x16.svg b/packages/app/src/assets/icons/chevron-up-double_x16.svg new file mode 100644 index 0000000000..76b2ea66f3 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-up-double_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-up-large_x16.svg b/packages/app/src/assets/icons/chevron-up-large_x16.svg new file mode 100644 index 0000000000..651ffc455a --- /dev/null +++ b/packages/app/src/assets/icons/chevron-up-large_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-up-small_x16.svg b/packages/app/src/assets/icons/chevron-up-small_x16.svg new file mode 100644 index 0000000000..09fe4ae6a3 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-up-small_x16.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/chevron-up-small_x8.svg b/packages/app/src/assets/icons/chevron-up-small_x8.svg new file mode 100644 index 0000000000..9ab86cba68 --- /dev/null +++ b/packages/app/src/assets/icons/chevron-up-small_x8.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/document-added_x16.svg b/packages/app/src/assets/icons/document-added_x16.svg new file mode 100644 index 0000000000..9d22a1c214 --- /dev/null +++ b/packages/app/src/assets/icons/document-added_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-blank_x16.svg b/packages/app/src/assets/icons/document-blank_x16.svg new file mode 100644 index 0000000000..4c70f19a6c --- /dev/null +++ b/packages/app/src/assets/icons/document-blank_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-blank_x24.svg b/packages/app/src/assets/icons/document-blank_x24.svg new file mode 100644 index 0000000000..60870616d5 --- /dev/null +++ b/packages/app/src/assets/icons/document-blank_x24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-blank_x48.svg b/packages/app/src/assets/icons/document-blank_x48.svg new file mode 100644 index 0000000000..55e8a4ecf2 --- /dev/null +++ b/packages/app/src/assets/icons/document-blank_x48.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-deleted_x16.svg b/packages/app/src/assets/icons/document-deleted_x16.svg new file mode 100644 index 0000000000..1d6a9c6f10 --- /dev/null +++ b/packages/app/src/assets/icons/document-deleted_x16.svg @@ -0,0 +1,7 @@ + + + diff --git a/packages/app/src/assets/icons/document-download_x16.svg b/packages/app/src/assets/icons/document-download_x16.svg new file mode 100644 index 0000000000..e796e43032 --- /dev/null +++ b/packages/app/src/assets/icons/document-download_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-download_x24.svg b/packages/app/src/assets/icons/document-download_x24.svg new file mode 100644 index 0000000000..67c46c1be9 --- /dev/null +++ b/packages/app/src/assets/icons/document-download_x24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-minus_x16.svg b/packages/app/src/assets/icons/document-minus_x16.svg new file mode 100644 index 0000000000..a7f21d3639 --- /dev/null +++ b/packages/app/src/assets/icons/document-minus_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-minus_x24.svg b/packages/app/src/assets/icons/document-minus_x24.svg new file mode 100644 index 0000000000..017597e1c2 --- /dev/null +++ b/packages/app/src/assets/icons/document-minus_x24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-modified_x16.svg b/packages/app/src/assets/icons/document-modified_x16.svg new file mode 100644 index 0000000000..b6121ca4b3 --- /dev/null +++ b/packages/app/src/assets/icons/document-modified_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-plus-minus_x16.svg b/packages/app/src/assets/icons/document-plus-minus_x16.svg new file mode 100644 index 0000000000..1fb411487e --- /dev/null +++ b/packages/app/src/assets/icons/document-plus-minus_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-plus-minus_x24.svg b/packages/app/src/assets/icons/document-plus-minus_x24.svg new file mode 100644 index 0000000000..b7c1ded711 --- /dev/null +++ b/packages/app/src/assets/icons/document-plus-minus_x24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-plus_x16.svg b/packages/app/src/assets/icons/document-plus_x16.svg new file mode 100644 index 0000000000..acff88169a --- /dev/null +++ b/packages/app/src/assets/icons/document-plus_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-plus_x24.svg b/packages/app/src/assets/icons/document-plus_x24.svg new file mode 100644 index 0000000000..d5d5144727 --- /dev/null +++ b/packages/app/src/assets/icons/document-plus_x24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-script_x24.svg b/packages/app/src/assets/icons/document-script_x24.svg new file mode 100644 index 0000000000..22466f7a21 --- /dev/null +++ b/packages/app/src/assets/icons/document-script_x24.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/app/src/assets/icons/document-sheet_x24.svg b/packages/app/src/assets/icons/document-sheet_x24.svg new file mode 100644 index 0000000000..1832049770 --- /dev/null +++ b/packages/app/src/assets/icons/document-sheet_x24.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/src/assets/icons/document-star_x16.svg b/packages/app/src/assets/icons/document-star_x16.svg new file mode 100644 index 0000000000..ee921c4635 --- /dev/null +++ b/packages/app/src/assets/icons/document-star_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/document-star_x24.svg b/packages/app/src/assets/icons/document-star_x24.svg new file mode 100644 index 0000000000..1278cdac00 --- /dev/null +++ b/packages/app/src/assets/icons/document-star_x24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/icons/magnifying-glass_x16.svg b/packages/app/src/assets/icons/magnifying-glass_x16.svg new file mode 100644 index 0000000000..267d5df531 --- /dev/null +++ b/packages/app/src/assets/icons/magnifying-glass_x16.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/assets/logos/github.svg b/packages/app/src/assets/logos/github.svg new file mode 100644 index 0000000000..b37b0e82ef --- /dev/null +++ b/packages/app/src/assets/logos/github.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/components/button/Button.vue b/packages/app/src/components/button/Button.vue new file mode 100644 index 0000000000..d7c02d2854 --- /dev/null +++ b/packages/app/src/components/button/Button.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/packages/app/src/components/input/Input.vue b/packages/app/src/components/input/Input.vue new file mode 100644 index 0000000000..de31c5c53f --- /dev/null +++ b/packages/app/src/components/input/Input.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/packages/app/src/composables/index.ts b/packages/app/src/composables/index.ts new file mode 100644 index 0000000000..6fa55aa5c5 --- /dev/null +++ b/packages/app/src/composables/index.ts @@ -0,0 +1,24 @@ +import { computed } from 'vue' +import { useI18n as _useI18n } from 'vue-i18n' +import type { MessageSchema } from '@packages/frontend-shared/src/locales/schema' + +/** + * This snippet comes from Thorsten Lünborg and is explained in this blog post https://www.vuemastery.com/blog/vue-3-data-down-events-up/ + * @example const localValue = useModelWrapper(props, emit, 'modelValue') + */ +export function useModelWrapper ( + props: T, + emit: (event: N, ...args: any[]) => void, + name = 'modelValue', +) { + return computed({ + get: () => props[name], + set: (value: any) => { + emit(`update:${name}` as any, value) + }, + }) +} + +export function useI18n () { + return _useI18n<{ message: MessageSchema }>({ useScope: 'global' }) +} diff --git a/packages/app/src/locales/en-US.json b/packages/app/src/locales/en-US.json new file mode 100644 index 0000000000..f307f8d610 --- /dev/null +++ b/packages/app/src/locales/en-US.json @@ -0,0 +1,30 @@ +{ + "links": { + "learnMore": "Learn more." + }, + "components": { + "modal": { + "dismiss": "Dismiss" + }, + "select": { + "placeholder": "Choose an option..." + } + }, + "clipboard": { + "copy": "Copy", + "copied": "Copied" + }, + "file": { + "edit": "Edit" + }, + "status": { + "enabled": "Enabled", + "disabled": "Disabled" + }, + "specsPage": { + "searchPlaceholder": "Search Specs", + "newSpecButton": "New Spec", + "componentSpecsHeader": "Component Specs", + "gitStatusHeader": "Git Status" + } +} diff --git a/packages/app/src/navigation/SidebarNavigation.vue b/packages/app/src/navigation/SidebarNavigation.vue index 1a4ed6c95b..834bab8525 100644 --- a/packages/app/src/navigation/SidebarNavigation.vue +++ b/packages/app/src/navigation/SidebarNavigation.vue @@ -1,17 +1,17 @@