diff --git a/.changeset/green-mirrors-teach.md b/.changeset/green-mirrors-teach.md
new file mode 100644
index 000000000..33c8f58d7
--- /dev/null
+++ b/.changeset/green-mirrors-teach.md
@@ -0,0 +1,5 @@
+---
+'@getodk/web-forms': patch
+---
+
+Adds icon component with Material Design icons to replace Icomoon
diff --git a/packages/web-forms/README.md b/packages/web-forms/README.md
index bde1f4854..56ea87068 100644
--- a/packages/web-forms/README.md
+++ b/packages/web-forms/README.md
@@ -106,18 +106,16 @@ This package uses the Material Design system for the UI, though not strictly. Th
### Icons
-We use **Material Icons** using IcoMoon to select a subset of icons in order to minimize the size. The font files are located in [`./src/assets/fonts/`](./src/assets/fonts/), and the CSS is [`./src/assets/css/icomoon.css`](/src/assets/css/icomoon.css). Our IcoMoon definition is in the root directory of this package at [`./icomoon.json`](./icomoon.json).
+The `IconSVG` component renders Material Design Icons (MDI) with customizable size and style variants. It uses the `@mdi/js` library for icon data and supports a predefined set of icons.
-To update the icons using the [IcoMoon website](https://icomoon.io/app/):
+```js
+
+```
-1. Click the "Import Icons" button in IcoMoon. Select [`icomoon.json`](/icomoon.json). When prompted, load the settings stored in the file.
-2. Scroll down to the "Add Icons From Library" link and add **Material Icons**.
-3. Move the imported set above Material Icons, using the 3-bar icon to the right of the imported set's title. (This should help preserve the icon order and minimize the diff.)
-4. Update the icons by selecting (highlighting) the new icons to add. They don't need to be moved or altered.
-5. Download the new font, then copy the files (`icomoon.css`, `fonts/*`, `icomoon.json`) into their locations in the repository.
- - You will need to rename the files and update the paths in the CSS (`fonts/icomoon.ttf?...` becomes `/fonts/icomoon.ttf?...` with a beginning slash).
- - You will also need to prettify the JSON file to use two space indentation.
+To add a new icon:
-By following the steps above, you should minimize the diff. However, in the JSON file, you may still see changes for properties like `id`, `iconIdx`, `setId`, and `setIdx`.
+- Import the icon from `@mdi/js` in the `IconSVG` component.
+- Add the icon to the `iconMap` object with its corresponding name.
+- Use the icon by passing its name to the `name` prop.
Material Icons are available under the Apache License Version 2.0. Copy of the license can be found at [`./src/assets/fonts/LICENSE-2.0.txt`](./src/assets/fonts/LICENSE-2.0.txt)
diff --git a/packages/web-forms/icomoon.json b/packages/web-forms/icomoon.json
deleted file mode 100644
index dd2f3bf65..000000000
--- a/packages/web-forms/icomoon.json
+++ /dev/null
@@ -1,703 +0,0 @@
-{
- "IcoMoonType": "selection",
- "icons": [
- {
- "icon": {
- "paths": [
- "M726 554v-84h-172v-172h-84v172h-172v84h172v172h84v-172h172zM512 86q176 0 301 125t125 301-125 301-301 125-301-125-125-301 125-301 301-125z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["add_circle"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "add_circle",
- "id": 0,
- "order": 282,
- "prevSize": 48,
- "code": 59648,
- "name": "add_circle"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 0
- },
- {
- "icon": {
- "paths": [
- "M810 274l-238 238 238 238-60 60-238-238-238 238-60-60 238-238-238-238 60-60 238 238 238-238z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["clear", "close"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "clear, close",
- "id": 1,
- "order": 287,
- "prevSize": 48,
- "code": 59649,
- "name": "clear"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 1
- },
- {
- "icon": {
- "paths": [
- "M884 300l-78 78-160-160 78-78q12-12 30-12t30 12l100 100q12 12 12 30t-12 30zM128 736l472-472 160 160-472 472h-160v-160z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["create", "mode_edit", "edit"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "create, mode_edit, edit",
- "id": 2,
- "order": 290,
- "prevSize": 48,
- "code": 59650,
- "name": "create"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 2
- },
- {
- "icon": {
- "paths": [
- "M512 810q124 0 211-87t87-211-87-211-211-87-211 87-87 211 87 211 211 87zM894 470h88v84h-88q-14 126-114 226t-226 114v88h-84v-88q-126-14-226-114t-114-226h-88v-84h88q14-126 114-226t226-114v-88h84v88q126 14 226 114t114 226zM512 342q70 0 120 50t50 120-50 120-120 50-120-50-50-120 50-120 120-50z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["gps_fixed", "my_location"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "gps_fixed, my_location",
- "id": 3,
- "order": 286,
- "prevSize": 48,
- "code": 59651,
- "name": "gps_fixed"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 3
- },
- {
- "icon": {
- "paths": [
- "M598 554h128l-214-212-214 212h128v172h172v-172zM826 428q82 6 140 67t58 145q0 88-63 151t-151 63h-554q-106 0-181-75t-75-181q0-94 67-169t161-85q42-78 118-126t166-48q108 0 201 76t113 182z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["cloud_upload", "backup"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "cloud_upload, backup",
- "id": 4,
- "order": 291,
- "prevSize": 48,
- "code": 59652,
- "name": "cloud_upload"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 4
- },
- {
- "icon": {
- "paths": ["M214 768h596v86h-596v-86zM810 384l-298 298-298-298h170v-256h256v256h170z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["file_download", "get_app"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "file_download, get_app",
- "id": 5,
- "order": 289,
- "prevSize": 48,
- "code": 59653,
- "name": "file_download"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 5
- },
- {
- "icon": {
- "paths": ["M214 768h596v86h-596v-86zM384 682v-256h-170l298-298 298 298h-170v256h-256z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["file_upload"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "file_upload",
- "id": 6,
- "order": 288,
- "prevSize": 48,
- "code": 59654,
- "name": "file_upload"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 6
- },
- {
- "icon": {
- "paths": ["M316 366l196 196 196-196 60 60-256 256-256-256z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["keyboard_arrow_down"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "keyboard_arrow_down",
- "id": 7,
- "order": 275,
- "prevSize": 48,
- "code": 59655,
- "name": "keyboard_arrow_down"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 7
- },
- {
- "icon": {
- "paths": ["M658 708l-60 60-256-256 256-256 60 60-196 196z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["keyboard_arrow_left"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "keyboard_arrow_left",
- "id": 8,
- "order": 276,
- "prevSize": 48,
- "code": 59656,
- "name": "keyboard_arrow_left"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 8
- },
- {
- "icon": {
- "paths": ["M366 708l196-196-196-196 60-60 256 256-256 256z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["keyboard_arrow_right"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "keyboard_arrow_right",
- "id": 9,
- "order": 277,
- "prevSize": 48,
- "code": 59657,
- "name": "keyboard_arrow_right"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 9
- },
- {
- "icon": {
- "paths": ["M316 658l-60-60 256-256 256 256-60 60-196-196z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["keyboard_arrow_up"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "keyboard_arrow_up",
- "id": 10,
- "order": 278,
- "prevSize": 48,
- "code": 59658,
- "name": "keyboard_arrow_up"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 10
- },
- {
- "icon": {
- "paths": [
- "M768 128v170h-512v-170h512zM810 512q18 0 31-12t13-30-13-31-31-13-30 13-12 31 12 30 30 12zM682 810v-212h-340v212h340zM810 342q52 0 90 38t38 90v256h-170v170h-512v-170h-170v-256q0-52 38-90t90-38h596z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["local_printshop", "print"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "local_printshop, print",
- "id": 11,
- "order": 274,
- "prevSize": 48,
- "code": 59659,
- "name": "local_printshop"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 11
- },
- {
- "icon": {
- "paths": ["M298 426h428l-214 214z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["arrow_drop_down"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "arrow_drop_down",
- "id": 12,
- "order": 293,
- "prevSize": 48,
- "code": 59660,
- "name": "arrow_drop_down"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 12
- },
- {
- "icon": {
- "paths": ["M298 598l214-214 214 214h-428z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["arrow_drop_up"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "arrow_drop_up",
- "id": 13,
- "order": 294,
- "prevSize": 48,
- "code": 59661,
- "name": "arrow_drop_up"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 13
- },
- {
- "icon": {
- "paths": [
- "M512 682q34 0 60 26t26 60-26 60-60 26-60-26-26-60 26-60 60-26zM512 426q34 0 60 26t26 60-26 60-60 26-60-26-26-60 26-60 60-26zM512 342q-34 0-60-26t-26-60 26-60 60-26 60 26 26 60-26 60-60 26z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["more_vert"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "more_vert",
- "id": 14,
- "order": 281,
- "prevSize": 48,
- "code": 59662,
- "name": "more_vert"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 14
- },
- {
- "icon": {
- "paths": [
- "M810 170v86h-596v-86h148l44-42h212l44 42h148zM256 810v-512h512v512q0 34-26 60t-60 26h-340q-34 0-60-26t-26-60z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["delete"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "delete",
- "id": 15,
- "order": 284,
- "prevSize": 48,
- "code": 59663,
- "name": "delete"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 15
- },
- {
- "icon": {
- "paths": [
- "M554 384v-86h-84v86h84zM554 726v-256h-84v256h84zM512 86q176 0 301 125t125 301-125 301-301 125-301-125-125-301 125-301 301-125z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["info"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "info",
- "id": 16,
- "order": 292,
- "prevSize": 48,
- "code": 59664,
- "name": "info"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 16
- },
- {
- "icon": {
- "paths": [
- "M698 598h144q12-56 12-86t-12-86h-144q6 42 6 86t-6 86zM622 834q50-16 104-61t82-91h-126q-20 80-60 152zM612 598q6-42 6-86t-6-86h-200q-6 42-6 86t6 86h200zM512 852q56-82 82-170h-164q26 88 82 170zM342 342q24-86 60-152-50 16-105 61t-81 91h126zM216 682q26 46 81 91t105 61q-40-72-60-152h-126zM182 598h144q-6-42-6-86t6-86h-144q-12 56-12 86t12 86zM512 172q-56 82-82 170h164q-26-88-82-170zM808 342q-28-46-82-91t-104-61q36 66 60 152h126zM512 86q176 0 301 125t125 301-125 301-301 125-301-125-125-301 125-301 301-125z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["language"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "language",
- "id": 17,
- "order": 283,
- "prevSize": 48,
- "code": 59665,
- "name": "language"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 17
- },
- {
- "icon": {
- "paths": [
- "M406 598q80 0 136-56t56-136-56-136-136-56-136 56-56 136 56 136 136 56zM662 598l212 212-64 64-212-212v-34l-12-12q-76 66-180 66-116 0-197-80t-81-196 81-197 197-81 196 81 80 197q0 42-20 95t-46 85l12 12h34z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["search"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "search",
- "id": 18,
- "order": 285,
- "prevSize": 48,
- "code": 59666,
- "name": "search"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 18
- },
- {
- "icon": {
- "paths": [
- "M854 896v-554h-684v554h684zM854 128q34 0 59 26t25 60v682q0 34-25 60t-59 26h-684q-34 0-59-26t-25-60v-682q0-34 25-60t59-26h44v-86h84v86h428v-86h84v86h44z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["calendar_today"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "calendar_today",
- "id": 19,
- "order": 279,
- "prevSize": 48,
- "code": 59667,
- "name": "calendar_today"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 19
- },
- {
- "icon": {
- "paths": [
- "M726 726v-172h84v256h-512v128l-170-170 170-170v128h428zM298 298v172h-84v-256h512v-128l170 170-170 170v-128h-428z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["repeat"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "repeat",
- "id": 20,
- "order": 297,
- "prevSize": 48,
- "code": 59668,
- "name": "repeat"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 20
- },
- {
- "icon": {
- "paths": ["M128 256h768v86h-768v-86zM128 554v-84h768v84h-768zM128 768v-86h768v86h-768z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["menu"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "menu",
- "id": 21,
- "order": 299,
- "prevSize": 48,
- "code": 59669,
- "name": "menu"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 21
- },
- {
- "icon": {
- "paths": ["M384 690l452-452 60 60-512 512-238-238 60-60z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["check"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "check",
- "id": 22,
- "order": 322,
- "prevSize": 48,
- "code": 59670,
- "name": "check"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 22
- },
- {
- "icon": {
- "paths": [
- "M554 554v-256h-84v256h84zM554 726v-86h-84v86h84zM512 86q176 0 301 125t125 301-125 301-301 125-301-125-125-301 125-301 301-125z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["error"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "error",
- "id": 46,
- "order": 347,
- "prevSize": 48,
- "code": 59671,
- "name": "error"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 23
- },
- {
- "icon": {
- "paths": [
- "M512 854q140 0 241-101t101-241-101-241-241-101-241 101-101 241 101 241 241 101zM512 86q176 0 301 125t125 301-125 301-301 125-301-125-125-301 125-301 301-125zM470 298h84v256h-84v-256zM470 640h84v86h-84v-86z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["error_outline"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "error_outline",
- "id": 71,
- "order": 373,
- "prevSize": 48,
- "code": 59672,
- "name": "error_outline"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 24
- },
- {
- "icon": {
- "paths": ["M810 554h-256v256h-84v-256h-256v-84h256v-256h84v256h256v84z"],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["add"],
- "grid": 24,
- "defaultCode": 59673
- },
- "attrs": [],
- "properties": {
- "ligatures": "add",
- "id": 79,
- "order": 83,
- "prevSize": 48,
- "name": "add",
- "code": 59673
- },
- "setIdx": 0,
- "setId": 2,
- "iconIdx": 25
- },
- {
- "icon": {
- "paths": [
- "M554 384h236l-236-234v234zM256 86h342l256 256v512q0 34-26 59t-60 25h-512q-34 0-60-25t-26-59l2-684q0-34 25-59t59-25z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["insert_drive_file"],
- "grid": 24,
- "defaultCode": 59680
- },
- "attrs": [],
- "properties": {
- "ligatures": "insert_drive_file",
- "id": 80,
- "order": 84,
- "prevSize": 48,
- "name": "insert_drive_file",
- "code": 59680
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 26
- },
- {
- "icon": {
- "paths": [
- "M512 384q52 0 90 38t38 90-38 90-90 38-90-38-38-90 38-90 90-38zM512 726q88 0 151-63t63-151-63-151-151-63-151 63-63 151 63 151 151 63zM512 192q158 0 286 88t184 232q-56 144-184 232t-286 88-286-88-184-232q56-144 184-232t286-88z"
- ],
- "attrs": [],
- "isMulticolor": false,
- "isMulticolor2": false,
- "tags": ["remove_red_eye", "visibility"],
- "grid": 24
- },
- "attrs": [],
- "properties": {
- "ligatures": "remove_red_eye, visibility",
- "id": 53,
- "order": 85,
- "prevSize": 48,
- "code": 59674,
- "name": "remove_red_eye"
- },
- "setIdx": 0,
- "setId": 0,
- "iconIdx": 27
- }
- ],
- "height": 1024,
- "metadata": {
- "name": "icomoon"
- },
- "preferences": {
- "showGlyphs": true,
- "showQuickUse": true,
- "showQuickUse2": true,
- "showSVGs": true,
- "fontPref": {
- "prefix": "icon-",
- "metadata": {
- "fontFamily": "icomoon",
- "majorVersion": 1,
- "minorVersion": 0
- },
- "metrics": {
- "emSize": 1024,
- "baseline": 6.25,
- "whitespace": 50
- },
- "embed": false,
- "showSelector": true,
- "showMetrics": true,
- "showMetadata": true,
- "showVersion": true,
- "noie8": true,
- "ie7": false
- },
- "imagePref": {
- "prefix": "icon-",
- "png": true,
- "useClassSelector": true,
- "color": 0,
- "bgColor": 16777215,
- "classSelector": ".icon",
- "name": "icomoon",
- "height": 32,
- "columns": 16,
- "margin": 16
- },
- "historySize": 50,
- "showCodes": false,
- "gridSize": 16,
- "showLiga": false
- }
-}
diff --git a/packages/web-forms/package.json b/packages/web-forms/package.json
index c0de590f6..3cf8bb457 100644
--- a/packages/web-forms/package.json
+++ b/packages/web-forms/package.json
@@ -78,7 +78,8 @@
"vue": "^3.5.13"
},
"dependencies": {
- "vue-draggable-plus": "^0.6.0"
+ "vue-draggable-plus": "^0.6.0",
+ "@mdi/js": "^7.4.47"
},
"publishConfig": {
"access": "public"
diff --git a/packages/web-forms/src/assets/css/icomoon.css b/packages/web-forms/src/assets/css/icomoon.css
deleted file mode 100644
index cdf4615a0..000000000
--- a/packages/web-forms/src/assets/css/icomoon.css
+++ /dev/null
@@ -1,114 +0,0 @@
-@font-face {
- font-family: 'owf-icomoon';
- src:
- url('/fonts/icomoon.ttf?d2anc2') format('truetype'),
- url('/fonts/icomoon.woff?d2anc2') format('woff'),
- url('/fonts/icomoon.svg?d2anc2#icomoon') format('svg');
- font-weight: normal;
- font-style: normal;
- font-display: block;
-}
-
-[class^='icon-'],
-[class*=' icon-'] {
- /* use !important to prevent issues with browser extensions that change fonts */
- font-family: 'owf-icomoon' !important;
- speak: never;
- font-style: normal;
- font-weight: normal;
- font-variant: normal;
- text-transform: none;
- line-height: 1;
-
- /* Better Font Rendering =========== */
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-add_circle:before {
- content: '\e900';
-}
-.icon-clear:before {
- content: '\e901';
-}
-.icon-create:before {
- content: '\e902';
-}
-.icon-gps_fixed:before {
- content: '\e903';
-}
-.icon-cloud_upload:before {
- content: '\e904';
-}
-.icon-file_download:before {
- content: '\e905';
-}
-.icon-file_upload:before {
- content: '\e906';
-}
-.icon-keyboard_arrow_down:before {
- content: '\e907';
-}
-.icon-keyboard_arrow_left:before {
- content: '\e908';
-}
-.icon-keyboard_arrow_right:before {
- content: '\e909';
-}
-.icon-keyboard_arrow_up:before {
- content: '\e90a';
-}
-.icon-local_printshop:before {
- content: '\e90b';
-}
-.icon-arrow_drop_down:before {
- content: '\e90c';
-}
-.icon-arrow_drop_up:before {
- content: '\e90d';
-}
-.icon-more_vert:before {
- content: '\e90e';
-}
-.icon-delete:before {
- content: '\e90f';
-}
-.icon-info:before {
- content: '\e910';
-}
-.icon-language:before {
- content: '\e911';
-}
-.icon-search:before {
- content: '\e912';
-}
-.icon-calendar_today:before {
- content: '\e913';
-}
-.icon-repeat:before {
- content: '\e914';
-}
-.icon-menu:before {
- content: '\e915';
-}
-.icon-check:before {
- content: '\e916';
-}
-.icon-error:before {
- content: '\e917';
-}
-.icon-error_outline:before {
- content: '\e918';
-}
-.icon-add:before {
- content: '\e919';
-}
-.icon-insert_drive_file:before {
- content: '\e920';
-}
-.icon-remove_red_eye:before {
- content: '\e91a';
-}
-.icon-warning:before {
- content: '\e91b';
-}
diff --git a/packages/web-forms/src/assets/css/style.scss b/packages/web-forms/src/assets/css/style.scss
index e3170f0f8..c11b6e56a 100644
--- a/packages/web-forms/src/assets/css/style.scss
+++ b/packages/web-forms/src/assets/css/style.scss
@@ -25,8 +25,11 @@
--odk-primary-lighter-background-color: var(--p-primary-50);
--odk-primary-border-color: var(--p-primary-500);
- --odk-error-text-color: var(--p-message-error-color);
- --odk-error-background-color: var(--p-message-error-background);
+ --odk-error-text-color: var(--p-red-600);
+ --odk-error-background-color: var(--p-red-50);
+
+ --odk-warning-text-color: var(--p-yellow-600);
+ --odk-warning-background-color: var(--p-yellow-50);
--odk-text-color: var(--p-surface-900);
--odk-inverted-text-color: var(--p-surface-0);
@@ -38,8 +41,6 @@
--odk-border-color: var(--p-surface-300);
- --odk-icon-size: 1.5rem;
-
--odk-radius: 6px;
/*
@@ -77,3 +78,7 @@ body {
font-weight: 400;
font-size: var(--odk-base-font-size);
}
+
+button.p-button {
+ min-height: 40px;
+}
diff --git a/packages/web-forms/src/assets/fonts/LICENSE-2.0.txt b/packages/web-forms/src/assets/fonts/LICENSE-2.0.txt
deleted file mode 100644
index d64569567..000000000
--- a/packages/web-forms/src/assets/fonts/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/packages/web-forms/src/assets/fonts/icomoon.svg b/packages/web-forms/src/assets/fonts/icomoon.svg
deleted file mode 100644
index d9ecc63b9..000000000
--- a/packages/web-forms/src/assets/fonts/icomoon.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/packages/web-forms/src/assets/fonts/icomoon.ttf b/packages/web-forms/src/assets/fonts/icomoon.ttf
deleted file mode 100644
index 63e3fe177..000000000
Binary files a/packages/web-forms/src/assets/fonts/icomoon.ttf and /dev/null differ
diff --git a/packages/web-forms/src/assets/fonts/icomoon.woff b/packages/web-forms/src/assets/fonts/icomoon.woff
deleted file mode 100644
index b3e43aaf9..000000000
Binary files a/packages/web-forms/src/assets/fonts/icomoon.woff and /dev/null differ
diff --git a/packages/web-forms/src/components/FormHeader.vue b/packages/web-forms/src/components/FormHeader.vue
index 709478945..e6c05e9cb 100644
--- a/packages/web-forms/src/components/FormHeader.vue
+++ b/packages/web-forms/src/components/FormHeader.vue
@@ -1,4 +1,5 @@
+
+
+
+
+
+
diff --git a/packages/web-forms/src/components/widgets/MultiselectDropdown.vue b/packages/web-forms/src/components/widgets/MultiselectDropdown.vue
index 2f5fcc7f5..7c371f8e4 100644
--- a/packages/web-forms/src/components/widgets/MultiselectDropdown.vue
+++ b/packages/web-forms/src/components/widgets/MultiselectDropdown.vue
@@ -87,8 +87,8 @@ if (props.question.appearances['no-buttons']) {
.p-multiselect-option {
&[aria-selected='true']::after {
- content: '\e916';
- font-family: 'owf-icomoon';
+ content: '\2713';
+ font-family: system-ui;
color: var(--odk-primary-text-color);
}
diff --git a/packages/web-forms/src/demo/DemoForm.vue b/packages/web-forms/src/demo/DemoForm.vue
index 9b55f683f..451878462 100644
--- a/packages/web-forms/src/demo/DemoForm.vue
+++ b/packages/web-forms/src/demo/DemoForm.vue
@@ -1,4 +1,5 @@