├── docs-app ├── app │ ├── styles │ │ └── app.css │ ├── templates │ │ ├── docs.hbs │ │ ├── application.hbs │ │ └── index.hbs │ ├── config │ │ └── environment.d.ts │ ├── assets │ │ └── styles.css │ ├── components │ │ ├── feature-card.gts │ │ └── theme-switcher.gts │ ├── app.ts │ ├── routes │ │ └── application.ts │ ├── helpers │ │ └── service.ts │ ├── router.ts │ └── index.html ├── tests │ ├── unit │ │ └── .gitkeep │ ├── integration │ │ └── .gitkeep │ ├── test-helper.ts │ ├── acceptance │ │ └── button-test.gts │ ├── index.html │ └── helpers │ │ └── index.js ├── vendor │ └── .gitkeep ├── .watchmanconfig ├── .template-lintrc.js ├── .eslintrc.cjs ├── config │ ├── optional-features.json │ ├── targets.js │ ├── deprecation-workflow.js │ ├── ember-cli-update.json │ └── environment.js ├── tailwind.config.js ├── types │ ├── docs-app │ │ └── index.d.ts │ ├── global.d.ts │ └── glint-registry.d.ts ├── .editorconfig ├── .eslintignore ├── .prettierignore ├── postcss.config.js ├── .docfy-config.js ├── .ember-cli ├── .gitignore ├── tsconfig.json ├── testem.js ├── .prettierrc.js ├── README.md └── ember-cli-build.js ├── test-app ├── app │ ├── models │ │ └── .gitkeep │ ├── routes │ │ └── .gitkeep │ ├── styles │ │ └── app.css │ ├── components │ │ └── .gitkeep │ ├── controllers │ │ └── .gitkeep │ ├── helpers │ │ └── .gitkeep │ ├── templates │ │ └── application.hbs │ ├── router.ts │ ├── config │ │ └── environment.d.ts │ ├── app.ts │ └── index.html ├── tests │ ├── unit │ │ └── .gitkeep │ ├── integration │ │ ├── .gitkeep │ │ └── components │ │ │ ├── form │ │ │ └── file-input │ │ │ │ ├── list-test.gts │ │ │ │ ├── delete-button-test.gts │ │ │ │ └── list-item-test.gts │ │ │ ├── character-count-test.gts │ │ │ ├── file-input-test.gts │ │ │ └── toucan-form │ │ │ ├── form-checkbox-test.gts │ │ │ └── form-autocomplete-test.gts │ ├── test-helper.ts │ ├── index.html │ └── helpers │ │ └── index.ts ├── .watchmanconfig ├── public │ └── robots.txt ├── .template-lintrc.js ├── .eslintrc.cjs ├── config │ ├── optional-features.json │ ├── targets.js │ ├── ember-cli-update.json │ ├── environment.js │ └── ember-try.js ├── types │ ├── global.d.ts │ └── test-app │ │ └── index.d.ts ├── .editorconfig ├── .eslintignore ├── .prettierignore ├── ember-cli-build.js ├── .ember-cli ├── tsconfig.json ├── .gitignore ├── testem.js ├── .prettierrc.js └── README.md ├── packages ├── ember-toucan-core │ ├── src │ │ ├── index.js │ │ ├── test-support │ │ │ ├── index.ts │ │ │ └── components │ │ │ │ ├── autocomplete.ts │ │ │ │ └── multiselect.ts │ │ ├── -private │ │ │ ├── types.ts │ │ │ ├── components │ │ │ │ ├── control.gts │ │ │ │ ├── hint.gts │ │ │ │ ├── label.gts │ │ │ │ ├── form │ │ │ │ │ └── controls │ │ │ │ │ │ ├── multiselect │ │ │ │ │ │ ├── chip.gts │ │ │ │ │ │ ├── remove.gts │ │ │ │ │ │ └── option.gts │ │ │ │ │ │ └── autocomplete │ │ │ │ │ │ └── option.gts │ │ │ │ └── error.gts │ │ │ ├── icons │ │ │ │ ├── chevron.gts │ │ │ │ ├── check.gts │ │ │ │ ├── cross.gts │ │ │ │ └── lock.gts │ │ │ ├── utils.ts │ │ │ └── assert-block-or-argument-exists.ts │ │ ├── components │ │ │ ├── form │ │ │ │ ├── controls │ │ │ │ │ ├── character-count.gts │ │ │ │ │ ├── input.gts │ │ │ │ │ ├── textarea.gts │ │ │ │ │ ├── radio.gts │ │ │ │ │ ├── checkbox.gts │ │ │ │ │ └── file-input.gts │ │ │ │ ├── file-input │ │ │ │ │ ├── list.gts │ │ │ │ │ ├── delete-button.gts │ │ │ │ │ └── list-item.gts │ │ │ │ └── field.gts │ │ │ └── button.gts │ │ └── template-registry.ts │ ├── .gitignore │ ├── .template-lintrc.js │ ├── .prettierignore │ ├── addon-main.cjs │ ├── .eslintrc.cjs │ ├── .eslintignore │ ├── tsconfig.json │ ├── babel.config.json │ ├── unpublished-development-types │ │ └── index.d.ts │ ├── NOTICE.md │ └── rollup.config.mjs └── ember-toucan-form │ ├── src │ ├── index.ts │ ├── template-registry.ts │ └── -private │ │ └── types.ts │ ├── .gitignore │ ├── .template-lintrc.cjs │ ├── addon-main.cjs │ ├── .eslintrc.cjs │ ├── .eslintignore │ ├── tsconfig.json │ ├── babel.config.json │ ├── NOTICE.md │ ├── unpublished-development-types │ └── index.d.ts │ └── rollup.config.mjs ├── .github ├── cs-logo.png ├── actions │ └── pnpm │ │ └── action.yml ├── pull_request_template.md └── renovate.json5 ├── pnpm-workspace.yaml ├── docs ├── components │ ├── field │ │ ├── design-spacing-guidance.png │ │ ├── demo │ │ │ └── base-demo.md │ │ └── index.md │ ├── textarea │ │ ├── demo │ │ │ └── base-demo.md │ │ └── index.md │ ├── input │ │ ├── demo │ │ │ └── base-demo.md │ │ └── index.md │ ├── button │ │ └── demo │ │ │ └── base-demo.md │ ├── checkbox │ │ ├── demo │ │ │ └── base-demo.md │ │ └── index.md │ ├── checkbox-field │ │ └── demo │ │ │ └── base-demo.md │ ├── radio │ │ ├── demo │ │ │ └── base-demo.md │ │ └── index.md │ ├── textarea-field │ │ └── demo │ │ │ └── base-demo.md │ ├── radio-field │ │ └── demo │ │ │ └── base-demo.md │ ├── input-field │ │ └── demo │ │ │ └── base-demo.md │ ├── radio-group-field │ │ └── demo │ │ │ └── base-demo.md │ ├── checkbox-group-field │ │ └── demo │ │ │ └── base-demo.md │ ├── file-input-field │ │ └── demo │ │ │ └── base-demo.md │ ├── autocomplete-field │ │ └── demo │ │ │ └── base-demo.md │ ├── multiselect-field │ │ └── demo │ │ │ └── base-demo.md │ └── autocomplete │ │ └── demo │ │ └── base-demo.md ├── toucan-form │ ├── yup-validation │ │ ├── index.md │ │ └── demo │ │ │ └── base-demo.md │ ├── index.md │ ├── async │ │ ├── index.md │ │ └── demo │ │ │ └── base-demo.md │ ├── native-validation │ │ ├── demo │ │ │ └── base-demo.md │ │ └── index.md │ └── changeset-validation │ │ └── index.md └── installation.md ├── config └── ember-cli-update.json ├── .editorconfig ├── .prettierignore ├── .gitignore ├── .changeset ├── README.md └── config.json ├── NOTICE.md ├── .prettierrc.js ├── .vscode └── extensions.json ├── turbo.json ├── README.md └── package.json /docs-app/app/styles/app.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs-app/tests/unit/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs-app/vendor/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-app/app/models/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-app/app/routes/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-app/app/styles/app.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-app/tests/unit/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-app/app/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-app/app/controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-app/app/helpers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs-app/tests/integration/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-app/tests/integration/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/src/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/src/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/.gitignore: -------------------------------------------------------------------------------- 1 | README.md 2 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/.gitignore: -------------------------------------------------------------------------------- 1 | README.md 2 | -------------------------------------------------------------------------------- /docs-app/.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /test-app/.watchmanconfig: -------------------------------------------------------------------------------- 1 | { 2 | "ignore_dirs": ["tmp", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /docs-app/app/templates/docs.hbs: -------------------------------------------------------------------------------- 1 | 2 | {{outlet}} 3 | -------------------------------------------------------------------------------- /test-app/public/robots.txt: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /.github/cs-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CrowdStrike/ember-toucan-core/HEAD/.github/cs-logo.png -------------------------------------------------------------------------------- /docs-app/.template-lintrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | extends: 'recommended', 5 | }; 6 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/*' 3 | - 'test-app' 4 | - 'docs-app' 5 | - 'internal/*' 6 | -------------------------------------------------------------------------------- /test-app/.template-lintrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | extends: 'recommended', 5 | }; 6 | -------------------------------------------------------------------------------- /test-app/app/templates/application.hbs: -------------------------------------------------------------------------------- 1 |

Welcome to Ember

2 | View the tests -------------------------------------------------------------------------------- /packages/ember-toucan-core/.template-lintrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | extends: 'recommended', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/.template-lintrc.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | extends: 'recommended', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/.prettierignore: -------------------------------------------------------------------------------- 1 | # compiled output 2 | dist/ 3 | README.md 4 | CHANGELOG.md 5 | 6 | # dependencies 7 | node_modules/ 8 | 9 | -------------------------------------------------------------------------------- /docs/components/field/design-spacing-guidance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CrowdStrike/ember-toucan-core/HEAD/docs/components/field/design-spacing-guidance.png -------------------------------------------------------------------------------- /packages/ember-toucan-core/addon-main.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { addonV1Shim } = require('@embroider/addon-shim'); 4 | 5 | module.exports = addonV1Shim(__dirname); 6 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/addon-main.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { addonV1Shim } = require('@embroider/addon-shim'); 4 | 5 | module.exports = addonV1Shim(__dirname); 6 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/src/test-support/index.ts: -------------------------------------------------------------------------------- 1 | export { AutocompletePageObject } from './components/autocomplete'; 2 | export { MultiselectPageObject } from './components/multiselect'; 3 | -------------------------------------------------------------------------------- /docs-app/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { configs } = require('@nullvoxpopuli/eslint-configs'); 4 | 5 | // accommodates: JS, TS, App, Addon, and V2 Addon 6 | module.exports = configs.ember(); 7 | -------------------------------------------------------------------------------- /test-app/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { configs } = require('@nullvoxpopuli/eslint-configs'); 4 | 5 | // accommodates: JS, TS, App, Addon, and V2 Addon 6 | module.exports = configs.ember(); 7 | -------------------------------------------------------------------------------- /docs-app/config/optional-features.json: -------------------------------------------------------------------------------- 1 | { 2 | "application-template-wrapper": false, 3 | "default-async-observers": true, 4 | "jquery-integration": false, 5 | "template-only-glimmer-components": true 6 | } 7 | -------------------------------------------------------------------------------- /test-app/config/optional-features.json: -------------------------------------------------------------------------------- 1 | { 2 | "application-template-wrapper": false, 3 | "default-async-observers": true, 4 | "jquery-integration": false, 5 | "template-only-glimmer-components": true 6 | } 7 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { configs } = require('@nullvoxpopuli/eslint-configs'); 4 | 5 | // accommodates: JS, TS, App, Addon, and V2 Addon 6 | module.exports = configs.ember(); 7 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { configs } = require('@nullvoxpopuli/eslint-configs'); 4 | 5 | // accommodates: JS, TS, App, Addon, and V2 Addon 6 | module.exports = configs.ember(); 7 | -------------------------------------------------------------------------------- /docs-app/config/targets.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const browsers = [ 4 | 'last 1 Chrome versions', 5 | 'last 1 Firefox versions', 6 | 'last 1 Safari versions', 7 | ]; 8 | 9 | module.exports = { 10 | browsers, 11 | }; 12 | -------------------------------------------------------------------------------- /test-app/config/targets.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const browsers = [ 4 | 'last 1 Chrome versions', 5 | 'last 1 Firefox versions', 6 | 'last 1 Safari versions', 7 | ]; 8 | 9 | module.exports = { 10 | browsers, 11 | }; 12 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/.eslintignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | 4 | # compiled output 5 | /dist/ 6 | 7 | # misc 8 | /coverage/ 9 | 10 | # until we have linting for gts set up 11 | **/*.gts 12 | **/*.gjs 13 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/.eslintignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | 4 | # compiled output 5 | /dist/ 6 | 7 | # misc 8 | /coverage/ 9 | 10 | # until we have linting for gts set up 11 | **/*.gts 12 | **/*.gjs 13 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/ember/tsconfig.json", 3 | "include": ["src/**/*", "unpublished-development-types/**/*"], 4 | "glint": { 5 | "environment": ["ember-loose", "ember-template-imports"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/ember/tsconfig.json", 3 | "include": ["src/**/*", "unpublished-development-types/**/*"], 4 | "glint": { 5 | "environment": ["ember-loose", "ember-template-imports"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /docs/components/textarea/demo/base-demo.md: -------------------------------------------------------------------------------- 1 | ```hbs template 2 |
3 | 4 |
5 | ``` 6 | 7 | ```js component 8 | import Component from '@glimmer/component'; 9 | 10 | export default class extends Component {} 11 | ``` 12 | -------------------------------------------------------------------------------- /docs/components/input/demo/base-demo.md: -------------------------------------------------------------------------------- 1 | ```hbs template 2 |
3 | 4 |
5 | ``` 6 | 7 | ```js component 8 | import Component from '@glimmer/component'; 9 | 10 | export default class InputDemo extends Component {} 11 | ``` 12 | -------------------------------------------------------------------------------- /docs-app/tailwind.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const path = require('path'); 4 | const { tailwindConfig } = require('@crowdstrike/ember-oss-docs/tailwind'); 5 | 6 | const config = tailwindConfig(__dirname, { 7 | content: [path.join(__dirname, '../docs/**/*.md')], 8 | }); 9 | 10 | module.exports = config; 11 | -------------------------------------------------------------------------------- /test-app/app/router.ts: -------------------------------------------------------------------------------- 1 | import EmberRouter from '@ember/routing/router'; 2 | 3 | import config from 'test-app/config/environment'; 4 | 5 | export default class Router extends EmberRouter { 6 | location = config.locationType; 7 | rootURL = config.rootURL; 8 | } 9 | 10 | Router.map(function () { 11 | // Add route declarations here 12 | }); 13 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [["@babel/preset-typescript"]], 3 | "plugins": [ 4 | "ember-template-imports/src/babel-plugin", 5 | "@embroider/addon-dev/template-colocation-plugin", 6 | ["@babel/plugin-proposal-decorators", { "legacy": true }], 7 | "@babel/plugin-proposal-class-properties" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [["@babel/preset-typescript"]], 3 | "plugins": [ 4 | "ember-template-imports/src/babel-plugin", 5 | "@embroider/addon-dev/template-colocation-plugin", 6 | ["@babel/plugin-proposal-decorators", { "legacy": true }], 7 | "@babel/plugin-proposal-class-properties" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /docs-app/config/deprecation-workflow.js: -------------------------------------------------------------------------------- 1 | self.deprecationWorkflow = self.deprecationWorkflow || {}; 2 | self.deprecationWorkflow.config = { 3 | workflow: [ 4 | // @docfyc/ember violates these, but these are "fairly recent" 5 | { handler: 'silence', matchId: 'ember-modifier.use-modify' }, 6 | { handler: 'silence', matchId: 'ember-modifier.no-args-property' }, 7 | ], 8 | }; 9 | -------------------------------------------------------------------------------- /docs/components/button/demo/base-demo.md: -------------------------------------------------------------------------------- 1 | ```hbs template 2 | 3 | ``` 4 | 5 | ```js component 6 | import Component from '@glimmer/component'; 7 | import { action } from '@ember/object'; 8 | 9 | export default class extends Component { 10 | @action 11 | onClick(e) { 12 | alert('Button clicked!'); 13 | } 14 | } 15 | ``` 16 | -------------------------------------------------------------------------------- /docs-app/app/config/environment.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Type declarations for 3 | * import config from 'my-app/config/environment' 4 | */ 5 | declare const config: { 6 | environment: string; 7 | modulePrefix: string; 8 | podModulePrefix: string; 9 | locationType: 'history' | 'hash' | 'none' | 'auto'; 10 | rootURL: string; 11 | APP: Record; 12 | }; 13 | 14 | export default config; 15 | -------------------------------------------------------------------------------- /test-app/app/config/environment.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Type declarations for 3 | * import config from 'my-app/config/environment' 4 | */ 5 | declare const config: { 6 | environment: string; 7 | modulePrefix: string; 8 | podModulePrefix: string; 9 | locationType: 'history' | 'hash' | 'none' | 'auto'; 10 | rootURL: string; 11 | APP: Record; 12 | }; 13 | 14 | export default config; 15 | -------------------------------------------------------------------------------- /docs-app/tests/test-helper.ts: -------------------------------------------------------------------------------- 1 | import { setApplication } from '@ember/test-helpers'; 2 | import * as QUnit from 'qunit'; 3 | import { setup } from 'qunit-dom'; 4 | import { start } from 'ember-qunit'; 5 | 6 | import Application from 'docs-app/app'; 7 | import config from 'docs-app/config/environment'; 8 | 9 | setApplication(Application.create(config.APP)); 10 | 11 | setup(QUnit.assert); 12 | 13 | start(); 14 | -------------------------------------------------------------------------------- /test-app/tests/test-helper.ts: -------------------------------------------------------------------------------- 1 | import { setApplication } from '@ember/test-helpers'; 2 | import * as QUnit from 'qunit'; 3 | import { setup } from 'qunit-dom'; 4 | import { start } from 'ember-qunit'; 5 | 6 | import Application from 'test-app/app'; 7 | import config from 'test-app/config/environment'; 8 | 9 | setApplication(Application.create(config.APP)); 10 | 11 | setup(QUnit.assert); 12 | 13 | start(); 14 | -------------------------------------------------------------------------------- /config/ember-cli-update.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": "1.0.0", 3 | "packages": [ 4 | { 5 | "name": "@embroider/addon-blueprint", 6 | "version": "1.3.0", 7 | "blueprints": [ 8 | { 9 | "name": "@embroider/addon-blueprint", 10 | "isBaseBlueprint": true, 11 | "options": ["--pnpm", "--ci-provider=github", "--typescript"] 12 | } 13 | ] 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /docs-app/types/docs-app/index.d.ts: -------------------------------------------------------------------------------- 1 | declare global { 2 | // Prevents ESLint from "fixing" this via its auto-fix to turn it into a type 3 | // alias (e.g. after running any Ember CLI generator) 4 | // eslint-disable-next-line @typescript-eslint/no-empty-interface 5 | // interface Array extends Ember.ArrayPrototypeExtensions {} 6 | // interface Function extends Ember.FunctionPrototypeExtensions {} 7 | } 8 | 9 | export {}; 10 | -------------------------------------------------------------------------------- /test-app/types/global.d.ts: -------------------------------------------------------------------------------- 1 | import '@glint/environment-ember-loose'; 2 | import '@glint/environment-ember-template-imports'; 3 | 4 | import type ToucanCoreRegistry from '@crowdstrike/ember-toucan-core/template-registry'; 5 | 6 | declare module '@glint/environment-ember-loose/registry' { 7 | export default interface Registry 8 | extends ToucanCoreRegistry /* other addon registries */ { 9 | // local entries 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /docs-app/app/assets/styles.css: -------------------------------------------------------------------------------- 1 | @import 'tailwindcss/base'; 2 | @import 'tailwindcss/components'; 3 | @import 'tailwindcss/utilities'; 4 | 5 | /** 6 | * postcss-import doesn't follow "exports" entries in package.json 7 | */ 8 | @import '@crowdstrike/ember-oss-docs/dist/styles/tailwind-extensions.css'; 9 | @import '@crowdstrike/ember-oss-docs/dist/styles/docfy-overrides.css'; 10 | @import '@crowdstrike/ember-oss-docs/dist/styles/hljs.css'; 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | indent_style = space 13 | indent_size = 2 14 | 15 | [*.hbs] 16 | insert_final_newline = false 17 | 18 | [*.{diff,md}] 19 | trim_trailing_whitespace = false 20 | -------------------------------------------------------------------------------- /test-app/app/app.ts: -------------------------------------------------------------------------------- 1 | import Application from '@ember/application'; 2 | 3 | import loadInitializers from 'ember-load-initializers'; 4 | import Resolver from 'ember-resolver'; 5 | import config from 'test-app/config/environment'; 6 | 7 | export default class App extends Application { 8 | modulePrefix = config.modulePrefix; 9 | podModulePrefix = config.podModulePrefix; 10 | Resolver = Resolver; 11 | } 12 | 13 | loadInitializers(App, config.modulePrefix); 14 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /bower_components/ 11 | /node_modules/ 12 | 13 | # misc 14 | /coverage/ 15 | !.* 16 | .eslintcache 17 | .lint-todo/ 18 | 19 | # ember-try 20 | /.node_modules.ember-try/ 21 | /bower.json.ember-try 22 | /npm-shrinkwrap.json.ember-try 23 | /package.json.ember-try 24 | /package-lock.json.ember-try 25 | /yarn.lock.ember-try 26 | -------------------------------------------------------------------------------- /docs-app/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | indent_style = space 13 | indent_size = 2 14 | 15 | [*.hbs] 16 | insert_final_newline = false 17 | 18 | [*.{diff,md}] 19 | trim_trailing_whitespace = false 20 | -------------------------------------------------------------------------------- /docs-app/.eslintignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /bower_components/ 11 | /node_modules/ 12 | 13 | # misc 14 | /coverage/ 15 | !.* 16 | .*/ 17 | .eslintcache 18 | 19 | # ember-try 20 | /.node_modules.ember-try/ 21 | /bower.json.ember-try 22 | /npm-shrinkwrap.json.ember-try 23 | /package.json.ember-try 24 | /package-lock.json.ember-try 25 | /yarn.lock.ember-try 26 | -------------------------------------------------------------------------------- /test-app/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | indent_style = space 13 | indent_size = 2 14 | 15 | [*.hbs] 16 | insert_final_newline = false 17 | 18 | [*.{diff,md}] 19 | trim_trailing_whitespace = false 20 | -------------------------------------------------------------------------------- /test-app/.eslintignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /bower_components/ 11 | /node_modules/ 12 | 13 | # misc 14 | /coverage/ 15 | !.* 16 | .*/ 17 | .eslintcache 18 | 19 | # ember-try 20 | /.node_modules.ember-try/ 21 | /bower.json.ember-try 22 | /npm-shrinkwrap.json.ember-try 23 | /package.json.ember-try 24 | /package-lock.json.ember-try 25 | /yarn.lock.ember-try 26 | -------------------------------------------------------------------------------- /test-app/types/test-app/index.d.ts: -------------------------------------------------------------------------------- 1 | import type Ember from 'ember'; 2 | 3 | declare global { 4 | // Prevents ESLint from "fixing" this via its auto-fix to turn it into a type 5 | // alias (e.g. after running any Ember CLI generator) 6 | // eslint-disable-next-line @typescript-eslint/no-empty-interface 7 | interface Array extends Ember.ArrayPrototypeExtensions {} 8 | // interface Function extends Ember.FunctionPrototypeExtensions {} 9 | } 10 | 11 | export {}; 12 | -------------------------------------------------------------------------------- /docs-app/.prettierignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /bower_components/ 11 | /node_modules/ 12 | 13 | # misc 14 | /coverage/ 15 | !.* 16 | .eslintcache 17 | .lint-todo/ 18 | 19 | # ember-try 20 | /.node_modules.ember-try/ 21 | /bower.json.ember-try 22 | /npm-shrinkwrap.json.ember-try 23 | /package.json.ember-try 24 | /package-lock.json.ember-try 25 | /yarn.lock.ember-try 26 | -------------------------------------------------------------------------------- /test-app/.prettierignore: -------------------------------------------------------------------------------- 1 | # unconventional js 2 | /blueprints/*/files/ 3 | /vendor/ 4 | 5 | # compiled output 6 | /dist/ 7 | /tmp/ 8 | 9 | # dependencies 10 | /bower_components/ 11 | /node_modules/ 12 | 13 | # misc 14 | /coverage/ 15 | !.* 16 | .eslintcache 17 | .lint-todo/ 18 | 19 | # ember-try 20 | /.node_modules.ember-try/ 21 | /bower.json.ember-try 22 | /npm-shrinkwrap.json.ember-try 23 | /package.json.ember-try 24 | /package-lock.json.ember-try 25 | /yarn.lock.ember-try 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | .DS_Store 3 | 4 | # compiled output 5 | dist/ 6 | 7 | # dependencies 8 | node_modules/ 9 | 10 | # misc 11 | .turbo/ 12 | /.env* 13 | /.pnp* 14 | /.sass-cache 15 | .eslintcache 16 | /connect.lock 17 | /coverage/ 18 | /libpeerconnection.log 19 | /npm-debug.log* 20 | /testem.log 21 | /yarn-error.log 22 | 23 | # ember-try 24 | /.node_modules.ember-try/ 25 | /package.json.ember-try 26 | /yarn.lock.ember-try -------------------------------------------------------------------------------- /docs-app/postcss.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const env = process.env.EMBER_ENV || 'development'; 4 | 5 | const plugins = [ 6 | require('postcss-import'), 7 | require('tailwindcss/nesting'), 8 | require('tailwindcss')({ config: './tailwind.config.js' }), 9 | require('autoprefixer'), 10 | ]; 11 | 12 | if (env === 'production') { 13 | plugins.push( 14 | require('cssnano')({ 15 | preset: 'default', 16 | }) 17 | ); 18 | } 19 | 20 | module.exports = { 21 | plugins, 22 | }; 23 | -------------------------------------------------------------------------------- /test-app/ember-cli-build.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const EmberApp = require('ember-cli/lib/broccoli/ember-app'); 4 | 5 | module.exports = function (defaults) { 6 | let app = new EmberApp(defaults, { 7 | autoImport: { 8 | watchDependencies: [ 9 | '@crowdstrike/ember-toucan-core', 10 | '@crowdstrike/ember-toucan-form', 11 | ], 12 | }, 13 | }); 14 | 15 | const { maybeEmbroider } = require('@embroider/test-setup'); 16 | 17 | return maybeEmbroider(app); 18 | }; 19 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/src/template-registry.ts: -------------------------------------------------------------------------------- 1 | // Easily allow apps, which are not yet using strict mode templates, to consume your Glint types, by importing this file. 2 | // Add all your components, helpers and modifiers to the template registry here, so apps don't have to do this. 3 | // See https://typed-ember.gitbook.io/glint/using-glint/ember/authoring-addons 4 | import type ToucanFormComponent from './components/toucan-form'; 5 | 6 | export default interface Registry { 7 | ToucanForm: typeof ToucanFormComponent; 8 | } 9 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/src/-private/types.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Callback used for input change events. 3 | */ 4 | export type OnChangeCallback = (value: T, e: Event | InputEvent) => void; 5 | 6 | /** 7 | * Reusable type for handling error messages. At the moment, we support 8 | * either a single string or an array of strings. 9 | * 10 | * Normally used with the private `Error` component and consumed by 11 | * components for their `@error` component argument. 12 | */ 13 | export type ErrorMessage = string | Array; 14 | -------------------------------------------------------------------------------- /docs-app/app/components/feature-card.gts: -------------------------------------------------------------------------------- 1 | import type { TOC } from '@ember/component/template-only'; 2 | 3 | const FeatureCard: TOC<{ 4 | Element: HTMLDivElement; 5 | Args: { title: string; } 6 | Blocks: { 7 | default: []; 8 | } 9 | }> = ; 19 | 20 | export default FeatureCard; 21 | -------------------------------------------------------------------------------- /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /docs-app/app/app.ts: -------------------------------------------------------------------------------- 1 | // import our applications style entrypoint 2 | import './assets/styles.css'; 3 | 4 | import Application from '@ember/application'; 5 | 6 | import config from 'docs-app/config/environment'; 7 | import loadInitializers from 'ember-load-initializers'; 8 | import Resolver from 'ember-resolver'; 9 | 10 | export default class App extends Application { 11 | modulePrefix = config.modulePrefix; 12 | podModulePrefix = config.podModulePrefix; 13 | Resolver = Resolver; 14 | } 15 | 16 | loadInitializers(App, config.modulePrefix); 17 | -------------------------------------------------------------------------------- /docs-app/config/ember-cli-update.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": "1.0.0", 3 | "packages": [ 4 | { 5 | "name": "ember-cli", 6 | "version": "4.7.0", 7 | "blueprints": [ 8 | { 9 | "name": "app", 10 | "outputRepo": "https://github.com/ember-cli/ember-new-output", 11 | "codemodsSource": "ember-app-codemods-manifest@1", 12 | "isBaseBlueprint": true, 13 | "options": ["--no-welcome", "--embroider", "--ci-provider=github"] 14 | } 15 | ] 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /docs/components/checkbox/demo/base-demo.md: -------------------------------------------------------------------------------- 1 | ```hbs template 2 | 6 | ``` 7 | 8 | ```js component 9 | import Component from '@glimmer/component'; 10 | import { action } from '@ember/object'; 11 | import { tracked } from '@glimmer/tracking'; 12 | 13 | export default class extends Component { 14 | @tracked isChecked = false; 15 | 16 | @action 17 | handleChange(checkedState) { 18 | this.isChecked = checkedState; 19 | } 20 | } 21 | ``` 22 | -------------------------------------------------------------------------------- /test-app/config/ember-cli-update.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": "1.0.0", 3 | "packages": [ 4 | { 5 | "name": "ember-cli", 6 | "version": "4.9.2", 7 | "blueprints": [ 8 | { 9 | "name": "app", 10 | "outputRepo": "https://github.com/ember-cli/ember-new-output", 11 | "codemodsSource": "ember-app-codemods-manifest@1", 12 | "isBaseBlueprint": true, 13 | "options": ["--no-welcome", "--ci-provider=github", "--typescript"] 14 | } 15 | ] 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/unpublished-development-types/index.d.ts: -------------------------------------------------------------------------------- 1 | // Add any types here that you need for local development only. 2 | // These will *not* be published as part of your addon, so be careful that your published code does not rely on them! 3 | 4 | import '@glint/environment-ember-loose'; 5 | 6 | import type ToucanCoreRegistry from '../src/template-registry'; 7 | 8 | declare module '@glint/environment-ember-loose/registry' { 9 | export default interface Registry extends ToucanCoreRegistry { 10 | // local entries 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/src/-private/components/control.gts: -------------------------------------------------------------------------------- 1 | import type { TemplateOnlyComponent } from '@ember/component/template-only'; 2 | 3 | export interface ToucanFormControlComponentSignature { 4 | Element: HTMLDivElement; 5 | Args: {}; 6 | Blocks: { 7 | default: []; 8 | }; 9 | } 10 | 11 | const ToucanCoreControlComponent: TemplateOnlyComponent = 12 | ; 17 | 18 | export default ToucanCoreControlComponent; 19 | -------------------------------------------------------------------------------- /docs-app/.docfy-config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const path = require('path'); 4 | 5 | const monorepoRoot = path.resolve(__dirname, '..'); 6 | 7 | module.exports = { 8 | repository: { 9 | url: 'https://github.com/CrowdStrike/ember-toucan-core', 10 | editBranch: 'main', 11 | }, 12 | sources: [ 13 | { 14 | root: path.resolve(monorepoRoot, 'docs'), 15 | pattern: '**/*.md', 16 | // if set to "manual", the URL will need to be specified in each markdown file 17 | urlSchema: 'auto', 18 | urlPrefix: 'docs', 19 | }, 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /docs/components/checkbox-field/demo/base-demo.md: -------------------------------------------------------------------------------- 1 | ```hbs template 2 | 7 | ``` 8 | 9 | ```js component 10 | import Component from '@glimmer/component'; 11 | import { action } from '@ember/object'; 12 | import { tracked } from '@glimmer/tracking'; 13 | 14 | export default class extends Component { 15 | @tracked isChecked = false; 16 | 17 | @action 18 | handleChange(checkedState) { 19 | this.isChecked = checkedState; 20 | } 21 | } 22 | ``` 23 | -------------------------------------------------------------------------------- /NOTICE.md: -------------------------------------------------------------------------------- 1 | Copyright 2023 CrowdStrike 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /docs-app/app/routes/application.ts: -------------------------------------------------------------------------------- 1 | import { getOwner } from '@ember/application'; 2 | import Route from '@ember/routing/route'; 3 | import { service } from '@ember/service'; 4 | 5 | import { setupHLJS } from '@crowdstrike/ember-oss-docs/utils/highlighting'; 6 | import { type ThemeManager, THEMES } from '@crowdstrike/ember-toucan-styles'; 7 | 8 | export default class Application extends Route { 9 | @service declare themeManager: ThemeManager; 10 | 11 | beforeModel() { 12 | this.themeManager.setup(THEMES.LIGHT); 13 | } 14 | 15 | afterModel() { 16 | setupHLJS(getOwner(this)); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /docs-app/tests/acceptance/button-test.gts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef -- Until https://github.com/ember-cli/eslint-plugin-ember/issues/1747 is resolved... */ 2 | import { currentURL, visit } from '@ember/test-helpers'; 3 | import { module, test } from 'qunit'; 4 | import { setupApplicationTest } from 'ember-qunit'; 5 | 6 | module('Acceptance | Button', function (hooks) { 7 | setupApplicationTest(hooks); 8 | 9 | test('visiting the button page', async function (assert) { 10 | await visit('/docs/components/button'); 11 | assert.strictEqual(currentURL(), '/docs/components/button'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /docs-app/.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false, 9 | 10 | /** 11 | Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript 12 | rather than JavaScript by default, when a TypeScript version of a given blueprint is available. 13 | */ 14 | "isTypeScriptProject": false, 15 | "port": 4201 16 | } 17 | -------------------------------------------------------------------------------- /test-app/.ember-cli: -------------------------------------------------------------------------------- 1 | { 2 | /** 3 | Ember CLI sends analytics information by default. The data is completely 4 | anonymous, but there are times when you might want to disable this behavior. 5 | 6 | Setting `disableAnalytics` to true will prevent any data from being sent. 7 | */ 8 | "disableAnalytics": false, 9 | 10 | /** 11 | Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript 12 | rather than JavaScript by default, when a TypeScript version of a given blueprint is available. 13 | */ 14 | "isTypeScriptProject": true, 15 | "port": 4200 16 | } 17 | -------------------------------------------------------------------------------- /docs-app/app/helpers/service.ts: -------------------------------------------------------------------------------- 1 | import { getOwner } from '@ember/application'; 2 | import Helper from '@ember/component/helper'; 3 | 4 | import type { Registry } from '@ember/service'; 5 | 6 | interface Signature { 7 | Return: Registry[Key]; 8 | Args: { 9 | Positional: [serviceName: Key]; 10 | }; 11 | } 12 | 13 | export default class GetService extends Helper< 14 | Signature 15 | > { 16 | compute([name]: [Key]): Registry[Key] { 17 | let owner = getOwner(this); 18 | 19 | return owner.lookup(`service:${name}`) as Registry[Key]; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test-app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/ember/tsconfig.json", 3 | "compilerOptions": { 4 | // The combination of `baseUrl` with `paths` allows Ember's classic package 5 | // layout, which is not resolvable with the Node resolution algorithm, to 6 | // work with TypeScript. 7 | "baseUrl": ".", 8 | "paths": { 9 | "test-app/tests/*": ["tests/*"], 10 | "test-app/*": ["app/*"], 11 | "*": ["types/*"] 12 | } 13 | }, 14 | "glint": { 15 | "environment": ["ember-loose", "ember-template-imports"] 16 | }, 17 | "include": ["app/**/*", "tests/**/*", "types/**/*"] 18 | } 19 | -------------------------------------------------------------------------------- /packages/ember-toucan-core/NOTICE.md: -------------------------------------------------------------------------------- 1 | Copyright 2023 CrowdStrike 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /packages/ember-toucan-form/NOTICE.md: -------------------------------------------------------------------------------- 1 | Copyright 2023 CrowdStrike 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /docs/toucan-form/yup-validation/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yup validation 3 | order: 3 4 | --- 5 | 6 | # Yup validation 7 | 8 | This demo shows how to implement [yup](https://github.com/jquense/yup) validation with ember-toucan-form, powered by [ember-headless-form](https://ember-headless-form.pages.dev/docs/validation/yup). 9 | 10 | ## Install the adapter package 11 | 12 | Before using yup validations with Toucan Form, you'll need to install it as a dependency. 13 | 14 | ```bash 15 | pnpm add yup ember-headless-form-yup 16 | # or 17 | yarn add yup ember-headless-form-yup 18 | # or 19 | npm install yup ember-headless-form-yup 20 | ``` 21 | -------------------------------------------------------------------------------- /docs-app/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist/ 5 | /tmp/ 6 | 7 | # dependencies 8 | /bower_components/ 9 | /node_modules/ 10 | 11 | # misc 12 | /.env* 13 | /.pnp* 14 | /.sass-cache 15 | /.eslintcache 16 | /connect.lock 17 | /coverage/ 18 | /libpeerconnection.log 19 | /npm-debug.log* 20 | /testem.log 21 | /yarn-error.log 22 | 23 | # ember-try 24 | /.node_modules.ember-try/ 25 | /bower.json.ember-try 26 | /npm-shrinkwrap.json.ember-try 27 | /package.json.ember-try 28 | /package-lock.json.ember-try 29 | /yarn.lock.ember-try 30 | 31 | # broccoli-debug 32 | /DEBUG/ 33 | -------------------------------------------------------------------------------- /test-app/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist/ 5 | /tmp/ 6 | 7 | # dependencies 8 | /bower_components/ 9 | /node_modules/ 10 | 11 | # misc 12 | /.env* 13 | /.pnp* 14 | /.sass-cache 15 | /.eslintcache 16 | /connect.lock 17 | /coverage/ 18 | /libpeerconnection.log 19 | /npm-debug.log* 20 | /testem.log 21 | /yarn-error.log 22 | 23 | # ember-try 24 | /.node_modules.ember-try/ 25 | /bower.json.ember-try 26 | /npm-shrinkwrap.json.ember-try 27 | /package.json.ember-try 28 | /package-lock.json.ember-try 29 | /yarn.lock.ember-try 30 | 31 | # broccoli-debug 32 | /DEBUG/ 33 | -------------------------------------------------------------------------------- /docs-app/types/global.d.ts: -------------------------------------------------------------------------------- 1 | // Types for compiled templates 2 | declare module 'docs-app/templates/*' { 3 | import type { TemplateFactory } from 'ember-cli-htmlbars'; 4 | 5 | const tmpl: TemplateFactory; 6 | export default tmpl; 7 | } 8 | 9 | declare module '*.css' { 10 | const styles: { [className: string]: string }; 11 | export default styles; 12 | } 13 | 14 | // Types for these are not yet shipped 15 | declare module '@ember/helper'; 16 | declare module '@ember/modifier'; 17 | 18 | // Types for these do not exist 19 | declare module 'highlightjs-glimmer/vendor/highlight.js'; 20 | declare module 'highlightjs-glimmer/vendor/javascript.min'; 21 | -------------------------------------------------------------------------------- /docs/components/radio/demo/base-demo.md: -------------------------------------------------------------------------------- 1 | ```hbs template 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | ``` 11 | 12 | ```js component 13 | import Component from '@glimmer/component'; 14 | 15 | export default class extends Component {} 16 | ``` 17 | -------------------------------------------------------------------------------- /docs-app/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/ember/tsconfig.json", 3 | "glint": { 4 | "environment": ["ember-loose", "ember-template-imports"] 5 | }, 6 | "compilerOptions": { 7 | "noEmitOnError": false, 8 | 9 | // The combination of `baseUrl` with `paths` allows Ember's classic package 10 | // layout, which is not resolvable with the Node resolution algorithm, to 11 | // work with TypeScript. 12 | "baseUrl": ".", 13 | "paths": { 14 | "docs-app/tests/*": ["tests/*"], 15 | "docs-app/*": ["app/*"], 16 | "*": ["types/*"] 17 | } 18 | }, 19 | "include": ["app/**/*", "tests/**/*", "types/**/*"] 20 | } 21 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | plugins: ['prettier-plugin-ember-template-tag'], 5 | singleQuote: true, 6 | templateSingleQuote: false, 7 | // this was required to make the VSCode + Prettier work correctly with