diff --git a/package-lock.json b/package-lock.json
index 97d6ae894a..337b3adccc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
"workspaces": [
"packages/antd",
"packages/bootstrap-4",
+ "packages/carbon",
"packages/chakra-ui",
"packages/core",
"packages/docs",
@@ -2374,6 +2375,160 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
+ "node_modules/@carbon/colors": {
+ "version": "11.22.0",
+ "resolved": "https://registry.npmjs.org/@carbon/colors/-/colors-11.22.0.tgz",
+ "integrity": "sha512-IRbzstMpIhD1ULhfYhZ5ne7kIKdhQhiMeltWRPw+7wlFB5ezFoX+kX3ILqdz20CkcrpLu+TVKLD79Zv/+4RD6w==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@ibm/telemetry-js": "^1.5.0"
+ }
+ },
+ "node_modules/@carbon/feature-flags": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/@carbon/feature-flags/-/feature-flags-0.20.0.tgz",
+ "integrity": "sha512-OEYrazJa0nEEHbBDyarXIz6kjWgqsJggjbNAcVOxx0Nvma1nZBd+SwXKwdbMkBZagSSC816dV12oZJtr+GIZZg==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@ibm/telemetry-js": "^1.5.0"
+ }
+ },
+ "node_modules/@carbon/grid": {
+ "version": "11.23.0",
+ "resolved": "https://registry.npmjs.org/@carbon/grid/-/grid-11.23.0.tgz",
+ "integrity": "sha512-/8SiXzefUdUeIRzMxKB2+xq65knjkDas2TcZj0NS7dnDIEr5HarWTABh/H5b5BTFEJXos3PfEH6X5OUDuK4qpg==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@carbon/layout": "^11.22.0",
+ "@ibm/telemetry-js": "^1.5.0"
+ }
+ },
+ "node_modules/@carbon/icon-helpers": {
+ "version": "10.48.0",
+ "resolved": "https://registry.npmjs.org/@carbon/icon-helpers/-/icon-helpers-10.48.0.tgz",
+ "integrity": "sha512-umCh4iBDKYF0+SB2yu8CqLDek2A9/Bv71YBFxngh77H20KiAheP8Zt7BZjSfI8vbm+q9zbIkBLMF8P5Da8i25w==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@ibm/telemetry-js": "^1.5.0"
+ }
+ },
+ "node_modules/@carbon/icons-react": {
+ "version": "11.43.0",
+ "resolved": "https://registry.npmjs.org/@carbon/icons-react/-/icons-react-11.43.0.tgz",
+ "integrity": "sha512-nQUj8s94j0P3ja2+J9Og06rWFsuetvyc+PUNgkUT0w/ZezfMibX05PafX3pdNT0Gjy5cvRqwbrRLlNyYhfwlwQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@carbon/icon-helpers": "^10.48.0",
+ "@ibm/telemetry-js": "^1.5.0",
+ "prop-types": "^15.7.2"
+ },
+ "peerDependencies": {
+ "react": ">=16"
+ }
+ },
+ "node_modules/@carbon/layout": {
+ "version": "11.22.0",
+ "resolved": "https://registry.npmjs.org/@carbon/layout/-/layout-11.22.0.tgz",
+ "integrity": "sha512-G9HUJhGW+hNfUKyCLUZior5PDz808prB2Xr3vWF/rqNwLIDKhva/wCXBW2Xl0LavzonuibaCavcSYJGDkpDKhw==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@ibm/telemetry-js": "^1.5.0"
+ }
+ },
+ "node_modules/@carbon/motion": {
+ "version": "11.18.0",
+ "resolved": "https://registry.npmjs.org/@carbon/motion/-/motion-11.18.0.tgz",
+ "integrity": "sha512-hVTmRxhXCA+xznXZSTd6m0kmuIRrR8mxnDHvrVKFvN3ksTYDni5Mtx4XNylI4u/fmzyUcvrvVeTHqJ8LbPsDvA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@ibm/telemetry-js": "^1.5.0"
+ }
+ },
+ "node_modules/@carbon/react": {
+ "version": "1.59.0",
+ "resolved": "https://registry.npmjs.org/@carbon/react/-/react-1.59.0.tgz",
+ "integrity": "sha512-uD+I/IT5R4cnZa3k8AcTOMtctICll9a0O5XEI+Y7ezMDXhjPlCbX0Gt1QIomCg6TvEKEWTPEsuYOHSkJKbQK8w==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@carbon/feature-flags": "^0.20.0",
+ "@carbon/icons-react": "^11.43.0",
+ "@carbon/layout": "^11.22.0",
+ "@carbon/styles": "^1.59.0",
+ "@floating-ui/react": "^0.26.0",
+ "@ibm/telemetry-js": "^1.5.0",
+ "classnames": "2.5.1",
+ "copy-to-clipboard": "^3.3.1",
+ "downshift": "8.5.0",
+ "flatpickr": "4.6.13",
+ "invariant": "^2.2.3",
+ "lodash.debounce": "^4.0.8",
+ "lodash.findlast": "^4.5.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.omit": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "prop-types": "^15.7.2",
+ "react-is": "^18.2.0",
+ "tabbable": "^6.2.0",
+ "use-resize-observer": "^6.0.0",
+ "wicg-inert": "^3.1.1",
+ "window-or-global": "^1.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.8.6 || ^17.0.1 || ^18.2.0",
+ "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0",
+ "sass": "^1.33.0"
+ }
+ },
+ "node_modules/@carbon/styles": {
+ "version": "1.59.0",
+ "resolved": "https://registry.npmjs.org/@carbon/styles/-/styles-1.59.0.tgz",
+ "integrity": "sha512-AQ4LAsd343i8dMR01itebT4wnvc1VukPUOB5S3UWtT2GlvOVyTncMaVWaEmD9L/ZTTiZh7kD2YzGBlANBZ72yA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@carbon/colors": "^11.22.0",
+ "@carbon/feature-flags": "^0.20.0",
+ "@carbon/grid": "^11.23.0",
+ "@carbon/layout": "^11.22.0",
+ "@carbon/motion": "^11.18.0",
+ "@carbon/themes": "^11.36.0",
+ "@carbon/type": "^11.27.0",
+ "@ibm/plex": "6.0.0-next.6",
+ "@ibm/telemetry-js": "^1.5.0"
+ },
+ "peerDependencies": {
+ "sass": "^1.33.0"
+ },
+ "peerDependenciesMeta": {
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@carbon/themes": {
+ "version": "11.36.0",
+ "resolved": "https://registry.npmjs.org/@carbon/themes/-/themes-11.36.0.tgz",
+ "integrity": "sha512-i6v7OdGCe+XisXI53lFLSSIiwFhb9DuVjqT7DU+nnbLnXFOeU6ZPzCGMFzB1HXXvTu7K9s++23Yj3acclTvGnQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@carbon/colors": "^11.22.0",
+ "@carbon/layout": "^11.22.0",
+ "@carbon/type": "^11.27.0",
+ "@ibm/telemetry-js": "^1.5.0",
+ "color": "^4.0.0"
+ }
+ },
+ "node_modules/@carbon/type": {
+ "version": "11.27.0",
+ "resolved": "https://registry.npmjs.org/@carbon/type/-/type-11.27.0.tgz",
+ "integrity": "sha512-+YsFTKsch8xcdZ7y40K69B+47j86H7u8HEZ9OfymmXfMYAT+73MTfAtwyO3leS9rWGljKIh0h3I+Ga7wxE0Q6w==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "@carbon/grid": "^11.23.0",
+ "@carbon/layout": "^11.22.0",
+ "@ibm/telemetry-js": "^1.5.0"
+ }
+ },
"node_modules/@chakra-ui/accordion": {
"version": "1.4.12",
"resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-1.4.12.tgz",
@@ -4579,12 +4734,26 @@
"@floating-ui/utils": "^0.2.1"
}
},
+ "node_modules/@floating-ui/react": {
+ "version": "0.26.16",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.16.tgz",
+ "integrity": "sha512-HEf43zxZNAI/E781QIVpYSF3K2VH4TTYZpqecjdsFkjsaU1EbaWcM++kw0HXFffj7gDUcBFevX8s0rQGQpxkow==",
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.1.0",
+ "@floating-ui/utils": "^0.2.0",
+ "tabbable": "^6.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
"node_modules/@floating-ui/react-dom": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz",
- "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz",
+ "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==",
"dependencies": {
- "@floating-ui/dom": "^1.6.1"
+ "@floating-ui/dom": "^1.0.0"
},
"peerDependencies": {
"react": ">=16.8.0",
@@ -6168,6 +6337,22 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@ibm/plex": {
+ "version": "6.0.0-next.6",
+ "resolved": "https://registry.npmjs.org/@ibm/plex/-/plex-6.0.0-next.6.tgz",
+ "integrity": "sha512-B3uGruTn2rS5gweynLmfSe7yCawSRsJguJJQHVQiqf4rh2RNgJFu8YLE2Zd/JHV0ZXoVMOslcXP2k3hMkxKEyA==",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@ibm/telemetry-js": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.5.2.tgz",
+ "integrity": "sha512-KyvaHbiNMDtz2k/9DltkK3YkWTyvz8y7Pq1sQ4cnXDMzHiEatOyxw3zZgK9li80tgUOYMQLck9DLewEuhvtg7w==",
+ "bin": {
+ "ibmtelemetry": "dist/collect.js"
+ }
+ },
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
@@ -9501,6 +9686,10 @@
"resolved": "packages/bootstrap-4",
"link": true
},
+ "node_modules/@rjsf/carbon": {
+ "resolved": "packages/carbon",
+ "link": true
+ },
"node_modules/@rjsf/chakra-ui": {
"resolved": "packages/chakra-ui",
"link": true
@@ -13640,6 +13829,18 @@
"integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
"dev": true
},
+ "node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -13656,6 +13857,15 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
"node_modules/color-support": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
@@ -15451,6 +15661,26 @@
"node": ">=10"
}
},
+ "node_modules/downshift": {
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/downshift/-/downshift-8.5.0.tgz",
+ "integrity": "sha512-BAr/KAZX8GGARwWl4aER6ABv8aAaRXZcVKP0m1oFPKpSIXCGuoqnhi6nRf87glHhYDd/CCPp9RVUK27JKJD/Fw==",
+ "dependencies": {
+ "@babel/runtime": "^7.22.15",
+ "compute-scroll-into-view": "^3.0.3",
+ "prop-types": "^15.8.1",
+ "react-is": "^18.2.0",
+ "tslib": "^2.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.12.0"
+ }
+ },
+ "node_modules/downshift/node_modules/compute-scroll-into-view": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz",
+ "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg=="
+ },
"node_modules/duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -16950,6 +17180,11 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/flatpickr": {
+ "version": "4.6.13",
+ "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz",
+ "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw=="
+ },
"node_modules/flatted": {
"version": "3.2.9",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
@@ -22228,6 +22463,11 @@
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
},
+ "node_modules/lodash.findlast": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.findlast/-/lodash.findlast-4.6.0.tgz",
+ "integrity": "sha512-+OGwb1FVKjhc2aIEQ9vKqNDW1a0/HaCLr0iCIK10jfVif3dBE0nhQD0jOZNZLh7zOlmFUTrk+vt85eXoH4vKuA=="
+ },
"node_modules/lodash.flow": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz",
@@ -22239,6 +22479,11 @@
"integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
"dev": true
},
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ },
"node_modules/lodash.ismatch": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
@@ -22261,6 +22506,16 @@
"resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
"integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ=="
},
+ "node_modules/lodash.omit": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
+ "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg=="
+ },
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
+ },
"node_modules/lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -29969,6 +30224,19 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ },
"node_modules/sinon": {
"version": "9.2.4",
"resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz",
@@ -30926,6 +31194,11 @@
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"dev": true
},
+ "node_modules/tabbable": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
+ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="
+ },
"node_modules/tabster": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/tabster/-/tabster-6.0.0.tgz",
@@ -32474,6 +32747,18 @@
}
}
},
+ "node_modules/use-resize-observer": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-6.1.0.tgz",
+ "integrity": "sha512-SiPcWHiIQ1CnHmb6PxbYtygqiZXR0U9dNkkbpX9VYnlstUwF8+QqpUTrzh13pjPwcjMVGR+QIC+nvF5ujfFNng==",
+ "dependencies": {
+ "resize-observer-polyfill": "^1.5.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
+ }
+ },
"node_modules/use-sidecar": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
@@ -33355,6 +33640,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/wicg-inert": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/wicg-inert/-/wicg-inert-3.1.2.tgz",
+ "integrity": "sha512-Ba9tGNYxXwaqKEi9sJJvPMKuo063umUPsHN0JJsjrs2j8KDSzkWLMZGZ+MH1Jf1Fq4OWZ5HsESJID6nRza2ang=="
+ },
"node_modules/wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
@@ -33412,6 +33702,11 @@
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="
},
+ "node_modules/window-or-global": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/window-or-global/-/window-or-global-1.0.1.tgz",
+ "integrity": "sha512-tE12J/NenOv4xdVobD+AD3fT06T4KNqnzRhkv5nBIu7K+pvOH2oLCEgYP+i+5mF2jtI6FEADheOdZkA8YWET9w=="
+ },
"node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
@@ -34570,6 +34865,51 @@
"react-bootstrap": "^1.6.5"
}
},
+ "packages/carbon": {
+ "name": "@rjsf/carbon",
+ "version": "5.18.4",
+ "license": "Apache-2.0",
+ "devDependencies": {
+ "@babel/core": "^7.23.9",
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
+ "@babel/plugin-proposal-optional-chaining": "^7.21.0",
+ "@babel/preset-env": "^7.23.9",
+ "@babel/preset-react": "^7.23.3",
+ "@babel/preset-typescript": "^7.23.3",
+ "@carbon/icons-react": "11.43.0",
+ "@carbon/react": "1.59.0",
+ "@rjsf/core": "^5.18.4",
+ "@rjsf/snapshot-tests": "^5.18.4",
+ "@rjsf/utils": "^5.18.4",
+ "@rjsf/validator-ajv8": "^5.18.4",
+ "@types/jest": "^29.5.12",
+ "@types/react": "^18.2.58",
+ "@types/react-dom": "^18.2.19",
+ "@types/react-test-renderer": "^18.0.7",
+ "babel-jest": "^29.7.0",
+ "esbuild": "^0.18.20",
+ "eslint": "^8.56.0",
+ "jest": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
+ "jest-watch-typeahead": "^2.2.2",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-test-renderer": "^18.2.0",
+ "rimraf": "^5.0.5",
+ "rollup": "^3.29.4",
+ "typescript": "^4.9.5"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@carbon/icons-react": "11.43.0",
+ "@carbon/react": "1.59.0",
+ "@rjsf/core": "^5.18.x",
+ "@rjsf/utils": "^5.18.x",
+ "react": "^16.14.0 || >=17"
+ }
+ },
"packages/chakra-ui": {
"name": "@rjsf/chakra-ui",
"version": "5.18.4",
@@ -34981,6 +35321,8 @@
"dependencies": {
"@ant-design/icons": "^4.8.1",
"@babel/runtime": "^7.23.9",
+ "@carbon/icons-react": "11.43.0",
+ "@carbon/react": "1.59.0",
"@chakra-ui/icons": "^1.1.7",
"@chakra-ui/react": "^1.8.9",
"@fluentui/react": "^8.115.3",
@@ -34989,6 +35331,7 @@
"@mui/material": "5.15.2",
"@rjsf/antd": "^5.18.4",
"@rjsf/bootstrap-4": "^5.18.4",
+ "@rjsf/carbon": "^5.18.4",
"@rjsf/chakra-ui": "^5.18.4",
"@rjsf/core": "^5.18.4",
"@rjsf/fluent-ui": "^5.18.4",
diff --git a/package.json b/package.json
index ab2216c78b..7aa75698c4 100644
--- a/package.json
+++ b/package.json
@@ -64,6 +64,7 @@
"workspaces": [
"packages/antd",
"packages/bootstrap-4",
+ "packages/carbon",
"packages/chakra-ui",
"packages/core",
"packages/docs",
diff --git a/packages/carbon/.eslintrc b/packages/carbon/.eslintrc
new file mode 100644
index 0000000000..731b36bae0
--- /dev/null
+++ b/packages/carbon/.eslintrc
@@ -0,0 +1,4 @@
+{
+ "extends": ["../../.eslintrc"],
+ "plugins": ["@typescript-eslint", "jsx-a11y", "react", "import"]
+}
diff --git a/packages/carbon/README.md b/packages/carbon/README.md
new file mode 100644
index 0000000000..0a5e344351
--- /dev/null
+++ b/packages/carbon/README.md
@@ -0,0 +1,164 @@
+[![Build Status][build-shield]][build-url]
+[![npm][npm-shield]][npm-url]
+[![npm downloads][npm-dl-shield]][npm-dl-url]
+[![Contributors][contributors-shield]][contributors-url]
+[![Apache 2.0 License][license-shield]][license-url]
+
+
+
+
+
+
+
+
+
@rjsf/chakra-ui
+
+
+ Chakra UI theme, fields and widgets for react-jsonschema-form
.
+
+ Explore the docs »
+
+
+ View Playground
+ ·
+ Report Bug
+ ·
+ Request Feature
+
+
+
+
+
+## Table of Contents
+
+- [Table of Contents](#table-of-contents)
+- [About The Project](#about-the-project)
+ - [Built With](#built-with)
+- [Getting Started](#getting-started)
+ - [Prerequisites](#prerequisites)
+ - [Installation](#installation)
+- [Usage](#usage)
+- [Optional Chakra UI Theme properties](#optional-chakra-ui-theme-properties)
+ - [Custom Chakra uiSchema Chakra Property](#custom-chakra-uischema-chakra-property)
+- [Roadmap](#roadmap)
+- [Contributing](#contributing)
+- [Contact](#contact)
+
+
+
+## About The Project
+
+[![@rjsf/chakra-ui Screen Shot][product-screenshot]](https://rjsf-team.github.io/@rjsf/chakra-ui)
+
+Exports `chakra-ui` theme, fields and widgets for `react-jsonschema-form`.
+
+### Built With
+
+- [react-jsonschema-form](https://github.com/rjsf-team/react-jsonschema-form/)
+- [Chakra UI](https://chakra-ui.com/)
+- [TypeScript](https://www.typescriptlang.org/)
+
+
+
+## Getting Started
+
+### Prerequisites
+
+- `@chakra-ui/react >= 1.7.0`
+- `chakra-react-select >= 3.3.8`
+- `react >= 17.0.0`
+- `framer-motion >= 5.0.0`
+- `@rjsf/core >= 2.0.0`
+
+Refer to the [rjsf installation guide](https://rjsf-team.github.io/react-jsonschema-form/docs/#installation) and [chakra-ui installation guide](https://chakra-ui.com/docs/getting-started#installation) and for more details.
+
+---
+
+### Installation
+
+```bash
+yarn add @chakra-ui/react@^1.7 @emotion/react@^11 @emotion/styled@^11 framer-motion@^5
+```
+
+```bash
+yarn add @rjsf/chakra-ui @rjsf/core
+```
+
+
+
+## Usage
+
+```js
+import Form from '@rjsf/chakra-ui';
+```
+
+or
+
+```js
+import { withTheme } from '@rjsf/core';
+import { Theme as ChakraUITheme } from '@rjsf/chakra-ui';
+
+// Make modifications to the theme with your own fields and widgets
+
+const Form = withTheme(ChakraUITheme);
+```
+
+## Optional Chakra UI Theme properties
+
+- To pass additional properties to widgets, see this [guide](https://rjsf-team.github.io/react-jsonschema-form/docs/usage/objects#additional-properties).
+
+You can use `ChakraProvider`, to customize the components at a theme level.\
+And, `uiSchema` allows for the use of a `"chakra"` `"ui:option"` to customize the styling of the form widgets.
+
+#### Custom Chakra uiSchema Chakra Property
+
+```json
+{
+ "ui:options": {
+ "chakra": {
+ "p": "1rem",
+ "color": "blue.200",
+ "sx": {
+ "margin": "0 auto"
+ }
+ }
+ }
+}
+```
+
+It accepts the theme accessible [style props](https://chakra-ui.com/docs/features/style-props) provided by [Chakra](https://chakra-ui.com/docs/getting-started) and [Emotion](https://emotion.sh/docs/introduction).
+
+
+
+## Roadmap
+
+See the [open issues](https://github.com/rjsf-team/react-jsonschema-form/issues) for a list of proposed features (and known issues).
+
+
+
+## Contributing
+
+Read our [contributors' guide](https://rjsf-team.github.io/react-jsonschema-form/docs/contributing/) to get started.
+
+
+
+## Contact
+
+rjsf team: [https://github.com/orgs/rjsf-team/people](https://github.com/orgs/rjsf-team/people)
+
+GitHub repository: [https://github.com/rjsf-team/react-jsonschema-form](https://github.com/rjsf-team/react-jsonschema-form)
+
+
+
+
+[build-shield]: https://github.com/rjsf-team/react-jsonschema-form/workflows/CI/badge.svg
+[build-url]: https://github.com/rjsf-team/react-jsonschema-form/actions
+[contributors-shield]: https://img.shields.io/github/contributors/rjsf-team/react-jsonschema-form.svg
+[contributors-url]: https://github.com/rjsf-team/react-jsonschema-form/graphs/contributors
+[license-shield]: https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat-square
+[license-url]: https://choosealicense.com/licenses/apache-2.0/
+[npm-shield]: https://img.shields.io/npm/v/@rjsf/chakra-ui/latest.svg?style=flat-square
+[npm-url]: https://www.npmjs.com/package/@rjsf/chakra-ui
+[npm-dl-shield]: https://img.shields.io/npm/dm/@rjsf/chakra-ui.svg?style=flat-square
+[npm-dl-url]: https://www.npmjs.com/package/@rjsf/chakra-ui
+[product-screenshot]: ./screenshot.png
diff --git a/packages/carbon/babel.config.js b/packages/carbon/babel.config.js
new file mode 100644
index 0000000000..5f772a56c4
--- /dev/null
+++ b/packages/carbon/babel.config.js
@@ -0,0 +1,3 @@
+const defaultConfig = require('../../babel.config');
+
+module.exports = defaultConfig;
diff --git a/packages/carbon/jest.config.js b/packages/carbon/jest.config.js
new file mode 100644
index 0000000000..2701979b23
--- /dev/null
+++ b/packages/carbon/jest.config.js
@@ -0,0 +1,7 @@
+module.exports = {
+ testEnvironment: 'jsdom',
+ testEnvironmentOptions: {
+ browsers: ['chrome', 'firefox', 'safari'],
+ },
+ transformIgnorePatterns: [`/node_modules/(?!nanoid)`],
+};
diff --git a/packages/carbon/logo.png b/packages/carbon/logo.png
new file mode 100644
index 0000000000..9e67972393
Binary files /dev/null and b/packages/carbon/logo.png differ
diff --git a/packages/carbon/package.json b/packages/carbon/package.json
new file mode 100644
index 0000000000..556fbd0cfd
--- /dev/null
+++ b/packages/carbon/package.json
@@ -0,0 +1,78 @@
+{
+ "name": "@rjsf/carbon",
+ "version": "5.18.4",
+ "description": "Carbon Design UI theme, fields, and widgets for react-jsonschema-form",
+ "main": "dist/index.js",
+ "module": "lib/index.js",
+ "typings": "lib/index.d.ts",
+ "files": [
+ "dist",
+ "lib",
+ "src"
+ ],
+ "scripts": {
+ "build:ts": "tsc -b",
+ "build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.js --sourcemap --packages=external --format=cjs",
+ "build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/carbon.esm.js --sourcemap --packages=external --format=esm",
+ "build:umd": "rollup dist/carbon.esm.js --format=umd --file=dist/carbon.umd.js --name=@rjsf/carbon",
+ "build": "npm run build:ts && npm run build:cjs && npm run build:esm && npm run build:umd",
+ "cs-check": "prettier -l \"{src,test}/**/*.ts?(x)\"",
+ "cs-format": "prettier \"{src,test}/**/*.ts?(x)\" --write",
+ "lint": "eslint src test",
+ "precommit": "lint-staged",
+ "test": "jest",
+ "test:update": "jest --u",
+ "test:watch": "jest --watch"
+ },
+ "lint-staged": {
+ "{src,test}/**/*.ts?(x)": [
+ "eslint --fix"
+ ]
+ },
+ "engineStrict": false,
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "@carbon/icons-react": "11.43.0",
+ "@carbon/react": "1.59.0",
+ "@rjsf/core": "^5.18.x",
+ "@rjsf/utils": "^5.18.x",
+ "react": "^16.14.0 || >=17"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "author": "Jianghao Yu ",
+ "license": "Apache-2.0",
+ "devDependencies": {
+ "@babel/core": "^7.23.9",
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
+ "@babel/plugin-proposal-optional-chaining": "^7.21.0",
+ "@babel/preset-env": "^7.23.9",
+ "@babel/preset-react": "^7.23.3",
+ "@babel/preset-typescript": "^7.23.3",
+ "@carbon/icons-react": "11.43.0",
+ "@carbon/react": "1.59.0",
+ "@rjsf/core": "^5.18.4",
+ "@rjsf/snapshot-tests": "^5.18.4",
+ "@rjsf/utils": "^5.18.4",
+ "@rjsf/validator-ajv8": "^5.18.4",
+ "@types/jest": "^29.5.12",
+ "@types/react": "^18.2.58",
+ "@types/react-dom": "^18.2.19",
+ "@types/react-test-renderer": "^18.0.7",
+ "babel-jest": "^29.7.0",
+ "esbuild": "^0.18.20",
+ "eslint": "^8.56.0",
+ "jest": "^29.7.0",
+ "jest-environment-jsdom": "^29.7.0",
+ "jest-watch-typeahead": "^2.2.2",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-test-renderer": "^18.2.0",
+ "rimraf": "^5.0.5",
+ "rollup": "^3.29.4",
+ "typescript": "^4.9.5"
+ }
+}
diff --git a/packages/carbon/screenshot.png b/packages/carbon/screenshot.png
new file mode 100644
index 0000000000..de7f75089f
Binary files /dev/null and b/packages/carbon/screenshot.png differ
diff --git a/packages/carbon/src/AddButton/AddButton.tsx b/packages/carbon/src/AddButton/AddButton.tsx
new file mode 100644
index 0000000000..6c2dadd777
--- /dev/null
+++ b/packages/carbon/src/AddButton/AddButton.tsx
@@ -0,0 +1,18 @@
+import { Add } from '@carbon/icons-react';
+import { Button } from '@carbon/react';
+import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';
+
+/** Implement `ButtonTemplates.AddButton`
+ */
+export default function AddButton({
+ uiSchema,
+ registry,
+ ...props
+}: IconButtonProps) {
+ const { translateString } = registry;
+ return (
+
+ );
+}
diff --git a/packages/carbon/src/AddButton/index.ts b/packages/carbon/src/AddButton/index.ts
new file mode 100644
index 0000000000..752d720d32
--- /dev/null
+++ b/packages/carbon/src/AddButton/index.ts
@@ -0,0 +1,2 @@
+export { default } from './AddButton';
+export * from './AddButton';
diff --git a/packages/carbon/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx b/packages/carbon/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx
new file mode 100644
index 0000000000..8ca3362e3d
--- /dev/null
+++ b/packages/carbon/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx
@@ -0,0 +1,80 @@
+import { useMemo } from 'react';
+import { ArrayFieldTemplateItemType, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
+
+/** Implement `ArrayFieldItemTemplate`
+ */
+export default function ArrayFieldItemTemplate<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: ArrayFieldTemplateItemType) {
+ const {
+ className,
+ children,
+ disabled,
+ hasToolbar,
+ hasCopy,
+ hasMoveDown,
+ hasMoveUp,
+ hasRemove,
+ index,
+ onCopyIndexClick,
+ onDropIndexClick,
+ onReorderClick,
+ readonly,
+ uiSchema,
+ registry,
+ } = props;
+ const { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } = registry.templates.ButtonTemplates;
+ const onCopyClick = useMemo(() => onCopyIndexClick(index), [index, onCopyIndexClick]);
+
+ const onRemoveClick = useMemo(() => onDropIndexClick(index), [index, onDropIndexClick]);
+
+ const onArrowUpClick = useMemo(() => onReorderClick(index, index - 1), [index, onReorderClick]);
+
+ const onArrowDownClick = useMemo(() => onReorderClick(index, index + 1), [index, onReorderClick]);
+
+ return (
+
+
{children}
+ {hasToolbar && (
+
+ {(hasMoveUp || hasMoveDown) && (
+
+ )}
+ {(hasMoveUp || hasMoveDown) && (
+
+ )}
+ {hasCopy && (
+
+ )}
+ {hasRemove && (
+
+ )}
+
+
+ )}
+
+ );
+}
diff --git a/packages/carbon/src/ArrayFieldItemTemplate/index.ts b/packages/carbon/src/ArrayFieldItemTemplate/index.ts
new file mode 100644
index 0000000000..f104431399
--- /dev/null
+++ b/packages/carbon/src/ArrayFieldItemTemplate/index.ts
@@ -0,0 +1,2 @@
+export { default } from './ArrayFieldItemTemplate';
+export * from './ArrayFieldItemTemplate';
diff --git a/packages/carbon/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx b/packages/carbon/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx
new file mode 100644
index 0000000000..741d30a637
--- /dev/null
+++ b/packages/carbon/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx
@@ -0,0 +1,95 @@
+import { Stack } from '@carbon/react';
+import {
+ getTemplate,
+ getUiOptions,
+ ArrayFieldTemplateItemType,
+ ArrayFieldTemplateProps,
+ StrictRJSFSchema,
+ RJSFSchema,
+ FormContextType,
+} from '@rjsf/utils';
+import { LayerBackground } from '../components/Layer';
+import getCarbonOptions from '../utils';
+
+/** Implement `ArrayFieldTemplate`
+ */
+export default function ArrayFieldTemplate<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: ArrayFieldTemplateProps) {
+ const {
+ className,
+ canAdd,
+ disabled,
+ idSchema,
+ uiSchema,
+ items,
+ onAddClick,
+ readonly,
+ registry,
+ required,
+ schema,
+ title,
+ } = props;
+ const uiOptions = getUiOptions(uiSchema);
+ const carbonOptions = getCarbonOptions(registry.formContext, uiOptions);
+ const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>(
+ 'ArrayFieldDescriptionTemplate',
+ registry,
+ uiOptions
+ );
+ const ArrayFieldItemTemplate = getTemplate<'ArrayFieldItemTemplate', T, S, F>(
+ 'ArrayFieldItemTemplate',
+ registry,
+ uiOptions
+ );
+ const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>(
+ 'ArrayFieldTitleTemplate',
+ registry,
+ uiOptions
+ );
+ // Button templates are not overridden in the uiSchema
+ const {
+ ButtonTemplates: { AddButton },
+ } = registry.templates;
+ return (
+
+
+
+
+
+ {items.length > 0 && (
+
+ {items.map(({ key, ...itemProps }: ArrayFieldTemplateItemType) => (
+
+ ))}
+
+ )}
+ {canAdd && (
+
+ )}
+
+
+
+ );
+}
diff --git a/packages/carbon/src/ArrayFieldTemplate/index.ts b/packages/carbon/src/ArrayFieldTemplate/index.ts
new file mode 100644
index 0000000000..ab908dec2c
--- /dev/null
+++ b/packages/carbon/src/ArrayFieldTemplate/index.ts
@@ -0,0 +1,2 @@
+export { default } from './ArrayFieldTemplate';
+export * from './ArrayFieldTemplate';
diff --git a/packages/carbon/src/BaseInputTemplate/BaseInputTemplate.tsx b/packages/carbon/src/BaseInputTemplate/BaseInputTemplate.tsx
new file mode 100644
index 0000000000..94454873bf
--- /dev/null
+++ b/packages/carbon/src/BaseInputTemplate/BaseInputTemplate.tsx
@@ -0,0 +1,96 @@
+import { ChangeEvent, FocusEvent } from 'react';
+import {
+ ariaDescribedByIds,
+ BaseInputTemplateProps,
+ examplesId,
+ FormContextType,
+ getInputProps,
+ getUiOptions,
+ RJSFSchema,
+ StrictRJSFSchema,
+} from '@rjsf/utils';
+import { TextInput } from '@carbon/react';
+import { LabelValue } from '../components/LabelValue';
+import getCarbonOptions from '../utils';
+
+/** Implement `BaseInputTemplate`
+ */
+export default function BaseInputTemplate<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: BaseInputTemplateProps) {
+ const {
+ id,
+ type,
+ value,
+ label,
+ hideLabel,
+ schema,
+ onChange,
+ onChangeOverride,
+ onBlur,
+ onFocus,
+ options,
+ required,
+ readonly,
+ rawErrors,
+ autofocus,
+ placeholder,
+ disabled,
+ uiSchema,
+ } = props;
+ const inputProps = getInputProps(schema, type, options);
+ const uiOptions = getUiOptions(uiSchema);
+ const carbonOptions = getCarbonOptions(props.registry.formContext, uiOptions);
+
+ const _onChange = ({ target: { value } }: ChangeEvent) =>
+ onChange(value === '' ? options.emptyValue : value);
+ const _onBlur = ({ target: { value } }: FocusEvent) => onBlur(id, value);
+ const _onFocus = ({ target: { value } }: FocusEvent) => onFocus(id, value);
+
+ return (
+
+
+ }
+ onChange={onChangeOverride || _onChange}
+ onBlur={_onBlur}
+ onFocus={_onFocus}
+ autoFocus={autofocus}
+ placeholder={placeholder}
+ required={required}
+ disabled={disabled || readonly}
+ invalid={rawErrors && rawErrors.length > 0}
+ aria-describedby={ariaDescribedByIds(id, !!schema.examples)}
+ list={schema.examples ? examplesId(id) : undefined}
+ {...inputProps}
+ size={carbonOptions.size}
+ />
+ {Array.isArray(schema.examples) ? (
+
+ ) : null}
+
+ );
+}
diff --git a/packages/carbon/src/BaseInputTemplate/index.ts b/packages/carbon/src/BaseInputTemplate/index.ts
new file mode 100644
index 0000000000..f7ef8d5939
--- /dev/null
+++ b/packages/carbon/src/BaseInputTemplate/index.ts
@@ -0,0 +1,2 @@
+export { default } from './BaseInputTemplate';
+export * from './BaseInputTemplate';
diff --git a/packages/carbon/src/CheckboxWidget/CheckboxWidget.tsx b/packages/carbon/src/CheckboxWidget/CheckboxWidget.tsx
new file mode 100644
index 0000000000..07b44084f9
--- /dev/null
+++ b/packages/carbon/src/CheckboxWidget/CheckboxWidget.tsx
@@ -0,0 +1,88 @@
+import { ChangeEvent, FocusEvent } from 'react';
+import {
+ ariaDescribedByIds,
+ descriptionId,
+ getTemplate,
+ WidgetProps,
+ schemaRequiresTrueValue,
+ StrictRJSFSchema,
+ RJSFSchema,
+ FormContextType,
+} from '@rjsf/utils';
+import { Checkbox } from '@carbon/react';
+import { LabelValue } from '../components/LabelValue';
+
+/** Implement `CheckboxWidget`
+ */
+export default function CheckboxWidget<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: WidgetProps) {
+ const {
+ id,
+ value,
+ disabled,
+ readonly,
+ rawErrors,
+ onChange,
+ onBlur,
+ onFocus,
+ label,
+ hideLabel,
+ registry,
+ options,
+ uiSchema,
+ schema,
+ } = props;
+ // Because an unchecked checkbox will cause html5 validation to fail, only add
+ // the "required" attribute if the field value must be "true", due to the
+ // "const" or "enum" keywords
+ const required = schemaRequiresTrueValue(schema);
+ const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(
+ 'DescriptionFieldTemplate',
+ registry,
+ options
+ );
+ const description = options.description || schema.description;
+
+ const _onChange = ({ target: { checked } }: ChangeEvent) => onChange(checked);
+ const _onBlur = ({ target: { value } }: FocusEvent) => onBlur(id, value);
+ const _onFocus = ({ target: { value } }: FocusEvent) => onFocus(id, value);
+
+ return (
+ <>
+
+ }
+ checked={typeof value === 'undefined' ? false : value}
+ disabled={disabled || readonly}
+ invalid={rawErrors && rawErrors.length > 0}
+ onChange={_onChange}
+ onBlur={_onBlur}
+ onFocus={_onFocus}
+ aria-describedby={ariaDescribedByIds(id)}
+ readOnly={readonly}
+ required={required}
+ />
+ {!hideLabel && !!description && (
+ (id)}
+ description={description}
+ schema={schema}
+ uiSchema={uiSchema}
+ registry={registry}
+ />
+ )}
+ >
+ );
+}
diff --git a/packages/carbon/src/CheckboxWidget/index.ts b/packages/carbon/src/CheckboxWidget/index.ts
new file mode 100644
index 0000000000..b9e3c318ec
--- /dev/null
+++ b/packages/carbon/src/CheckboxWidget/index.ts
@@ -0,0 +1,2 @@
+export { default } from './CheckboxWidget';
+export * from './CheckboxWidget';
diff --git a/packages/carbon/src/CheckboxesWidget/CheckboxesWidget.tsx b/packages/carbon/src/CheckboxesWidget/CheckboxesWidget.tsx
new file mode 100644
index 0000000000..d320ce7a91
--- /dev/null
+++ b/packages/carbon/src/CheckboxesWidget/CheckboxesWidget.tsx
@@ -0,0 +1,100 @@
+import { FocusEvent } from 'react';
+// @ts-expect-error No types available for CheckboxGroup
+import { CheckboxGroup, Checkbox } from '@carbon/react';
+import {
+ ariaDescribedByIds,
+ enumOptionsIndexForValue,
+ enumOptionsIsSelected,
+ enumOptionsValueForIndex,
+ optionId,
+ FormContextType,
+ RJSFSchema,
+ StrictRJSFSchema,
+ WidgetProps,
+} from '@rjsf/utils';
+
+/** Implement `CheckboxesWidget`
+ */
+export default function CheckboxesWidget<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: WidgetProps) {
+ const {
+ id,
+ disabled,
+ options,
+ value,
+ readonly,
+ onChange,
+ onBlur,
+ onFocus,
+ // uiSchema,
+ rawErrors = [],
+ } = props;
+ const { enumOptions, enumDisabled, emptyValue } = options;
+ const checkboxesValues = Array.isArray(value) ? value : [value];
+
+ const _onBlur = ({ target: { value } }: FocusEvent) =>
+ onBlur(id, enumOptionsValueForIndex(value, enumOptions, emptyValue));
+ const _onFocus = ({ target: { value } }: FocusEvent) =>
+ onFocus(id, enumOptionsValueForIndex(value, enumOptions, emptyValue));
+
+ // const row = options ? options.inline : false;
+ const selectedIndexes = enumOptionsIndexForValue(value, enumOptions, true) as string[];
+
+ const onCheckboxChange = (changedIndex: number) => {
+ const option: string[] = [...selectedIndexes];
+ if (option.indexOf(String(changedIndex)) !== -1) {
+ option.splice(option.indexOf(String(changedIndex)), 1);
+ } else {
+ option.push(String(changedIndex));
+ }
+ onChange(enumOptionsValueForIndex(option, enumOptions, emptyValue));
+ };
+
+ return (
+ <>
+
+ (id)}
+ invalid={rawErrors && rawErrors.length > 0}
+ >
+ {Array.isArray(enumOptions) &&
+ enumOptions.map((option, index) => {
+ const checked = enumOptionsIsSelected(option.value, checkboxesValues);
+ const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
+ return (
+ onCheckboxChange(index)}
+ id={optionId(id, index)}
+ name={id}
+ value={String(index)}
+ checked={checked}
+ disabled={disabled || itemDisabled || readonly}
+ onBlur={_onBlur}
+ onFocus={_onFocus}
+ readOnly={readonly}
+ defaultChecked={selectedIndexes.indexOf(String(index)) !== -1}
+ />
+ );
+ })}
+
+ >
+ );
+}
diff --git a/packages/carbon/src/CheckboxesWidget/index.ts b/packages/carbon/src/CheckboxesWidget/index.ts
new file mode 100644
index 0000000000..97152004fa
--- /dev/null
+++ b/packages/carbon/src/CheckboxesWidget/index.ts
@@ -0,0 +1,2 @@
+export { default } from './CheckboxesWidget';
+export * from './CheckboxesWidget';
diff --git a/packages/carbon/src/DescriptionField/DescriptionField.tsx b/packages/carbon/src/DescriptionField/DescriptionField.tsx
new file mode 100644
index 0000000000..8506205583
--- /dev/null
+++ b/packages/carbon/src/DescriptionField/DescriptionField.tsx
@@ -0,0 +1,19 @@
+import { DescriptionFieldProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
+
+/** Implement `DescriptionField`
+ */
+export default function DescriptionField<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>({ description, id }: DescriptionFieldProps) {
+ if (!description) {
+ return null;
+ }
+
+ return (
+
+ {description}
+
+ );
+}
diff --git a/packages/carbon/src/DescriptionField/index.ts b/packages/carbon/src/DescriptionField/index.ts
new file mode 100644
index 0000000000..401540d99b
--- /dev/null
+++ b/packages/carbon/src/DescriptionField/index.ts
@@ -0,0 +1,2 @@
+export { default } from './DescriptionField';
+export * from './DescriptionField';
diff --git a/packages/carbon/src/ErrorList/ErrorList.tsx b/packages/carbon/src/ErrorList/ErrorList.tsx
new file mode 100644
index 0000000000..c3c97720c1
--- /dev/null
+++ b/packages/carbon/src/ErrorList/ErrorList.tsx
@@ -0,0 +1,44 @@
+import { ErrorListProps, FormContextType, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';
+import { InlineNotification, UnorderedList, ListItem } from '@carbon/react';
+
+/** Implement `ErrorListTemplate`
+ */
+export default function ErrorList({
+ errors,
+ registry,
+}: ErrorListProps) {
+ const { translateString } = registry;
+ return (
+ <>
+
+ {}}
+ >
+
+
{translateString(TranslatableString.ErrorsLabel)}
+
+ {errors.map((err, i) => (
+
+ {err.stack}
+
+ ))}
+
+
+
+ >
+ );
+}
diff --git a/packages/carbon/src/ErrorList/index.ts b/packages/carbon/src/ErrorList/index.ts
new file mode 100644
index 0000000000..79376ace11
--- /dev/null
+++ b/packages/carbon/src/ErrorList/index.ts
@@ -0,0 +1,2 @@
+export { default } from './ErrorList';
+export * from './ErrorList';
diff --git a/packages/carbon/src/FieldErrorTemplate/FieldErrorTemplate.tsx b/packages/carbon/src/FieldErrorTemplate/FieldErrorTemplate.tsx
new file mode 100644
index 0000000000..038ee6d016
--- /dev/null
+++ b/packages/carbon/src/FieldErrorTemplate/FieldErrorTemplate.tsx
@@ -0,0 +1,41 @@
+import { errorId, FieldErrorProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
+
+/** Implement `FieldErrorTemplate`
+ */
+export default function FieldErrorTemplate<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: FieldErrorProps) {
+ const { errors = [], idSchema } = props;
+ if (errors.length === 0) {
+ return null;
+ }
+ const id = errorId(idSchema);
+
+ return (
+ <>
+ {/* TODO can we use css file? */}
+
+
+ {errors.map((error, i: number) => {
+ return (
+
+ {error}
+
+ );
+ })}
+
+ >
+ );
+}
diff --git a/packages/carbon/src/FieldErrorTemplate/index.ts b/packages/carbon/src/FieldErrorTemplate/index.ts
new file mode 100644
index 0000000000..2fbf1c353d
--- /dev/null
+++ b/packages/carbon/src/FieldErrorTemplate/index.ts
@@ -0,0 +1,2 @@
+export { default } from './FieldErrorTemplate';
+export * from './FieldErrorTemplate';
diff --git a/packages/carbon/src/FieldHelpTemplate/FieldHelpTemplate.tsx b/packages/carbon/src/FieldHelpTemplate/FieldHelpTemplate.tsx
new file mode 100644
index 0000000000..8a6a8ddd2d
--- /dev/null
+++ b/packages/carbon/src/FieldHelpTemplate/FieldHelpTemplate.tsx
@@ -0,0 +1,20 @@
+import { helpId, FieldHelpProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
+
+/** Implement `FieldHelpTemplate`
+ */
+export default function FieldHelpTemplate<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: FieldHelpProps) {
+ const { idSchema, help } = props;
+ if (!help) {
+ return null;
+ }
+ const id = helpId(idSchema);
+ return (
+
+ {help}
+
+ );
+}
diff --git a/packages/carbon/src/FieldHelpTemplate/index.ts b/packages/carbon/src/FieldHelpTemplate/index.ts
new file mode 100644
index 0000000000..b439bce3f1
--- /dev/null
+++ b/packages/carbon/src/FieldHelpTemplate/index.ts
@@ -0,0 +1,2 @@
+export { default } from './FieldHelpTemplate';
+export * from './FieldHelpTemplate';
diff --git a/packages/carbon/src/FieldTemplate/FieldTemplate.tsx b/packages/carbon/src/FieldTemplate/FieldTemplate.tsx
new file mode 100644
index 0000000000..233063ee4a
--- /dev/null
+++ b/packages/carbon/src/FieldTemplate/FieldTemplate.tsx
@@ -0,0 +1,88 @@
+import { FormGroup, Stack } from '@carbon/react';
+import {
+ FieldTemplateProps,
+ FormContextType,
+ getTemplate,
+ getUiOptions,
+ RJSFSchema,
+ StrictRJSFSchema,
+} from '@rjsf/utils';
+import { LabelValue } from '../components/LabelValue';
+import getCarbonOptions from '../utils';
+
+/** Implement `FieldTemplate`
+ */
+export default function FieldTemplate<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: FieldTemplateProps) {
+ const {
+ id,
+ children,
+ classNames,
+ style,
+ disabled,
+ displayLabel,
+ hidden,
+ label,
+ onDropPropertyClick,
+ onKeyChange,
+ readonly,
+ registry,
+ required,
+ rawErrors = [],
+ errors,
+ help,
+ description,
+ rawDescription,
+ schema,
+ uiSchema,
+ } = props;
+ const uiOptions = getUiOptions(uiSchema);
+ const carbonOptions = getCarbonOptions(registry.formContext, uiOptions);
+ const WrapIfAdditionalTemplate = getTemplate<'WrapIfAdditionalTemplate', T, S, F>(
+ 'WrapIfAdditionalTemplate',
+ registry,
+ uiOptions
+ );
+
+ if (hidden) {
+ return {children}
;
+ }
+
+ return (
+
+
+
+
+ }
+ invalid={rawErrors.length > 0}
+ >
+ {children}
+
+ {/* Carbon Design System hide description if there are errors and warnings */}
+ {rawErrors.length ? (
+ errors
+ ) : displayLabel && rawDescription ? (
+ {description}
+ ) : null}
+ {help}
+
+ );
+}
diff --git a/packages/carbon/src/FieldTemplate/index.ts b/packages/carbon/src/FieldTemplate/index.ts
new file mode 100644
index 0000000000..6f7dc3861c
--- /dev/null
+++ b/packages/carbon/src/FieldTemplate/index.ts
@@ -0,0 +1,2 @@
+export { default } from './FieldTemplate';
+export * from './FieldTemplate';
diff --git a/packages/carbon/src/Fields/Fields.tsx b/packages/carbon/src/Fields/Fields.tsx
new file mode 100644
index 0000000000..da794bd673
--- /dev/null
+++ b/packages/carbon/src/Fields/Fields.tsx
@@ -0,0 +1,17 @@
+import { FormContextType, RegistryFieldsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
+import MultiSchemaField from '../MultiSchemaField';
+
+/** Generates a set of Fields `carbon` theme uses.
+ */
+export function generateFields<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(): RegistryFieldsType {
+ return {
+ OneOfField: MultiSchemaField,
+ AnyOfField: MultiSchemaField,
+ };
+}
+
+export default generateFields();
diff --git a/packages/carbon/src/Fields/index.ts b/packages/carbon/src/Fields/index.ts
new file mode 100644
index 0000000000..c65ffe072d
--- /dev/null
+++ b/packages/carbon/src/Fields/index.ts
@@ -0,0 +1,2 @@
+export { default } from './Fields';
+export * from './Fields';
diff --git a/packages/carbon/src/Form/Form.tsx b/packages/carbon/src/Form/Form.tsx
new file mode 100644
index 0000000000..c301ea124f
--- /dev/null
+++ b/packages/carbon/src/Form/Form.tsx
@@ -0,0 +1,17 @@
+import { ComponentType } from 'react';
+import { withTheme, FormProps } from '@rjsf/core';
+import { generateTheme } from '../Theme';
+import { FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
+
+/** Generate a `Form` component that is customized with the `carbon` theme.
+ *
+ */
+export function generateForm<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(): ComponentType> {
+ return withTheme(generateTheme());
+}
+
+export default generateForm();
diff --git a/packages/carbon/src/Form/index.ts b/packages/carbon/src/Form/index.ts
new file mode 100644
index 0000000000..60f008b592
--- /dev/null
+++ b/packages/carbon/src/Form/index.ts
@@ -0,0 +1,2 @@
+export { default } from './Form';
+export * from './Form';
diff --git a/packages/carbon/src/IconButton/IconButton.tsx b/packages/carbon/src/IconButton/IconButton.tsx
new file mode 100644
index 0000000000..e73b726d53
--- /dev/null
+++ b/packages/carbon/src/IconButton/IconButton.tsx
@@ -0,0 +1,90 @@
+import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';
+
+import { Button } from '@carbon/react';
+import { Copy, ArrowDown, ArrowUp, TrashCan } from '@carbon/icons-react';
+
+/** Implement `ButtonTemplates.CopyButton`
+ */
+export function CopyButton(
+ props: IconButtonProps
+) {
+ const {
+ registry: { translateString },
+ } = props;
+ return (
+
+ );
+}
+
+/** Implement `ButtonTemplates.MoveDownButton`
+ */
+export function MoveDownButton(
+ props: IconButtonProps
+) {
+ const {
+ registry: { translateString },
+ } = props;
+ return (
+
+ );
+}
+
+/** Implement `ButtonTemplates.MoveUpButton`
+ */
+export function MoveUpButton(
+ props: IconButtonProps
+) {
+ const {
+ registry: { translateString },
+ } = props;
+ return (
+
+ );
+}
+
+/** Implement `ButtonTemplates.RemoveButton`
+ */
+export function RemoveButton(
+ props: IconButtonProps
+) {
+ const {
+ registry: { translateString },
+ } = props;
+ return (
+
+ );
+}
diff --git a/packages/carbon/src/IconButton/index.ts b/packages/carbon/src/IconButton/index.ts
new file mode 100644
index 0000000000..1a85f0f725
--- /dev/null
+++ b/packages/carbon/src/IconButton/index.ts
@@ -0,0 +1 @@
+export * from './IconButton';
diff --git a/packages/carbon/src/MultiSchemaField/MultiSchemaField.tsx b/packages/carbon/src/MultiSchemaField/MultiSchemaField.tsx
new file mode 100644
index 0000000000..cf3e411c07
--- /dev/null
+++ b/packages/carbon/src/MultiSchemaField/MultiSchemaField.tsx
@@ -0,0 +1,235 @@
+import { Component } from 'react';
+import get from 'lodash/get';
+import isEmpty from 'lodash/isEmpty';
+import omit from 'lodash/omit';
+import {
+ deepEquals,
+ ERRORS_KEY,
+ FieldProps,
+ FormContextType,
+ getDiscriminatorFieldFromSchema,
+ getUiOptions,
+ getWidget,
+ mergeSchemas,
+ RJSFSchema,
+ StrictRJSFSchema,
+ TranslatableString,
+} from '@rjsf/utils';
+import { LayerBackground } from '../components/Layer';
+import { FormGroup } from '@carbon/react';
+import { LabelValue } from '../components/LabelValue';
+import getCarbonOptions from '../utils';
+
+/** Type used for the state of the `AnyOfField` component */
+type AnyOfFieldState = {
+ /** The currently selected option */
+ selectedOption: number;
+ /** The option schemas after retrieving all $refs */
+ retrievedOptions: S[];
+};
+
+/** The `AnyOfField` component is used to render a field in the schema that is an `anyOf`, `allOf` or `oneOf`. It tracks
+ * the currently selected option and cleans up any irrelevant data in `formData`.
+ *
+ * @param props - The `FieldProps` for this template
+ */
+class AnyOfField extends Component<
+ FieldProps,
+ AnyOfFieldState
+> {
+ /** Constructs an `AnyOfField` with the given `props` to initialize the initially selected option in state
+ *
+ * @param props - The `FieldProps` for this template
+ */
+ constructor(props: FieldProps) {
+ super(props);
+
+ const {
+ formData,
+ options,
+ registry: { schemaUtils },
+ } = this.props;
+ // cache the retrieved options in state in case they have $refs to save doing it later
+ const retrievedOptions = options.map((opt: S) => schemaUtils.retrieveSchema(opt, formData));
+
+ this.state = {
+ retrievedOptions,
+ selectedOption: this.getMatchingOption(0, formData, retrievedOptions),
+ };
+ }
+
+ /** React lifecycle method that is called when the props and/or state for this component is updated. It recomputes the
+ * currently selected option based on the overall `formData`
+ *
+ * @param prevProps - The previous `FieldProps` for this template
+ * @param prevState - The previous `AnyOfFieldState` for this template
+ */
+ componentDidUpdate(prevProps: Readonly>, prevState: Readonly) {
+ const { formData, options, idSchema } = this.props;
+ const { selectedOption } = this.state;
+ let newState = this.state;
+ if (!deepEquals(prevProps.options, options)) {
+ const {
+ registry: { schemaUtils },
+ } = this.props;
+ // re-cache the retrieved options in state in case they have $refs to save doing it later
+ const retrievedOptions = options.map((opt: S) => schemaUtils.retrieveSchema(opt, formData));
+ newState = { selectedOption, retrievedOptions };
+ }
+ if (!deepEquals(formData, prevProps.formData) && idSchema.$id === prevProps.idSchema.$id) {
+ const { retrievedOptions } = newState;
+ const matchingOption = this.getMatchingOption(selectedOption, formData, retrievedOptions);
+
+ if (prevState && matchingOption !== selectedOption) {
+ newState = { selectedOption: matchingOption, retrievedOptions };
+ }
+ }
+ if (newState !== this.state) {
+ this.setState(newState);
+ }
+ }
+
+ /** Determines the best matching option for the given `formData` and `options`.
+ *
+ * @param formData - The new formData
+ * @param options - The list of options to choose from
+ * @return - The index of the `option` that best matches the `formData`
+ */
+ getMatchingOption(selectedOption: number, formData: T | undefined, options: S[]) {
+ const {
+ schema,
+ registry: { schemaUtils },
+ } = this.props;
+
+ const discriminator = getDiscriminatorFieldFromSchema(schema);
+ const option = schemaUtils.getClosestMatchingOption(formData, options, selectedOption, discriminator);
+ return option;
+ }
+
+ /** Callback handler to remember what the currently selected option is. In addition to that the `formData` is updated
+ * to remove properties that are not part of the newly selected option schema, and then the updated data is passed to
+ * the `onChange` handler.
+ *
+ * @param option - The new option value being selected
+ */
+ onOptionChange = (option?: string) => {
+ const { selectedOption, retrievedOptions } = this.state;
+ const { formData, onChange, registry } = this.props;
+ const { schemaUtils } = registry;
+ const intOption = option !== undefined ? parseInt(option, 10) : -1;
+ if (intOption === selectedOption) {
+ return;
+ }
+ const newOption = intOption >= 0 ? retrievedOptions[intOption] : undefined;
+ const oldOption = selectedOption >= 0 ? retrievedOptions[selectedOption] : undefined;
+
+ let newFormData = schemaUtils.sanitizeDataForNewSchema(newOption, oldOption, formData);
+ if (newFormData && newOption) {
+ // Call getDefaultFormState to make sure defaults are populated on change. Pass "excludeObjectChildren"
+ // so that only the root objects themselves are created without adding undefined children properties
+ newFormData = schemaUtils.getDefaultFormState(newOption, newFormData, 'excludeObjectChildren') as T;
+ }
+ onChange(newFormData, undefined, this.getFieldId());
+
+ this.setState({ selectedOption: intOption });
+ };
+
+ getFieldId() {
+ const { idSchema, schema } = this.props;
+ return `${idSchema.$id}${schema.oneOf ? '__oneof_select' : '__anyof_select'}`;
+ }
+
+ /** Renders the `AnyOfField` selector along with a `SchemaField` for the value of the `formData`
+ */
+ render() {
+ const {
+ name,
+ disabled = false,
+ errorSchema = {},
+ formContext,
+ onBlur,
+ onFocus,
+ registry,
+ schema,
+ uiSchema,
+ required,
+ } = this.props;
+
+ const { widgets, fields, translateString, globalUiOptions, schemaUtils } = registry;
+ const { SchemaField: _SchemaField } = fields;
+ const { selectedOption, retrievedOptions } = this.state;
+ const {
+ widget = 'select',
+ placeholder,
+ autofocus,
+ autocomplete,
+ title = schema.title,
+ ...uiOptions
+ } = getUiOptions(uiSchema, globalUiOptions);
+ const carbonOptions = getCarbonOptions(formContext || ({} as F), uiOptions);
+ const Widget = getWidget({ type: 'number' }, widget, widgets);
+ const rawErrors = get(errorSchema, ERRORS_KEY, []);
+ const fieldErrorSchema = omit(errorSchema, [ERRORS_KEY]);
+ const displayLabel = schemaUtils.getDisplayLabel(schema, uiSchema, globalUiOptions);
+
+ const option = selectedOption >= 0 ? retrievedOptions[selectedOption] || null : null;
+ let optionSchema: S;
+
+ if (option) {
+ // merge top level required field
+ const { required } = schema;
+ // Merge in all the non-oneOf/anyOf properties and also skip the special ADDITIONAL_PROPERTY_FLAG property
+ optionSchema = required ? (mergeSchemas({ required }, option) as S) : option;
+ }
+
+ const translateEnum: TranslatableString = title
+ ? TranslatableString.TitleOptionPrefix
+ : TranslatableString.OptionPrefix;
+ const translateParams = title ? [title] : [];
+ const enumOptions = retrievedOptions.map((opt: { title?: string }, index: number) => ({
+ label: opt.title || translateString(translateEnum, translateParams.concat(String(index + 1))),
+ value: index,
+ }));
+
+ return (
+
+
+
+ }
+ >
+
+
+
+ = 0 ? selectedOption : undefined}
+ options={{ enumOptions, ...uiOptions }}
+ registry={registry}
+ formContext={formContext}
+ placeholder={placeholder}
+ autocomplete={autocomplete}
+ autofocus={autofocus}
+ label={title ?? name}
+ hideLabel={!displayLabel}
+ />
+
+ {option !== null && <_SchemaField {...this.props} schema={optionSchema!} />}
+
+
+
+ );
+ }
+}
+
+export default AnyOfField;
diff --git a/packages/carbon/src/MultiSchemaField/index.tsx b/packages/carbon/src/MultiSchemaField/index.tsx
new file mode 100644
index 0000000000..9f64c09c3c
--- /dev/null
+++ b/packages/carbon/src/MultiSchemaField/index.tsx
@@ -0,0 +1,2 @@
+export { default } from './MultiSchemaField';
+export * from './MultiSchemaField';
diff --git a/packages/carbon/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx b/packages/carbon/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx
new file mode 100644
index 0000000000..7a42ec7451
--- /dev/null
+++ b/packages/carbon/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx
@@ -0,0 +1,100 @@
+import { Stack } from '@carbon/react';
+// @ts-expect-error miss types for `@carbon/layout`
+import { spacing } from '@carbon/layout';
+import {
+ canExpand,
+ descriptionId,
+ FormContextType,
+ getTemplate,
+ getUiOptions,
+ ObjectFieldTemplateProps,
+ RJSFSchema,
+ StrictRJSFSchema,
+ titleId,
+} from '@rjsf/utils';
+import { LayerBackground } from '../components/Layer';
+import getCarbonOptions from '../utils';
+import { useNestDepth } from '../contexts';
+
+/** Implement `ObjectFieldTemplate`
+ */
+export default function ObjectFieldTemplate<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: ObjectFieldTemplateProps) {
+ const {
+ description,
+ title,
+ properties,
+ required,
+ disabled,
+ readonly,
+ uiSchema,
+ idSchema,
+ schema,
+ formData,
+ onAddClick,
+ registry,
+ } = props;
+ const uiOptions = getUiOptions(uiSchema);
+ const carbonOptions = getCarbonOptions(registry.formContext, uiOptions);
+ const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>('TitleFieldTemplate', registry, uiOptions);
+ const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(
+ 'DescriptionFieldTemplate',
+ registry,
+ uiOptions
+ );
+ // Button templates are not overridden in the uiSchema
+ const {
+ ButtonTemplates: { AddButton },
+ } = registry.templates;
+ const depth = useNestDepth();
+
+ if (!(properties.length > 0 || canExpand(schema, uiSchema, formData))) {
+ return null;
+ }
+ return (
+
+ {title && (
+
(idSchema)}
+ title={title}
+ required={required}
+ schema={schema}
+ uiSchema={uiSchema}
+ registry={registry}
+ />
+ )}
+ {description && (
+
+ (idSchema)}
+ description={description}
+ schema={schema}
+ uiSchema={uiSchema}
+ registry={registry}
+ />
+
+ )}
+ {/* If this object is the very top one, add margin after title section */}
+ {!depth && (title || description) && (
+
+ )}
+
+
+ {properties.length > 0 && {properties.map((item) => item.content)}}
+ {canExpand(schema, uiSchema, formData) && (
+
+ )}
+
+
+
+ );
+}
diff --git a/packages/carbon/src/ObjectFieldTemplate/index.ts b/packages/carbon/src/ObjectFieldTemplate/index.ts
new file mode 100644
index 0000000000..77c68a9a40
--- /dev/null
+++ b/packages/carbon/src/ObjectFieldTemplate/index.ts
@@ -0,0 +1,2 @@
+export { default } from './ObjectFieldTemplate';
+export * from './ObjectFieldTemplate';
diff --git a/packages/carbon/src/RadioWidget/RadioWidget.tsx b/packages/carbon/src/RadioWidget/RadioWidget.tsx
new file mode 100644
index 0000000000..6ddc6e6e0e
--- /dev/null
+++ b/packages/carbon/src/RadioWidget/RadioWidget.tsx
@@ -0,0 +1,82 @@
+import { FocusEvent } from 'react';
+import { RadioButtonGroup, RadioButton } from '@carbon/react';
+import {
+ ariaDescribedByIds,
+ enumOptionsIndexForValue,
+ enumOptionsValueForIndex,
+ optionId,
+ FormContextType,
+ RJSFSchema,
+ StrictRJSFSchema,
+ WidgetProps,
+} from '@rjsf/utils';
+
+/** Implement `RadioWidget`
+ */
+export default function RadioWidget({
+ id,
+ options,
+ value,
+ disabled,
+ readonly,
+ rawErrors,
+ onChange,
+ onBlur,
+ onFocus,
+}: WidgetProps) {
+ const { enumOptions, enumDisabled, emptyValue, inline } = options;
+
+ const _onChange = (nextValue: any) => onChange(enumOptionsValueForIndex(nextValue, enumOptions, emptyValue));
+ const _onBlur = ({ target: { value } }: FocusEvent) =>
+ onBlur(id, enumOptionsValueForIndex(value, enumOptions, emptyValue));
+ const _onFocus = ({ target: { value } }: FocusEvent) =>
+ onFocus(id, enumOptionsValueForIndex(value, enumOptions, emptyValue));
+
+ const selectedIndex = (enumOptionsIndexForValue(value, enumOptions) as string) ?? null;
+
+ return (
+ <>
+
+ 0}
+ onChange={_onChange}
+ aria-describedby={ariaDescribedByIds(id)}
+ >
+ {Array.isArray(enumOptions) &&
+ enumOptions.map((option, index) => {
+ const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
+ return (
+
+ );
+ })}
+
+ >
+ );
+}
diff --git a/packages/carbon/src/RadioWidget/index.ts b/packages/carbon/src/RadioWidget/index.ts
new file mode 100644
index 0000000000..10292dc565
--- /dev/null
+++ b/packages/carbon/src/RadioWidget/index.ts
@@ -0,0 +1,2 @@
+export { default } from './RadioWidget';
+export * from './RadioWidget';
diff --git a/packages/carbon/src/RangeWidget/RangeWidget.tsx b/packages/carbon/src/RangeWidget/RangeWidget.tsx
new file mode 100644
index 0000000000..85e02f780d
--- /dev/null
+++ b/packages/carbon/src/RangeWidget/RangeWidget.tsx
@@ -0,0 +1,85 @@
+import { FocusEvent } from 'react';
+import { Slider } from '@carbon/react';
+import {
+ ariaDescribedByIds,
+ examplesId,
+ FormContextType,
+ getInputProps,
+ RJSFSchema,
+ StrictRJSFSchema,
+ WidgetProps,
+} from '@rjsf/utils';
+
+/** Implement `RangeWidget`
+ */
+export default function RangeWidget(
+ props: WidgetProps
+) {
+ const {
+ id,
+ type,
+ value,
+ schema,
+ onChange,
+ onChangeOverride,
+ onBlur,
+ onFocus,
+ options,
+ required,
+ readonly,
+ rawErrors,
+ autofocus,
+ placeholder,
+ disabled,
+ } = props;
+ const inputProps = getInputProps(schema, type, options);
+
+ const _onChange = (value: string | number) => onChange(value);
+ const _onBlur = (data: { value: string }) => onBlur(id, data.value);
+ const _onFocus = ({ target: { value } }: FocusEvent) => onFocus(id, value);
+
+ return (
+ <>
+
+ (onChangeOverride || _onChange)?.(data.value)}
+ onBlur={_onBlur}
+ onFocus={_onFocus}
+ autoFocus={autofocus}
+ placeholder={placeholder}
+ required={required}
+ disabled={disabled || readonly}
+ invalid={rawErrors && rawErrors.length > 0}
+ aria-describedby={ariaDescribedByIds(id, !!schema.examples)}
+ list={schema.examples ? examplesId(id) : undefined}
+ {...inputProps}
+ min={inputProps.min ?? 0}
+ max={inputProps.max ?? 100}
+ step={typeof inputProps.step === 'number' ? inputProps.step : undefined}
+ />
+ {Array.isArray(schema.examples) ? (
+
+ ) : null}
+ >
+ );
+}
diff --git a/packages/carbon/src/RangeWidget/index.ts b/packages/carbon/src/RangeWidget/index.ts
new file mode 100644
index 0000000000..d8c49226c6
--- /dev/null
+++ b/packages/carbon/src/RangeWidget/index.ts
@@ -0,0 +1,2 @@
+export { default } from './RangeWidget';
+export * from './RangeWidget';
diff --git a/packages/carbon/src/SelectWidget/SelectWidget.tsx b/packages/carbon/src/SelectWidget/SelectWidget.tsx
new file mode 100644
index 0000000000..15c991abe9
--- /dev/null
+++ b/packages/carbon/src/SelectWidget/SelectWidget.tsx
@@ -0,0 +1,149 @@
+import { ChangeEvent, FocusEvent, SyntheticEvent, useMemo } from 'react';
+import {
+ ariaDescribedByIds,
+ EnumOptionsType,
+ enumOptionsIndexForValue,
+ enumOptionsValueForIndex,
+ FormContextType,
+ RJSFSchema,
+ StrictRJSFSchema,
+ WidgetProps,
+ getUiOptions,
+} from '@rjsf/utils';
+import { Select, SelectItem, MultiSelect } from '@carbon/react';
+import { LabelValue } from '../components/LabelValue';
+import getCarbonOptions, { maxLgSize } from '../utils';
+
+/** Implement `SelectWidget`
+ */
+export default function SelectWidget(
+ props: WidgetProps
+) {
+ const {
+ schema,
+ id,
+ options,
+ label,
+ hideLabel,
+ placeholder,
+ multiple = false,
+ required,
+ disabled,
+ readonly,
+ value,
+ autofocus = false,
+ onChange,
+ onBlur,
+ onFocus,
+ rawErrors = [],
+ formContext,
+ } = props;
+ const { enumOptions, enumDisabled, emptyValue } = options;
+ const uiOptions = getUiOptions(props.uiSchema);
+ const carbonOptions = getCarbonOptions(props.registry.formContext, uiOptions);
+
+ const _onFocus = (event: FocusEvent) => {
+ const newValue = getValue(event, multiple);
+ return onFocus(id, enumOptionsValueForIndex(newValue, enumOptions, emptyValue));
+ };
+
+ const _onBlur = (event: FocusEvent) => {
+ const newValue = getValue(event, multiple);
+ return onBlur(id, enumOptionsValueForIndex(newValue, enumOptions, emptyValue));
+ };
+
+ const _onMultipleChange = ({ selectedItems }: { selectedItems: any[] }) => {
+ console.log('_onMultipleChange', selectedItems);
+ return onChange(
+ enumOptionsValueForIndex(
+ selectedItems.map((item) => item.value),
+ enumOptions,
+ emptyValue
+ )
+ );
+ };
+
+ const _onChange = (event: ChangeEvent) => {
+ return onChange(enumOptionsValueForIndex(event.target.value, enumOptions, emptyValue));
+ };
+
+ const selectedIndexes = enumOptionsIndexForValue(value, enumOptions, multiple);
+
+ const displayEnumOptions = useMemo(
+ () =>
+ Array.isArray(enumOptions)
+ ? enumOptions.map((option: EnumOptionsType, index: number) => {
+ const { value, label } = option;
+ return {
+ label,
+ id: String(index),
+ value: String(index),
+ disabled: Array.isArray(enumDisabled) && enumDisabled.indexOf(value) !== -1,
+ };
+ })
+ : [],
+ [enumOptions, enumDisabled]
+ );
+
+ // window environment for `downshift`
+ const environment = formContext?.carbon?.environment || window;
+
+ if (multiple) {
+ return (
+ }
+ id={id}
+ hideLabel
+ onChange={_onMultipleChange}
+ selectedItems={
+ typeof selectedIndexes === 'undefined'
+ ? []
+ : displayEnumOptions.filter((item) => selectedIndexes.includes(item.value))
+ }
+ aria-describedby={ariaDescribedByIds(id)}
+ invalid={rawErrors && rawErrors.length > 0}
+ disabled={disabled || readonly}
+ readOnly={readonly}
+ items={displayEnumOptions}
+ downshiftProps={{
+ environment,
+ }}
+ selectionFeedback='fixed'
+ size={carbonOptions.size === 'xl' ? 'lg' : carbonOptions.size}
+ />
+ );
+ }
+
+ return (
+ }
+ onChange={_onChange}
+ onBlur={_onBlur}
+ onFocus={_onFocus}
+ autoFocus={autofocus}
+ value={typeof selectedIndexes === 'undefined' ? '' : selectedIndexes}
+ aria-describedby={ariaDescribedByIds(id)}
+ invalid={rawErrors && rawErrors.length > 0}
+ disabled={disabled || readonly}
+ readOnly={readonly}
+ size={maxLgSize(carbonOptions.size)}
+ >
+ {!multiple && schema.default === undefined && }
+ {displayEnumOptions.map((item) => (
+
+ ))}
+
+ );
+}
+
+function getValue(event: SyntheticEvent, multiple: boolean) {
+ if (multiple) {
+ return Array.from((event.target as HTMLSelectElement).options)
+ .slice()
+ .filter((o) => o.selected)
+ .map((o) => o.value);
+ }
+ return (event.target as HTMLSelectElement).value;
+}
diff --git a/packages/carbon/src/SelectWidget/index.ts b/packages/carbon/src/SelectWidget/index.ts
new file mode 100644
index 0000000000..e37ea725b8
--- /dev/null
+++ b/packages/carbon/src/SelectWidget/index.ts
@@ -0,0 +1,2 @@
+export { default } from './SelectWidget';
+export * from './SelectWidget';
diff --git a/packages/carbon/src/SubmitButton/SubmitButton.tsx b/packages/carbon/src/SubmitButton/SubmitButton.tsx
new file mode 100644
index 0000000000..1b05d8a2b7
--- /dev/null
+++ b/packages/carbon/src/SubmitButton/SubmitButton.tsx
@@ -0,0 +1,21 @@
+import { Button } from '@carbon/react';
+import { FormContextType, getSubmitButtonOptions, RJSFSchema, StrictRJSFSchema, SubmitButtonProps } from '@rjsf/utils';
+
+/** Implement `ButtonTemplates.SubmitButton`
+ */
+export default function SubmitButton<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>({ uiSchema }: SubmitButtonProps) {
+ const { submitText, norender, props: submitButtonProps } = getSubmitButtonOptions(uiSchema);
+ if (norender) {
+ return null;
+ }
+
+ return (
+
+ );
+}
diff --git a/packages/carbon/src/SubmitButton/index.ts b/packages/carbon/src/SubmitButton/index.ts
new file mode 100644
index 0000000000..f676497ba2
--- /dev/null
+++ b/packages/carbon/src/SubmitButton/index.ts
@@ -0,0 +1,2 @@
+export { default } from './SubmitButton';
+export * from './SubmitButton';
diff --git a/packages/carbon/src/Templates/Templates.ts b/packages/carbon/src/Templates/Templates.ts
new file mode 100644
index 0000000000..367577eaa0
--- /dev/null
+++ b/packages/carbon/src/Templates/Templates.ts
@@ -0,0 +1,47 @@
+import { FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';
+import AddButton from '../AddButton';
+import SubmitButton from '../SubmitButton';
+import { MoveDownButton, MoveUpButton, RemoveButton, CopyButton } from '../IconButton';
+import FieldTemplate from '../FieldTemplate';
+import BaseInputTemplate from '../BaseInputTemplate';
+import ObjectFieldTemplate from '../ObjectFieldTemplate';
+import FieldHelpTemplate from '../FieldHelpTemplate';
+import DescriptionField from '../DescriptionField';
+import FieldErrorTemplate from '../FieldErrorTemplate';
+import TitleField from '../TitleField';
+import ArrayFieldTemplate from '../ArrayFieldTemplate';
+import ArrayFieldItemTemplate from '../ArrayFieldItemTemplate';
+import ErrorList from '../ErrorList';
+import WrapIfAdditionalTemplate from '../WrapIfAdditionalTemplate';
+
+/** Generates a set of templates `carbon` theme uses.
+ */
+export function generateTemplates<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(): Partial> {
+ return {
+ BaseInputTemplate,
+ ButtonTemplates: {
+ SubmitButton,
+ AddButton,
+ MoveDownButton,
+ MoveUpButton,
+ RemoveButton,
+ CopyButton,
+ },
+ TitleFieldTemplate: TitleField,
+ DescriptionFieldTemplate: DescriptionField,
+ ErrorListTemplate: ErrorList,
+ FieldErrorTemplate,
+ FieldTemplate,
+ FieldHelpTemplate,
+ ObjectFieldTemplate,
+ ArrayFieldTemplate,
+ ArrayFieldItemTemplate,
+ WrapIfAdditionalTemplate,
+ };
+}
+
+export default generateTemplates();
diff --git a/packages/carbon/src/Templates/index.ts b/packages/carbon/src/Templates/index.ts
new file mode 100644
index 0000000000..612ccf692a
--- /dev/null
+++ b/packages/carbon/src/Templates/index.ts
@@ -0,0 +1,2 @@
+export { default } from './Templates';
+export * from './Templates';
diff --git a/packages/carbon/src/TextareaWidget/TextareaWidget.tsx b/packages/carbon/src/TextareaWidget/TextareaWidget.tsx
new file mode 100644
index 0000000000..ac31aff692
--- /dev/null
+++ b/packages/carbon/src/TextareaWidget/TextareaWidget.tsx
@@ -0,0 +1,51 @@
+import { ChangeEvent, FocusEvent } from 'react';
+import { ariaDescribedByIds, FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';
+import { TextArea } from '@carbon/react';
+import { LabelValue } from '../components/LabelValue';
+
+/** Implement `TextareaWidget`
+ */
+export default function TextareaWidget<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>({
+ id,
+ placeholder,
+ value,
+ label,
+ hideLabel,
+ disabled,
+ autofocus,
+ readonly,
+ onBlur,
+ onFocus,
+ onChange,
+ options,
+ required,
+ rawErrors,
+}: WidgetProps) {
+ const _onChange = ({ target: { value } }: ChangeEvent) =>
+ onChange(value === '' ? options.emptyValue : value);
+ const _onBlur = ({ target: { value } }: FocusEvent) => onBlur(id, value);
+ const _onFocus = ({ target: { value } }: FocusEvent) => onFocus(id, value);
+
+ return (
+ }
+ disabled={disabled || readonly}
+ id={id}
+ name={id}
+ value={value ?? ''}
+ placeholder={placeholder}
+ autoFocus={autofocus}
+ onChange={_onChange}
+ onBlur={_onBlur}
+ onFocus={_onFocus}
+ aria-describedby={ariaDescribedByIds(id)}
+ invalid={rawErrors && rawErrors.length > 0}
+ />
+ );
+}
diff --git a/packages/carbon/src/TextareaWidget/index.ts b/packages/carbon/src/TextareaWidget/index.ts
new file mode 100644
index 0000000000..20e6d8e26b
--- /dev/null
+++ b/packages/carbon/src/TextareaWidget/index.ts
@@ -0,0 +1,2 @@
+export { default } from './TextareaWidget';
+export * from './TextareaWidget';
diff --git a/packages/carbon/src/Theme/Theme.tsx b/packages/carbon/src/Theme/Theme.tsx
new file mode 100644
index 0000000000..9b8e7a4770
--- /dev/null
+++ b/packages/carbon/src/Theme/Theme.tsx
@@ -0,0 +1,40 @@
+import { ThemeProps } from '@rjsf/core';
+import { FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
+import { Stack } from '@carbon/react';
+import { generateTemplates } from '../Templates';
+import { generateWidgets } from '../Widgets';
+import { generateFields } from '../Fields';
+import { ElementType, forwardRef } from 'react';
+import getCarbonOptions from '../utils';
+
+/** Implement `_internalFormWrapper`, in order to better layout
+ */
+export const InternalFormWrapper = forwardRef(function InternalFormWrapper(
+ { children, as, ...props }: { children: React.ReactNode; as?: ElementType },
+ ref
+) {
+ const FormTag: ElementType = as || 'form';
+ const carbonOptions = getCarbonOptions((props as any).formContext);
+ return (
+
+ {children}
+
+ );
+});
+
+/** Generates a theme for the Carbon Design System
+ */
+export function generateTheme<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(): ThemeProps {
+ return {
+ templates: generateTemplates(),
+ widgets: generateWidgets(),
+ fields: generateFields(),
+ _internalFormWrapper: InternalFormWrapper,
+ };
+}
+
+export default generateTheme();
diff --git a/packages/carbon/src/Theme/index.ts b/packages/carbon/src/Theme/index.ts
new file mode 100644
index 0000000000..6dfd7fa6e1
--- /dev/null
+++ b/packages/carbon/src/Theme/index.ts
@@ -0,0 +1,2 @@
+export { default } from './Theme';
+export * from './Theme';
diff --git a/packages/carbon/src/TitleField/TitleField.tsx b/packages/carbon/src/TitleField/TitleField.tsx
new file mode 100644
index 0000000000..e9d2edc293
--- /dev/null
+++ b/packages/carbon/src/TitleField/TitleField.tsx
@@ -0,0 +1,19 @@
+import { FormContextType, RJSFSchema, StrictRJSFSchema, TitleFieldProps } from '@rjsf/utils';
+import { LabelValue } from '../components/LabelValue';
+import { FormGroup } from '@carbon/react';
+
+/** Implement `TitleFieldTemplate`
+ */
+export default function TitleField({
+ id,
+ title,
+ required,
+}: TitleFieldProps) {
+ return (
+
+ }>
+ {null}
+
+
+ );
+}
diff --git a/packages/carbon/src/TitleField/index.ts b/packages/carbon/src/TitleField/index.ts
new file mode 100644
index 0000000000..cfa479d034
--- /dev/null
+++ b/packages/carbon/src/TitleField/index.ts
@@ -0,0 +1,2 @@
+export { default } from './TitleField';
+export * from './TitleField';
diff --git a/packages/carbon/src/UpDownWidget/UpDownWidget.tsx b/packages/carbon/src/UpDownWidget/UpDownWidget.tsx
new file mode 100644
index 0000000000..3242075593
--- /dev/null
+++ b/packages/carbon/src/UpDownWidget/UpDownWidget.tsx
@@ -0,0 +1,94 @@
+import { FocusEvent } from 'react';
+import { NumberInput } from '@carbon/react';
+import {
+ ariaDescribedByIds,
+ examplesId,
+ FormContextType,
+ getInputProps,
+ getUiOptions,
+ RJSFSchema,
+ StrictRJSFSchema,
+ WidgetProps,
+} from '@rjsf/utils';
+import { LabelValue } from '../components/LabelValue';
+import getCarbonOptions, { maxLgSize } from '../utils';
+
+/** Implement `UpDownWidget`
+ */
+export default function UpDownWidget(
+ props: WidgetProps
+) {
+ const {
+ id,
+ type,
+ value,
+ label,
+ hideLabel,
+ schema,
+ onChange,
+ onChangeOverride,
+ onBlur,
+ onFocus,
+ options,
+ required,
+ readonly,
+ rawErrors,
+ autofocus,
+ placeholder,
+ disabled,
+ } = props;
+ const uiOptions = getUiOptions(props.uiSchema);
+ const carbonOptions = getCarbonOptions(props.registry.formContext, uiOptions);
+ const inputProps = getInputProps(schema, type, options);
+
+ const _onChange = (value: string | number) => onChange(value);
+ const _onBlur = ({ target: { value } }: FocusEvent) => onBlur(id, value);
+ const _onFocus = ({ target: { value } }: FocusEvent) => onFocus(id, value);
+
+ return (
+ <>
+
+ }
+ onChange={onChangeOverride || _onChange}
+ onBlur={_onBlur}
+ onFocus={_onFocus}
+ autoFocus={autofocus}
+ placeholder={placeholder}
+ required={required}
+ disabled={disabled || readonly}
+ invalid={rawErrors && rawErrors.length > 0}
+ aria-describedby={ariaDescribedByIds(id, !!schema.examples)}
+ list={schema.examples ? examplesId(id) : undefined}
+ {...inputProps}
+ step={typeof inputProps.step === 'number' ? inputProps.step : undefined}
+ // NumberInput doesn't support `xl` size, fallback to `lg`
+ size={maxLgSize(carbonOptions.size)}
+ />
+ {Array.isArray(schema.examples) ? (
+
+ ) : null}
+ >
+ );
+}
diff --git a/packages/carbon/src/UpDownWidget/index.ts b/packages/carbon/src/UpDownWidget/index.ts
new file mode 100644
index 0000000000..2e2ae55279
--- /dev/null
+++ b/packages/carbon/src/UpDownWidget/index.ts
@@ -0,0 +1,2 @@
+export { default } from './UpDownWidget';
+export * from './UpDownWidget';
diff --git a/packages/carbon/src/Widgets/Widgets.ts b/packages/carbon/src/Widgets/Widgets.ts
new file mode 100644
index 0000000000..3e626f6041
--- /dev/null
+++ b/packages/carbon/src/Widgets/Widgets.ts
@@ -0,0 +1,28 @@
+import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';
+import TextareaWidget from '../TextareaWidget';
+import CheckboxWidget from '../CheckboxWidget';
+import CheckboxesWidget from '../CheckboxesWidget';
+import RadioWidget from '../RadioWidget';
+import SelectWidget from '../SelectWidget';
+import UpDownWidget from '../UpDownWidget';
+import RangeWidget from '../RangeWidget';
+
+/** Generates a set of widgets `carbon` theme uses.
+ */
+export function generateWidgets<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(): RegistryWidgetsType {
+ return {
+ TextareaWidget,
+ CheckboxWidget,
+ CheckboxesWidget,
+ RadioWidget,
+ RangeWidget,
+ SelectWidget,
+ UpDownWidget,
+ };
+}
+
+export default generateWidgets();
diff --git a/packages/carbon/src/Widgets/index.ts b/packages/carbon/src/Widgets/index.ts
new file mode 100644
index 0000000000..de857bf557
--- /dev/null
+++ b/packages/carbon/src/Widgets/index.ts
@@ -0,0 +1,2 @@
+export { default } from './Widgets';
+export * from './Widgets';
diff --git a/packages/carbon/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx b/packages/carbon/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx
new file mode 100644
index 0000000000..4161ea510d
--- /dev/null
+++ b/packages/carbon/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx
@@ -0,0 +1,86 @@
+import { FormGroup, Stack, TextInput } from '@carbon/react';
+import {
+ ADDITIONAL_PROPERTY_FLAG,
+ FormContextType,
+ RJSFSchema,
+ StrictRJSFSchema,
+ TranslatableString,
+ WrapIfAdditionalTemplateProps,
+ getUiOptions,
+} from '@rjsf/utils';
+import { LayerBackground } from '../components/Layer';
+import { LabelValue } from '../components/LabelValue';
+import getCarbonOptions from '../utils';
+
+export default function WrapIfAdditionalTemplate<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(props: WrapIfAdditionalTemplateProps) {
+ const {
+ id,
+ classNames,
+ style,
+ disabled,
+ label,
+ onKeyChange,
+ onDropPropertyClick,
+ readonly,
+ required,
+ schema,
+ children,
+ uiSchema,
+ registry,
+ } = props;
+ const uiOptions = getUiOptions(uiSchema);
+ const carbonOptions = getCarbonOptions(registry.formContext, uiOptions);
+ const { templates, translateString } = registry;
+ // Button templates are not overridden in the uiSchema
+ const { RemoveButton } = templates.ButtonTemplates;
+ const keyLabel = translateString(TranslatableString.KeyLabel, [label]);
+ const additional = ADDITIONAL_PROPERTY_FLAG in schema;
+
+ if (!additional) {
+ return (
+
+ {children}
+
+ );
+ }
+
+ return (
+
+
}>
+
+
+
+
+ onKeyChange(event.target.value)}
+ defaultValue={label}
+ />
+ {children}
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/carbon/src/WrapIfAdditionalTemplate/index.ts b/packages/carbon/src/WrapIfAdditionalTemplate/index.ts
new file mode 100644
index 0000000000..7d7af6629d
--- /dev/null
+++ b/packages/carbon/src/WrapIfAdditionalTemplate/index.ts
@@ -0,0 +1,2 @@
+export { default } from './WrapIfAdditionalTemplate';
+export * from './WrapIfAdditionalTemplate';
diff --git a/packages/carbon/src/components/LabelValue.tsx b/packages/carbon/src/components/LabelValue.tsx
new file mode 100644
index 0000000000..ca4f6cf405
--- /dev/null
+++ b/packages/carbon/src/components/LabelValue.tsx
@@ -0,0 +1,23 @@
+import { ReactNode } from 'react';
+
+/** The `LabelValue` render a label conditionally and append a required or optional mark
+ */
+export function LabelValue({
+ hide = false,
+ required = false,
+ label,
+}: {
+ label: ReactNode;
+ hide?: boolean;
+ required?: boolean;
+}) {
+ if (hide) {
+ return null;
+ }
+ return (
+ <>
+ {label}
+ {required && {' (required)'}}
+ >
+ );
+}
diff --git a/packages/carbon/src/components/Layer.tsx b/packages/carbon/src/components/Layer.tsx
new file mode 100644
index 0000000000..45afd5f9c1
--- /dev/null
+++ b/packages/carbon/src/components/Layer.tsx
@@ -0,0 +1,58 @@
+import { Layer as CarbonLayer } from '@carbon/react';
+import { ReactNode } from 'react';
+import { NestDepth, useNestDepth } from '../contexts';
+// @ts-expect-error miss types for `@carbon/layout`
+import { spacing } from '@carbon/layout';
+
+/** The `LayerBackground` render a background for [a carbon layer](https://carbondesignsystem.com/guidelines/color/usage#layering-tokens)
+ *
+ * @param ignoreFirstLayer - If true, the background of the first layer will not be rendered
+ */
+export function LayerBackground({
+ children,
+ ignoreFirstLayer = true,
+ padding,
+}: {
+ children: ReactNode;
+ ignoreFirstLayer?: boolean;
+ padding?: number;
+}) {
+ const nestDepth = useNestDepth();
+ const content = {children};
+
+ if (!nestDepth) {
+ if (ignoreFirstLayer) {
+ return content;
+ }
+ if (!ignoreFirstLayer) {
+ return (
+ // To make the first layer be `gray`, we need to nest it in another layer
+
+ {content}
+
+ );
+ }
+ }
+
+ // oneOf and anyOf need to show the first layer
+
+ return {content};
+}
+
+/** Draw layer background
+ */
+function Background({ children, padding = 3 }: { children: ReactNode; padding?: number }) {
+ const nestDepth = useNestDepth();
+ return (
+
+
+ {children}
+
+
+ );
+}
diff --git a/packages/carbon/src/contexts.tsx b/packages/carbon/src/contexts.tsx
new file mode 100644
index 0000000000..0666bcd60c
--- /dev/null
+++ b/packages/carbon/src/contexts.tsx
@@ -0,0 +1,15 @@
+import { ReactNode, createContext, useContext } from 'react';
+
+export const NestDepthContext = createContext(0);
+
+/**
+ * Get the current nest depth, used for rendering proper [carbon layers](https://carbondesignsystem.com/guidelines/color/usage#layering-tokens)
+ */
+export function useNestDepth() {
+ return useContext(NestDepthContext);
+}
+
+export function NestDepth({ children }: { children: ReactNode }) {
+ const depth = useNestDepth();
+ return {children};
+}
diff --git a/packages/carbon/src/index.ts b/packages/carbon/src/index.ts
new file mode 100644
index 0000000000..3b8540ffff
--- /dev/null
+++ b/packages/carbon/src/index.ts
@@ -0,0 +1,10 @@
+import Form from './Form';
+
+export { default as Form, generateForm } from './Form';
+export { default as Templates, generateTemplates } from './Templates';
+export { default as Theme, generateTheme } from './Theme';
+export { default as Widgets, generateWidgets } from './Widgets';
+export { LayerBackground } from './components/Layer';
+export * from './utils';
+
+export default Form;
diff --git a/packages/carbon/src/tsconfig.json b/packages/carbon/src/tsconfig.json
new file mode 100644
index 0000000000..7460aa8cfc
--- /dev/null
+++ b/packages/carbon/src/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "extends": "../../../tsconfig.base.json",
+ "include": ["./"],
+ "compilerOptions": {
+ "rootDir": "./",
+ "outDir": "../lib",
+ "baseUrl": "../",
+ "jsx": "react-jsx",
+ // https://github.com/carbon-design-system/carbon/tree/main/packages/react#typescript
+ "skipLibCheck": true
+ },
+ "references": [
+ {
+ "path": "../../core"
+ },
+ {
+ "path": "../../utils"
+ },
+ {
+ "path": "../../validator-ajv8"
+ }
+ ]
+}
diff --git a/packages/carbon/src/utils.ts b/packages/carbon/src/utils.ts
new file mode 100644
index 0000000000..dba5879df0
--- /dev/null
+++ b/packages/carbon/src/utils.ts
@@ -0,0 +1,48 @@
+import { FormContextType, RJSFSchema, StrictRJSFSchema, UIOptionsType } from '@rjsf/utils';
+
+/** Carbon theme options
+ */
+export interface CarbonOptions {
+ /**Gap between each form item, default to `7` (2.5rem)
+ * @see https://carbondesignsystem.com/guidelines/spacing/overview/#spacing-scale
+ */
+ gap: number;
+ /**Padding in layer background, default to `3` (0.5rem)
+ * @see https://carbondesignsystem.com/guidelines/spacing/overview/#spacing-scale
+ */
+ padding: number;
+ /** Size of form item.
+ *
+ * Note that some of the `@carbon/react` component doesn't support `xl` and will fallback to `lg`
+ */
+ size?: 'sm' | 'md' | 'lg' | 'xl';
+}
+
+/** Default carbon theme options
+ */
+const defaultCarbonOptions: CarbonOptions = {
+ gap: 7,
+ padding: 5,
+};
+
+/** Get carbon theme options from `formContext` and `ui:carbon` uiSchema options.
+ *
+ * ```js
+ * const defaultCarbonOptions: CarbonOptions = {
+ * gap: 7,
+ * };
+ * ```
+ */
+export default function getCarbonOptions<
+ T = any,
+ S extends StrictRJSFSchema = RJSFSchema,
+ F extends FormContextType = any
+>(formContext: F, uiOptions: UIOptionsType = {}): CarbonOptions {
+ return Object.assign({}, defaultCarbonOptions, formContext?.carbon, uiOptions?.carbon);
+}
+
+/** Limit max size to lg
+ */
+export function maxLgSize(size: 'sm' | 'md' | 'lg' | 'xl' | undefined) {
+ return size === 'xl' ? 'lg' : size;
+}
diff --git a/packages/carbon/test/Array.test.tsx b/packages/carbon/test/Array.test.tsx
new file mode 100644
index 0000000000..a17060201a
--- /dev/null
+++ b/packages/carbon/test/Array.test.tsx
@@ -0,0 +1,5 @@
+import { arrayTests } from '@rjsf/snapshot-tests';
+
+import Form from '../src';
+
+arrayTests(Form);
diff --git a/packages/carbon/test/Form.test.tsx b/packages/carbon/test/Form.test.tsx
new file mode 100644
index 0000000000..c96826c914
--- /dev/null
+++ b/packages/carbon/test/Form.test.tsx
@@ -0,0 +1,5 @@
+import { formTests } from '@rjsf/snapshot-tests';
+
+import Form from '../src';
+
+formTests(Form);
diff --git a/packages/carbon/test/Object.test.tsx b/packages/carbon/test/Object.test.tsx
new file mode 100644
index 0000000000..dabe023e32
--- /dev/null
+++ b/packages/carbon/test/Object.test.tsx
@@ -0,0 +1,5 @@
+import { objectTests } from '@rjsf/snapshot-tests';
+
+import Form from '../src';
+
+objectTests(Form);
diff --git a/packages/carbon/test/__snapshots__/Array.test.tsx.snap b/packages/carbon/test/__snapshots__/Array.test.tsx.snap
new file mode 100644
index 0000000000..d34be03ff6
--- /dev/null
+++ b/packages/carbon/test/__snapshots__/Array.test.tsx.snap
@@ -0,0 +1,6989 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`array fields array 1`] = `
+.emotion-2 {
+ display: grid;
+}
+
+.emotion-4 {
+ justify-self: flex-end;
+}
+
+.emotion-5 {
+ margin-top: 2px;
+}
+
+.emotion-6 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-7 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-8 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-9 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`array fields array icons 1`] = `
+.emotion-2 {
+ display: grid;
+}
+
+.emotion-4 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-4>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-5 {
+ width: 100%;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-10 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ margin-bottom: 1px;
+}
+
+.emotion-10>*:first-of-type:not(:last-of-type) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.emotion-10>*:not(:first-of-type):not(:last-of-type) {
+ border-radius: 0px;
+}
+
+.emotion-10>*:not(:first-of-type):last-of-type {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.emotion-11 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-11:focus,
+.emotion-11[data-focus] {
+ z-index: 1;
+}
+
+.emotion-12 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-34 {
+ justify-self: flex-end;
+}
+
+.emotion-35 {
+ margin-top: 2px;
+}
+
+.emotion-36 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-37 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-39 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`array fields checkboxes 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+}
+
+.emotion-3 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-7 {
+ color: gray.400;
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.emotion-8 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-8::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-9 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-11 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-12 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-13 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`array fields empty errors array 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ margin-bottom: 1px;
+}
+
+.emotion-5 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-7 {
+ margin-top: 3px;
+}
+
+.emotion-8 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`array fields fixed array 1`] = `
+.emotion-2 {
+ display: grid;
+}
+
+.emotion-4 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-4>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-5 {
+ width: 100%;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`array fields has errors 1`] = `
+.emotion-0 {
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-start;
+ -webkit-box-align: flex-start;
+ -ms-flex-align: flex-start;
+ align-items: flex-start;
+ position: relative;
+ overflow: hidden;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ gap: 3px;
+}
+
+.emotion-2 {
+ list-style-type: none;
+}
+
+.emotion-4 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: red.500;
+}
+
+.emotion-6 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-9 {
+ margin-bottom: 1px;
+}
+
+.emotion-10 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-14 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-15 {
+ margin-top: 3px;
+}
+
+.emotion-16 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`array fields no errors 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ margin-bottom: 1px;
+}
+
+.emotion-5 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-7 {
+ margin-top: 3px;
+}
+
+.emotion-8 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`with title and description array 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ justify-self: flex-end;
+}
+
+.emotion-9 {
+ margin-top: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-11 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-12 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-13 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`with title and description array icons 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-8>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-9 {
+ width: 100%;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-12 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ margin-bottom: 1px;
+}
+
+.emotion-18>*:first-of-type:not(:last-of-type) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.emotion-18>*:not(:first-of-type):not(:last-of-type) {
+ border-radius: 0px;
+}
+
+.emotion-18>*:not(:first-of-type):last-of-type {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.emotion-19 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-19:focus,
+.emotion-19[data-focus] {
+ z-index: 1;
+}
+
+.emotion-20 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-46 {
+ justify-self: flex-end;
+}
+
+.emotion-48 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-49 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-51 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`with title and description checkboxes 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-3 {
+ position: relative;
+}
+
+.emotion-4 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-7 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-8 {
+ color: gray.400;
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.emotion-9 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-9::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-11 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-12 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-14 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-16 {
+ font-size: md;
+}
+
+.emotion-17 {
+ margin-top: 3px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`with title and description fixed array 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-8>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-9 {
+ width: 100%;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-12 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-26 {
+ margin-top: 3px;
+}
+
+.emotion-27 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`with title and description from both array 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ justify-self: flex-end;
+}
+
+.emotion-9 {
+ margin-top: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-11 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-12 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-13 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`with title and description from both array icons 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-8>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-9 {
+ width: 100%;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-12 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ margin-bottom: 1px;
+}
+
+.emotion-18>*:first-of-type:not(:last-of-type) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.emotion-18>*:not(:first-of-type):not(:last-of-type) {
+ border-radius: 0px;
+}
+
+.emotion-18>*:not(:first-of-type):last-of-type {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.emotion-19 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-19:focus,
+.emotion-19[data-focus] {
+ z-index: 1;
+}
+
+.emotion-20 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-46 {
+ justify-self: flex-end;
+}
+
+.emotion-48 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-49 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-51 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`with title and description from both checkboxes 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-3 {
+ position: relative;
+}
+
+.emotion-4 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-7 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-8 {
+ color: gray.400;
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.emotion-9 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-9::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-11 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-12 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-14 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-16 {
+ font-size: md;
+}
+
+.emotion-17 {
+ margin-top: 3px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`with title and description from both fixed array 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-8>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-9 {
+ width: 100%;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-12 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-26 {
+ margin-top: 3px;
+}
+
+.emotion-27 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`with title and description from uiSchema array 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ justify-self: flex-end;
+}
+
+.emotion-9 {
+ margin-top: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-11 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-12 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-13 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`with title and description from uiSchema array icons 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-8>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-9 {
+ width: 100%;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-12 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ margin-bottom: 1px;
+}
+
+.emotion-18>*:first-of-type:not(:last-of-type) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.emotion-18>*:not(:first-of-type):not(:last-of-type) {
+ border-radius: 0px;
+}
+
+.emotion-18>*:not(:first-of-type):last-of-type {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.emotion-19 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-19:focus,
+.emotion-19[data-focus] {
+ z-index: 1;
+}
+
+.emotion-20 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-46 {
+ justify-self: flex-end;
+}
+
+.emotion-48 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-49 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-51 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`with title and description from uiSchema checkboxes 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-3 {
+ position: relative;
+}
+
+.emotion-4 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-7 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-8 {
+ color: gray.400;
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.emotion-9 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-9::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-11 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-12 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-14 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-16 {
+ font-size: md;
+}
+
+.emotion-17 {
+ margin-top: 3px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`with title and description from uiSchema fixed array 1`] = `
+.emotion-2 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-5 {
+ font-size: md;
+}
+
+.emotion-6 {
+ display: grid;
+}
+
+.emotion-8 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-8>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-9 {
+ width: 100%;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-12 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-26 {
+ margin-top: 3px;
+}
+
+.emotion-27 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`with title and description with global label off array 1`] = `
+.emotion-2 {
+ display: grid;
+}
+
+.emotion-4 {
+ justify-self: flex-end;
+}
+
+.emotion-5 {
+ margin-top: 2px;
+}
+
+.emotion-6 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-7 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-8 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-9 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`with title and description with global label off array icons 1`] = `
+.emotion-2 {
+ display: grid;
+}
+
+.emotion-4 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-4>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-5 {
+ width: 100%;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-10 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ margin-bottom: 1px;
+}
+
+.emotion-10>*:first-of-type:not(:last-of-type) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+.emotion-10>*:not(:first-of-type):not(:last-of-type) {
+ border-radius: 0px;
+}
+
+.emotion-10>*:not(:first-of-type):last-of-type {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+
+.emotion-11 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-11:focus,
+.emotion-11[data-focus] {
+ z-index: 1;
+}
+
+.emotion-12 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-34 {
+ justify-self: flex-end;
+}
+
+.emotion-35 {
+ margin-top: 2px;
+}
+
+.emotion-36 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-37 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-39 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`with title and description with global label off checkboxes 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-3 {
+ position: relative;
+}
+
+.emotion-4 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-7 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-8 {
+ color: gray.400;
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.emotion-9 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-9::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-11 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-12 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-13 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-14 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-15 {
+ margin-top: 2px;
+}
+
+.emotion-16 {
+ font-size: md;
+}
+
+.emotion-17 {
+ margin-top: 3px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`with title and description with global label off fixed array 1`] = `
+.emotion-2 {
+ display: grid;
+}
+
+.emotion-4 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-end;
+ -webkit-box-align: flex-end;
+ -ms-flex-align: flex-end;
+ align-items: flex-end;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ padding-top: 1px;
+ padding-bottom: 1px;
+}
+
+.emotion-4>*:not(style)~*:not(style) {
+ margin-top: 0px;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-5 {
+ width: 100%;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
diff --git a/packages/carbon/test/__snapshots__/Form.test.tsx.snap b/packages/carbon/test/__snapshots__/Form.test.tsx.snap
new file mode 100644
index 0000000000..bde2545ab9
--- /dev/null
+++ b/packages/carbon/test/__snapshots__/Form.test.tsx.snap
@@ -0,0 +1,5899 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`single fields checkbox field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ cursor: pointer;
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: top;
+ position: relative;
+}
+
+.emotion-3 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ vertical-align: top;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-4 {
+ margin-top: 3px;
+}
+
+.emotion-5 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields checkbox field with label 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ cursor: pointer;
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: top;
+ position: relative;
+}
+
+.emotion-3 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ vertical-align: top;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-4 {
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-6 {
+ margin-top: 3px;
+}
+
+.emotion-7 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields checkboxes field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-3 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.emotion-3>*:not(style)~*:not(style) {
+ margin-top: 0.5rem;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0px;
+ margin-inline-start: 0px;
+}
+
+.emotion-4 {
+ cursor: pointer;
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: top;
+ position: relative;
+}
+
+.emotion-5 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ vertical-align: top;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-6 {
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-20 {
+ margin-top: 3px;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields field with description 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ margin-bottom: 1px;
+}
+
+.emotion-5 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-7 {
+ margin-top: 2px;
+}
+
+.emotion-8 {
+ font-size: md;
+}
+
+.emotion-9 {
+ margin-top: 3px;
+}
+
+.emotion-10 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields field with description in uiSchema 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ margin-bottom: 1px;
+}
+
+.emotion-5 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-7 {
+ margin-top: 2px;
+}
+
+.emotion-8 {
+ font-size: md;
+}
+
+.emotion-9 {
+ margin-top: 3px;
+}
+
+.emotion-10 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields format color 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields format date 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields format datetime 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields format time 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields help and error display 1`] = `
+.emotion-0 {
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: flex-start;
+ -webkit-box-align: flex-start;
+ -ms-flex-align: flex-start;
+ align-items: flex-start;
+ position: relative;
+ overflow: hidden;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ gap: 3px;
+}
+
+.emotion-2 {
+ list-style-type: none;
+}
+
+.emotion-4 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: red.500;
+}
+
+.emotion-6 {
+ margin-bottom: 1px;
+}
+
+.emotion-10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-12 {
+ margin-top: 3px;
+}
+
+.emotion-13 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields hidden field 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-2 {
+ margin-top: 3px;
+}
+
+.emotion-3 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields hidden label 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields null field 1`] = `
+.emotion-1 {
+ margin-top: 3px;
+}
+
+.emotion-2 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields number field 0 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields number field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields password field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields radio field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.emotion-3>*:not(style)~*:not(style) {
+ margin-top: 0.5rem;
+ -webkit-margin-end: 0px;
+ margin-inline-end: 0px;
+ margin-bottom: 0px;
+ -webkit-margin-start: 0px;
+ margin-inline-start: 0px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: top;
+ cursor: pointer;
+}
+
+.emotion-5 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-6 {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-margin-start: 0.5rem;
+ margin-inline-start: 0.5rem;
+}
+
+.emotion-10 {
+ margin-top: 3px;
+}
+
+.emotion-11 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields schema examples 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields select field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+}
+
+.emotion-3 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-7 {
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ max-width: calc(100% - 0.5rem);
+ overflow: hidden;
+ position: absolute;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.emotion-8 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-8::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-9 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-11 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-12 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-13 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields select field multiple choice 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+}
+
+.emotion-3 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-7 {
+ color: gray.400;
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.emotion-8 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-8::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-9 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-11 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-12 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-13 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields select field multiple choice enumDisabled 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+}
+
+.emotion-3 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-7 {
+ color: gray.400;
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.emotion-8 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-8::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-9 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-11 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-12 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-13 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields select field multiple choice formData 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+}
+
+.emotion-3 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-7 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ vertical-align: top;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ max-width: 100%;
+ margin: 0.125rem;
+}
+
+.emotion-9 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+}
+
+.emotion-10 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: inherit;
+}
+
+.emotion-15 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-15::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-16 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-17 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-18 {
+ -webkit-margin-start: 1px;
+ margin-inline-start: 1px;
+ -webkit-margin-end: 1px;
+ margin-inline-end: 1px;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ cursor: pointer;
+}
+
+.emotion-19 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-20 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-21 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-23 {
+ margin-top: 3px;
+}
+
+.emotion-24 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields select field multiple choice with labels 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+}
+
+.emotion-3 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-7 {
+ color: gray.400;
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.emotion-8 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-8::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-9 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-11 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-12 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-13 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields select field single choice enumDisabled 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+}
+
+.emotion-3 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-7 {
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ max-width: calc(100% - 0.5rem);
+ overflow: hidden;
+ position: absolute;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.emotion-8 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-8::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-9 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-11 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-12 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-13 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields select field single choice formData 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+}
+
+.emotion-3 {
+ z-index: 9999;
+ border: 0;
+ clip: rect(1px, 1px, 1px, 1px);
+ height: 1px;
+ width: 1px;
+ position: absolute;
+ overflow: hidden;
+ padding: 0;
+ white-space: nowrap;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 0px;
+ overflow: hidden;
+ height: auto;
+ min-height: 10px;
+}
+
+.emotion-6 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 0.125rem 1rem;
+ -webkit-box-flex-wrap: wrap;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-overflow-scrolling: touch;
+ position: relative;
+ overflow: hidden;
+}
+
+.emotion-7 {
+ -webkit-margin-start: 0.125rem;
+ margin-inline-start: 0.125rem;
+ -webkit-margin-end: 0.125rem;
+ margin-inline-end: 0.125rem;
+ max-width: calc(100% - 0.5rem);
+ overflow: hidden;
+ position: absolute;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ -moz-transform: translateY(-50%);
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.emotion-8 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: inline-grid;
+ grid-area: 1/1/2/3;
+ grid-template-columns: 0 min-content;
+ color: inherit;
+}
+
+.emotion-8::after {
+ content: attr(data-value) " ";
+ visibility: hidden;
+ white-space: pre;
+ padding: 0px;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-9 {
+ color: inherit;
+ background: 0;
+ opacity: 1;
+ width: 100%;
+ padding-top: 0.125rem;
+ padding-bottom: 0.125rem;
+ grid-area: 1/2;
+ font: inherit;
+ min-width: 2px;
+ border: 0;
+ margin: 0px;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+}
+
+.emotion-10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.emotion-11 {
+ border: 0;
+ border-left-width: 1px;
+ height: 100%;
+ opacity: 1;
+}
+
+.emotion-12 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ height: 100%;
+ border-radius: 0px;
+ border-width: 0;
+ cursor: pointer;
+ font-size: 20px;
+}
+
+.emotion-13 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-14 {
+ margin-top: 3px;
+}
+
+.emotion-15 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields slider field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-6 {
+ margin-top: 3px;
+}
+
+.emotion-7 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields string field format data-url 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields string field format email 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields string field format uri 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields string field regular 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields string field with placeholder 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields textarea field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields title field 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-8 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-10 {
+ margin-top: 3px;
+}
+
+.emotion-11 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields unsupported field 1`] = `
+.emotion-1 {
+ margin-top: 3px;
+}
+
+.emotion-2 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields up/down field 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-2 {
+ position: relative;
+ z-index: 0;
+}
+
+.emotion-3 {
+ width: 100%;
+}
+
+.emotion-4 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ margin: 1px;
+ height: calc(100% - 2px);
+ z-index: 1;
+}
+
+.emotion-5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ transition-property: common;
+ transition-duration: normal;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ line-height: normal;
+}
+
+.emotion-6 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-9 {
+ margin-top: 3px;
+}
+
+.emotion-10 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`single fields using custom tagName 1`] = `
+.emotion-1 {
+ margin-bottom: 1px;
+}
+
+.emotion-3 {
+ margin-top: 3px;
+}
+
+.emotion-4 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
diff --git a/packages/carbon/test/__snapshots__/Object.test.tsx.snap b/packages/carbon/test/__snapshots__/Object.test.tsx.snap
new file mode 100644
index 0000000000..d2172d52ba
--- /dev/null
+++ b/packages/carbon/test/__snapshots__/Object.test.tsx.snap
@@ -0,0 +1,3642 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`object fields additionalProperties 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-6 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-14 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-15 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-16 {
+ justify-self: flex-end;
+}
+
+.emotion-17 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-20 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`object fields object 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ margin-bottom: 1px;
+}
+
+.emotion-5 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-12 {
+ margin-top: 3px;
+}
+
+.emotion-13 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`object fields show add button and fields if additionalProperties is true and not an object 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-6 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-14 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-15 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-16 {
+ justify-self: flex-end;
+}
+
+.emotion-17 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-20 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`object fields with title and description additionalProperties 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ font-size: md;
+}
+
+.emotion-5 {
+ display: grid;
+ grid-gap: 2px;
+ margin-bottom: 4px;
+}
+
+.emotion-7 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-10 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-19 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-20 {
+ justify-self: flex-end;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-22 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-24 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`object fields with title and description from both additionalProperties 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ font-size: md;
+}
+
+.emotion-5 {
+ display: grid;
+ grid-gap: 2px;
+ margin-bottom: 4px;
+}
+
+.emotion-7 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-10 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-19 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-20 {
+ justify-self: flex-end;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-22 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-24 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`object fields with title and description from both object 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ font-size: md;
+}
+
+.emotion-5 {
+ display: grid;
+ grid-gap: 2px;
+ margin-bottom: 4px;
+}
+
+.emotion-8 {
+ margin-bottom: 1px;
+}
+
+.emotion-9 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-11 {
+ margin-top: 2px;
+}
+
+.emotion-20 {
+ margin-top: 3px;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`object fields with title and description from uiSchema additionalProperties 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ font-size: md;
+}
+
+.emotion-5 {
+ display: grid;
+ grid-gap: 2px;
+ margin-bottom: 4px;
+}
+
+.emotion-7 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-10 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-19 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-20 {
+ justify-self: flex-end;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-22 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-24 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`object fields with title and description from uiSchema object 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ font-size: md;
+}
+
+.emotion-5 {
+ display: grid;
+ grid-gap: 2px;
+ margin-bottom: 4px;
+}
+
+.emotion-8 {
+ margin-bottom: 1px;
+}
+
+.emotion-9 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-11 {
+ margin-top: 2px;
+}
+
+.emotion-20 {
+ margin-top: 3px;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`object fields with title and description from uiSchema show add button and fields if additionalProperties is true and not an object 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ font-size: md;
+}
+
+.emotion-5 {
+ display: grid;
+ grid-gap: 2px;
+ margin-bottom: 4px;
+}
+
+.emotion-7 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-10 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-19 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-20 {
+ justify-self: flex-end;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-22 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-24 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`object fields with title and description object 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ font-size: md;
+}
+
+.emotion-5 {
+ display: grid;
+ grid-gap: 2px;
+ margin-bottom: 4px;
+}
+
+.emotion-8 {
+ margin-bottom: 1px;
+}
+
+.emotion-9 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-11 {
+ margin-top: 2px;
+}
+
+.emotion-20 {
+ margin-top: 3px;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`object fields with title and description show add button and fields if additionalProperties is true and not an object 1`] = `
+.emotion-1 {
+ margin-top: 1px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ border: 0;
+ border-bottom-width: 1px;
+ width: 100%;
+}
+
+.emotion-4 {
+ font-size: md;
+}
+
+.emotion-5 {
+ display: grid;
+ grid-gap: 2px;
+ margin-bottom: 4px;
+}
+
+.emotion-7 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-10 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-11 {
+ margin-bottom: 1px;
+}
+
+.emotion-18 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-19 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-20 {
+ justify-self: flex-end;
+}
+
+.emotion-21 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-22 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-24 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`object fields with title and description with global label off additionalProperties 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-6 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-13 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-14 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-15 {
+ justify-self: flex-end;
+}
+
+.emotion-16 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-17 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-19 {
+ margin-top: 3px;
+}
+
+
+`;
+
+exports[`object fields with title and description with global label off object 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-4 {
+ margin-bottom: 1px;
+}
+
+.emotion-10 {
+ margin-top: 3px;
+}
+
+.emotion-11 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+
+`;
+
+exports[`object fields with title and description with global label off show add button and fields if additionalProperties is true and not an object 1`] = `
+.emotion-1 {
+ display: grid;
+ grid-gap: 6px;
+ margin-bottom: 4px;
+}
+
+.emotion-3 {
+ display: grid;
+ grid-gap: 2px;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.emotion-6 {
+ display: block;
+ text-align: start;
+}
+
+.emotion-7 {
+ margin-bottom: 1px;
+}
+
+.emotion-13 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+ padding: 0px;
+}
+
+.emotion-14 {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+ line-height: 1em;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ color: currentColor;
+ vertical-align: middle;
+}
+
+.emotion-15 {
+ justify-self: flex-end;
+}
+
+.emotion-16 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ -ms-appearance: none;
+ appearance: none;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ -webkit-justify-content: center;
+ justify-content: center;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: 2px solid transparent;
+ outline-offset: 2px;
+ width: auto;
+}
+
+.emotion-17 {
+ display: -webkit-inline-box;
+ display: -webkit-inline-flex;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+ -webkit-flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-margin-end: 0.5rem;
+ margin-inline-end: 0.5rem;
+}
+
+.emotion-19 {
+ margin-top: 3px;
+}
+
+
+`;
diff --git a/packages/carbon/test/tsconfig.json b/packages/carbon/test/tsconfig.json
new file mode 100644
index 0000000000..893493a6d4
--- /dev/null
+++ b/packages/carbon/test/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "extends": "../../../tsconfig.base.json",
+ "include": ["./"],
+ "compilerOptions": {
+ "rootDir": "./",
+ "baseUrl": "../",
+ "noEmit": true,
+ "jsx": "react-jsx",
+ // https://github.com/carbon-design-system/carbon/tree/main/packages/react#typescript
+ "skipLibCheck": true
+ },
+ "references": [
+ {
+ "path": "../src"
+ },
+ {
+ "path": "../../snapshot-tests"
+ }
+ ]
+}
diff --git a/packages/carbon/tsconfig.json b/packages/carbon/tsconfig.json
new file mode 100644
index 0000000000..82462dfbeb
--- /dev/null
+++ b/packages/carbon/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "files": [],
+ "references": [
+ {
+ "path": "./src"
+ },
+ {
+ "path": "./test"
+ }
+ ]
+}
diff --git a/packages/playground/package.json b/packages/playground/package.json
index b65d99cf79..146daaf195 100644
--- a/packages/playground/package.json
+++ b/packages/playground/package.json
@@ -36,6 +36,8 @@
"dependencies": {
"@ant-design/icons": "^4.8.1",
"@babel/runtime": "^7.23.9",
+ "@carbon/icons-react": "11.43.0",
+ "@carbon/react": "1.59.0",
"@chakra-ui/icons": "^1.1.7",
"@chakra-ui/react": "^1.8.9",
"@fluentui/react": "^8.115.3",
@@ -44,6 +46,7 @@
"@mui/material": "5.15.2",
"@rjsf/antd": "^5.18.4",
"@rjsf/bootstrap-4": "^5.18.4",
+ "@rjsf/carbon": "^5.18.4",
"@rjsf/chakra-ui": "^5.18.4",
"@rjsf/core": "^5.18.4",
"@rjsf/fluent-ui": "^5.18.4",
diff --git a/packages/playground/src/app.tsx b/packages/playground/src/app.tsx
index ba979b91cf..e9a1b888dd 100644
--- a/packages/playground/src/app.tsx
+++ b/packages/playground/src/app.tsx
@@ -6,6 +6,7 @@ import { Theme as SuiTheme } from '@rjsf/semantic-ui';
import { Theme as AntdTheme } from '@rjsf/antd';
import { Theme as Bootstrap4Theme } from '@rjsf/bootstrap-4';
import { Theme as ChakraUITheme } from '@rjsf/chakra-ui';
+import { Theme as CarbonTheme } from '@rjsf/carbon';
import v8Validator, { customizeValidator } from '@rjsf/validator-ajv8';
import v6Validator from '@rjsf/validator-ajv6';
import localize_es from 'ajv-i18n/localize/es';
@@ -101,6 +102,17 @@ const themes: PlaygroundProps['themes'] = {
stylesheet: '',
theme: ChakraUITheme,
},
+ carbon: {
+ stylesheet: '//cdn.jsdelivr.net/npm/@carbon/styles@1.39.0/css/styles.min.css',
+ theme: CarbonTheme,
+ formContext: {
+ carbon: {
+ get environment() {
+ return (document.getElementById('demo-frame') as HTMLIFrameElement)?.contentWindow || window;
+ },
+ },
+ },
+ },
'fluent-ui': {
stylesheet: '//static2.sharepointonline.com/files/fabric/office-ui-fabric-core/11.0.0/css/fabric.min.css',
theme: FluentUITheme,
diff --git a/packages/playground/src/components/DemoFrame.tsx b/packages/playground/src/components/DemoFrame.tsx
index 3315523d97..9ec357d3a1 100644
--- a/packages/playground/src/components/DemoFrame.tsx
+++ b/packages/playground/src/components/DemoFrame.tsx
@@ -126,7 +126,7 @@ export default function DemoFrame(props: DemoFrameProps) {
}
return (
-
+
{body}
diff --git a/packages/playground/src/components/Header.tsx b/packages/playground/src/components/Header.tsx
index 75979dfde7..ea045a255b 100644
--- a/packages/playground/src/components/Header.tsx
+++ b/packages/playground/src/components/Header.tsx
@@ -271,6 +271,39 @@ export default function Header({
return (
react-jsonschema-form
+ {/* TODO remove this before merge */}
+
+
+
+ Latest Demo Build Status:{' '}
+
+
+
+
+
diff --git a/packages/playground/src/components/Playground.tsx b/packages/playground/src/components/Playground.tsx
index fe3d43fcb2..8372776c86 100644
--- a/packages/playground/src/components/Playground.tsx
+++ b/packages/playground/src/components/Playground.tsx
@@ -25,7 +25,8 @@ export default function Playground({ themes, validators }: PlaygroundProps) {
const [formData, setFormData] = useState
(samples.Simple.formData);
const [extraErrors, setExtraErrors] = useState();
const [shareURL, setShareURL] = useState(null);
- const [theme, setTheme] = useState('default');
+ // TODO only for dev convenience, reset to `default` before merge
+ const [theme, setTheme] = useState('carbon');
const [subtheme, setSubtheme] = useState(null);
const [stylesheet, setStylesheet] = useState(null);
const [validator, setValidator] = useState('AJV8');
@@ -41,16 +42,18 @@ export default function Playground({ themes, validators }: PlaygroundProps) {
experimental_defaultFormStateBehavior: { arrayMinItems: 'populate', emptyObjectFields: 'populateAllDefaults' },
});
const [FormComponent, setFormComponent] = useState>(withTheme({}));
+ const [formContext, setFormContext] = useState({});
const [otherFormProps, setOtherFormProps] = useState>({});
const playGroundFormRef = useRef(null);
const onThemeSelected = useCallback(
- (theme: string, { stylesheet, theme: themeObj }: ThemesType) => {
+ (theme: string, { stylesheet, theme: themeObj, formContext }: ThemesType) => {
setTheme(theme);
setSubtheme(null);
setFormComponent(withTheme(themeObj));
setStylesheet(stylesheet);
+ setFormContext(formContext);
},
[setTheme, setSubtheme, setFormComponent, setStylesheet]
);
@@ -184,6 +187,7 @@ export default function Playground({ themes, validators }: PlaygroundProps) {
schema={schema}
uiSchema={uiSchema}
formData={formData}
+ formContext={formContext}
fields={{
geo: GeoPosition,
'/schemas/specialString': SpecialInput,
diff --git a/packages/playground/src/components/ThemeSelector.tsx b/packages/playground/src/components/ThemeSelector.tsx
index 0a42b787c1..00aade3312 100644
--- a/packages/playground/src/components/ThemeSelector.tsx
+++ b/packages/playground/src/components/ThemeSelector.tsx
@@ -7,6 +7,7 @@ export interface ThemesType {
theme: any;
stylesheet: string;
subthemes?: SubthemesType;
+ formContext?: any;
}
interface ThemeSelectorProps {
diff --git a/packages/playground/tsconfig.json b/packages/playground/tsconfig.json
index fe14477307..b39036d8ef 100644
--- a/packages/playground/tsconfig.json
+++ b/packages/playground/tsconfig.json
@@ -24,6 +24,7 @@
"references": [
{ "path": "../antd" },
{ "path": "../bootstrap-4" },
+ { "path": "../carbon" },
{ "path": "../chakra-ui" },
{ "path": "../core" },
{ "path": "../fluent-ui" },
diff --git a/packages/playground/vite.config.ts b/packages/playground/vite.config.ts
index cd3e413c15..9944985c48 100644
--- a/packages/playground/vite.config.ts
+++ b/packages/playground/vite.config.ts
@@ -17,6 +17,7 @@ export default defineConfig({
// mapping packages in monorepo to make vite use sources directly avoiding build step
'@rjsf/antd': path.resolve(__dirname, '../antd/src'),
'@rjsf/bootstrap-4': path.resolve(__dirname, '../bootstrap-4/src'),
+ '@rjsf/carbon': path.resolve(__dirname, '../carbon/src'),
'@rjsf/chakra-ui': path.resolve(__dirname, '../chakra-ui/src'),
'@rjsf/core': path.resolve(__dirname, '../core/src'),
'@rjsf/fluent-ui': path.resolve(__dirname, '../fluent-ui/src'),
diff --git a/tsconfig.json b/tsconfig.json
index 66f532ea92..dce85c0ecc 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -7,6 +7,9 @@
{
"path": "./packages/bootstrap-4"
},
+ {
+ "path": "./packages/carbon"
+ },
{
"path": "./packages/chakra-ui"
},