From acb7cc057d81c23dd3b65c1757b7503e9a04df6f Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Fri, 7 Jun 2024 16:28:08 +0200 Subject: [PATCH 01/32] chore: refactor component-schemas into package --- .moon/workspace.yml | 1 + docs/site/lib/components.js | 10 ++- docs/site/moon.yml | 16 +++- .../public/schemas/token-types/color-set.json | 8 +- .../public/schemas/token-types/scale-set.json | 8 +- packages/component-schemas/index.js | 52 +++++++++++++ packages/component-schemas/moon.yml | 56 ++++++++++++++ packages/component-schemas/package.json | 26 +++++++ .../schemas/component.json | 0 .../schemas/components/action-bar.json | 0 .../schemas/components/action-button.json | 0 .../schemas/components/action-group.json | 0 .../schemas/components/alert-banner.json | 0 .../schemas/components/alert-dialog.json | 0 .../schemas/components/avatar.json | 0 .../schemas/components/badge.json | 0 .../schemas/components/body.json | 0 .../components/bottom-navigation-android.json | 0 .../schemas/components/breadcrumbs.json | 0 .../schemas/components/button-group.json | 0 .../schemas/components/button.json | 0 .../schemas/components/checkbox-group.json | 0 .../schemas/components/checkbox.json | 0 .../schemas/components/close-button.json | 0 .../schemas/components/code.json | 0 .../schemas/components/color-area.json | 0 .../schemas/components/color-loupe.json | 0 .../schemas/components/color-slider.json | 0 .../schemas/components/color-wheel.json | 0 .../schemas/components/combo-box.json | 0 .../schemas/components/contextual-help.json | 0 .../schemas/components/detail.json | 0 .../schemas/components/divider.json | 0 .../schemas/components/field-label.json | 0 .../schemas/components/heading.json | 0 .../schemas/components/help-text.json | 0 .../schemas/components/in-line-alert.json | 0 .../schemas/components/link.json | 0 .../schemas/components/menu.json | 0 .../schemas/components/meter.json | 0 .../schemas/components/picker.json | 0 .../schemas/components/popover.json | 0 .../schemas/components/progress-bar.json | 0 .../schemas/components/progress-circle.json | 0 .../schemas/components/radio-group.json | 0 .../schemas/components/rating.json | 0 .../schemas/components/scroll-zoom-bar.json | 0 .../schemas/components/side-navigation.json | 0 .../schemas/components/slider.json | 0 .../schemas/components/status-light.json | 0 .../schemas/components/swatch-group.json | 0 .../schemas/components/swatch.json | 0 .../schemas/components/switch.json | 0 .../schemas/components/tab-bar-ios.json | 0 .../schemas/components/tabs.json | 0 .../schemas/components/tag.json | 0 .../schemas/components/text-area.json | 0 .../schemas/components/text-field.json | 0 .../schemas/components/toast.json | 0 .../schemas/components/tooltip.json | 0 .../schemas/components/tray.json | 0 .../schemas/components/tree-view.json | 0 .../schemas/types/component-size.json | 0 .../schemas/types/hex-color.json | 0 .../types/typography-classification.json | 0 .../schemas/types/typography-script.json | 0 .../schemas/types/workflow-icon.json | 0 .../test/componentSchemaValidator.test.js | 0 packages/tokens/test/schemaValidator.test.js | 74 ------------------- 69 files changed, 170 insertions(+), 81 deletions(-) create mode 100644 packages/component-schemas/index.js create mode 100644 packages/component-schemas/moon.yml create mode 100644 packages/component-schemas/package.json rename packages/{tokens => component-schemas}/schemas/component.json (100%) rename packages/{tokens => component-schemas}/schemas/components/action-bar.json (100%) rename packages/{tokens => component-schemas}/schemas/components/action-button.json (100%) rename packages/{tokens => component-schemas}/schemas/components/action-group.json (100%) rename packages/{tokens => component-schemas}/schemas/components/alert-banner.json (100%) rename packages/{tokens => component-schemas}/schemas/components/alert-dialog.json (100%) rename packages/{tokens => component-schemas}/schemas/components/avatar.json (100%) rename packages/{tokens => component-schemas}/schemas/components/badge.json (100%) rename packages/{tokens => component-schemas}/schemas/components/body.json (100%) rename packages/{tokens => component-schemas}/schemas/components/bottom-navigation-android.json (100%) rename packages/{tokens => component-schemas}/schemas/components/breadcrumbs.json (100%) rename packages/{tokens => component-schemas}/schemas/components/button-group.json (100%) rename packages/{tokens => component-schemas}/schemas/components/button.json (100%) rename packages/{tokens => component-schemas}/schemas/components/checkbox-group.json (100%) rename packages/{tokens => component-schemas}/schemas/components/checkbox.json (100%) rename packages/{tokens => component-schemas}/schemas/components/close-button.json (100%) rename packages/{tokens => component-schemas}/schemas/components/code.json (100%) rename packages/{tokens => component-schemas}/schemas/components/color-area.json (100%) rename packages/{tokens => component-schemas}/schemas/components/color-loupe.json (100%) rename packages/{tokens => component-schemas}/schemas/components/color-slider.json (100%) rename packages/{tokens => component-schemas}/schemas/components/color-wheel.json (100%) rename packages/{tokens => component-schemas}/schemas/components/combo-box.json (100%) rename packages/{tokens => component-schemas}/schemas/components/contextual-help.json (100%) rename packages/{tokens => component-schemas}/schemas/components/detail.json (100%) rename packages/{tokens => component-schemas}/schemas/components/divider.json (100%) rename packages/{tokens => component-schemas}/schemas/components/field-label.json (100%) rename packages/{tokens => component-schemas}/schemas/components/heading.json (100%) rename packages/{tokens => component-schemas}/schemas/components/help-text.json (100%) rename packages/{tokens => component-schemas}/schemas/components/in-line-alert.json (100%) rename packages/{tokens => component-schemas}/schemas/components/link.json (100%) rename packages/{tokens => component-schemas}/schemas/components/menu.json (100%) rename packages/{tokens => component-schemas}/schemas/components/meter.json (100%) rename packages/{tokens => component-schemas}/schemas/components/picker.json (100%) rename packages/{tokens => component-schemas}/schemas/components/popover.json (100%) rename packages/{tokens => component-schemas}/schemas/components/progress-bar.json (100%) rename packages/{tokens => component-schemas}/schemas/components/progress-circle.json (100%) rename packages/{tokens => component-schemas}/schemas/components/radio-group.json (100%) rename packages/{tokens => component-schemas}/schemas/components/rating.json (100%) rename packages/{tokens => component-schemas}/schemas/components/scroll-zoom-bar.json (100%) rename packages/{tokens => component-schemas}/schemas/components/side-navigation.json (100%) rename packages/{tokens => component-schemas}/schemas/components/slider.json (100%) rename packages/{tokens => component-schemas}/schemas/components/status-light.json (100%) rename packages/{tokens => component-schemas}/schemas/components/swatch-group.json (100%) rename packages/{tokens => component-schemas}/schemas/components/swatch.json (100%) rename packages/{tokens => component-schemas}/schemas/components/switch.json (100%) rename packages/{tokens => component-schemas}/schemas/components/tab-bar-ios.json (100%) rename packages/{tokens => component-schemas}/schemas/components/tabs.json (100%) rename packages/{tokens => component-schemas}/schemas/components/tag.json (100%) rename packages/{tokens => component-schemas}/schemas/components/text-area.json (100%) rename packages/{tokens => component-schemas}/schemas/components/text-field.json (100%) rename packages/{tokens => component-schemas}/schemas/components/toast.json (100%) rename packages/{tokens => component-schemas}/schemas/components/tooltip.json (100%) rename packages/{tokens => component-schemas}/schemas/components/tray.json (100%) rename packages/{tokens => component-schemas}/schemas/components/tree-view.json (100%) rename packages/{tokens => component-schemas}/schemas/types/component-size.json (100%) rename packages/{tokens => component-schemas}/schemas/types/hex-color.json (100%) rename packages/{tokens => component-schemas}/schemas/types/typography-classification.json (100%) rename packages/{tokens => component-schemas}/schemas/types/typography-script.json (100%) rename packages/{tokens => component-schemas}/schemas/types/workflow-icon.json (100%) rename packages/{tokens => component-schemas}/test/componentSchemaValidator.test.js (100%) delete mode 100644 packages/tokens/test/schemaValidator.test.js diff --git a/.moon/workspace.yml b/.moon/workspace.yml index df86a896..23e3d764 100644 --- a/.moon/workspace.yml +++ b/.moon/workspace.yml @@ -2,6 +2,7 @@ $schema: "https://moonrepo.dev/schemas/workspace.json" projects: tokens: "packages/tokens" + componentSchemas: "packages/component-schemas" visualizer: "docs/visualizer" site: "docs/site" root: "." diff --git a/docs/site/lib/components.js b/docs/site/lib/components.js index f4c22447..05b36c1e 100644 --- a/docs/site/lib/components.js +++ b/docs/site/lib/components.js @@ -101,8 +101,16 @@ export async function getAllComponentSlugs() { } export async function getComponentData(slug) { + // not sure, if this should use the public/schemas folder, like getAllComponentSlugs() const schemaDir = path.resolve( - path.join(process.cwd(), "..", "..", "packages", "tokens", "schemas"), + path.join( + process.cwd(), + "..", + "..", + "packages", + "component-schemas", + "schemas", + ), ); const file = await readJSON( path.join(schemaDir, "components", `${slug}.json`), diff --git a/docs/site/moon.yml b/docs/site/moon.yml index 7622c353..495942b7 100644 --- a/docs/site/moon.yml +++ b/docs/site/moon.yml @@ -16,7 +16,18 @@ fileGroups: target: - "/site/[!visualizer]" tasks: - copySchema: + copyComponentSchema: + command: + - cp + - -r + - ../../packages/component-schemas/schemas + - public/ + platform: system + inputs: + - /packages/component-schemas/schemas/**/*.json + outputs: + - public/schemas + copyTokenTypeSchema: command: - cp - -r @@ -33,7 +44,8 @@ tasks: - build platform: node deps: - - ~:copySchema + - ~:copyComponentSchema + - ~:copyTokenTypeSchema outputs: - "/site/" clean: diff --git a/docs/site/public/schemas/token-types/color-set.json b/docs/site/public/schemas/token-types/color-set.json index 64b88313..e1d44708 100644 --- a/docs/site/public/schemas/token-types/color-set.json +++ b/docs/site/public/schemas/token-types/color-set.json @@ -73,7 +73,11 @@ "private": {}, "deprecated": {}, "deprecated_comment": {}, - "uuid": {} + "uuid": { + "type": "string", + "pattern": "^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", + "format": "uuid" + } }, - "required": ["sets"] + "required": ["sets", "uuid"] } diff --git a/docs/site/public/schemas/token-types/scale-set.json b/docs/site/public/schemas/token-types/scale-set.json index fb5ef0ea..00efff6a 100644 --- a/docs/site/public/schemas/token-types/scale-set.json +++ b/docs/site/public/schemas/token-types/scale-set.json @@ -49,7 +49,11 @@ "private": {}, "deprecated": {}, "deprecated_comment": {}, - "uuid": {} + "uuid": { + "type": "string", + "pattern": "^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$", + "format": "uuid" + } }, - "required": ["sets"] + "required": ["sets", "uuid"] } diff --git a/packages/component-schemas/index.js b/packages/component-schemas/index.js new file mode 100644 index 00000000..435450d9 --- /dev/null +++ b/packages/component-schemas/index.js @@ -0,0 +1,52 @@ +/* +Copyright 2024 Adobe. All rights reserved. +This file is licensed to you under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. You may obtain a copy +of the License at http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under +the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS +OF ANY KIND, either express or implied. See the License for the specific language +governing permissions and limitations under the License. +*/ + +import { glob } from "glob"; + +import { resolve } from "path"; +import { readFile } from "fs/promises"; +import * as url from "url"; +import { writeFile } from "fs/promises"; +import { format } from "prettier"; + +const readJson = async (fileName) => + JSON.parse(await readFile(fileName, "utf8")); + +const writeJson = async (fileName, jsonData) => { + await writeFile( + fileName, + await format(JSON.stringify(jsonData), { parser: "json-stringify" }), + ); +}; + +const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); + +export const schemaFileNames = await glob( + `${resolve(__dirname, "./schemas")}/**/*.json`, +); + +export const getFile = async (schemaFileName) => + await readJson(resolve(__dirname, "src", tokenFileName)); + +export const getAllSchemas = async () => { + return await Promise.all(schemaFileNames.map(getFileTokens)).then( + (tokenFileDataAr) => { + return tokenFileDataAr.reduce( + (tokenDataAcc, tokenFileData) => ({ + ...tokenDataAcc, + ...tokenFileData, + }), + {}, + ); + }, + ); +}; diff --git a/packages/component-schemas/moon.yml b/packages/component-schemas/moon.yml new file mode 100644 index 00000000..28277f6e --- /dev/null +++ b/packages/component-schemas/moon.yml @@ -0,0 +1,56 @@ +# Copyright 2024 Adobe. All rights reserved. +# This file is licensed to you under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. You may obtain a copy +# of the License at http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software distributed under +# the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS +# OF ANY KIND, either express or implied. See the License for the specific language +# governing permissions and limitations under the License. +$schema: "https://moonrepo.dev/schemas/project.json" +type: library +fileGroups: + schemas: + - "schemas/**/*.{yaml,yml,json}" + tests: + - "test/**/*" +tasks: + build: + deps: + - ~:make + - ~:buildSchemas + buildSchemas: + command: + - cp + - -R + - schemas/ + - dist/v1 + platform: node + make: + command: + - mkdir + - -p + - dist/v1 + platform: node + clean: + command: + - rm + - -rf + - dist + platform: node + test: + command: + - pnpm + - ava + inputs: + - "@globs(schemas)" + - "@globs(tests)" + deps: + - ~:buildSchemas + platform: node + test-watch: + command: + - ava + - --watch + local: true + platform: node diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json new file mode 100644 index 00000000..ecebd2e8 --- /dev/null +++ b/packages/component-schemas/package.json @@ -0,0 +1,26 @@ +{ + "name": "spectrum-component-api-schemas", + "version": "1.0.0", + "description": "", + "type": "module", + "main": "index.js", + "scripts": {}, + "repository": { + "type": "git", + "url": "git+https://github.com/adobe/spectrum-tokens.git" + }, + "author": "Garth Braithwaite (https://garthdb.com/)", + "bugs": { + "url": "https://github.com/adobe/spectrum-tokens/issues" + }, + "publishConfig": { + "provenance": true + }, + "homepage": "https://github.com/adobe/spectrum-tokens/tree/main/packages/component-schemas#readme", + "license": "Apache-2.0", + "devDependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "glob": "^10.3.12" + } +} diff --git a/packages/tokens/schemas/component.json b/packages/component-schemas/schemas/component.json similarity index 100% rename from packages/tokens/schemas/component.json rename to packages/component-schemas/schemas/component.json diff --git a/packages/tokens/schemas/components/action-bar.json b/packages/component-schemas/schemas/components/action-bar.json similarity index 100% rename from packages/tokens/schemas/components/action-bar.json rename to packages/component-schemas/schemas/components/action-bar.json diff --git a/packages/tokens/schemas/components/action-button.json b/packages/component-schemas/schemas/components/action-button.json similarity index 100% rename from packages/tokens/schemas/components/action-button.json rename to packages/component-schemas/schemas/components/action-button.json diff --git a/packages/tokens/schemas/components/action-group.json b/packages/component-schemas/schemas/components/action-group.json similarity index 100% rename from packages/tokens/schemas/components/action-group.json rename to packages/component-schemas/schemas/components/action-group.json diff --git a/packages/tokens/schemas/components/alert-banner.json b/packages/component-schemas/schemas/components/alert-banner.json similarity index 100% rename from packages/tokens/schemas/components/alert-banner.json rename to packages/component-schemas/schemas/components/alert-banner.json diff --git a/packages/tokens/schemas/components/alert-dialog.json b/packages/component-schemas/schemas/components/alert-dialog.json similarity index 100% rename from packages/tokens/schemas/components/alert-dialog.json rename to packages/component-schemas/schemas/components/alert-dialog.json diff --git a/packages/tokens/schemas/components/avatar.json b/packages/component-schemas/schemas/components/avatar.json similarity index 100% rename from packages/tokens/schemas/components/avatar.json rename to packages/component-schemas/schemas/components/avatar.json diff --git a/packages/tokens/schemas/components/badge.json b/packages/component-schemas/schemas/components/badge.json similarity index 100% rename from packages/tokens/schemas/components/badge.json rename to packages/component-schemas/schemas/components/badge.json diff --git a/packages/tokens/schemas/components/body.json b/packages/component-schemas/schemas/components/body.json similarity index 100% rename from packages/tokens/schemas/components/body.json rename to packages/component-schemas/schemas/components/body.json diff --git a/packages/tokens/schemas/components/bottom-navigation-android.json b/packages/component-schemas/schemas/components/bottom-navigation-android.json similarity index 100% rename from packages/tokens/schemas/components/bottom-navigation-android.json rename to packages/component-schemas/schemas/components/bottom-navigation-android.json diff --git a/packages/tokens/schemas/components/breadcrumbs.json b/packages/component-schemas/schemas/components/breadcrumbs.json similarity index 100% rename from packages/tokens/schemas/components/breadcrumbs.json rename to packages/component-schemas/schemas/components/breadcrumbs.json diff --git a/packages/tokens/schemas/components/button-group.json b/packages/component-schemas/schemas/components/button-group.json similarity index 100% rename from packages/tokens/schemas/components/button-group.json rename to packages/component-schemas/schemas/components/button-group.json diff --git a/packages/tokens/schemas/components/button.json b/packages/component-schemas/schemas/components/button.json similarity index 100% rename from packages/tokens/schemas/components/button.json rename to packages/component-schemas/schemas/components/button.json diff --git a/packages/tokens/schemas/components/checkbox-group.json b/packages/component-schemas/schemas/components/checkbox-group.json similarity index 100% rename from packages/tokens/schemas/components/checkbox-group.json rename to packages/component-schemas/schemas/components/checkbox-group.json diff --git a/packages/tokens/schemas/components/checkbox.json b/packages/component-schemas/schemas/components/checkbox.json similarity index 100% rename from packages/tokens/schemas/components/checkbox.json rename to packages/component-schemas/schemas/components/checkbox.json diff --git a/packages/tokens/schemas/components/close-button.json b/packages/component-schemas/schemas/components/close-button.json similarity index 100% rename from packages/tokens/schemas/components/close-button.json rename to packages/component-schemas/schemas/components/close-button.json diff --git a/packages/tokens/schemas/components/code.json b/packages/component-schemas/schemas/components/code.json similarity index 100% rename from packages/tokens/schemas/components/code.json rename to packages/component-schemas/schemas/components/code.json diff --git a/packages/tokens/schemas/components/color-area.json b/packages/component-schemas/schemas/components/color-area.json similarity index 100% rename from packages/tokens/schemas/components/color-area.json rename to packages/component-schemas/schemas/components/color-area.json diff --git a/packages/tokens/schemas/components/color-loupe.json b/packages/component-schemas/schemas/components/color-loupe.json similarity index 100% rename from packages/tokens/schemas/components/color-loupe.json rename to packages/component-schemas/schemas/components/color-loupe.json diff --git a/packages/tokens/schemas/components/color-slider.json b/packages/component-schemas/schemas/components/color-slider.json similarity index 100% rename from packages/tokens/schemas/components/color-slider.json rename to packages/component-schemas/schemas/components/color-slider.json diff --git a/packages/tokens/schemas/components/color-wheel.json b/packages/component-schemas/schemas/components/color-wheel.json similarity index 100% rename from packages/tokens/schemas/components/color-wheel.json rename to packages/component-schemas/schemas/components/color-wheel.json diff --git a/packages/tokens/schemas/components/combo-box.json b/packages/component-schemas/schemas/components/combo-box.json similarity index 100% rename from packages/tokens/schemas/components/combo-box.json rename to packages/component-schemas/schemas/components/combo-box.json diff --git a/packages/tokens/schemas/components/contextual-help.json b/packages/component-schemas/schemas/components/contextual-help.json similarity index 100% rename from packages/tokens/schemas/components/contextual-help.json rename to packages/component-schemas/schemas/components/contextual-help.json diff --git a/packages/tokens/schemas/components/detail.json b/packages/component-schemas/schemas/components/detail.json similarity index 100% rename from packages/tokens/schemas/components/detail.json rename to packages/component-schemas/schemas/components/detail.json diff --git a/packages/tokens/schemas/components/divider.json b/packages/component-schemas/schemas/components/divider.json similarity index 100% rename from packages/tokens/schemas/components/divider.json rename to packages/component-schemas/schemas/components/divider.json diff --git a/packages/tokens/schemas/components/field-label.json b/packages/component-schemas/schemas/components/field-label.json similarity index 100% rename from packages/tokens/schemas/components/field-label.json rename to packages/component-schemas/schemas/components/field-label.json diff --git a/packages/tokens/schemas/components/heading.json b/packages/component-schemas/schemas/components/heading.json similarity index 100% rename from packages/tokens/schemas/components/heading.json rename to packages/component-schemas/schemas/components/heading.json diff --git a/packages/tokens/schemas/components/help-text.json b/packages/component-schemas/schemas/components/help-text.json similarity index 100% rename from packages/tokens/schemas/components/help-text.json rename to packages/component-schemas/schemas/components/help-text.json diff --git a/packages/tokens/schemas/components/in-line-alert.json b/packages/component-schemas/schemas/components/in-line-alert.json similarity index 100% rename from packages/tokens/schemas/components/in-line-alert.json rename to packages/component-schemas/schemas/components/in-line-alert.json diff --git a/packages/tokens/schemas/components/link.json b/packages/component-schemas/schemas/components/link.json similarity index 100% rename from packages/tokens/schemas/components/link.json rename to packages/component-schemas/schemas/components/link.json diff --git a/packages/tokens/schemas/components/menu.json b/packages/component-schemas/schemas/components/menu.json similarity index 100% rename from packages/tokens/schemas/components/menu.json rename to packages/component-schemas/schemas/components/menu.json diff --git a/packages/tokens/schemas/components/meter.json b/packages/component-schemas/schemas/components/meter.json similarity index 100% rename from packages/tokens/schemas/components/meter.json rename to packages/component-schemas/schemas/components/meter.json diff --git a/packages/tokens/schemas/components/picker.json b/packages/component-schemas/schemas/components/picker.json similarity index 100% rename from packages/tokens/schemas/components/picker.json rename to packages/component-schemas/schemas/components/picker.json diff --git a/packages/tokens/schemas/components/popover.json b/packages/component-schemas/schemas/components/popover.json similarity index 100% rename from packages/tokens/schemas/components/popover.json rename to packages/component-schemas/schemas/components/popover.json diff --git a/packages/tokens/schemas/components/progress-bar.json b/packages/component-schemas/schemas/components/progress-bar.json similarity index 100% rename from packages/tokens/schemas/components/progress-bar.json rename to packages/component-schemas/schemas/components/progress-bar.json diff --git a/packages/tokens/schemas/components/progress-circle.json b/packages/component-schemas/schemas/components/progress-circle.json similarity index 100% rename from packages/tokens/schemas/components/progress-circle.json rename to packages/component-schemas/schemas/components/progress-circle.json diff --git a/packages/tokens/schemas/components/radio-group.json b/packages/component-schemas/schemas/components/radio-group.json similarity index 100% rename from packages/tokens/schemas/components/radio-group.json rename to packages/component-schemas/schemas/components/radio-group.json diff --git a/packages/tokens/schemas/components/rating.json b/packages/component-schemas/schemas/components/rating.json similarity index 100% rename from packages/tokens/schemas/components/rating.json rename to packages/component-schemas/schemas/components/rating.json diff --git a/packages/tokens/schemas/components/scroll-zoom-bar.json b/packages/component-schemas/schemas/components/scroll-zoom-bar.json similarity index 100% rename from packages/tokens/schemas/components/scroll-zoom-bar.json rename to packages/component-schemas/schemas/components/scroll-zoom-bar.json diff --git a/packages/tokens/schemas/components/side-navigation.json b/packages/component-schemas/schemas/components/side-navigation.json similarity index 100% rename from packages/tokens/schemas/components/side-navigation.json rename to packages/component-schemas/schemas/components/side-navigation.json diff --git a/packages/tokens/schemas/components/slider.json b/packages/component-schemas/schemas/components/slider.json similarity index 100% rename from packages/tokens/schemas/components/slider.json rename to packages/component-schemas/schemas/components/slider.json diff --git a/packages/tokens/schemas/components/status-light.json b/packages/component-schemas/schemas/components/status-light.json similarity index 100% rename from packages/tokens/schemas/components/status-light.json rename to packages/component-schemas/schemas/components/status-light.json diff --git a/packages/tokens/schemas/components/swatch-group.json b/packages/component-schemas/schemas/components/swatch-group.json similarity index 100% rename from packages/tokens/schemas/components/swatch-group.json rename to packages/component-schemas/schemas/components/swatch-group.json diff --git a/packages/tokens/schemas/components/swatch.json b/packages/component-schemas/schemas/components/swatch.json similarity index 100% rename from packages/tokens/schemas/components/swatch.json rename to packages/component-schemas/schemas/components/swatch.json diff --git a/packages/tokens/schemas/components/switch.json b/packages/component-schemas/schemas/components/switch.json similarity index 100% rename from packages/tokens/schemas/components/switch.json rename to packages/component-schemas/schemas/components/switch.json diff --git a/packages/tokens/schemas/components/tab-bar-ios.json b/packages/component-schemas/schemas/components/tab-bar-ios.json similarity index 100% rename from packages/tokens/schemas/components/tab-bar-ios.json rename to packages/component-schemas/schemas/components/tab-bar-ios.json diff --git a/packages/tokens/schemas/components/tabs.json b/packages/component-schemas/schemas/components/tabs.json similarity index 100% rename from packages/tokens/schemas/components/tabs.json rename to packages/component-schemas/schemas/components/tabs.json diff --git a/packages/tokens/schemas/components/tag.json b/packages/component-schemas/schemas/components/tag.json similarity index 100% rename from packages/tokens/schemas/components/tag.json rename to packages/component-schemas/schemas/components/tag.json diff --git a/packages/tokens/schemas/components/text-area.json b/packages/component-schemas/schemas/components/text-area.json similarity index 100% rename from packages/tokens/schemas/components/text-area.json rename to packages/component-schemas/schemas/components/text-area.json diff --git a/packages/tokens/schemas/components/text-field.json b/packages/component-schemas/schemas/components/text-field.json similarity index 100% rename from packages/tokens/schemas/components/text-field.json rename to packages/component-schemas/schemas/components/text-field.json diff --git a/packages/tokens/schemas/components/toast.json b/packages/component-schemas/schemas/components/toast.json similarity index 100% rename from packages/tokens/schemas/components/toast.json rename to packages/component-schemas/schemas/components/toast.json diff --git a/packages/tokens/schemas/components/tooltip.json b/packages/component-schemas/schemas/components/tooltip.json similarity index 100% rename from packages/tokens/schemas/components/tooltip.json rename to packages/component-schemas/schemas/components/tooltip.json diff --git a/packages/tokens/schemas/components/tray.json b/packages/component-schemas/schemas/components/tray.json similarity index 100% rename from packages/tokens/schemas/components/tray.json rename to packages/component-schemas/schemas/components/tray.json diff --git a/packages/tokens/schemas/components/tree-view.json b/packages/component-schemas/schemas/components/tree-view.json similarity index 100% rename from packages/tokens/schemas/components/tree-view.json rename to packages/component-schemas/schemas/components/tree-view.json diff --git a/packages/tokens/schemas/types/component-size.json b/packages/component-schemas/schemas/types/component-size.json similarity index 100% rename from packages/tokens/schemas/types/component-size.json rename to packages/component-schemas/schemas/types/component-size.json diff --git a/packages/tokens/schemas/types/hex-color.json b/packages/component-schemas/schemas/types/hex-color.json similarity index 100% rename from packages/tokens/schemas/types/hex-color.json rename to packages/component-schemas/schemas/types/hex-color.json diff --git a/packages/tokens/schemas/types/typography-classification.json b/packages/component-schemas/schemas/types/typography-classification.json similarity index 100% rename from packages/tokens/schemas/types/typography-classification.json rename to packages/component-schemas/schemas/types/typography-classification.json diff --git a/packages/tokens/schemas/types/typography-script.json b/packages/component-schemas/schemas/types/typography-script.json similarity index 100% rename from packages/tokens/schemas/types/typography-script.json rename to packages/component-schemas/schemas/types/typography-script.json diff --git a/packages/tokens/schemas/types/workflow-icon.json b/packages/component-schemas/schemas/types/workflow-icon.json similarity index 100% rename from packages/tokens/schemas/types/workflow-icon.json rename to packages/component-schemas/schemas/types/workflow-icon.json diff --git a/packages/tokens/test/componentSchemaValidator.test.js b/packages/component-schemas/test/componentSchemaValidator.test.js similarity index 100% rename from packages/tokens/test/componentSchemaValidator.test.js rename to packages/component-schemas/test/componentSchemaValidator.test.js diff --git a/packages/tokens/test/schemaValidator.test.js b/packages/tokens/test/schemaValidator.test.js deleted file mode 100644 index e7504bb4..00000000 --- a/packages/tokens/test/schemaValidator.test.js +++ /dev/null @@ -1,74 +0,0 @@ -/* -Copyright 2024 Adobe. All rights reserved. -This file is licensed to you under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. You may obtain a copy -of the License at http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software distributed under -the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS -OF ANY KIND, either express or implied. See the License for the specific language -governing permissions and limitations under the License. -*/ - -import test from "ava"; -import Ajv from "ajv/dist/2020.js"; -import addFormats from "ajv-formats"; -import { glob } from "glob"; -import { readFile } from "fs/promises"; - -const readJSON = async (filePath) => - JSON.parse(await readFile(filePath, "utf8")); -const componentSchema = await readJSON("schemas/component.json"); - -const fileNames = await glob("schemas/components/*.json"); -const files = await Promise.all( - fileNames.map(async (fileName) => { - return { fileName, json: await readJSON(fileName) }; - }), -); - -const ajv = new Ajv(); -addFormats(ajv); -ajv.addMetaSchema(componentSchema); -const schemaFiles = await glob("schemas/types/*.json"); -for (const schemaFile of schemaFiles) { - const schema = await readJSON(schemaFile); - ajv.addSchema(schema); -} - -for (const keyword of Object.keys(componentSchema.properties)) { - ajv.addKeyword({ keyword, metaSchema: componentSchema.properties[keyword] }); -} - -test("component schema should be valid", async (t) => { - const valid = ajv.validateSchema(componentSchema); - t.true(valid); -}); - -test("Every component schema should validate against the definition", (t) => { - let valid = true; - for (const file of files) { - if (!ajv.validateSchema(file.json)) { - valid = false; - console.log(`${file.fileName} failed validation`); - console.log(ajv.errors); - } - } - t.true(valid); -}); - -test("component examples should validate against the definition", (t) => { - let valid = true; - for (const file of files) { - const validate = ajv.compile(file.json); - if (!Object.hasOwn(file.json, "examples")) file.json.examples = []; - for (const example of file.json.examples) { - if (!validate(example)) { - valid = false; - console.log(`${file.fileName} failed validation`); - console.log(validate.errors); - } - } - } - t.true(valid); -}); From 5946a63ce1036acb8f52cf9a53744c2ec858f60c Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Thu, 13 Jun 2024 09:26:02 -0600 Subject: [PATCH 02/32] fix: used correct parameter in schema getFile function --- packages/component-schemas/index.js | 2 +- pnpm-lock.yaml | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/component-schemas/index.js b/packages/component-schemas/index.js index 435450d9..064c88f6 100644 --- a/packages/component-schemas/index.js +++ b/packages/component-schemas/index.js @@ -35,7 +35,7 @@ export const schemaFileNames = await glob( ); export const getFile = async (schemaFileName) => - await readJson(resolve(__dirname, "src", tokenFileName)); + await readJson(resolve(__dirname, "src", schemaFileName)); export const getAllSchemas = async () => { return await Promise.all(schemaFileNames.map(getFileTokens)).then( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa640f85..011f7463 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -142,6 +142,18 @@ importers: specifier: ^5.2.9 version: 5.2.9(@types/node@20.12.7) + packages/component-schemas: + devDependencies: + ajv: + specifier: ^8.12.0 + version: 8.12.0 + ajv-formats: + specifier: ^3.0.1 + version: 3.0.1(ajv@8.12.0) + glob: + specifier: ^10.3.12 + version: 10.3.12 + packages/tokens: devDependencies: ajv: From 0e882f54d0a242ad829c9280bae69876667bcf25 Mon Sep 17 00:00:00 2001 From: garthdb Date: Mon, 3 Jun 2024 15:14:32 -0600 Subject: [PATCH 03/32] ci: testing automated snapshot release --- .github/workflows/release-snapshot.yml | 47 +++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release-snapshot.yml b/.github/workflows/release-snapshot.yml index 09fa18d4..283fd7d1 100644 --- a/.github/workflows/release-snapshot.yml +++ b/.github/workflows/release-snapshot.yml @@ -1,13 +1,52 @@ name: Release Snapshot -on: workflow_dispatch +on: + workflow_dispatch: + inputs: + tag: + description: "Tag used on changeset version and NPM package" + required: false + type: string jobs: get-snapshot-tag: - name: Split branch name runs-on: ubuntu-latest + permissions: + contents: write + id-token: write steps: - - id: split + - name: Split branch name + id: split env: BRANCH: ${{ github.ref_name }} - run: echo "::set-output name=fragment::${BRANCH##*/}" + run: echo "fragment=${BRANCH##*snapshot-}" >> $GITHUB_OUTPUT + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Get last author info + id: author + run: | + echo "authorName=$(git log -1 --pretty=format:'%an')" >> $GITHUB_OUTPUT + echo "authorEmail=$(git log -1 --pretty=format:'%ae')" >> $GITHUB_OUTPUT + - uses: moonrepo/setup-toolchain@v0 + with: + auto-install: true + - run: moon setup + - run: moon run :build --query "projectSource~packages/*" + - name: Snapshot release + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + SNAPSHOT_TAG: ${{ inputs.tag || steps.split.outputs.fragment }} + USERNAME: ${{ steps.author.outputs.authorName }} + EMAIL: ${{ steps.author.outputs.authorEmail }} + run: | + pnpm changeset version --snapshot $SNAPSHOT_TAG + git config --global user.name "$USERNAME" + git config --global user.email "$EMAIL" + git add . + git commit -m "chore: snapshot release $SNAPSHOT_TAG" + npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN + pnpm changeset publish --tag $SNAPSHOT_TAG + git push origin HEAD + git tag --contains | git push origin tag From 4b8d625f6d6c688b89f11e1d2d56b9fc5aad0b85 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Thu, 13 Jun 2024 09:29:50 -0600 Subject: [PATCH 04/32] fix: addressed spectrum-component-api-schemas package name --- packages/component-schemas/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index ecebd2e8..2687d09d 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -1,5 +1,5 @@ { - "name": "spectrum-component-api-schemas", + "name": "@adobe/spectrum-component-api-schemas", "version": "1.0.0", "description": "", "type": "module", From cdd151167d93364c78856369b3fe1cd746218b14 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Thu, 13 Jun 2024 09:37:04 -0600 Subject: [PATCH 05/32] ci: refactored moon tasks for schema pacakge --- packages/component-schemas/moon.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/component-schemas/moon.yml b/packages/component-schemas/moon.yml index 28277f6e..b43c0339 100644 --- a/packages/component-schemas/moon.yml +++ b/packages/component-schemas/moon.yml @@ -18,26 +18,31 @@ tasks: build: deps: - ~:make - - ~:buildSchemas - buildSchemas: command: - cp - -R - schemas/ - dist/v1 - platform: node + platform: system + inputs: + - "@globs(schemas)" + outputs: + - dist/v1 + local: true make: command: - mkdir - -p - dist/v1 - platform: node + platform: system + local: true clean: command: - rm - -rf - dist - platform: node + platform: system + local: true test: command: - pnpm @@ -45,8 +50,6 @@ tasks: inputs: - "@globs(schemas)" - "@globs(tests)" - deps: - - ~:buildSchemas platform: node test-watch: command: From 6ff5ad7a75356f4b93d07a2818b357da19ce5b4b Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Thu, 13 Jun 2024 09:37:20 -0600 Subject: [PATCH 06/32] chore: added changeset --- .changeset/thin-oranges-turn.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/thin-oranges-turn.md diff --git a/.changeset/thin-oranges-turn.md b/.changeset/thin-oranges-turn.md new file mode 100644 index 00000000..3c898602 --- /dev/null +++ b/.changeset/thin-oranges-turn.md @@ -0,0 +1,5 @@ +--- +"@adobe/spectrum-component-api-schemas": patch +--- + +Initial release From 0727a145a1e8301986b01e184e0434ae655c0f25 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Thu, 13 Jun 2024 15:47:50 +0000 Subject: [PATCH 07/32] chore: snapshot release schema --- .changeset/thin-oranges-turn.md | 5 ----- packages/component-schemas/CHANGELOG.md | 7 +++++++ packages/component-schemas/package.json | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) delete mode 100644 .changeset/thin-oranges-turn.md create mode 100644 packages/component-schemas/CHANGELOG.md diff --git a/.changeset/thin-oranges-turn.md b/.changeset/thin-oranges-turn.md deleted file mode 100644 index 3c898602..00000000 --- a/.changeset/thin-oranges-turn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@adobe/spectrum-component-api-schemas": patch ---- - -Initial release diff --git a/packages/component-schemas/CHANGELOG.md b/packages/component-schemas/CHANGELOG.md new file mode 100644 index 00000000..cf58f4f9 --- /dev/null +++ b/packages/component-schemas/CHANGELOG.md @@ -0,0 +1,7 @@ +# @adobe/spectrum-component-api-schemas + +## 0.0.0-schema-20240613154750 + +### Patch Changes + +- [#353](https://github.com/adobe/spectrum-tokens/pull/353) [`6ff5ad7`](https://github.com/adobe/spectrum-tokens/commit/6ff5ad7a75356f4b93d07a2818b357da19ce5b4b) Thanks [@karstens](https://github.com/karstens)! - Initial release diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index 2687d09d..e04cee27 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@adobe/spectrum-component-api-schemas", - "version": "1.0.0", + "version": "0.0.0-schema-20240613154750", "description": "", "type": "module", "main": "index.js", From 58dfd16ad99ad34e6b0d6510baf53172bbbf1a58 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Fri, 14 Jun 2024 13:33:02 -0600 Subject: [PATCH 08/32] test: added tests to index.js file --- packages/component-schemas/index.js | 26 +++---------------------- packages/component-schemas/moon.yml | 1 + packages/component-schemas/package.json | 6 ++++-- pnpm-lock.yaml | 7 ++++--- 4 files changed, 12 insertions(+), 28 deletions(-) diff --git a/packages/component-schemas/index.js b/packages/component-schemas/index.js index 064c88f6..cb242743 100644 --- a/packages/component-schemas/index.js +++ b/packages/component-schemas/index.js @@ -11,42 +11,22 @@ governing permissions and limitations under the License. */ import { glob } from "glob"; - import { resolve } from "path"; import { readFile } from "fs/promises"; import * as url from "url"; -import { writeFile } from "fs/promises"; -import { format } from "prettier"; -const readJson = async (fileName) => +export const readJson = async (fileName) => JSON.parse(await readFile(fileName, "utf8")); -const writeJson = async (fileName, jsonData) => { - await writeFile( - fileName, - await format(JSON.stringify(jsonData), { parser: "json-stringify" }), - ); -}; - const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); export const schemaFileNames = await glob( `${resolve(__dirname, "./schemas")}/**/*.json`, ); -export const getFile = async (schemaFileName) => +export const getSchemaFile = async (schemaFileName) => await readJson(resolve(__dirname, "src", schemaFileName)); export const getAllSchemas = async () => { - return await Promise.all(schemaFileNames.map(getFileTokens)).then( - (tokenFileDataAr) => { - return tokenFileDataAr.reduce( - (tokenDataAcc, tokenFileData) => ({ - ...tokenDataAcc, - ...tokenFileData, - }), - {}, - ); - }, - ); + return await Promise.all(schemaFileNames.map(getSchemaFile)); }; diff --git a/packages/component-schemas/moon.yml b/packages/component-schemas/moon.yml index b43c0339..ef5920b2 100644 --- a/packages/component-schemas/moon.yml +++ b/packages/component-schemas/moon.yml @@ -50,6 +50,7 @@ tasks: inputs: - "@globs(schemas)" - "@globs(tests)" + - index.js platform: node test-watch: command: diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index e04cee27..8e8dfd56 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -18,9 +18,11 @@ }, "homepage": "https://github.com/adobe/spectrum-tokens/tree/main/packages/component-schemas#readme", "license": "Apache-2.0", + "dependencies": { + "glob": "^10.3.12" + }, "devDependencies": { "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "glob": "^10.3.12" + "ajv-formats": "^3.0.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 011f7463..4ce939b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -143,6 +143,10 @@ importers: version: 5.2.9(@types/node@20.12.7) packages/component-schemas: + dependencies: + glob: + specifier: ^10.3.12 + version: 10.3.12 devDependencies: ajv: specifier: ^8.12.0 @@ -150,9 +154,6 @@ importers: ajv-formats: specifier: ^3.0.1 version: 3.0.1(ajv@8.12.0) - glob: - specifier: ^10.3.12 - version: 10.3.12 packages/tokens: devDependencies: From 980516791c0bef9e2f0bbeffe6515f103f3ad7a2 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Fri, 14 Jun 2024 13:38:48 -0600 Subject: [PATCH 09/32] chore: added changeset --- .changeset/moody-beers-brake.md | 5 ++ packages/component-schemas/test/index.test.js | 10 ++++ .../test/snapshots/index.test.js.md | 51 ++++++++++++++++++ .../test/snapshots/index.test.js.snap | Bin 0 -> 736 bytes 4 files changed, 66 insertions(+) create mode 100644 .changeset/moody-beers-brake.md create mode 100644 packages/component-schemas/test/index.test.js create mode 100644 packages/component-schemas/test/snapshots/index.test.js.md create mode 100644 packages/component-schemas/test/snapshots/index.test.js.snap diff --git a/.changeset/moody-beers-brake.md b/.changeset/moody-beers-brake.md new file mode 100644 index 00000000..3c89a6af --- /dev/null +++ b/.changeset/moody-beers-brake.md @@ -0,0 +1,5 @@ +--- +"@adobe/spectrum-component-api-schemas": patch +--- + +fixed some bugs diff --git a/packages/component-schemas/test/index.test.js b/packages/component-schemas/test/index.test.js new file mode 100644 index 00000000..89fc0ee2 --- /dev/null +++ b/packages/component-schemas/test/index.test.js @@ -0,0 +1,10 @@ +import { schemaFileNames, getSchemaFile, getAllSchemas } from "../index.js"; +import test from "ava"; + +test("the number of schema returned by getAllSchemas should match the number of schema returned by schemaFileNames", async (t) => { + const allSchema = await getAllSchemas(); + t.is(schemaFileNames.length, allSchema.length); +}); +test("getSchemaFile should fetch schema data", async (t) => { + t.snapshot(await getSchemaFile(schemaFileNames[0])); +}); diff --git a/packages/component-schemas/test/snapshots/index.test.js.md b/packages/component-schemas/test/snapshots/index.test.js.md new file mode 100644 index 00000000..c3fe6ada --- /dev/null +++ b/packages/component-schemas/test/snapshots/index.test.js.md @@ -0,0 +1,51 @@ +# Snapshot report for `test/index.test.js` + +The actual snapshot is saved in `index.test.js.snap`. + +Generated by [AVA](https://avajs.dev). + +## getSchemaFile should fetch schema data + +> Snapshot 1 + + { + $id: 'https://opensource.adobe.com/spectrum-tokens/schemas/component.json', + $schema: 'https://json-schema.org/draft/2020-12/schema', + properties: { + meta: { + properties: { + category: { + enum: [ + 'actions', + 'containers', + 'data visualization', + 'feedback', + 'inputs', + 'navigation', + 'status', + 'typography', + ], + type: 'string', + }, + documentationUrl: { + format: 'uri', + type: 'string', + }, + }, + required: [ + 'category', + 'documentationUrl', + ], + type: 'object', + }, + }, + required: [ + 'meta', + 'title', + 'description', + 'properties', + '$id', + ], + title: 'Component', + type: 'object', + } diff --git a/packages/component-schemas/test/snapshots/index.test.js.snap b/packages/component-schemas/test/snapshots/index.test.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..92c69a34f49250e0c3651bfe51a9af7c57c7dd8b GIT binary patch literal 736 zcmV<60w4WBRzVjc~*V2S)i@^?G?BD6%4WwY4?T>|-_2A0UVN(|&J5?hv0 zx!&npo0_e5Tcsi~D$}7@=aK4&^-#ralZw#lEMBu}AQICa&uiMDic^({#IElfl~mf- zmd9!3eziOz&s`g1>q__9k>*|7-rU&SSi8A-+8cD4$PiFg*Hf)hp{*3Az>cP{K#ND2 z)FP@(;1$Z3yM>){+De*hN9iQXSA}M|*3Jh4K38>hW_1n7|4P6K0louVbAT-ec;K9t zdAGFYBU&g|jYgv|g9;V{=MM`v7M6qRAP;mgAFv7)L84iDWq3m8LL^M6Wol(^$rxm3 z$~eZ{>HClqa*rI~r31YGP2`JH;m_vo6)ULxaLzYtnf=?W^ITwe8L-EIm{lfmt4^?I z40z6fH*8k@psK!8jP-GPtdLvLQ+iY&Kc|ppq{1u~iRHPX_w}&w$f#o>o(9b6$*zy>+Lql}NJquUZ?cWzs9lXA=Fc(lNJ_8Lh0n!5wJ>Z20yz^!~@@G7%gMzBUH6G>ynmK{%p-L>5iO^>5 zHC)O6p{)aHGCq_~_?eF)=n4^acsQ7Q6245*%uc#`lM@quAbT_2{3#K*%_cRqNsS$) Ss;7C{AN>MFGWx?E1^@tA1!hbD literal 0 HcmV?d00001 From c85b576e22e4423bd878d8e2ce02e8dc68668da0 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Fri, 14 Jun 2024 19:41:47 +0000 Subject: [PATCH 10/32] chore: snapshot release schema --- .changeset/moody-beers-brake.md | 5 ----- packages/component-schemas/CHANGELOG.md | 6 ++++++ packages/component-schemas/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/moody-beers-brake.md diff --git a/.changeset/moody-beers-brake.md b/.changeset/moody-beers-brake.md deleted file mode 100644 index 3c89a6af..00000000 --- a/.changeset/moody-beers-brake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@adobe/spectrum-component-api-schemas": patch ---- - -fixed some bugs diff --git a/packages/component-schemas/CHANGELOG.md b/packages/component-schemas/CHANGELOG.md index cf58f4f9..4090cf6f 100644 --- a/packages/component-schemas/CHANGELOG.md +++ b/packages/component-schemas/CHANGELOG.md @@ -1,5 +1,11 @@ # @adobe/spectrum-component-api-schemas +## 0.0.0-schema-20240614194147 + +### Patch Changes + +- [#353](https://github.com/adobe/spectrum-tokens/pull/353) [`9805167`](https://github.com/adobe/spectrum-tokens/commit/980516791c0bef9e2f0bbeffe6515f103f3ad7a2) Thanks [@karstens](https://github.com/karstens)! - fixed some bugs + ## 0.0.0-schema-20240613154750 ### Patch Changes diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index 8e8dfd56..1033a995 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@adobe/spectrum-component-api-schemas", - "version": "0.0.0-schema-20240613154750", + "version": "0.0.0-schema-20240614194147", "description": "", "type": "module", "main": "index.js", From 8017382cf2dcf6523e353b83137c0ce0cf37e2b1 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Fri, 14 Jun 2024 19:18:25 -0600 Subject: [PATCH 11/32] ci: fixed snapshot release workflow --- .github/workflows/release-snapshot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-snapshot.yml b/.github/workflows/release-snapshot.yml index 283fd7d1..ca64c8e1 100644 --- a/.github/workflows/release-snapshot.yml +++ b/.github/workflows/release-snapshot.yml @@ -49,4 +49,4 @@ jobs: npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN pnpm changeset publish --tag $SNAPSHOT_TAG git push origin HEAD - git tag --contains | git push origin tag + git push origin --tags From f4ec28252189a472363856a1a883e2d3d024f51f Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Fri, 14 Jun 2024 19:21:37 -0600 Subject: [PATCH 12/32] refactor: changed getAllSchemas format to include component slugs --- packages/component-schemas/index.js | 16 ++++++++++++++-- packages/component-schemas/test/index.test.js | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/component-schemas/index.js b/packages/component-schemas/index.js index cb242743..39bf77c1 100644 --- a/packages/component-schemas/index.js +++ b/packages/component-schemas/index.js @@ -11,7 +11,7 @@ governing permissions and limitations under the License. */ import { glob } from "glob"; -import { resolve } from "path"; +import { resolve, parse } from "path"; import { readFile } from "fs/promises"; import * as url from "url"; @@ -28,5 +28,17 @@ export const getSchemaFile = async (schemaFileName) => await readJson(resolve(__dirname, "src", schemaFileName)); export const getAllSchemas = async () => { - return await Promise.all(schemaFileNames.map(getSchemaFile)); + return await Promise.all( + schemaFileNames.map(async (schemaFileName) => { + return { + slug: parse(schemaFileName).name, + data: await getSchemaFile(schemaFileName), + }; + }), + ).then((schemaFileDataAr) => { + return schemaFileDataAr.reduce((schemaDataAcc, schemaFileData) => { + schemaDataAcc[schemaFileData.slug] = schemaFileData.data; + return schemaDataAcc; + }, {}); + }); }; diff --git a/packages/component-schemas/test/index.test.js b/packages/component-schemas/test/index.test.js index 89fc0ee2..8b94e71c 100644 --- a/packages/component-schemas/test/index.test.js +++ b/packages/component-schemas/test/index.test.js @@ -2,8 +2,8 @@ import { schemaFileNames, getSchemaFile, getAllSchemas } from "../index.js"; import test from "ava"; test("the number of schema returned by getAllSchemas should match the number of schema returned by schemaFileNames", async (t) => { - const allSchema = await getAllSchemas(); - t.is(schemaFileNames.length, allSchema.length); + const allSchemas = await getAllSchemas(); + t.is(schemaFileNames.length, Object.keys(allSchemas).length); }); test("getSchemaFile should fetch schema data", async (t) => { t.snapshot(await getSchemaFile(schemaFileNames[0])); From 9034673ac2114be0c379d8c9ff66ffe7a8ad9fc7 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Fri, 14 Jun 2024 19:26:57 -0600 Subject: [PATCH 13/32] refactor: removed unused component-size type --- .../component-schemas/schemas/types/component-size.json | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 packages/component-schemas/schemas/types/component-size.json diff --git a/packages/component-schemas/schemas/types/component-size.json b/packages/component-schemas/schemas/types/component-size.json deleted file mode 100644 index e7283124..00000000 --- a/packages/component-schemas/schemas/types/component-size.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://opensource.adobe.com/spectrum-tokens/schemas/types/component-size.json", - "title": "component-size", - "description": "T-shirt sizes for components", - "type": "string", - "enum": ["xs", "s", "m", "l", "xl", "xxl", "xxxl"] -} From 7a42c4d7ef9634dc7eee2bab4f3a3ef0abf31fbd Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Mon, 17 Jun 2024 23:26:25 -0600 Subject: [PATCH 14/32] feat: initial release --- packages/component-schemas/README.md | 42 +++++++++++++ packages/component-schemas/index.js | 63 +++++++++++++++---- packages/component-schemas/package.json | 2 +- packages/component-schemas/test/index.test.js | 55 +++++++++++++++- 4 files changed, 146 insertions(+), 16 deletions(-) create mode 100644 packages/component-schemas/README.md diff --git a/packages/component-schemas/README.md b/packages/component-schemas/README.md new file mode 100644 index 00000000..8d10f2bb --- /dev/null +++ b/packages/component-schemas/README.md @@ -0,0 +1,42 @@ +# Spectrum Component Schemas + +An NPM package of JSON Schema for Spectrum components. Used in the table of options on the Spectrum Design System website (example). + +| **Property** | **Values** | **Default value** | +| ------------------- | --------------------------------------- | ----------------- | +| label | text | - | +| hide label | yes / no | no | +| icon | icon / nothing | nothing | +| size | s / m / l / xl | m | +| is quiet | yes / no | no | +| is selected | yes / no | no | +| is emphasized | yes / no | no | +| static color | white / black | none | +| selected text color | hex value | #000000 | +| has hold icon | yes / no | no | +| is disabled | yes / no | no | +| state | default / hover / down / keyboard focus | default | + +## Helper functions + +- `schemaFileNames` +- `getSchemaFile()` +- `getAllSchemas()` +- `getAllSlugs()` + +## Project file structure + +``` +├── schemas +│ ├── components +│ │ └── // component json files +│ ├── types +│ │ └── // shared types like hex-color +├── test +│ └── // tests +├── CHANGELOG.md // generated by changeset +├── index.js // helpful functions for fetching the schema file data +├── moon.yml // config file for moon monorepo task management +├── package.json +└── README.md // this file! +``` diff --git a/packages/component-schemas/index.js b/packages/component-schemas/index.js index 39bf77c1..ee3b5b78 100644 --- a/packages/component-schemas/index.js +++ b/packages/component-schemas/index.js @@ -9,16 +9,21 @@ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTA OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - import { glob } from "glob"; -import { resolve, parse } from "path"; +import { resolve } from "path"; import { readFile } from "fs/promises"; import * as url from "url"; +export const getSlugFromDocumentationUrl = (documentationUrl) => + documentationUrl + .split("/") + .filter((part) => part !== "") + .pop(); + export const readJson = async (fileName) => JSON.parse(await readFile(fileName, "utf8")); -const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); +export const __dirname = url.fileURLToPath(new URL(".", import.meta.url)); export const schemaFileNames = await glob( `${resolve(__dirname, "./schemas")}/**/*.json`, @@ -27,18 +32,50 @@ export const schemaFileNames = await glob( export const getSchemaFile = async (schemaFileName) => await readJson(resolve(__dirname, "src", schemaFileName)); +export const getAllSlugs = async () => { + return await Promise.all(schemaFileNames.map(getSchemaFile)) + .then((schemaFileDataAr) => { + return schemaFileDataAr.reduce( + (slugs, schemaFileData) => [ + ...slugs, + ...(Object.hasOwn(schemaFileData, "meta") && + Object.hasOwn(schemaFileData.meta, "documentationUrl") + ? [ + getSlugFromDocumentationUrl( + schemaFileData.meta.documentationUrl, + ), + ] + : []), + ], + [], + ); + }) + .then((slugs) => slugs.sort()); +}; + export const getAllSchemas = async () => { return await Promise.all( schemaFileNames.map(async (schemaFileName) => { - return { - slug: parse(schemaFileName).name, - data: await getSchemaFile(schemaFileName), - }; + const data = await getSchemaFile(schemaFileName); + if ( + Object.hasOwn(data, "meta") && + Object.hasOwn(data.meta, "documentationUrl") + ) { + return { + ...data, + ...{ slug: getSlugFromDocumentationUrl(data.meta.documentationUrl) }, + }; + } else return data; + }), + ); +}; + +export const getSchemaBySlug = async (slug) => { + const schema = await getAllSchemas().then((schemas) => + schemas.find((schema) => { + return Object.hasOwn(schema, "slug") && schema.slug === slug; }), - ).then((schemaFileDataAr) => { - return schemaFileDataAr.reduce((schemaDataAcc, schemaFileData) => { - schemaDataAcc[schemaFileData.slug] = schemaFileData.data; - return schemaDataAcc; - }, {}); - }); + ); + delete schema.slug; + return schema; }; diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index 1033a995..874f2984 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -1,5 +1,5 @@ { - "name": "@adobe/spectrum-component-api-schemas", + "name": "@adobe/spectrum-component-schemas", "version": "0.0.0-schema-20240614194147", "description": "", "type": "module", diff --git a/packages/component-schemas/test/index.test.js b/packages/component-schemas/test/index.test.js index 8b94e71c..bfac7aec 100644 --- a/packages/component-schemas/test/index.test.js +++ b/packages/component-schemas/test/index.test.js @@ -1,10 +1,61 @@ -import { schemaFileNames, getSchemaFile, getAllSchemas } from "../index.js"; +/* +Copyright 2024 Adobe. All rights reserved. +This file is licensed to you under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. You may obtain a copy +of the License at http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under +the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS +OF ANY KIND, either express or implied. See the License for the specific language +governing permissions and limitations under the License. +*/ + +import { + schemaFileNames, + getSchemaFile, + getAllSchemas, + getSlugFromDocumentationUrl, + getAllSlugs, + __dirname, + getSchemaBySlug, +} from "../index.js"; import test from "ava"; +import { glob } from "glob"; +import { resolve, parse } from "path"; test("the number of schema returned by getAllSchemas should match the number of schema returned by schemaFileNames", async (t) => { const allSchemas = await getAllSchemas(); - t.is(schemaFileNames.length, Object.keys(allSchemas).length); + t.is(schemaFileNames.length, allSchemas.length); }); test("getSchemaFile should fetch schema data", async (t) => { t.snapshot(await getSchemaFile(schemaFileNames[0])); }); +test("getSlugFromDocumentationUrl should return last part of documentationUrl", (t) => { + t.is( + getSlugFromDocumentationUrl("https://spectrum.adobe.com/page/tooltip/"), + "tooltip", + ); +}); +test("getSlugFromDocumentationUrl should return last part of documentationUrl even without trailing slash", (t) => { + t.is( + getSlugFromDocumentationUrl("https://spectrum.adobe.com/page/tooltip"), + "tooltip", + ); +}); +test("getAllSlugs should return all component slugs", async (t) => { + const slugs = await glob( + `${resolve(__dirname, "./schemas/components")}/**/*.json`, + ); + t.deepEqual( + await getAllSlugs(), + slugs.map((slug) => parse(slug).name).sort(), + ); +}); +test("getSchemaBySlug should return a schema", async (t) => { + t.deepEqual( + await getSchemaBySlug("tooltip"), + await getSchemaFile( + resolve(__dirname, "./schemas/components/tooltip.json"), + ), + ); +}); From b5c15792ec5f5e5c269bfa7bf58af3df42e648c1 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Mon, 17 Jun 2024 23:26:42 -0600 Subject: [PATCH 15/32] chore: added changeset --- .changeset/poor-bottles-fail.md | 5 +++++ packages/component-schemas/moon.yml | 28 ------------------------- packages/component-schemas/package.json | 2 +- 3 files changed, 6 insertions(+), 29 deletions(-) create mode 100644 .changeset/poor-bottles-fail.md diff --git a/.changeset/poor-bottles-fail.md b/.changeset/poor-bottles-fail.md new file mode 100644 index 00000000..0c097f56 --- /dev/null +++ b/.changeset/poor-bottles-fail.md @@ -0,0 +1,5 @@ +--- +"@adobe/spectrum-component-api-schemas": minor +--- + +Initial release diff --git a/packages/component-schemas/moon.yml b/packages/component-schemas/moon.yml index ef5920b2..b923b7cd 100644 --- a/packages/component-schemas/moon.yml +++ b/packages/component-schemas/moon.yml @@ -15,34 +15,6 @@ fileGroups: tests: - "test/**/*" tasks: - build: - deps: - - ~:make - command: - - cp - - -R - - schemas/ - - dist/v1 - platform: system - inputs: - - "@globs(schemas)" - outputs: - - dist/v1 - local: true - make: - command: - - mkdir - - -p - - dist/v1 - platform: system - local: true - clean: - command: - - rm - - -rf - - dist - platform: system - local: true test: command: - pnpm diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index 874f2984..1033a995 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -1,5 +1,5 @@ { - "name": "@adobe/spectrum-component-schemas", + "name": "@adobe/spectrum-component-api-schemas", "version": "0.0.0-schema-20240614194147", "description": "", "type": "module", From 3bbc12b49f127ce385ca854ecff75f0dec3dbb83 Mon Sep 17 00:00:00 2001 From: Garth Braithwaite Date: Tue, 18 Jun 2024 05:38:42 +0000 Subject: [PATCH 16/32] chore: snapshot release schema --- .changeset/poor-bottles-fail.md | 5 ----- packages/component-schemas/CHANGELOG.md | 6 ++++++ packages/component-schemas/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/poor-bottles-fail.md diff --git a/.changeset/poor-bottles-fail.md b/.changeset/poor-bottles-fail.md deleted file mode 100644 index 0c097f56..00000000 --- a/.changeset/poor-bottles-fail.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@adobe/spectrum-component-api-schemas": minor ---- - -Initial release diff --git a/packages/component-schemas/CHANGELOG.md b/packages/component-schemas/CHANGELOG.md index 4090cf6f..baf783e8 100644 --- a/packages/component-schemas/CHANGELOG.md +++ b/packages/component-schemas/CHANGELOG.md @@ -1,5 +1,11 @@ # @adobe/spectrum-component-api-schemas +## 0.0.0-schema-20240618053842 + +### Minor Changes + +- [#353](https://github.com/adobe/spectrum-tokens/pull/353) [`b5c1579`](https://github.com/adobe/spectrum-tokens/commit/b5c15792ec5f5e5c269bfa7bf58af3df42e648c1) Thanks [@karstens](https://github.com/karstens)! - Initial release + ## 0.0.0-schema-20240614194147 ### Patch Changes diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index 1033a995..30f87921 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@adobe/spectrum-component-api-schemas", - "version": "0.0.0-schema-20240614194147", + "version": "0.0.0-schema-20240618053842", "description": "", "type": "module", "main": "index.js", From 8d4e05b278512230245b17d7217f93b56e8ef2e1 Mon Sep 17 00:00:00 2001 From: garthdb Date: Tue, 18 Jun 2024 14:33:26 -0600 Subject: [PATCH 17/32] feat: added missing search-field schema --- .../schemas/components/search-field.json | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 packages/component-schemas/schemas/components/search-field.json diff --git a/packages/component-schemas/schemas/components/search-field.json b/packages/component-schemas/schemas/components/search-field.json new file mode 100644 index 00000000..6fd4e1a5 --- /dev/null +++ b/packages/component-schemas/schemas/components/search-field.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://opensource.adobe.com/spectrum-tokens/schemas/component.json", + "$id": "https://opensource.adobe.com/spectrum-tokens/schemas/components/search-field.json", + "title": "Search field", + "description": "A search field is used for searching and filtering items.", + "meta": { + "category": "inputs", + "documentationUrl": "https://spectrum.adobe.com/page/search-field/" + }, + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + }, + "width": { + "type": "number" + }, + "size": { + "type": "string", + "enum": ["s", "m", "l", "xl"], + "default": "m", + "pattern": "^(x?s|m|x{0,3}l)$" + }, + "isQuiet": { + "type": "boolean", + "default": false + }, + "isDisabled": { + "type": "boolean", + "default": false + }, + "description": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "default", + "hover", + "focus + hover", + "focus + not hover", + "keyboard focus" + ], + "default": "default" + } + } +} From c2cfa563d7e8b9e0295a2c0f40e458d1d7660838 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Tue, 18 Jun 2024 15:56:02 +0200 Subject: [PATCH 18/32] fix: schema path checks --- packages/component-schemas/index.js | 17 ++++++++++++++--- packages/component-schemas/test/index.test.js | 19 ++++++++++++++++++- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/packages/component-schemas/index.js b/packages/component-schemas/index.js index ee3b5b78..4f72bb3b 100644 --- a/packages/component-schemas/index.js +++ b/packages/component-schemas/index.js @@ -10,7 +10,7 @@ OF ANY KIND, either express or implied. See the License for the specific languag governing permissions and limitations under the License. */ import { glob } from "glob"; -import { resolve } from "path"; +import { isAbsolute, resolve } from "path"; import { readFile } from "fs/promises"; import * as url from "url"; @@ -29,8 +29,19 @@ export const schemaFileNames = await glob( `${resolve(__dirname, "./schemas")}/**/*.json`, ); -export const getSchemaFile = async (schemaFileName) => - await readJson(resolve(__dirname, "src", schemaFileName)); +/** + * Accepts either a schema name or an absolute path + * + * @param schemaFileName + * @return {Promise} + */ +export const getSchemaFile = async (schemaFileName) => { + let filePath = resolve(__dirname, "schemas", schemaFileName); + if (isAbsolute(schemaFileName)) { + filePath = schemaFileName; + } + return await readJson(resolve(filePath)); +}; export const getAllSlugs = async () => { return await Promise.all(schemaFileNames.map(getSchemaFile)) diff --git a/packages/component-schemas/test/index.test.js b/packages/component-schemas/test/index.test.js index bfac7aec..6e8c81a8 100644 --- a/packages/component-schemas/test/index.test.js +++ b/packages/component-schemas/test/index.test.js @@ -28,7 +28,24 @@ test("the number of schema returned by getAllSchemas should match the number of t.is(schemaFileNames.length, allSchemas.length); }); test("getSchemaFile should fetch schema data", async (t) => { - t.snapshot(await getSchemaFile(schemaFileNames[0])); + const relativeSchemaComponent = await getSchemaFile("component.json"); + t.is(relativeSchemaComponent.title, "Component"); + + const relativeSchemaActionBar = await getSchemaFile( + "components/action-bar.json", + ); + t.is(relativeSchemaActionBar.title, "Action bar"); + + const absoluteSchemaComponent = await getSchemaFile( + "/Users/karstens/Developer/github/adobe/spectrum-tokens/packages/component-schemas/schemas/component.json", + ); + t.is(absoluteSchemaComponent.title, "Component"); + + const absoluteSchemaActionBar = await getSchemaFile( + "/Users/karstens/Developer/github/adobe/spectrum-tokens/packages/component-schemas/schemas/components/action-bar.json", + ); + t.is(absoluteSchemaActionBar.title, "Action bar"); + // t.snapshot(await getSchemaFile(schemaFileNames[0])); }); test("getSlugFromDocumentationUrl should return last part of documentationUrl", (t) => { t.is( From ebe6186c2c90e1b969e831bebaa1497b153eca62 Mon Sep 17 00:00:00 2001 From: garthdb Date: Thu, 20 Jun 2024 15:46:04 -0600 Subject: [PATCH 19/32] test: resolved some absolute path bugs in the tests --- .../schemas/components/search-field.json | 50 +++++++++++++++++++ packages/component-schemas/test/index.test.js | 4 +- 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 docs/site/public/schemas/components/search-field.json diff --git a/docs/site/public/schemas/components/search-field.json b/docs/site/public/schemas/components/search-field.json new file mode 100644 index 00000000..6fd4e1a5 --- /dev/null +++ b/docs/site/public/schemas/components/search-field.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://opensource.adobe.com/spectrum-tokens/schemas/component.json", + "$id": "https://opensource.adobe.com/spectrum-tokens/schemas/components/search-field.json", + "title": "Search field", + "description": "A search field is used for searching and filtering items.", + "meta": { + "category": "inputs", + "documentationUrl": "https://spectrum.adobe.com/page/search-field/" + }, + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "value": { + "type": "string" + }, + "width": { + "type": "number" + }, + "size": { + "type": "string", + "enum": ["s", "m", "l", "xl"], + "default": "m", + "pattern": "^(x?s|m|x{0,3}l)$" + }, + "isQuiet": { + "type": "boolean", + "default": false + }, + "isDisabled": { + "type": "boolean", + "default": false + }, + "description": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "default", + "hover", + "focus + hover", + "focus + not hover", + "keyboard focus" + ], + "default": "default" + } + } +} diff --git a/packages/component-schemas/test/index.test.js b/packages/component-schemas/test/index.test.js index 6e8c81a8..77186d57 100644 --- a/packages/component-schemas/test/index.test.js +++ b/packages/component-schemas/test/index.test.js @@ -37,12 +37,12 @@ test("getSchemaFile should fetch schema data", async (t) => { t.is(relativeSchemaActionBar.title, "Action bar"); const absoluteSchemaComponent = await getSchemaFile( - "/Users/karstens/Developer/github/adobe/spectrum-tokens/packages/component-schemas/schemas/component.json", + resolve(__dirname, "schemas", "component.json"), ); t.is(absoluteSchemaComponent.title, "Component"); const absoluteSchemaActionBar = await getSchemaFile( - "/Users/karstens/Developer/github/adobe/spectrum-tokens/packages/component-schemas/schemas/components/action-bar.json", + resolve(__dirname, "schemas", "components", "action-bar.json"), ); t.is(absoluteSchemaActionBar.title, "Action bar"); // t.snapshot(await getSchemaFile(schemaFileNames[0])); From 64379ebeaf9402fe77ca1adfd020f42df60c60d9 Mon Sep 17 00:00:00 2001 From: garthdb Date: Thu, 20 Jun 2024 15:49:47 -0600 Subject: [PATCH 20/32] chore: added changeset --- .changeset/spotty-berries-sip.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/spotty-berries-sip.md diff --git a/.changeset/spotty-berries-sip.md b/.changeset/spotty-berries-sip.md new file mode 100644 index 00000000..10e87f0e --- /dev/null +++ b/.changeset/spotty-berries-sip.md @@ -0,0 +1,5 @@ +--- +"@adobe/spectrum-component-api-schemas": minor +--- + +Added schema for search-field and fixed some path bugs in testing From d3c609f6521404b61948292c0131619451e0c7e0 Mon Sep 17 00:00:00 2001 From: garthdb Date: Thu, 20 Jun 2024 22:04:50 +0000 Subject: [PATCH 21/32] chore: snapshot release schema --- .changeset/spotty-berries-sip.md | 5 ----- packages/component-schemas/CHANGELOG.md | 6 ++++++ packages/component-schemas/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/spotty-berries-sip.md diff --git a/.changeset/spotty-berries-sip.md b/.changeset/spotty-berries-sip.md deleted file mode 100644 index 10e87f0e..00000000 --- a/.changeset/spotty-berries-sip.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@adobe/spectrum-component-api-schemas": minor ---- - -Added schema for search-field and fixed some path bugs in testing diff --git a/packages/component-schemas/CHANGELOG.md b/packages/component-schemas/CHANGELOG.md index baf783e8..a6910069 100644 --- a/packages/component-schemas/CHANGELOG.md +++ b/packages/component-schemas/CHANGELOG.md @@ -1,5 +1,11 @@ # @adobe/spectrum-component-api-schemas +## 0.0.0-schema-20240620220450 + +### Minor Changes + +- [#353](https://github.com/adobe/spectrum-tokens/pull/353) [`64379eb`](https://github.com/adobe/spectrum-tokens/commit/64379ebeaf9402fe77ca1adfd020f42df60c60d9) Thanks [@karstens](https://github.com/karstens)! - Added schema for search-field and fixed some path bugs in testing + ## 0.0.0-schema-20240618053842 ### Minor Changes diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index 30f87921..2b77d6ac 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@adobe/spectrum-component-api-schemas", - "version": "0.0.0-schema-20240618053842", + "version": "0.0.0-schema-20240620220450", "description": "", "type": "module", "main": "index.js", From 672d2d0a1dec70c0fc8c8a0b4be4d583ff312ac1 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Tue, 20 Aug 2024 15:15:02 +0200 Subject: [PATCH 22/32] fix: tabs and tab-item jsonSchema --- .../schemas/components/tab-item.json | 34 ++++++++++++++++ .../schemas/components/tabs.json | 40 ++++++++++++++----- 2 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 packages/component-schemas/schemas/components/tab-item.json diff --git a/packages/component-schemas/schemas/components/tab-item.json b/packages/component-schemas/schemas/components/tab-item.json new file mode 100644 index 00000000..1b55dc69 --- /dev/null +++ b/packages/component-schemas/schemas/components/tab-item.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://opensource.adobe.com/spectrum-tokens/schemas/component.json", + "$id": "https://opensource.adobe.com/spectrum-tokens/schemas/components/tab-item.json", + "title": "Tab Item", + "description": "", + "meta": { + "category": "navigation", + "documentationUrl": "https://spectrum.adobe.com/page/tabs/" + }, + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "If a label isn’t present, it must include an icon and becomes an icon-only tab item." + }, + "icon": { + "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/types/workflow-icon.json", + "description": "Icon must be present if the label is not defined." + }, + "isSelected": { + "type": "boolean", + "default": false + }, + "isDisabled": { + "type": "boolean", + "default": false + }, + "state": { + "type": "string", + "enum": ["default", "hover", "down", "keyboard focus"], + "default": "default" + } + } +} diff --git a/packages/component-schemas/schemas/components/tabs.json b/packages/component-schemas/schemas/components/tabs.json index 10eeeb59..ef9f5cb4 100644 --- a/packages/component-schemas/schemas/components/tabs.json +++ b/packages/component-schemas/schemas/components/tabs.json @@ -9,24 +9,46 @@ }, "type": "object", "properties": { - "label": { - "type": "string" + "orientation": { + "type": "string", + "enum": ["horizontal", "vertical"], + "default": "vertical" }, - "icon": { - "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/types/workflow-icon.json" + "size": { + "type": "string", + "enum": ["s", "m", "l", "xl"], + "default": "m" }, - "isSelected": { + "density": { + "type": "string", + "enum": ["compact", "regular"], + "default": "regular" + }, + "isFluid": { + "type": "boolean", + "default": false, + "description": "This overrides density and is only applicable to horizontal tabs." + }, + "isQuiet": { "type": "boolean", "default": false }, - "isDisabled": { + "isEmphasized": { "type": "boolean", "default": false }, - "state": { + "alignment": { + "type": "string", + "enum": ["start", "center"], + "default": "start" + }, + "selectedItem": { + "description": "(list of available items)" + }, + "keyboardActivation": { "type": "string", - "enum": ["default", "hover", "down", "keyboard focus"], - "default": "default" + "enum": ["manual", "automatic"], + "default": "manual" } } } From 93b6799d74de7aa76790a9227b0070f2279f0b8d Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Tue, 20 Aug 2024 15:25:24 +0200 Subject: [PATCH 23/32] fix: size property for action-button jsonSchema --- .../component-schemas/schemas/components/action-button.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/component-schemas/schemas/components/action-button.json b/packages/component-schemas/schemas/components/action-button.json index 9486045f..29391613 100644 --- a/packages/component-schemas/schemas/components/action-button.json +++ b/packages/component-schemas/schemas/components/action-button.json @@ -22,9 +22,8 @@ }, "size": { "type": "string", - "enum": ["s", "m", "l", "xl"], - "default": "m", - "pattern": "^(x?s|m|x{0,3}l)$" + "enum": ["xs", "s", "m", "l", "xl"], + "default": "m" }, "isQuiet": { "type": "boolean", From dfd67f595a9e8ef9265a328c09fa19d362c8b609 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Tue, 20 Aug 2024 15:31:02 +0200 Subject: [PATCH 24/32] fix: image property for avatar jsonSchema --- packages/component-schemas/schemas/components/avatar.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/component-schemas/schemas/components/avatar.json b/packages/component-schemas/schemas/components/avatar.json index f61c419a..8e28b0b5 100644 --- a/packages/component-schemas/schemas/components/avatar.json +++ b/packages/component-schemas/schemas/components/avatar.json @@ -15,7 +15,9 @@ "default": 100 }, "image": { - "type": "string" + "type": "string", + "enum": ["text", "image"], + "default": "image" }, "isDisabled": { "type": "boolean", From f1ac034516973f072497bec04796b5e21fddc2e3 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Tue, 20 Aug 2024 15:45:36 +0200 Subject: [PATCH 25/32] fix: static color property description --- .../component-schemas/schemas/components/action-button.json | 3 ++- packages/component-schemas/schemas/components/button.json | 3 ++- .../component-schemas/schemas/components/close-button.json | 2 +- packages/component-schemas/schemas/components/link.json | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/component-schemas/schemas/components/action-button.json b/packages/component-schemas/schemas/components/action-button.json index 29391613..9acf63fb 100644 --- a/packages/component-schemas/schemas/components/action-button.json +++ b/packages/component-schemas/schemas/components/action-button.json @@ -39,7 +39,8 @@ }, "staticColor": { "type": "string", - "enum": ["white", "black"] + "enum": ["white", "black"], + "description": "Static color must not be set for the default version of this component." }, "selectedTextColor": { "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/types/hex-color.json" diff --git a/packages/component-schemas/schemas/components/button.json b/packages/component-schemas/schemas/components/button.json index 25650650..345797b7 100644 --- a/packages/component-schemas/schemas/components/button.json +++ b/packages/component-schemas/schemas/components/button.json @@ -27,7 +27,8 @@ }, "staticColor": { "type": "string", - "enum": ["white", "black"] + "enum": ["white", "black"], + "description": "Static color must not be set for the default version of this component." }, "style": { "type": "string", diff --git a/packages/component-schemas/schemas/components/close-button.json b/packages/component-schemas/schemas/components/close-button.json index b2fe7e46..83315b1a 100644 --- a/packages/component-schemas/schemas/components/close-button.json +++ b/packages/component-schemas/schemas/components/close-button.json @@ -20,7 +20,7 @@ "staticColor": { "type": "string", "enum": ["white", "black"], - "default": null + "description": "Static color must not be set for the default version of this component." }, "isDisabled": { "type": "boolean", diff --git a/packages/component-schemas/schemas/components/link.json b/packages/component-schemas/schemas/components/link.json index bd45e29d..55b1d6d7 100644 --- a/packages/component-schemas/schemas/components/link.json +++ b/packages/component-schemas/schemas/components/link.json @@ -21,7 +21,7 @@ "staticColor": { "type": "string", "enum": ["white", "black"], - "default": null + "description": "Static color must not be set for the default version of this component." }, "state": { "type": "string", From e08891d0b01143d8218535824aea22e603b8f2f2 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Tue, 20 Aug 2024 16:11:17 +0200 Subject: [PATCH 26/32] fix: integer as property value type --- packages/component-schemas/schemas/components/popover.json | 2 +- packages/component-schemas/schemas/components/rating.json | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/component-schemas/schemas/components/popover.json b/packages/component-schemas/schemas/components/popover.json index e3184032..a0a25889 100644 --- a/packages/component-schemas/schemas/components/popover.json +++ b/packages/component-schemas/schemas/components/popover.json @@ -10,7 +10,7 @@ "type": "object", "properties": { "width": { - "type": "integer" + "type": "number" }, "height": { "type": "number" diff --git a/packages/component-schemas/schemas/components/rating.json b/packages/component-schemas/schemas/components/rating.json index 2cd95f5f..69289000 100644 --- a/packages/component-schemas/schemas/components/rating.json +++ b/packages/component-schemas/schemas/components/rating.json @@ -10,9 +10,10 @@ "type": "object", "properties": { "value": { - "type": "integer", - "minimum": 0, - "maximum": 5 + "type": "number", + "enum": [0, 1, 2, 3, 4, 5], + "default": 0, + "description": "From 0 to 5" }, "isEmphasized": { "type": "boolean", From fdb7cf614064c87824d5c2f20d3ee6ca027a07b0 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Tue, 20 Aug 2024 16:21:59 +0200 Subject: [PATCH 27/32] fix: pnpm-lock.yaml --- pnpm-lock.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9854bc1e..62b326a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -146,14 +146,14 @@ importers: dependencies: glob: specifier: ^10.3.12 - version: 10.3.12 + version: 10.4.2 devDependencies: ajv: specifier: ^8.12.0 - version: 8.12.0 + version: 8.16.0 ajv-formats: specifier: ^3.0.1 - version: 3.0.1(ajv@8.12.0) + version: 3.0.1(ajv@8.16.0) packages/tokens: devDependencies: From 2811d29290f33bb5c261cebfa317d15aa35eff39 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Tue, 20 Aug 2024 20:28:11 +0200 Subject: [PATCH 28/32] fix: add tab-item as children to tabs json schema --- packages/component-schemas/schemas/components/tabs.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/component-schemas/schemas/components/tabs.json b/packages/component-schemas/schemas/components/tabs.json index ef9f5cb4..6ea73ff0 100644 --- a/packages/component-schemas/schemas/components/tabs.json +++ b/packages/component-schemas/schemas/components/tabs.json @@ -49,6 +49,10 @@ "type": "string", "enum": ["manual", "automatic"], "default": "manual" + }, + "children": { + "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/components/tab-item.json", + "description": "Children of the tabs should be of type tab-item." } } } From 1f2fc6d0bf1a92c01dc3462704e58cb4828c1a82 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Wed, 21 Aug 2024 12:14:27 +0200 Subject: [PATCH 29/32] fix: run build to publish changed json schemas to docs/site/public --- .../schemas/components/action-button.json | 8 ++-- .../public/schemas/components/avatar.json | 4 +- .../public/schemas/components/button.json | 3 +- .../schemas/components/close-button.json | 2 +- docs/site/public/schemas/components/link.json | 2 +- .../public/schemas/components/popover.json | 2 +- .../public/schemas/components/rating.json | 7 +-- .../public/schemas/components/tab-item.json | 34 ++++++++++++++ docs/site/public/schemas/components/tabs.json | 44 +++++++++++++++---- 9 files changed, 85 insertions(+), 21 deletions(-) create mode 100644 docs/site/public/schemas/components/tab-item.json diff --git a/docs/site/public/schemas/components/action-button.json b/docs/site/public/schemas/components/action-button.json index 9486045f..9acf63fb 100644 --- a/docs/site/public/schemas/components/action-button.json +++ b/docs/site/public/schemas/components/action-button.json @@ -22,9 +22,8 @@ }, "size": { "type": "string", - "enum": ["s", "m", "l", "xl"], - "default": "m", - "pattern": "^(x?s|m|x{0,3}l)$" + "enum": ["xs", "s", "m", "l", "xl"], + "default": "m" }, "isQuiet": { "type": "boolean", @@ -40,7 +39,8 @@ }, "staticColor": { "type": "string", - "enum": ["white", "black"] + "enum": ["white", "black"], + "description": "Static color must not be set for the default version of this component." }, "selectedTextColor": { "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/types/hex-color.json" diff --git a/docs/site/public/schemas/components/avatar.json b/docs/site/public/schemas/components/avatar.json index f61c419a..8e28b0b5 100644 --- a/docs/site/public/schemas/components/avatar.json +++ b/docs/site/public/schemas/components/avatar.json @@ -15,7 +15,9 @@ "default": 100 }, "image": { - "type": "string" + "type": "string", + "enum": ["text", "image"], + "default": "image" }, "isDisabled": { "type": "boolean", diff --git a/docs/site/public/schemas/components/button.json b/docs/site/public/schemas/components/button.json index 25650650..345797b7 100644 --- a/docs/site/public/schemas/components/button.json +++ b/docs/site/public/schemas/components/button.json @@ -27,7 +27,8 @@ }, "staticColor": { "type": "string", - "enum": ["white", "black"] + "enum": ["white", "black"], + "description": "Static color must not be set for the default version of this component." }, "style": { "type": "string", diff --git a/docs/site/public/schemas/components/close-button.json b/docs/site/public/schemas/components/close-button.json index b2fe7e46..83315b1a 100644 --- a/docs/site/public/schemas/components/close-button.json +++ b/docs/site/public/schemas/components/close-button.json @@ -20,7 +20,7 @@ "staticColor": { "type": "string", "enum": ["white", "black"], - "default": null + "description": "Static color must not be set for the default version of this component." }, "isDisabled": { "type": "boolean", diff --git a/docs/site/public/schemas/components/link.json b/docs/site/public/schemas/components/link.json index bd45e29d..55b1d6d7 100644 --- a/docs/site/public/schemas/components/link.json +++ b/docs/site/public/schemas/components/link.json @@ -21,7 +21,7 @@ "staticColor": { "type": "string", "enum": ["white", "black"], - "default": null + "description": "Static color must not be set for the default version of this component." }, "state": { "type": "string", diff --git a/docs/site/public/schemas/components/popover.json b/docs/site/public/schemas/components/popover.json index e3184032..a0a25889 100644 --- a/docs/site/public/schemas/components/popover.json +++ b/docs/site/public/schemas/components/popover.json @@ -10,7 +10,7 @@ "type": "object", "properties": { "width": { - "type": "integer" + "type": "number" }, "height": { "type": "number" diff --git a/docs/site/public/schemas/components/rating.json b/docs/site/public/schemas/components/rating.json index 2cd95f5f..69289000 100644 --- a/docs/site/public/schemas/components/rating.json +++ b/docs/site/public/schemas/components/rating.json @@ -10,9 +10,10 @@ "type": "object", "properties": { "value": { - "type": "integer", - "minimum": 0, - "maximum": 5 + "type": "number", + "enum": [0, 1, 2, 3, 4, 5], + "default": 0, + "description": "From 0 to 5" }, "isEmphasized": { "type": "boolean", diff --git a/docs/site/public/schemas/components/tab-item.json b/docs/site/public/schemas/components/tab-item.json new file mode 100644 index 00000000..1b55dc69 --- /dev/null +++ b/docs/site/public/schemas/components/tab-item.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://opensource.adobe.com/spectrum-tokens/schemas/component.json", + "$id": "https://opensource.adobe.com/spectrum-tokens/schemas/components/tab-item.json", + "title": "Tab Item", + "description": "", + "meta": { + "category": "navigation", + "documentationUrl": "https://spectrum.adobe.com/page/tabs/" + }, + "type": "object", + "properties": { + "label": { + "type": "string", + "description": "If a label isn’t present, it must include an icon and becomes an icon-only tab item." + }, + "icon": { + "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/types/workflow-icon.json", + "description": "Icon must be present if the label is not defined." + }, + "isSelected": { + "type": "boolean", + "default": false + }, + "isDisabled": { + "type": "boolean", + "default": false + }, + "state": { + "type": "string", + "enum": ["default", "hover", "down", "keyboard focus"], + "default": "default" + } + } +} diff --git a/docs/site/public/schemas/components/tabs.json b/docs/site/public/schemas/components/tabs.json index 10eeeb59..6ea73ff0 100644 --- a/docs/site/public/schemas/components/tabs.json +++ b/docs/site/public/schemas/components/tabs.json @@ -9,24 +9,50 @@ }, "type": "object", "properties": { - "label": { - "type": "string" + "orientation": { + "type": "string", + "enum": ["horizontal", "vertical"], + "default": "vertical" + }, + "size": { + "type": "string", + "enum": ["s", "m", "l", "xl"], + "default": "m" + }, + "density": { + "type": "string", + "enum": ["compact", "regular"], + "default": "regular" }, - "icon": { - "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/types/workflow-icon.json" + "isFluid": { + "type": "boolean", + "default": false, + "description": "This overrides density and is only applicable to horizontal tabs." }, - "isSelected": { + "isQuiet": { "type": "boolean", "default": false }, - "isDisabled": { + "isEmphasized": { "type": "boolean", "default": false }, - "state": { + "alignment": { "type": "string", - "enum": ["default", "hover", "down", "keyboard focus"], - "default": "default" + "enum": ["start", "center"], + "default": "start" + }, + "selectedItem": { + "description": "(list of available items)" + }, + "keyboardActivation": { + "type": "string", + "enum": ["manual", "automatic"], + "default": "manual" + }, + "children": { + "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/components/tab-item.json", + "description": "Children of the tabs should be of type tab-item." } } } From 13ce53a7f211c489259e7577899e207997b0eaa1 Mon Sep 17 00:00:00 2001 From: Frank Karstens Date: Wed, 21 Aug 2024 16:36:48 +0200 Subject: [PATCH 30/32] fix: remove children from tabs.json and remove tab-item-json --- .../public/schemas/components/tab-item.json | 34 ------------------- docs/site/public/schemas/components/tabs.json | 4 --- .../schemas/components/tab-item.json | 34 ------------------- .../schemas/components/tabs.json | 4 --- 4 files changed, 76 deletions(-) delete mode 100644 docs/site/public/schemas/components/tab-item.json delete mode 100644 packages/component-schemas/schemas/components/tab-item.json diff --git a/docs/site/public/schemas/components/tab-item.json b/docs/site/public/schemas/components/tab-item.json deleted file mode 100644 index 1b55dc69..00000000 --- a/docs/site/public/schemas/components/tab-item.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "https://opensource.adobe.com/spectrum-tokens/schemas/component.json", - "$id": "https://opensource.adobe.com/spectrum-tokens/schemas/components/tab-item.json", - "title": "Tab Item", - "description": "", - "meta": { - "category": "navigation", - "documentationUrl": "https://spectrum.adobe.com/page/tabs/" - }, - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "If a label isn’t present, it must include an icon and becomes an icon-only tab item." - }, - "icon": { - "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/types/workflow-icon.json", - "description": "Icon must be present if the label is not defined." - }, - "isSelected": { - "type": "boolean", - "default": false - }, - "isDisabled": { - "type": "boolean", - "default": false - }, - "state": { - "type": "string", - "enum": ["default", "hover", "down", "keyboard focus"], - "default": "default" - } - } -} diff --git a/docs/site/public/schemas/components/tabs.json b/docs/site/public/schemas/components/tabs.json index 6ea73ff0..ef9f5cb4 100644 --- a/docs/site/public/schemas/components/tabs.json +++ b/docs/site/public/schemas/components/tabs.json @@ -49,10 +49,6 @@ "type": "string", "enum": ["manual", "automatic"], "default": "manual" - }, - "children": { - "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/components/tab-item.json", - "description": "Children of the tabs should be of type tab-item." } } } diff --git a/packages/component-schemas/schemas/components/tab-item.json b/packages/component-schemas/schemas/components/tab-item.json deleted file mode 100644 index 1b55dc69..00000000 --- a/packages/component-schemas/schemas/components/tab-item.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "https://opensource.adobe.com/spectrum-tokens/schemas/component.json", - "$id": "https://opensource.adobe.com/spectrum-tokens/schemas/components/tab-item.json", - "title": "Tab Item", - "description": "", - "meta": { - "category": "navigation", - "documentationUrl": "https://spectrum.adobe.com/page/tabs/" - }, - "type": "object", - "properties": { - "label": { - "type": "string", - "description": "If a label isn’t present, it must include an icon and becomes an icon-only tab item." - }, - "icon": { - "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/types/workflow-icon.json", - "description": "Icon must be present if the label is not defined." - }, - "isSelected": { - "type": "boolean", - "default": false - }, - "isDisabled": { - "type": "boolean", - "default": false - }, - "state": { - "type": "string", - "enum": ["default", "hover", "down", "keyboard focus"], - "default": "default" - } - } -} diff --git a/packages/component-schemas/schemas/components/tabs.json b/packages/component-schemas/schemas/components/tabs.json index 6ea73ff0..ef9f5cb4 100644 --- a/packages/component-schemas/schemas/components/tabs.json +++ b/packages/component-schemas/schemas/components/tabs.json @@ -49,10 +49,6 @@ "type": "string", "enum": ["manual", "automatic"], "default": "manual" - }, - "children": { - "$ref": "https://opensource.adobe.com/spectrum-tokens/schemas/components/tab-item.json", - "description": "Children of the tabs should be of type tab-item." } } } From dc2d6c6e12c1ea4fdc0d891b3fd50ea0b1697dd7 Mon Sep 17 00:00:00 2001 From: garthdb Date: Wed, 21 Aug 2024 09:21:46 -0600 Subject: [PATCH 31/32] chore: added changeset --- .changeset/pretty-carrots-camp.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/pretty-carrots-camp.md diff --git a/.changeset/pretty-carrots-camp.md b/.changeset/pretty-carrots-camp.md new file mode 100644 index 00000000..7d5bbe16 --- /dev/null +++ b/.changeset/pretty-carrots-camp.md @@ -0,0 +1,5 @@ +--- +"@adobe/spectrum-component-api-schemas": patch +--- + +Making adjustments to bring the schema more in line with what was on the spectrum website. From cf73cf1774f17f3cf1d1935def5b442907104855 Mon Sep 17 00:00:00 2001 From: garthdb Date: Wed, 21 Aug 2024 15:25:25 +0000 Subject: [PATCH 32/32] chore: snapshot release schema --- .changeset/pretty-carrots-camp.md | 5 ----- packages/component-schemas/CHANGELOG.md | 6 ++++++ packages/component-schemas/package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/pretty-carrots-camp.md diff --git a/.changeset/pretty-carrots-camp.md b/.changeset/pretty-carrots-camp.md deleted file mode 100644 index 7d5bbe16..00000000 --- a/.changeset/pretty-carrots-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@adobe/spectrum-component-api-schemas": patch ---- - -Making adjustments to bring the schema more in line with what was on the spectrum website. diff --git a/packages/component-schemas/CHANGELOG.md b/packages/component-schemas/CHANGELOG.md index a6910069..376cb168 100644 --- a/packages/component-schemas/CHANGELOG.md +++ b/packages/component-schemas/CHANGELOG.md @@ -1,5 +1,11 @@ # @adobe/spectrum-component-api-schemas +## 0.0.0-schema-20240821152525 + +### Patch Changes + +- [#353](https://github.com/adobe/spectrum-tokens/pull/353) [`dc2d6c6`](https://github.com/adobe/spectrum-tokens/commit/dc2d6c6e12c1ea4fdc0d891b3fd50ea0b1697dd7) Thanks [@karstens](https://github.com/karstens)! - Making adjustments to bring the schema more in line with what was on the spectrum website. + ## 0.0.0-schema-20240620220450 ### Minor Changes diff --git a/packages/component-schemas/package.json b/packages/component-schemas/package.json index 2b77d6ac..6af087e4 100644 --- a/packages/component-schemas/package.json +++ b/packages/component-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@adobe/spectrum-component-api-schemas", - "version": "0.0.0-schema-20240620220450", + "version": "0.0.0-schema-20240821152525", "description": "", "type": "module", "main": "index.js",